기초 - 프로그래밍이란?

 

프로그래밍이란?

 

사람과 사람은 말, 즉 자연어로 의사소통이 가능합니다.

그러나 사람과 컴퓨터가 소통하려면 어떻게 해야할까요?

컴퓨터에게는 정확한 규칙의 언어, 즉 프로그래밍 언어가 필요합니다.

 

초창기에 0과 1의 제어 신호를 사람이 직접 작성하는 기계어가 사용되었는데,

이는 가장 원시적인 언어로 기계는 바로 이해할 수 있지만 사람이 이해하기는 도무지 어려웠습니다.

 

결국 사람이 읽기 편하도록 기계어와 특정 기호를 1:1로 대응시키는 어셈블리어가 등장했습니다.

기계어를 쓰는 시절보다 나아졌지만 여전히 난해했고, 어셈블리어의 생산성이 매우 낮았기 때문에

조금 더 프로그램을 짜기 쉬운 언어들이 속속들이 등장하기 시작했습니다.

 

그러나 컴퓨터가 이해할 수 있는 언어는 기계어 뿐이기 때문에 

사람이 하기에 편해졌다는 것뿐, 실제로 그 뒤에서 이루어지는 작업은 훨씬 복잡해지고 있습니다.

기계에게 편한 언어는 속도는 빠르지만 사람이 보고 다루기 불편해서 생산성이 떨어지는 반면

사람에게 편한 언어는 속도는 느리지만 이해하기 쉽고 생산성이 높습니다 🥲

 

현재에는 JavaScript, Python, Java, C++, C# 등 다양한 프로그래밍 언어가 있습니다.

 

이 프로그래밍 언어의 코드를 실행하는 컴퓨터 프로그램, 혹은 환경인

인터프리터 (Interpreter)컴파일러 (Compiler) 에 대해서도 알아보겠습니다.

이 둘의 가장 큰 차이는 코드를 실행하는 방식입니다.

 

* 컴파일이란? 

사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꿔주는 과정, 이 변환 작업을 수행하는 소프트웨어를 '컴파일러' 라고 부릅니다 😊

 

인터프리터

- 코드를 한 줄씩 번역하면서 즉시 실행

- 장점: 높은 OS 독립성, 빠른 피드백

- 단점: 느린 실행 속도, 코드 노출

- 대표적으로 Python, JavaScript, Ruby, PHP, R 등

- 예시로 동시통역사를 생각하면 됩니다!

 

컴파일러

- 코드 전체를 한 번에 번역(프로그램 전체 스캔->기계어로 번역)해 실행 파일을 만듦

- 장점: 빠른 실행 속도, 최적화 강함, 높은 안정성(보안성)

- 단점: 특정 운영체제에 종속, 개발 과정이 길어질 수 있음

- 대표적으로  C, C++. Rust, Go 등

- 예시로 완역본 책을 생각하면 됩니다!

 

실전에서는 주로 인터프리터

데이터 분석 노트북(Jupyter), 자동화 스크립트, 웹 백엔드, 교육, AI/ML 프로토타이핑 등에 쓰이고

컴파일 언어

고성능 서버, 게임 엔진, 임베디드, 네이티브 앱 등에 쓰입니다.

 

다음 글부터 인터프리터의 🖥️ Python 을 시작해보겠습니다!