개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
오류를 통해 훌륭한 개발자가 될 수 있다.
자바스크립트의 활용법
인터프리터 언어와 컴파일 언어의 차이점
TIL (Today I Learned) 날짜
2022. 01. 15
오늘 읽은 범위
에피소드 6 ~ 에피소드 10까지
책에서 기억하고 싶은 내용을 써보세요.
오류를 통해 훌륭한 개발자가 되는 방법
1) 문제가 생겼을 때 나 자신을 문제에서 빼지 말 것
: 내가 실수할 가능성이 높다.
2) 오류부터 고치려고 무작정 달려들지 말 것
: 오류를 고치기 전에 오류가 왜 생겼는지를 알아야 한다. 원인을 찾고 이해해야 같은 실수를 반복하지 않는다.
3) 오류 메시지를 읽을 것
: 오류 메시지에는 대부분 오류가 발생한 위치와 원인, 고치는 방법이 친절하게 나와있다.
파이썬이 인기 있는 이유
1) 파이썬은 영어와 매우 비슷해서 친숙하다.
: 우리가 일상에서 사용하는 언어의 구조와 비슷하다.
초보 개발자도 무슨 일을 하기 위한 코드인지 알 수 있다.
2) 파이썬은 활용 범위가 매우 넓다.
특징 분야에서만 사용되지 않는 만능 도구이다.
- 인공지능 & 데이터 분야 : 케라스, 텐서플로, 판다스 등
- 웹 개발 분야 : 장고, 플라스크 등
- 업무 자동화 분야 : 엑셀, 메일 보내기 등
- 이미지 처리 분야
- 게임 분야
- GUI 분야
3) 파이썬의 커뮤니티가 어마어마하게 크다.
: 다양한 분야에서 활용되고 있기 때문에 커뮤니티가 크다. 그래서 더 많은 강의와 영상, 질의응답이 많아서 초보 개발자들이 접하기 쉽다.
4) 파이썬의 업무 자동화에 완전 찰떡 언어이다.
: 스크립팅(scripting);지루한 반복 작업을 자동화해주는 것
2가지 방법으로 번역되는 프로그래밍 언어
1) 인터프리터 언어(interpreted language)
: 인터프리트는 직역하면 ‘해석하다’
인터프리트 언어는 중간에 동시 통역사 역할을 해주는 인터프리터가 0과 1을 사용해서 프로그래밍 언어를 실시간으로 번역해준다.
파이썬이나 자바스크립트로 코드를 작성하면 중간에 인터프리터가 0, 1로 번역하여 컴퓨터에게 전달하는 방식으로 실행된다.
2) 컴파일 언어(compiled language)
: 컴파일은 직역하면 ‘편집하다’
코드를 한번에 통번역하고 전달하는 방식으로 실행한다.
둘의 차이점은 실시간 여부에 달려 있다.
프로그래밍 언어에 속도 차이가 나는 이유
1) 파이썬은 인터프리터 언어이고, C 언어는 컴파일 언어이다.
2) 파이썬은 컴퓨터에게 실시간으로 0과 1로 이뤄진 문장을 실시간으로 통역해 줄 것이다.
3) 인터프리터가 매 순간 파이썬 언어를 0과 1로 통역해야 하고 인터프리터가 작업해야 하는 횟수는 코드가 많을수록 늘어난다.
4) C 언어는 완성된 코드를 한꺼번에 묶어서 통번역하므로 작업 횟수가 한정되어 있다.
중간과정이 매우 단순하기 때문에 C 언어가 파이썬보다 더 빠르다.
5) 인터프리트 언어는 오류를 제때 알기 힘들다.
자바스크립트의 여러 가지 활용법
1) 하이브리드 앱, 크로스 플랫폼 앱을 만들 수 있다.
: 하이브리드 앱, 크로스 플랫폼 앱은 모바일 애플리케이션 용어다. 한번의 개발로 아이폰, 안드로이드폰 양쪽 모두에서 사용할 수 있는 애플리케이션을 의미한다.
2) 윈도우, 맥, 리눅스를 위한 데스크톱 소프트웨어를 만들 수 있다.
: 자바스크립트로 일렉트론(Electron)을 활용하여 데스크톱 소프트웨어도 만들 수 있다.
일렉트론은 HTML, CSS, 자바스크립트를 가져다 컴파일해서 윈도우, 맥, 리눅스에 설치할 수 있는 소프트웨어를 만들어 주는 도구다. 개발자가 사용하는 텍스트 편집기로 유명한 비주얼 스튜디오 코드(visual studio code, VSC)도 일렉트론으로 만들어졌다. 그 외에도 슬랙(Slack), 스카이프(Skype), 깃허브(GitHub), 아톰(Atom)과 같은 도구도 일렉트론으로 만들어졌다.
3) 게임을 만들 수 있다.
: phaser.js, impact.js 라는 도구를 사용하면 게임을 만들 수 있다.
node.js 나 socket.io와 같은 자바스크립트에 기반한 네트워크 관련 도구를 섞어서 멀티플레이 게임도 만들 수 있다.
4) 3D, 가상현실, 증강 현실 개발도 할 수 있다.
three.js 라는 자바스크립트에 기반한 도구가 있는데, 이 도구를 활용하면 3D 개발까지 할 수 있고, 응용하면 브라우저에 실행할 수 있는 3D 게임, 인터랙티브 웹 사이트를 만들 수도 있다.
A-Frame과 AR.js를 활용하면 카메라와 각종 센서를 활용한 웹 사이트를 만들 수도 있다.
그러면 증강 현실(augumented reality, AR)로 쇼핑몰을 만들 수도 있다.
가장 큰 장점은 따로 설치하지 않고 그냥 브라우저에서 실행할 수 있다는 것이다.
5) 머신러닝도 할 수 있다.
: 브라우저에서 머신러닝도 할 수 있다.
tensorflow.js 라는 도구를 사용하면 인공지능을 만들 수 있다.
코틀린이 자바와 100%로 호환되나?
1) 코틀린은 인텔리제이(Intellij)라는 IDE를 개발하는 체코 회사인 젯브레인즈(JetBrains)라는 곳에서 만들었다.
2) 자바와 호환되는 언어가 필요해서 코틀린이라는 언어를 만들었다.
3) 100% 호환이란 자바 코드에서 코틀린 코드를 부를 수 있고, 반대로 코틀린 코드에서 자바 코드를 부를 수도 있어야 한다는 뜻이다. 이 모든 것이 가능한 이유는 자바 가상 머신(JVM)때문이다.
4) 컴필레이션(compliation)과 인터프리테이션(interpretation)
: 컴필레이션은 코드 전체를 받아서 한번이 기계어로 해석하는 것이고, 인터프리테이션은 코드를 실시간으로 기계어로 해석하는 것이다.
그래서 컴필레이션 방식으로 동작하는 코드가 인터프리테이션 방식으로 동작하는 코드보다 빠르다.
컴필레이션은 플랫폼에 의존하여 코드가 실행될 환경(플랫폼)이 달라지면 그때마다 개발자가 컴파일 과정을 한번씩 실행해 줘야 한다. 운영체제마다 각각 서로 다른 기계어를 쓰기 때문이다.
반대로 인터프리테이션은 인터프리터가 알아서 실시간 번역을 해주기 때문에 새로 컴파일을 실행해 줄 필요가 없다.
5) 자바는 컴필레이션과 인터프리테이션을 다 활용한다. 그래서 자바로 코드를 작성하고 컴파일하여 얻는 결과물은 기계어가 아니라 자바 바이트 코드이다.
이 자바 바이트 코드는 다시 윈도우, 리눅스, 맥OS에서 실행될 때 자바 가상 먹신이라는 녀석이 해석해서 각각의 기계어로 번역한다.
코틀린을 자바 바이트 코드로 컴파일하기만 하면 자바와 코틀린이 100% 호환될 수 있다.
코틀린을 굳이 써야 하는 이유
1) 코틀린은 null에서 안전한(null safety) 언어이다.
: 널이란 값이 아예 없다는 뜻인데, 수치로 0임을 표현하는 숫자 0과 완전히 다르다.
자바로 프로그램을 만들면 프로그램을 실행하는 도중에 널이 생길 수 있는데, 프로그램으로서는 처리할 값이 없으니 오류가 발생한다. 하지만 코틀린은 코드로 실행하기 전에 널이 있을 것 같으면 미리 개발자에게 알려주기 때문에 코틀린은 널을 허용하기는 하는데 자바와 달리 널 발생의 가능성을 미리 검사한다.
2) 코틀린은 코루틴(coroutine)을 지원하는 언어이다.
: 코루틴이라는 문법은 많은 일을 한번에 실행할 수 있게 해준다. 코루틴을 활용하면 한 번에 많은 일을 할 수 있게 해준다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
오류에 대한 잘못된 태도와 생각을 고치도록 도와주었고, 오류 발생시 대처하는 방법을 알려주었다.
프로그래밍의 언어에 대해 핵심을 중심으로 이해하게 되었다.
자바스크립트와 코틀린에 대해서 알게 되었다. 자바스크립트로 개발 중인데 이 지식을 기반으로 개발할 때 좀 더 이해가 될 것 같다.
웹 개발 및 앱 개발만 하지 않고 활용도가 높아 지루하지 않을 것 같다.