뚝딱햄 탈출기

[IT 5분 잡학사전]Ep.6~10 요약 및 TIL 본문

read about···💭📓👀🧠/IT 5분 잡학사전

[IT 5분 잡학사전]Ep.6~10 요약 및 TIL

hyrmzz1 2023. 3. 8. 19:29

Ep6. 왜 나만 오류가 자주 생길까? - 오류 대처 방법

오류가 발생했을 때, 우선적으로 해야하는 것은 "오류 발생 원인"을 찾는 것!

무작정 구글링하기 전에, 오류메세지를 읽자. 오류메세지에 오류 발생 위치와, 수정 방법이 적혀 있다. 침착하게 읽기 ~

 

 

Ep7. 파이썬은 왜 이렇게 인기가 많을까?

스택오버플로우에서 발표한 개발자를 대상으로 한 설문 조사의 통계를 아래 링크에서 확인할 수 있다.

굉장히 여러 주제가 있으니 재미삼아 보면 좋을듯!

https://survey.stackoverflow.co/2022/#overview

 

Stack Overflow Developer Survey 2022

In May 2022 over 70,000 developers told us how they learn and level up, which tools they’re using, and what they want.

survey.stackoverflow.co

Most popular technologies 에 들어가면 매년 인기 기술들을 확인할 수 있다.

2022 Most popular technologies. Swift는 한참 아래에 있어서 놀랐고, 요즘 공부중인 자바스크립트가 1위라 감격🤧

위와 같이 파이썬은 항상 순위권에 있는 언어이다.

 

나도 대학교 1학년에 입학하자마자 파이썬으로 코딩을 접했는데,  확실히 처음 접할 때 거부감이 덜하다.

그 이유를 책에선 파이썬이 영어(우리가 일상에서 사용하는 언어)의 구조와 매우 닮았기 때문이라 설명한다.

C나 Java와 문법이 좀 달라 때때로 헷갈리긴 하지만..

 

파이썬으론 다양한 분야의 개발이 가능하다. ex) 인공지능/데이터, 웹개발, 업무 자동화, 이미지 처리, 게임, GUI ...

특히 업무 자동화에 특화되어 있는데(; scripting) 파이썬으로 스크립팅을 하면 몇 시간이 걸릴 반복 작업을 단 몇 초만에 할 수 있다.

 

또, 파이썬의 활용 범위가 넓은 만큼 파이썬 커뮤니티의 크기도 굉장히 크다고 한다.

다양한 분야의 개발자들이 모인 커뮤니티로 인해 다른 언어보다 더 많은 강의, 영상, 질의응답 등을 찾을 수 있어 도움이 된다.

 

 

Ep8. 파이썬이 C언어보다 느린 이유는? - 인터프리터 언어 vs 컴파일 언어

컴퓨터 언어(=기계어, 저급언어)는 0과 1로 이루어져 있기 때문에 컴퓨터는 프로그래밍 언어(=고급 언어)를 바로 이해하지 못한다.

따라서 프로그래밍 언어를 컴퓨터 언어로 변환하는 과정이 꼭 필요하며, 인터프리터나 컴파일러 등을 사용해 변환한다.

프로그래밍 언어가 번환되는 방법에 따라 인터피리터 언어(interpreted language)와 컴파일 언어(compiled language)로 구분할 수 있다. "실시간" 이라는 키워드에 주목! +)JAVA는 둘다 사용. Ep10 참고.

 

인터프리터 언어

: 대표적 언어 - 파이썬, 자바스크립트, R

: 통시 통역 st.

: 동시 통역사 역할을 하는 인터프리터가 프로그래밍 언어를 컴퓨터 언어로 실시간 번역해준다 + 번역과 실행이 동시에 진행된다.

: 인터프리터가 매 순간 프로그래밍 언어를 0과 1로 이루어진 컴퓨터 언어로 번역해야하므로 인터프리터의 작업 횟수는 코드의 양이 많을수록 늘어난다.

: 실시간으로 통역과 동시에 실행되기 때문에(컴파일 과정 X) 오류 발생시 코드 번역 도중에 발생하며, 오류를 알려준 뒤 분석을 멈춤.

: 오류 발생 위치 파악은 수월하나 오류 발생 코드 실행 전까지는 오류 인지가 어려워 컴파일 언어보다 오류 인지 시점이 늦다.

: 따라서 컴파일 언어보다 속도가 느리다.

 

컴파일 언어

: 대표적 언어 - C, C++

: 도서 번역 st.

: 완성된 코드를 한꺼번에 묶어서 번역(컴파일러를 통해) + 번역된 코드를 한번에 실행. 번역과 실행 따로 진행

: 실시간으로 번역하는게 아니기 때문에 작업 횟수가 한정되어 있다.

: 프로그램 규모가 클 경우 컴파일은 오래 걸릴 수 있으나, 컴파일을 통해 번역이 다 된 상태이므로 실행 속도(시간) 자체는 빠르다.

: 오류 발생시 컴파일 도중에 오류가 난다.

: 따라서 인터프리터 언어보다 더 빠르다.

 

 

Ep9. 자바스크립트는 웹개발에만 쓰는 언어일까?

Ep7에 첨부한 사진에서 볼 수 있듯이 2022년의 Most popular technologies top 1은 단연컨데 자바스크립트다! 2022년 뿐만이 아니다..

 

자바스크립트로는 웹개발 뿐만이 아니라 하이브리드 앱, 크로스 플랫폼 앱, 데스크톱 소프트웨어, 게임, 3D/가상 현실/증강 현실 개발이 가능하며 머신러닝도 할 수 있다.

 

*하이브리드 앱과 크로스 플랫폼 앱은 모바일 애플리케이션 용어로, 한번의 개발로 ios, 안드로이드 모두에서(여러 환경에서) 사용가능한 애플리케이션을 뜻한다. (Ep.43 참고)

* 하이브리드 앱을 만들기 위해 쓰이는 도구인 아이오닉(Ionic), 크로스 플랫폼 앱을 만들기 위해 쓰이는 도구인 리액트 네이티브(React Native)는 모두 자바스크립트를 사용함. 

 

* 데스크톱 소프트웨어의 예시로는 VSC, github, slack 등이 있다.

* 자바스크립트와 함께 일렉트론(Electron)이라는 도구를 함께 사용하여 데스크톱 소프트웨어를 만든다. 일렉트론이란 html, css, js를 가져다 컴파일 해 윈도우, 맥, 리눅스에 설치할 수 있는 소프트웨어를 만들어주는 도구이다.

 

 

Ep10. 코틀린은 정말 자바와 100% 호환될까?

그렇다 !

그렇기 때문에 자바로 개발된 시스템에 코틀린을 바로 사용할 수 있다. (자바 코드에 코틀린 코드 불러오기 가능)

코틀린 코드에서도 자바 코드를 바로 불러올 수 있다. 서로 100% 호환됨.

why?

코틀린을 자바 바이트 코드로 컴파일하기만 되기 때문.

 

자바는 컴필레이션과 인터프리젠테이션을 모두 활용한다.

How?

자바 코드 작성 후 컴파일을 하는데(=> 컴필레이션), 컴파일 시 기계어가 아닌 자바 바이트 코드를 얻음.

이 자바 바이트 코드가 윈도우, 리눅스, 맥os에서 실행될 때 자바 가상 머신이 각각의 기계어로 변환해 줌.(=> 인터프리테이션. 플랫폼에 의존않고 다양한 플랫폼의 기계어로 변환하니까)


+) 컴필레이션(compilation) vs 인터프리테이션(interpretation)

컴필레이션은 위의 컴파일처럼, 코드 전체를 한번에 기계어로 해석하는 것.

인터프리테이션은 코드를 실시간으로 기계어로 해석하는 것.

위에서 설명했듯 실행속도) 컴필레이션 > 인터프리테이션

 

컴필레이션은 플랫폼에 의존. 컴필레이션은 코드가 실행될 환경인 플랫폼이 달라질 때마다 컴파일 실행해줘야 함. 왜냐하면 운영체제마다 각각 서로 다른 기계어 사용하기 때문.

반면에 인터프레테이션은 인터프리터가 실시간으로 기계어로 해석하기 때문에 컴파일 할 필요 없음.


코틀린의 장점

  1. null safety; null값이 존재하지 않는다. (null 발생 가능성을 미리 검사함.)
  2. 코루틴(coroutine)이라는 문법을 지원.

코틀린은 안드로이드 앱 개발에 많이 쓰이고, 자바스크립트로 컴파일 될 수 있기 때문에 리액트나 node.js에 활용할 수도 있다. 데이터 과학 분야에도 쓰인다.

 


 

그래서 오늘 내가 배우고, 느낀 건!

  • 책에선 프로그래밍은 "동사" 라는 표현을 사용하는데, 참 적절한 표현인 것 같다. 직접 코드도 짜보고, 수정도 하고, 우당탕탕 부딪히며 완성해내는 그 과정이 프로그래밍 아닐까 싶다. 그래서 교재에선, 단순히 이론 공부만 하지 말고, 직접 스스로의 코드를 통해 프로그래밍하는것을 권장한다.  노마드코더 사이트에 무수한 클론코딩 강의들이 있듯이 말이다. 겁내지말고 쉬운 프로젝트라도 시작하자. 늘 내가 스스로 아쉽게 생각하는 부분이기도 하다. 시간이 오래 걸려 프로젝트 마무리를 못할 때가 많은데, 올해는 결과물을 많이 내고 싶다. 그 결과물에 내가 배운 모든 것이 녹아 있을 테니까!

 

  • Ep.5에서 C/C#/C++의 작업 속도를 비교해봤던 것 처럼, 파이썬과 C언어의 작업속도를 비교하며 그 이유가 각각 인터프립트 언어, 컴파일 언어이기 때문이라는 것을 알게 되었다. 용어는 학교 수업에서 배워서 익숙했으나 잊고 있던 개념인데 다시 상기시키는 계기가 되었다. 교재에서는 실생활에 빗댄 예시로 간략하고 쉽게 나와있어 흐름만 파악했고, 구글링을 통해 더 자세히 정리했다.

 

  • 컴파일, 빌드 등에 관해서는 별도의 파일로 정리해야겠다.

 

  • 자바스크립트가 웹개발 외에도 다양하게 사용된다는 사실을 알게되었다.  난 항상 웹개발할 때만 써서.. ㅎ 역시 사람은 시야를 넓혀야 하나봐! 부끄럽지만 ㅎㅎ 자바스크립트로 알고리즘을 풀 수 있단 사실을 얼마 전에 알게 되었는데, 웹개발에만 사용해 본 그 언어로 알고리즘을?! 이란 생각이 컸다. 그치만 이젠 개발자들이 정말 많이 사용하고, 굉장히 다양한 일을 할 수 있는 언어란 걸 알게 되어서 자바스크립트를 더 깊게 파봐야겠단 생각이 든다.
Comments