본문 바로가기

POCU 강의

1. 프로그래밍 언어의 분류

컴파일 언어 vs 인터프리터 언어

  • 컴파일 언어
    • 소스코드 -> 기계어 에서 사용되는 도구가 컴파일러
    • 기계어로 만들어진 프로그램이 exe 이며, 이를 통해 몇번이고 실행이 가능하다.
    • 대표적인 컴파일 언어가 C, C++
    • 오프라인 컴파일러가 고수준 언어를 네이티브 코드로 컴파일 해주며, 다양한 최적화가 가능하다는 장점이 있다.
    • 단, 최적화를 통해 최종 실행 파일의 실행시간은 줄어들지만, 컴파일 시간이 오래걸릴 수 있다는 단점과 플랫폼 (모바일, 데스크탑 등) 마다 다른 exe 파일을 만들어줘야 한다는 단점도 있다.
  • JIT 컴파일 언어
    • 소스코드 -> 기계어로 변환을 할 때, 컴파일러는 중간 언어코드로 한번 컴파일을 하고, 이후 최종적으로 실행이 될 때, 가상머신이 최종 컴파일을 담당하게 된다.
    • 대표적인 JIT 컴파일 언어는 C#, Java, WASM (WebAssembly)
    • 플랫폼 별로 VM 을 설치해줘야 한다는 단점이 있지만, 플랫폼에 종속적이지 않으며 VM 에 종속적인 프로그램을 만들 수 있다는 장점도 있다.
  • 인터프리터 언어
    • 컴파일러 없이 소스코드를 그대로 사용하여 실행을 한다. 인터프리터가 실행 시점에 기계어로 변환하여 실행시키는 형태.
    • 대표적인 인터프리터 언어로는 Python, JS, Lua, PHP
    • 실제로 실행하기전에 나오는 실수를 잡을 수 없음.

강한 타입 언어 vs 약한 타입 언어

  • 변수 선언과 관련된 개념
  • 약한 타입은 JS 가 대표적이며, 강한 타입은 C, C++, C#, Java 등등이 있음.
  • 강한 타입 언어의 경우 변수의 성격이 이미 정해져있으며 이후 이 변수에 대한 성격을 바꿀 수 없으나, 약한 타입 언어의 경우 자유롭게 변수를 사용할 수 있다. 다만, 자유롭게 사용할 경우 다른사람이 봤을 때 개발자의 의도를 오해할 수 있는 여지도 있다.

매니지드 언어, 언매니지드 언어

  • 해당 언어 분류법은 누가 메모리를 관리하느냐에 따른 분류법
  • 매니지드 언어는 메모리의 관리를 언어 자체가 관리를 하며, 언매니지드 언어의 경우 프로그래머가 메모리를 관리하는 언어
  • 다 적재적소가 있다! 성능이 중요하지 않은 프로그램을 만들 때는 매니지드 언어를, 성능이 중요한 프로그램을 만들때는 언매니지드 언어를 많이 사용함. 단, 언매니지드 언어를 배우게 되면 하드웨어에 관한 지식을 쌓을 수 있다.

프로그래밍 패러다임

  • 절차적(Procedual) 언어
    • 절차적으로 코드를 실행을 한다는것이 가장 주요한 개념
    • 가장 대표적인 언어가 C 언어
  • OOP(Object-Oriented Programming) 언어
    • 사람에게 직관적인 언어 체계
    • 기능과 자료를 하나의 개체(Object)에 합침
    • 사람에게 매우 직관적이며 복잡한 프로그램의 구조를 잡기 쉽기때문에 가장 널리쓰이는 패러다임
  • 함수형(Functional) 언어
    • 절차적 언어와 개념은 비슷하다. 다만 상태의 변화가 없다는게 절차적 언어와의 차이점.

'POCU 강의' 카테고리의 다른 글

6. 문자열과 키보드 입력  (0) 2024.05.20
5. 연산자2  (0) 2024.05.20
4. 형변환과 연산자  (0) 2024.05.17
3. 변수와 기본자료형  (0) 2024.05.16
2. 출력과 상수  (0) 2024.05.14