TIL (Today I Learned)
오늘 읽은 범위 6장 - 10장
책에서 기억하고 싶은 내용을 써보세요.
- 6장 부록
- 프로그래밍을 배우는 사람의 실수 2가지: 공부만 하고 실제로 프로젝트를 만들어보지 않는 것과 항상 준비를 더 해야 한다고 생각하는 것.
- 8장
- 파이썬은 인터프리트 언어, C언어는 컴파일 언어이다.
- 컴파일 언어와 인터프리트 언어의 가장 큰 차이는 실시간 여부에 달려 있다. 이 말인 즉슨, 파이썬과 같은 인터프리트 언어는 마치 동시통역사처럼 코드 한줄 한줄을 0과 1이라는 컴퓨터가 이해 가능한 언어로 치환하는 과정을 거친다. 이에 반해 C언어와 같은 컴파일 언어는 완성된 코드를 한번에 번역하여 기계어로 치환한다.
- 이런 방식 차이에 기인하여 컴파일 언어는 인터프리트 언어보다 실행 속도가 빠르다. 왜냐하면 번역 작업의 횟수가 인터프리트 언어의 경우 코드가 길어지면 길어질수록 늘어나는 반면, 컴파일 언어는 일관되게 한번의 작업만을 수행하기 때문이다. 또한, 번역 중 에러가 생기는 경우도 인터프리트 언어의 경우 제때 발견하기 어렵다는 특성이 있다.
- 9장
- 하이브리드 앱, 크로스 플랫폼 앱은 모바일 애플리케이션 용어로서, 한번의 개발로 안드로이드/iOS 모두에서 사용이 가능한 앱을 의미한다.
- 하이브리드 앱을 만들기 위해서는 Ionic 등을 사용하고, 크로스 플랫폼 앱을 만들기 위해서는 React Native 등을 사용하는데, 이 툴들은 모두 자바스크립트 기반이다.
- 데스크톱 소프트웨어를 만들기 위해서도 자바스크립트를 사용할 수 있는데, HTML/CSS/JS를 컴파일하여 데스크톱 소프트웨어로 변환시켜주는 툴인 Electron을 사용하면 됨 (ex. Github, Atom, Slack, VS Code)
- 자바스크립트로 phaser.js/impact.js와 같은 물리 엔진이 탑재된 도구를 활용하여 게임 제작도 가능하며, node.js/socket.io 등을 이용하여 멀티플레이가 가능한 게임도 제작 가능함
- three.js를 활용하여 3D 개발도 가능하며, A-Frame과 AR.js를 활용하여 증강현실 개발도 가능하다.
- tensorflow.js를 활용하여 인공지능 개발도 가능함.
- 10장
- 호환이란 자바 코드에서 코틀린 코드를 부를 수도 있고, 그와 반대로 코틀린 코드에서 자바 코드를 부를 수도 있다는 의미임.
- Compliation vs Interpretation: 컴필레이션은 코드를 받아서 한번에 기계어로 변환 vs 인터프리테이션은 코드를 실시간으로 기계어로 변환
- 컴필레이션 방식의 실행 속도가 더 빠르지만, 각 운영체제마다 사용하는 기계어가 다르기에 코드가 실행될 환경(플랫폼)이 달라질 때마다 개발자가 컴필레이션을 계속 실행해줘야 함.
- 그에 반해 인터프리테이션 방식의 경우 인터프리터가 항상 기계어 번역을 수행하니 개발자가 따로 컴필레이션 과정을 실행할 필요가 없다는 장점이 있음.
- 자바의 경우 이 두 가지 방식이 혼합되어 있음. 자바 코드는 기계어로 곧바로 컴파일되지 않고 자바 바이트 코드라는 중간 단계 언어로 컴파일되고, 이 자바 바이트 코드는 자바 가상 머신 (Java Virtual Machine)에 의해 현 운영체제에 따라 알맞은 기계어로 변환되는 과정을 거침.
- 이런 특성 덕에 코틀린은 자바 바이트 코드로 변환되기만 하면 되기에 자바와 100% 호환될 수 있음.
- 코틀린은 자바와 달리 null safe한 언어다 (자바와 달리 null이 발생할 것 같으면 개발자에게 미리 알려줌).
- 코틀린은 coroutine을 지원하는 언어이기에 한번에 많은 일을 수행할 수 있음.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
자바스크립트의 다재다능함을 알게 된 계기였고, 코틀린의 자바의 호환 과정을 통해 자바 가상 머신에 대해 어렴풋이지만 이해하게 되었습니다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
코루틴에 대해서 조금 더 공부해봐야 할 것 같습니다.