1. 저급 언어 / 고급 언어
- 저급 언어: 기계 중심 언어, 컴퓨터가 이해하기 쉬운 이진법으로 이루어진 언어
컴퓨터가 바로 실행할 수 있어 빠른 속도, 가독성 및 생산성 낮음
- 기계어 : CPU가 직접 해독하고 실행할 수 있는, 가장 낮은 단계의 개념
- 어셈블리어 : 기계어를 사람이 이해하기 쉬운 기호와 1:1 매핑하여 기호화한 프로그램 언어. 최소한의 명령으로 이루어진 언어
- 고급 언어: 사람 중심 언어, 하드웨어에 대한 지식이 없어도 프로그래밍 작성 가능
언어를 실행하기 위해 기계어로 번역하는 컴파일 과정 필수
컴파일러 : 고급 언어를 기계어로 번역해주는 도구 또는 논리적인 장치
빌드 : 고급 언어로 작성된 소스코드를 실행 가능한 파일로 생성. 빌드 개념 내부에 컴파일 포함
2. 인터프리터 언어 / 컴파일 언어
고급 언어에서 세분화된 개념. 각각 런타임과 컴파일 타임 사용
- 인터프리터 언어: 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경. 별도의 실행파일 존재하지 않음. 런타임 사용. 통으로 해석.
- 컴파일 언어: 원시 코드를 모두 기계어로 번역한 후 기계에 넣고 기계어 코드를 실행하는 것. 컴파일 타임 사용. 한 줄씩 해석.
3. 프로그래밍 패러다임
- 객체지향 프로그래밍 : 실제 세계를 모델링하여 프로그램을 객체들의 모임으로 표현하는 패러다임. 클래스 이용.
- 절차지향 프로그래밍 : 프로그램 전체가 유기적으로 연결되도록 하는, 위에서 아래로 흐르듯 순차적인 처리가 중요한 패러다임. 프로그램이 어떤 작업을 하는지에 초점.
- 명령형 프로그래밍 : 문제를 해결하는 절차를 기술하는 방식의 패러다임
- 선언형 프로그래밍 : 목표만 명시하고 알고리즘을 명시하지 않는 패러다임
- 함수형 프로그래밍 : 함수 외부의 어떤 영향 때문에 결과가 의도대로 나오지 않는 것을 방지하기 위해 등장한 개념. 결괏값이 항상 일정하도록 프로그래밍.
4. 정적 타입 언어 / 동적 타입 언어
- 정적 타입 언어: 컴파일 시 변수의 타입이 결정되는 언어.
타입 오류로 인한 문제를 컴파일 타임에서 해결 가능하므로 안정성 높음.
- 동적 타입 언어 : 런타임 시 자료형이 결정되는 언어.
타입에 대한 제한이 없으므로 유연성이 높고 효율적.