abstraction
:복잡한 시스템이나 개념을 단순화하여 중요한 측면에 집중하는 프로그래밍 개념. 프로그래머가 하드웨어적인 모든 부분을 이해하지 않아도 코드를 쉽게 작성할 수 있게 해준다.
ex) 하드웨어가 출력하는 과정을 자연어인 'print'로 추상화해줌.
low level language: 인간이 이해하기 어렵고, 기계가 이해하기 쉽다.
high level language: abstraction이라는 개념을 도입하여 하드웨어에 대한 직접적인 이해 없이도 프로그래밍을 가능하게 해준다.
compiler: high level language를 machine language로 번역한다. c, c++이 compiler language 사용한다.
interpreter language: interpreter에 의해 line 단위로 compile없이 실행되는 언어. high level language의 한 종류. compile 과정 없이 statement(문장)단위의 실행이 가능하므로 개발 단계에서 적은 양의 수정에 대한 결과를 쉽게 확인할 수 있다. (source code전체를 가지고 출발하는 compiler와의 차이점.) 대화식 프로그래밍으로 python에 적용되어져 있다. 개발자가 작성한 script를 os가 알아들을 수 있는 언어로 바꾸어주는 역할을 한다.
위 두 가지를 한 문장으로 나타내자면, compiler는 전체를 번역하고, interpreter는 statement별로 번역한다.(기계어로 번역)
vm(Virtual Machine): 가상머신. 하나의 컴퓨터 안에 여러대의 컴퓨터를 돌리는 듯한 효과를 낼 수 있다.
virtual machine기반의 interpreter는 step-by-step으로만 execution(실행)되던 interpreter의 단점을 보완함.
static language: variable을 사용하기 전에 반드시 declaration(선언)을 해야하고, 해당 variable의 type이 명시적으로 정해진다.
dynamic language: 대부분 interpreter를 사용하며, variable(type없음)은 단순히 특정 object(type을 가짐)을 참조하는 name에 불과하다. 수행속도가 static보다 느림.
정리하자면, static은 variable이 type을 가지고, dynamic은 object이 type을 가진다.
shell: 사용자와 os사이에서 사용자가 입력한 command를 해석하여 os로 전달하여 실행시키고 그 결과를 사용자에게 보여준다. terminal내부에서 작동하며, CLI(키보드)를 사용하는게 일반적이다.
'컴퓨터프로그래밍' 카테고리의 다른 글
VSCODE (0) | 2024.05.13 |
---|---|
OOP (0) | 2024.05.07 |
파이썬 실행방법 (0) | 2024.03.25 |
VSCODE에서 'hello world' 출력하기 (0) | 2024.03.12 |
Visual Studio Code 단축기 (0) | 2024.03.12 |