[모던 자바스크립트 Deep Dive] 01장. 프로그래밍

tamagoyakii·2022년 8월 6일
0
post-thumbnail

모던 자바스크립트 딥 다이브! 진짜 제발 이번에는 끝까지 읽어보고 싶은 책이다. 나는 기억력이 좋지 않은 편이기 때문에 기본기를 다졌다고 생각해도 조금만 지나면 까먹고 만다. 자바스크립트에 대한 기초를 분명 배웠는데! 어째서 나는 개념이나 용어에 대한 질문을 받았을 때 "들어본 것 같은데...?"라는 생각만 들까?

프로젝트를 두 개나 했으니 이 시점에 다시 배우면 평생 기억하겠지?라는 심정으로 시작해 보는 자바스크립트 스터디. 시작합니다~! 👏👏👏👏👏

1.1 프로그래밍이란?

프로그래밍에 대해 배우기에 앞서 프로그램이란 무엇일까?

프로그램은 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어의 모음이다. 이는 하드디스크에 저장되어있는 정적인 상태이며, RAM 메모리를 할당하여 프로그램이 실행되는 것을 프로세스라고 부른다. 스레드는 프로세스를 실행 했을 때 실제로 일하는 주체이다.

프로그래밍은 컴퓨터에게 위와같은 어떠한 프로그램의 실행을 요구하는 일종의 커뮤니케이션이다. 프로그래밍을 야무지게 하기 위해서는 문제와 해결 방안을 정의할 필요가 있다. 이 때 좋은 말로 컴퓨터에게 요구사항을 전달하기 위해서는 컴퓨팅 사고(Computational Thinking)를 통한 문제 해결 능력이 필요하다.

컴퓨팅 사고에는 여러 요소들이 포함된다. 위와 같은 단계를 통해 문제를 명확하게 이해하여 분해한 뒤, 요구사항을 순서에 맞게 배열하여 상세한 수치로 전달하는 것이 우리가 해야하는 일이다.

1.2 프로그래밍 언어

컴퓨터와의 커뮤니케이션을 위해 사람이 기계어를 사용하기는 참 곤란하다. 우리가 기계어로 직접 명령을 전달하는 것을 대신할 방법은 "프로그래밍 언어"를 사용해 프로그램을 작성한 후 그것을 컴퓨터가 이해할 수 있는 기계어로 번역하는 것이다. 이 때 프로그래밍 언어를 번역해주는 번역기를 컴파일러(compiler) 혹은 인터프리터(interpreter)라고 한다.

💡 컴파일러 vs 인터프리터

컴파일러와 인터프리터는 모두 프로그래밍 언어를 기계어로 번역하는 번역기의 역할을 힌다. 둘의 차이점은 무엇일까?

가장 큰 차이는 번역 방식에 있다. 컴파일러는 프로그램 실행 전 전체 파일을 스캔하여 한번에 번역한댜. 반면에 인터프리터는 프로그램 실행시 코드를 한 문장씩 번역한다. 다음은 이런 차이에서 오는 컴파일러와 인터프리터의 특징들이다.

특징컴파일러인터프리터
번역 방법프로그램 전체를 번역한다.실행되는 줄(라인) 단위로 번역한다.
시간컴파일이 완료된 후에는 빠르게 실행된다.실행 중에 번역하기 때문에 느리다.
메모리프로그램과 독립적으로 저장되며, 프로그램에 컴파일러를 위한 메모리가 필요하지 않다.코드가 실행되는 동안 인터프리터 또한 메모리에 존재한다.
오류실행 전에 오류를 알 수 있다.실행 후에 오류를 알 수 있다.
사용프로덕션 환경에 적합하다.프로그램 및 개발 환경에 적합하다.
언어 종류C, C++, C#, Java...PHP, Ruby, JavaScript...

1.3 구문과 의미

프로그래밍 언어는 구문(syntax)의미(semantics)의 조합으로 표현된다.

Colorless green ideas sleep furiously.

-Noam Chomsky

위의 문제는 문법(syntax)적으로 전혀 문제가 없지만 의미(semantics)는 없다. 언어의 의미는 문맥에 있는 것이지 문법에 있는게 아니라는 것이다. 프로그래밍도 마찬가지이다. 프로그래밍 언어의 문법을 사용하여 표현된 해결 방안은 요구사항이 실현(문제가 해결)되어야 의미가 있다.

결국 프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.

참고

https://dbr.donga.com/graphic/view/gdbr_no/6195
https://www.guru99.com/difference-compiler-vs-interpreter.html

0개의 댓글