IT 5분 잡학사전 챌린지 Day3
TIL (Today I Learned)
: 5월 말 ~ 6월 초 여행이 예정이고 이번에는 내가 여행 일정을 담당하기로 하여 오랜만에 J 성향을 발휘?할 때가 되었다.
계획을 하는데 notion으로 된 템플릿이 많을거고 공유하기도 편할 것으로 생각되어 찾아보았더니 역시나 세상에는 훌륭한 사람들이 많았다.
이런 템플릿을 만드는 것 조차 지식공유가 되는 것이라고 생각했고, 이런 의미있는 지식이나 콘텐츠를 공유하는 사람들이 대단하다고 생각했다(그것도 무료로)
크레이티브한 생각을 계속하고 생각한 것을 결과물로 만들어내기 위한 투자 및 실천을 해야겠다.
오늘 읽은 범위 / 책에서 기억하고 싶은 내용
Ep 06 ~ 10.
Ep 06. 왜 나만 오류가 자주 생길까?
: 내 생각이 틀릴 수 있다는 것과 동일하게 문제가 발생할 때 나의 실수가 포함될 수 있는 경계해야함.
오류가 발생하면 바로 해결하지 말고 원인을 파악해보는 습관을 들이면 좋을 거 같다.(동일 실수 반복 축소 or 차단)
생각에만 머물렀던 경험이 많아 뜨끔하게 되었다. 실천으로 옮겨야겠다. try... try...
Ep 07. 파이썬은 왜 이렇게 인기가 많을까?
: Python 고마워
Ep 08. 파이썬이 c언어보다 느린 이유는?
: 성능적으로 최적화를 하는 작업을 해본 경험이 없지만 만약 이러한 상황이 주어진다면 반드시 고려해봐야겠다.
코딩테스트, 백준 등을 통해 실행 타임에서의 차이가 있는 것을 경험했던 때가 살짝 떠올랐다.
유튜버 포프킴도 저수준언어를 잘 다루는 게 중요하다고 얘기하는 부분에 대해서도 자주 들었기에 이 챕터를 읽으면서 다시 떠올랐다.
Ep 09. 자바스크립트는 웹 개발에만 쓰는 언어일까?
: react native로 살짝 개발했던 경험으로 웹 개발만 쓰이는 게 아닌 것을 경험했었다. 하이브리드/크로스플랫폼 외 다른 분야로서 다룰 경험이 없는데, 현재는 해킹 위주로 기술력을 올리고 향후 시간이 여유되면 다른 분야를 다룰 때 javascript로 해보면 좋을 거 같다는 생각이 들었다. (최적화를 위한 c/c++과 반대로 javascript로도 잘 다뤄 재밌는 프로그램을 만들어서 서비스해보면 좋을 거 같다)
Ep 10.코틀린은 정말로 자바와 100% 호환될까?
: 몰랐는데 신기하다 나온지 한참된 걸로 알고 있는데 100% 호환까지되는지는 몰랐다. 대단하다 젯브레인
바이트코드가 c/c++의 원본소스와 같이 동일하게 src 레벨로 보면 결국 같은 게 아닌가란 생각이 들었다. 그래서 gpt에 물어보았고
c/c++는 플랫폼 별 컴파일러 혹은 .exe 실행파일을 관리해야한다면 java는 byte code만 관리하면 되는 부분으로 생각 정리하면 될 거 같다.
질문: java의 장점이 jvm으로 플랫폼(아키텍처, os) 이식성이 높다는 것으로 알고 있어 그런데 결국 바이트 코드가 c언의 소스코드와 동등한 레벨로 본다면 플랫폼마다 상이한 컴파일러로 컴파일하는 것과 똑같지 않나 싶거든? 이에 대해서 어떻게 생각해?
Java도 결국 플랫폼별 JVM이 필요하므로, 완전히 플랫폼 독립적인 것은 아닙니다.
다만 C/C++과의 차이는 큽니다.
C/C++:
소스코드 → 플랫폼별 컴파일 → 플랫폼별 실행파일 배포
Java:
소스코드 → 공통 바이트코드 → 플랫폼별 JVM이 실행
정리하면:
Java의 이식성은 “플랫폼별 변환이 필요 없다”가 아니라,
“플랫폼별 변환과 실행 책임을 애플리케이션이 아니라 JVM에게 넘긴다” 입니다.
그래서 C의 플랫폼별 컴파일과 구조적으로 비슷해 보이지만, 개발·배포·호환성 관리 관점에서는 Java가 훨씬 높은 이식성을 제공합니다.
자바에서 null은 민감한지와 null에 대해서 예외처리를 통해 가능하지 않나라는 부분에 대해서 가능하지만, 컴파일 과정에서 null을 그대로 받아들이고 런타임 과정에서 예외 혹은 에러가 발생할 수 있는 부분이 있는 것으로 확인했다. (개발자가 null을 허용, 사용할거면 예외처리나 조건문으로 관리를 직접 해야함.)
코틀린은 애초에 null을 검사하는 것과 같이 null사용을 뮈한 명시적 사용하도록 되어 있다는 점을 알게 되었다.
var name: String? = null
String과 String?은 다름
| String | null 불가 |
| String? | null 가능 |
코틀린 -> javascript로 컴파일 -> react JS or node JS 사용 가능 <- 신기하다고 생각한다;;
슬랙에 올린 글을 캡쳐해 TIL 하단에 첨부
