개발도서

[IT 5분 잡학사전] - TIL (2023.01.15)

짜잉이 2023. 1. 15. 18:19

📚 Assignment #03

  • 오늘 읽은 범위 : ep.06 왜 나만 오류가 자주 생길까? ~ ep.10 코틀린은 정말로 자바와 100% 호환될까? 
  • 기억하고 싶은 내용 (간단하게 내용 정리):
    • ep.06 왜 나만 오류가 자주 생길까?
      • 더 나은 개발자가 되기 위한 오류 대처법 3가지
        • 방법 1. 문제가 생겼을 때 나 자신을 문제에서 빼지 말 것
          • 책이나 인터넷 문서 탓을 하면 안 된다. 외부 요인만 탓하면 발전할 수 없다.
            코드가 작동하지 않는 이유는 '코드를 입력한 나 자신 때문이다'. 실수를 다르게 보고 넓은 시야를 가질 수 있다.
        • 방법 2. 오류부터 고치려고 무작정 달려들지 말 것
          • 오류를 고치기 전에 오류가 왜 생겼는지 알아야 한다. 왜 오류가 났는지 원인을 찾고 이해해야 나중에 비슷한 상황에서 같은 실수를 반복하지 않는다.
        • 방법 3. 오류 메시지를 읽을 것
          • 오류 메시지에는 대부분 오류가 발생한 위치와 원인, 오류를 고치는 방법이 적혀있다. 오류가 발생하면 코드로 돌아가지 말고 오류 메시지부터 읽는 습관을 기르자.
    • 프로그래밍 초보자가 하기 쉬운 실수 1
      • 실수 1: 공부만 하고 실제로 무언가 만들어 보지 않는다.
        - 프로그래밍은 손으로 직접 해야 한다. 그저 글을 읽고 외우기만 하는 것은 시간 낭비이다.
        - 나만의 코드로 프로젝트를 완성하는 것을 목표로 해야 한다. 선생님 코드 따라 적기, 책 코드 베끼기만 해서도 안 된다. 나 자신의 힘으로 프로그램을 만들어야 나의 프로그래밍 실력이 는다.
        - 계산기 만들기, 웹 스크래퍼 만들기, 미니 게임 만들기 같이 초보자에게 맞는 쉬운 현실적인 목표를 세워서 직접 만들어보자. 
      • 실수 2: 항상 프로그래밍을 할 준비를 더 해야 한다고 생각한다.
        - 이런 생각은 프로그래밍을 할 기회를 그만큼 잃어버리는 실수이다.
        - 이런 상황에서 벗어나려면 [실수 1]을 다시 읽어보고 바로 프로그래밍을 시작하자. 무언가를 만들어보고 자신의 실력을 확인해보자. 결과물이 눈 앞에 나타나면 준비되었다는 자신감을 얻고 나 자신을 믿게 된다.
    • ep.07 파이썬은 왜 이렇게 인기가 많을까?
      • 인기 이유 1. 파이썬은 영어와 매우 비슷해서 친숙하다.
      • 인기 이유 2. 파이썬은 활용 범위가 매우 넓다.
        - 인공지능 & 데이터, 웹 개발, 업무 자동화, 이미지 처리, 게임, GUI
      • 인기 이유 3. 파이썬의 커뮤니티가 어마어마하게 크다. 
        - 활용 범위가 넓은 만큼 머신러닝, 웹 개발, 해킹, 데이터 분석, 수학자, 금융 전문가 등 다양한 분야의 개발자들이 자신이 만든 프로그램(오픈소스)를 들고 커뮤니티를 이뤄 활동한다.
      • 인기 이유 4. 파이썬의 업무 자동화에 완전 찰떡
        - 지루한 반복 작업을 자동화해 주는 업무 자동화(scripting)에 최적화된 언어이다. 누구든지 조금만 공부하면 파이썬으로 스크립팅 정도는 할 수 있다.
    • ep.08 파이썬이 C 언어보다 느린 이유는?
      • 번역하는 방법에 따라 2가지 방법으로 번역되는 프로그래밍 언어
        • 인터프리트 언어(interpreted language) ->해석하다. 동시통역
          • 인터프리트 언어는 중간에 동시 통역사 역할을 해주는 인터프리터가 0과 1을 사용해서 프로그래밍 언어를 실시간으로 번역해서 컴퓨터에게 전달하는 방식으로 실행된다.
          • 대표적인 인터프리트 언어: 파이썬, 자바스크립트
        • 컴파일 언어(complied language) ->편집하다. 도서번역
          • 번역가가 원고를 읽고 통째로 번역한 다음 전달해주는 느낌이다. 완성된 코드를 한꺼번에 묶어서 통번역하므로 작업 횟수가 한정되어 있다.
          • 대표적인 컴파일 언어: C언어
      • 인터프리트 언어와 컴파일 언어의 차이는 실시간 여부에 달려있고 이런 이유로 프로그래밍 언어마다 속도 차이가 생긴다. 그래서 중간과정이 단순한 C언어(컴파일 언어)가 파이썬(인터프리트 언어)보다 더 빠르다.
      • 인터프리트 언어는 오류를 제때 알기 힘들다. 인터프리트 언어는 오류가 있는 코드를 발견할 때까지 실시간으로 한줄 한줄 다 번역함.
    • ep.09 자바스크립트는 웹 개발에만 쓰는 언어일까?
      • 자바스크립트로 할 수 있는 무궁무진한 것들
        • 하이브리드 앱, 크로스 플랫폼 앱을 만들 수 있다.
          - 한 번 개발로 아이폰, 안드로이드폰 양쪽 모두에서 사용할 수 있는 애플리케이션을 만들 수 있다. 하이브리드 앱은 아이오닉(Ionic), 크로스 플랫폼 앱은 리액트 네이티브(React Native)라는 도구를 사용해야 한다. 모두 자바스크립트를 사용한다.
        • 윈도우, 맥, 리눅스를 위한 데스크톱 소프트웨어를 만들 수 있다.
          - 일렉트론(Electron)은 HTML, CSS, 자바스크립트를 가져다 컴파일해서 윈도우, 맥, 리눅스에 설치할 수 있는 소프트웨어를 만들어 주는 도구이다.
          (자바스크립트 + 일렉트론 = 슬랙, 스카이프, 깃허브)
        • 게임을 만들 수 있다.
          - 물리엔진이 탑재된 phaser.js, impact.js라는 도구를 이용해 게임을 만들 수 있다. node.js나 socket.io와 같은 자바스크립트 기반 네트워크 관련 도구들을 섞으면 멀티플레이 게임도 만들 수 있다.
        • 3D, 가상 현실, 증강 현실 개발도 할 수 있다.
          - three.js라는 자바스크립트 기반 도구를 응용하면 브라우저에서 실행할 수 있는 3D 게임, 인터렉티브 웹 사이트를 만들 수 있다. A-Frame과 AR.js를 활용하면 카메라와 센서를 활용한 웹 사이트를 만들 수도 있다.
        • 머신러닝도 할 수 있다.
          - tensorflow.js라는 도구를 사용하면 인공지능을 만들 수도 있다.
    • ep.10 코틀린은 정말로 자바와 100% 호환될까?
      • 코틀린은 자바와 100% 호환되는 프로그래밍 언어이다. 자바로 이미 개발한 시스템에 뭔가를 바꾸거나 하지 않아도 코틀린을 바로 사용할 수 있다.
      • 호환이란 자바 코드에서 코틀린 코드를 부를 수도 있고, 반대로 코틀린 코드에서 자바 코드를 부를 수도 있어야 한다는 뜻이다. 호환이 가능한 이유는 자바 가상 머신 때문이다. 
      • 컴필레이션(compilation)은 코드 전체를 받아서 한번에 기계어로 해석하는 것이다.
        인터프리테이션(interpretation)은 코드를 실시간으로 기계어로 해석하는 것이다. 그래서 컴필레이션 방식으로 동작하는 코드가 인터프리테이션 방식으로 동작하는 코드보다 빠르다.
      • 컴필레이션은 플랫폼(실행될 환경)에 의존하기 때문에 플랫폼이 달라지면 개발자가 컴파일 과정을 실행해줘야 한다(why? 운영체제마다 각각 다른 기계어를 쓰기 때문).
        반대로 인터프리테이션은 인터프리터가 알아서 실시간 번역을 해주기 때문에 개발자가 새로 컴파일을 실행해 줄 필요가 없다.
      • 자바는 컴필레이션과 인터프리테이션을 다 활용한다. 자바 코드는 자바 바이트 코드로 변형된 다음 자바 가상 머신(JVM)이 해석해서 각 운영체제에 맞는 기계어로 번역한다. 이런 자바의 특징 덕분에 코틀린을 자바 바이트 코드로 컴파일하기만 하면 되므로 코틀린은 자바와 100% 호환될 수 있다.
      • 코틀린을 굳이 써야 하는 이유는?
        • 장점 1. 코틀린은 null에서 안전한(null safety) 언어다.
          - 코틀린은 널을 허용하기는 하는데 자바와 달리 널 발생의 가능성을 미리 검사한다.
        • 장점 2. 코틀린은 코루틴(coroutine) 문법을 지원하는 언어다.
          - 코루틴을 활용하면 한 번에 많은 일을 할 수 있다.
      • 코틀린을 자바에서 활용하면 얻는 이점?
        • 코루틴을 활용할 수 있다.
        • 안드로이드 앱 개발에 쓸 수 있다.
        • 자바스크립트로 컴파일될 수 있어서 코틀린으로 작성한 코드를 자바스크립트로 컴파일해서 리액트, 노드js에 활용할 수도 있다.
        • 데이터 과학에 사용해 데이터 시각화 작업을 할 수도 있다.
  • 오늘의 파트에 대한 소감 (떠오르는 생각) :
    • 에피소드 6에서 오류를 만났을 때 어떻게 대응해야 하는지에 대한 내용 중 '오류부터 고치려고 무작정 달려들지 말 것' 부분에서 좀 뜨끔했다. 오류가 생기면 내가 어디서 뭘 놓쳤나~하고 오류 메시지를 읽고 구글링하는 것까지는 자연스럽지만 오류를 빨리 해결해야 한다!는 생각이 강해서 왜 오류가 생겼는지는 잘 생각하지 않고 넘어가는 일이 많았기 때문이다. 전에는 에러 히스토리도 따로 정리해놓곤 했지만 해야할 것이 많은데 너무 여기에 시간을 오래 쏟는게 아닌가 싶어 정리를 소홀히 했었다. 나중에 같은 상황에서 또 실수하지 않으려면 에러 히스토리를 잘 기록해두고 에러가 생기면 작성한 에러 기록을 검색해서 다시 읽어보기도 하면 좋을 것 같다.
    • 초보자가 하기 쉬운 실수 1을 읽고나서 부끄럽지만 내가 아직 초보자 마인드라는것을 여실히 느낄 수 있었다. 오늘 파트 중 가장 많이 와닿았던 내용이다. 실패에 대한 두려움과 이전에 오랜 시험준비 과정을 거쳐오다보니 일단 부딪혀보고 깨져보고 하는 야생형이 아닌 개념을 탄탄하게 하고 문제풀이를 하는 정석 스타일이 몸에 깊게 배어있는 것 같다. 중요한 것은 넘어지지 않는 것이 아니라 넘어졌을 때 잘 일어나는 것이다.
    • 파이썬은 데이터 사이언스 분야에서 사용하는 언어라고만 알고 있었는데 업무 자동화에 최적화된 언어라는 것을 알고나니 요즘 왜 파이썬이 인기인지 이해가 됐다. 프로그래밍이 내 생활을 편하게 해주는 실용적인 도구가 될 때 더 흥미와 관심이 가는 것 같다. 다음에 학기 중에 파이썬 수강할 때 집중해서 열심히 들어봐야지! 
    • 에피소드 9를 읽으면서 자바스크립트의 무궁무진한 활용에 깜짝 놀랐다. 특히 익숙하게 많이 사용하는 슬랙, 깃허브를 자바스크립트로 만들었다는 것은 처음 알았다. 개인적으로 자바와 함께 자바스크립트도 딥하게 파볼 언어가 될 것 같다.
    • 코틀린은 자바와 비슷한데 더 좋아서 자바+스프링 조합에서 코틀린+스프링 조합으로 넘어가는 회사들도 있다라고 들었었는데 에피소드 10에서 코틀린에 대해 다뤄서 재미있게 읽었다. 알고보니 비슷한 정도가 아니라 100% 호환되는 것이었다니..! 자바를 탄탄히 다져놓으면 코틀린까지 영역을 넓힐 수 있을 것 같다. 특히 자바스트립트로 컴파일할 수 있다는 점과 앱개발에도 활용할 수 있다는 점이 매력적으로 다가왔다. 코틀린은 정말 꼭꼭 배워봐야겠다! 소감을 적고보니 배우고 싶은 언어가 늘어간다..! 현재 기준으로 중요도를 적어보자면 자바, 자바스크립트, 코틀린, 파이썬 순이 되지 않을까 싶다!🤔 
  • 추가로 알게된 것 (책내용+a 로 궁금한 것, 이해가 가지 않는 것 등)
    •  세상에서 가장 난해한 프로그래밍 언어
      - Brainfuck
      - ArnoldC
      - Shakespeare
      - LOLCODE
      - emoji-gramming
  • 소감 3줄 요약 (오늘 TIL 3줄 요약) :
    • 문법을 익혔으면 일단 아묻따 스스로 뭔가를 만들어보고 에러가 발생하면 위의 3가지 방법대로 현명하게 대처하자! 에러 히스토리 기록해두자. 
    • 인터프리트 언어는 인터프리터가 실시간 번역하는 동시통역하는 느낌의 언어이고, 컴파일 언어는 한꺼번에 통으로 번역해주는 도서번역하는 느낌의 언어이다. 컴파일 언어가 인터프리트 언어보다 더 빠르다!
    • 배우고 싶은, 배워야 할 언어가 세상에 이렇게나 많다! 뭔가 압박감이 느껴지면서도 그 언어들로 할 수 있는 일들을 보니 설레기도 한다!