기본 개발용어 알아보기
프로그래머가 되기 위해서는 꼭 알고 이해해야 하는 기초 용어들!
차근차근 하나하나 알아가봅시다. 😀
용어 | 분:초 |
---|---|
디버그 | 00:21 |
컴파일러 vs. 인터프리터 | 02:57 |
빌드 | 05:11 |
배포 | 06:36 |
환경변수 | 07:15 |
라이브러리 vs. 프레임워크 | 09:40 |
🐞 디버그
디버깅이란 소프트웨어에서 발생하는 문제의 원인을 찾아 해결하는 과정입니다.
물론 프로그램에 실제 오류가 발생했을 때도 당연히 디버깅을 하지만
코드를 짜는 시간의 상당부분은 디버깅에 할애되죠.
코드란 게 언제나 한 번에 마음대로 작동하지는 않기 때문에
제대로 돌도록 완성하기까지도 디버깅이 필요하거든요.
기나긴 프로그래밍 코드에서 오류의 원인을 찾는 건 머리아픈 일이기 때문에
코딩 프로그램들, IDE들에서는 이를 도와주기 위한
강력한 디버깅 기능들을 제공해요.
📚 컴파일
우리가 코딩할 때 사용하는 프로그래밍 언어들은
사람이 알아보고 작성하기 쉽도록 만들어진 언어들이에요.
0과 1의 신호만 알아듣는 컴퓨터는 이를 이해하지 못하죠.
때문에 우리가 코드를 작성하고 나서 이를 컴퓨터에서 돌리려면
코드를 컴퓨터가 알아듣는 언어로 번역해야 해요.
이 번역을 코딩을 마치고 바로,
즉 코드로 짜인 소프트웨어를 돌리기 전 미리 해놓는 것을
'컴파일'이라고 합니다.
이 컴파일 작업이 요구되는 언어들을 '컴파일러 언어'라고 하죠.
C, C++, Java 등의 언어들이 대표적이에요.
컴퓨터는 이렇게 컴퓨터의 언어로 미리 번역된 코드를
바로 읽기만 하면 되기 때문에 컴파일러 언어는 실행속도가 빠릅니다.
대신 코드를 완성할 때마다 컴파일 작업을 해야 하는 불편이 있죠.
컴파일 언어는 용도와 필요에 따라, 0과 1로 된 기계어 뿐 아니라
프로그래밍 언어와 컴퓨터의 언어 중간 단계의 여러 형태로 코드를 번역해요.
🎙 인터프리터
컴파일러 언어와는 달리, 파이썬이나 루비, 자바스크립트 등의 언어들은
번역작업을 미리 해놓지 않고, 실행될 때마다 '인터프리터'란 프로그램이
컴퓨터에게 코드를 기계어로 번역해줘요.
이러한 언어들을 '인터프리터 언어'라고 합니다.
컴파일 과정이 필요없기 때문에 코드수정이 잦은 제품들의 경우 배포가 편하지만
실행 속도는 컴파일러 언어에 비해 느릴 수밖에 없고
프로그래머가 짠 코드가 그대로 노출될 수 있다는 단점이 있어요.
이런 특성들을 감안해서, 프로그래머들은 둘 중 적합한 언어를 선택하여 제품을 만듭니다.
영상에는 나오지 않지만, 인터프리터 언어로 컴파일되는 경우도 있어요.
자바스크립트를 보완하기 위한 타입스크립트란 언어가 있어요.
자바스크립트에 더 다양하고 강력한 기능들을 넣은 언어죠.
그런데 프로그래머가 타입스크립트로 코드를 짜도
이를 돌릴 환경은 자바스크립트 전용이라 해당 코드를 읽지 못해요.
그래서 실행할 때는 자바스크립트로 번역, 컴파일을 해 줘야 하죠.
그렇게 자바스크립트로 번역이 된 책은 다시 컴퓨터의 언어로
통역, 인터프리트가 되면서 프로그램이 실행되는거에요.
자바스크립트는 인터프리터 언어니까요.
이처럼 컴파일 언어와 인터프리터 언어의 구분이 모호한 것들도 있는거죠.
🛠 빌드
프로그램 코드들은 보통 한 파일이 아니라
수십 수백개가 넘는 파일들에 걸처 작성이 돼요.
이를 완성하여 소프트웨어로 배포하려면
이들을 특정 형태로 압축하거나 변경해야 하는데
이 과정을 '빌드'라고 합니다.
컴파일러 언어는 당연히 빌드에 컴파일 과정이 포함되죠.
빌드는 코드들을 모아 하나의 실행파일을 만들기도 하고
코드 파일들의 크기를 줄여 더 적은 용량의 파일들로 만들기도 하고
남들이 코드를 알아보지 못하도록 난독화하기도 합니다.
빌드의 형태와 목적도 이처럼 다양한거에요.
🖨 배포
배포란 말 그대로, 프로그래머가 코딩한 소프트웨어를
사용자들이 쓸 수 있도록 배포하는 과정을 말합니다.
웹사이트의 경우, 작업한 결과를 사용자들이 도메인으로 접속해서
브라우저로 볼 수 있도록 반영하는 작업을 말해요.
🌏 환경변수
환경변수란 소프트웨어가 돌아가는 환경(소프트웨어가 깔린 컴퓨터 등)마다
특정 변수명에 지정된 값들입니다.
환경변수를 사용하는 소프트웨어들은, 각자의 환경에 지정된
이 변수들을 기준으로 동작하게 돼요.
각 컴퓨터의 조건이나 용도에 맞게 소프트웨어가 돌도록 하거나
보안상 민감한 정보들을 코드로부터 분리하는 등
환경변수도 다양한 목적과 형태로 활용됩니다.
🧩 라이브러리
프로그래머 혼자서 모든 코드를 다 작성하는 경우는 드물어요.
보통은 신뢰할 만한 기업이나 단체, 개인이 작성한 양질의 코드들을
소프트웨어를 만드는 데 가져다 활용합니다.
이처럼 누군가 가져다 필요에 맞게 사용할 수 있도록
특정 기능들을 코드로 작성해놓은 것을 '라이브러리'라고 해요.
집을 지을 때 문이나 창틀 등의 자재들을 구입해다 사용할 수 있듯이
이처럼 내가 만드는 소프트웨어에 적절히 붙여넣을 수 있는 코드들인거죠.
🦴 프레임워크
위의 라이브러리가, 내가 만들고 있는 소프트웨어에 갖다붙일 수 있는 것이라면
프레임워크는 이미 특정 형태의 소프트웨어가 기본 틀이 갖춰져 있고 그 위에 내 코드를 덧붙여넣어 만들 수 있도록 되어있는 것들을 말해요.
구조가 복합하고, 널리 사용되는 형태의 소프트웨어인 경우 이와 같은 프레임워크들이 제공되어 이를 기반으로 제품을 만듭니다.
스프링이나 장고 등이 그 예시죠. 프로그래머가 이를 처음부터 다 만들려면 해야 할 것이 너무 많거든요.
소프트웨어를 만들 때는 일반적으로 이러한 프레임워크를 다운받아 이를 기반으로 코딩하면서 필요한 라이브러리들을 덧붙여 작업한느게 보통이에요.