📖 IT 5분 잡학사전(Ep. 6 ~ 10)
오늘 TIL 3줄 요약
- 개발자는 오류를 해결하면서 실력이 늘고 프로그램을 많이 만들어봐야 빠르게 성장한다.
- 인터프리터와 컴파일러 개념의 이해
- 파이썬, 자바스크립트, 자바, 코틀린에 대한 활용도와 간단한 컴파일 구조 이해!
TIL (Today I Learned) 날짜
2024.07.28
오늘 읽은 범위
- Ep.6 왜 나만 오류가 자주 생길까?
- Ep.7 파이썬은 왜 이렇게 인기가 많을까?
- Ep.8 파이썬이 C언어보다 느린 이유는?
- Ep.9 자바스크립트는 웹 개발에만 쓰는 언어일까?
- Ep.10 코틀린은 정말로 자바와 100% 호환될까?
책에서 기억하고 싶은 내용
개발자란 계속 도전하고, 새로운 것을 만들어 공유하기 좋아하는 사람들이다. 이왕 개발자가 된다면 그런 마음을 갖고 즐길 수 있었으면 좋겠다!
Ep.6 왜 나만 오류가 자주 생길까?
오류를 통한 훌륭한 개발자가 되는 방법
- 문제가 생기면 내가 짠 코드이니 다른 탓을 하지 마라.
- 오류가 발생하면 질문부터 하지말고 원인을 찾아라
- → 그래야 같은 실수를 방지하고 실력이 늘 것이다.
- 오류 메시지를 읽으면 답이 다 있다. 읽어도 해결이 어려우면 구글링!
프로그래밍 초보자가 하기 쉬운 오류!
- 공부만 하고 실제로 만들어 보지 않는다. → 만들어 보면서 배운 내용을 실제로 적용하며 응용까지 가능하니 실력을 키우려면 간단하고 쉬운거라도 좋으니 빨리 많이 만들어보는게 중요하다!
- 항상 프로그래밍 할 준비가 더 필요하다고 한다. → 1번처럼 빨리 만들어보고 나서 지금까지 배운 내용이 작품에 다 담겨있고 눈에 보이니 낮아져 있던 자신감이 내가 만들 수 있구나 라고 확인하며 높아지고 가속도가 붙을 것이다. 만들자!
Ep.7 파이썬은 왜 이렇게 인기가 많을까?
개발자들이 파이썬을 좋아하는 이유!
→ 개발자들의 질문 답변 커뮤니티인 개발자 성지 '스택 오버플로 사이트'의 설문조사를 보면 파이썬의 인기가 고공행진 하는 것을 알 수 있다. 왜?
1. 파이썬은 영어와 비슷해서 친숙하다.
→ 일상에서 사용하는 영어와 해석하는 구조가 비슷하게 느껴져서 코드를 보면 어느정도는 바로 알 수 있다.
2. 파이썬의 활용 범위가 매우 넓다.
→ 인공지능 & 데이터 분야, 웹 개발 분야, 업무 자동화 분야, 이미지 처리 분야, 게임 분야, GUI 분야 등 활용도가 넓다!
3. 파이썬의 커뮤니티가 어마어마하게 크다.
→ 활용 범위가 넓기 때문에 수 많은 전문가들이 프로그램을 만들고 커뮤니티에서 공유하기 때문에 커져서 개발시 필요한 정보를 더욱 쉽게 얻을 수 있는 장점이 있다.
4. 파이썬의 업무 자동화에 찰떡이다.
→ 자동화 프로그램인 스크립팅(Scripting) 프로그램을 만드는데 찰떡이라 다양한 분야에서 사용하기 좋다!
재미추 - 난해한 언어
- Brain fuck : 8개의 문자로만 하는 코딩
안녕하세요 출력 :
+[------->++<]>+.---.+++++++..+++.---------.-------.-------.
- ArnoldC : 터미네이터의 아널드 슈워제네거 대사로 구성된 문법 코딩
안녕하세요 출력 :
IT'S SHOWTIME
TALK TO THE HAND "안녕하세요"
YOU HAVE BEEN TERMINATED
- Shakespare
- LOLCODE
- emoji-gramming
⇒ 이렇게 재미나지만 난해한 언어가 계속 개발되듯이 개발자란 계속 도전하고, 새로운 것을 만들어 공유하기 좋아하는 사람들이다. 이왕 개발자가 된다면 즐길 수 있었으면 좋겠다!!
Ep.8 파이썬이 C언어보다 느린 이유는?
파이썬과 C언어의 속도 차이는 성능 차이에서 나온다기 보다는 우리가 작성한 코드를 컴퓨터가 이해할 수 있는 2진 데이터(기계어)로 변환시켜주는 컴파일 방식에서 차이가 있다.
파이썬은 인터프리터라는 번역기가 동시통역의 역할을 하는데 내가 작성한 코드 한줄을 읽고 바로 그 한줄을 통역해서 컴퓨터에게 전달하는 방식이다. 따라서 코드가 길어질 수록 동시통역의 과정에서 시간이 더 걸리고 만약 100줄의 코드인데 97줄의 코드에 오류가 발생한다면 98~100줄 사이의 코드는 문제가 있는지 아직 확인도 못하고 97줄의 오류에서만 멈춰버리는 문제도 발생한다. 따라서 오류를 제때 알기 힘든 단점도 있다. 자바스크립트도 인터프린터가 사용된다.
C언어는 컴파일러라는 번역기가 내가 작성한 코드를 통째로 읽어서 번역가처럼 전체 번역을 시도하고 결과를 보여주는 방식이다. 따라서 중간에 코드에 오류가 있으면 결과를 보여주기 전에 이 부분이 오류가 있다고 보여주고 문제가 없으면 결과를 한번에 보여준다.
이처럼 컴퓨터에게 명령어를 전달하는 구조에서 차이가 발생한다.
번외로 프로그래밍을 공부하다 보면 알고리즘, CPU 처리방식, 컴파일 과정 등에서 은근히 사람의 일 처리 효율에 대입해 보기 좋은 방식들이 있는데 이러한 컴퓨터의 처리 구조들 또한 사람의 뇌에서 나온 방식들이라 인간과 컴퓨터는 밀접한 연관이 있구나 느낄 수 있다.
여기서 나온 컴파일 방식 2가지에서 내가 느낀 일처리 효율은 이렇다. 나는 지금 쓰고있는 정리 글을 한 에피소드를 읽고 바로바로 쓰고있는데 만약 한 에피소드나 전체 분량같이 딱 내용이 끝나는 깔끔한 단계가 아니라 읽는 중간 중간에 한줄 읽고 글 쓰고, 한단락 읽고 글쓰고 하다보면 시간이 훨씬 오래 걸릴 것이고, 막상 한줄 읽고 썼는데 뒤에 내용을 읽어보니 생각이 바뀌어서 수정하고 그러다보면 시간이 더 많이 걸릴 것이다. 항상 숲을 보고 나서 잘 정리해서 나아가는게 가장 빠르고 실수가 적다는 것을 다시금 깨닫게 된다.
Ep.9 자바스크립트는 웹 개발에만 쓰는 언어일까?
자바스크립트로 만든 웹사이트만 50억개가 넘는데 이는 www.internetlivestats.com 에서 인터넷 세상에서 벌어지는 여러 지표들을 실시간으로 볼 수 있는데 여기서 확인해보면 웹사이트들이 엄청 많고 이들 모두가 자바스크립트로 만들어진 사이트라고 생각하면 거짓말이 아니다. 이처럼 웹사이트를 만드는데 많이 쓰이지만 다양한 활용도가 있다.
- 하이브리드 앱, 크로스 플랫폼 앱 개발 가능 - 말 그대로 한번의 개발로 모바일이면 ios와 안드로이드 모두 사용가능하게 배포할 수 있는 것이다.
- 윈도우, 맥, 리눅스를 위한 데스크톱 앱 개발 가능 - 자바스크립트+일렉트론을 가지고 개발하여 흔히 아는 비주얼 스튜디오 코드(Visual Studio Code), 깃허브(Github), 슬랙(Slack), 스카이프(Skype), 아톰(Atom) 등을 개발했다.
- 게임 개발 가능 - phaser.js, socket.io 같은 도구로 개발 가능
- 3D, 가상 현실, 증강 현실 개발 가능 - three.js, A-Frame, AR.js 같은 도구로 개발 가능. 헤라클로스 등 개발
- 머신러닝 가능 - tensorflow.js 같은 도구로 개발 가능
Ep.10 코틀린은 정말로 자바와 100% 호환될까?
코틀린은 자바와 100% 호환된다.
호환된다는 의미는 자바 코드에서 코틀린 코드를 불러와 작성도 가능하고 반대도 가능하며 혼합되어도 문제가 없다는 의미이다.
이게 가능한 이유는 자바의 컴파일 과정에서 알 수 있다.
이전 파이썬에서 알 수 있었던 인터프리터와 컴파일러처럼 자바에서도 인터프리테이션(interpretation)과 컴필레이션(compilation)이라는 개념이 존재한다. 인터프리테이션은 코드를 실시간으로 기계어로 번역하는 것, 컴필레이션은 전체 코드를 한번에 기계어로 번역하는 것이다. 자바는 이 두가지의 개념이 동시에 사용되어 컴파일을 시킨다.
자바는 우선 처음에 코드를 짜고 컴파일을 시키면 자바 바이트 코드 파일로 형성되는데 이후에 이 파일을 자바에 존재하는 자바 가상머신(JVM)이 각 플랫폼마다 존재하여(윈도우용, 리눅스용, 맥OS용) 각 플랫폼에 맞게 기계어로 번역해준다. 여기서 JVM은 처음에는 자바 바이트 코드를 한 줄씩 읽고 인터프리테이션 방식으로 실행하고, 실행 도중 JVM이 자주 사용되는 코드(핫스팟)을 감지하여 네이티브 머신 코드(기계어)로 컴파일하여 캐싱해놓는다. 이후에 다시 해당 코드가 실행되면 캐싱된 기계어를 불러와 빠르게 실행하는 방식이다.
그런데 코틀린도 자바 바이트 코드로 컴파일 하기 때문에 구조상으로 자바 바이트코드 파일만 있으면 각 플랫폼으로 자바 가상머신(JVM)이 번역시킬 수 있다. 그렇기 때문에 둘 다 자바 바이트 코드 파일로 컴파일 하는 구조라 100% 호환된다고 이해하면 될 것이다.
- 코틀린과 자바 모두 자바 바이트 코드로 컴파일되며, 자바 바이트 코드는 어떤 언어로부터 왔는지에 관계없이 JVM에서 동일하게 실행될 수 있다.
코틀린을 쓰면 좋은 이유
- 자바와 달리 코틀린은 null을 감지하여 오류가 날 수 있으니 개발자에게 미리 알려준다.
- 코틀린은 한번에 많은 일을 실행할 수 있게 하는 코루틴(coroutine) 문법을 지원한다.
- 코틀린의 활용성이 좋다. → 자바스크립트로 컴파일도 가능하여 리액트나 nodejs에도 사용 가능하고 데이터 과학에서 데이터 시각화로도 사용된다.
- 다양한 활용성으로 커뮤니티도 활성화가 잘 이루어지고 있다.
오늘 읽은 소감은?
두번째 날도 문제없이 Clear!
한번 공부했지만 자주 사용하지 않으면 까먹기에 여러 언어를 간략하게 소개해주니 되돌아보며 좋았고 자바를 더 파지 않았어서 코틀린은 공부해 보지 못했는데 이런 장점이 있는 언어였다니 알게되어서 신기했다! 간단한 개념도 정리되고 좋았다!
내일도 고고슁~!😎