티스토리 뷰
1. 프로그래밍 언어 개요
1.1. 프로그래밍 언어의 역사
(1) 1GL (First-generation programming languages)
- 10진이나 이진 형태의 프로그램으로 구성
- 절대적인 기계어
- 천공 카드나 자기 테이프로부터 읽거나 컴퓨터 전면 패널의 스위치를 조작함으로써 읽는 언어
(2) 2GL (Second-generation programming languages)
- 어셈블리어
- 기계어와 1:1 대응되기 때문에 변환기가 불필요 (기계어에 상응하는 빠른 속도)
- ex) x86 CPU 기계어(10110000 01100001) -> 어셈블리어(mov al, 061h)
(3) 3GL (Third-generation programming languages)
- 고급언어로서 현재 주로 사용되고 있는 프로그래밍 언어
- 컴파일러 혹은 인터프리터에 의해 변환(기계 독립적)
- ex) C/C++, C#, JAVA, BASIC
1.2. 프로그래밍 언어의 정의
- 계산 성능 또는 알고리즘을 작성하기 위한 프로그램 작성 표기법
- 프로그래밍 언어 주요 특성
기능과 목표 : 컴퓨터 프로그램을 작성하는 데 사용되는 언어
컴퓨터에서 일종의 계산 또는 알고리즘을 수행하고, 프린터, 디스크 드라이브, 로봇 등과 같은 외부 장치를 제어
추상화 : 데이터 구조를 정의 및 조작하거나 실행 흐름을 제어
표현력 : 프로그래밍 언어로 표현하고 전달할 수 있는 아이디어의 폭
표현력이 높을수록 표현하는데 사용할 수 있는 아이디어의 다양성이 많음
1.3. 프로그래밍 언어의 요소
(1) 구문 (Syntax)
- 프로그램의 모습, 형태, 구조에 대해 정의하는 것 → 언어의 문법을 확인
- 단어(Word) : 문자가 토큰을 형성하는 방법 결정
- 구(Phrase) : 토큰이 구를 형성하는 방법 결정
- 컨텍스트(Context) : 어느 객체나 변수 이름이 참조하는지를 결정
(2) 의미 (Semantics)
- 프로그램의 의미에 대해 정의하는 것 → 문장이 타당한 의미를 지니는지 확인
(3) 타입 시스템 (Type System)
- 프로그래밍 언어가 값과 표현식을 유형으로 분류하는 방법, 해당 유형을 조작하는 방법 및 상호작용 방식을 정의
2. 프로그래밍 언어 분류
2.1.처리 수준에 따른 분류
(1) 저급 언어 (Low-level language)
- 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어
- 처리속도가 빠름
- 이식성 및 가독성이 낮음
(2) 고급 언어 (High-level programming language)
- 사람이 알아듣기 쉬운 언어
- 처리속도가 느림
- 이식성 및 가독성이 높음
- 고급 언어 종류
컴파일 언어 (Compiled Language) : C, C++, Go, RUST 등
인터프리터 언어(Interpreted Language) : PHP, HTML, JAVA script 등
JIT 컴파일 언어(Just-In-Time compiled Language) : C#, JAVA, Python 등
2.2. 해석 방식에 따른 분류
(1) 컴파일러를 이용한 프로세스
- 컴파일 시 프로그램 실행 전에 전체 소스 코드를 컴파일하여 기계어로 변환
(2) 인터프리터를 이용한 프로세스
- 컴파일 시 프로그램 실행과 동시에 소스 코드를 한 줄씩 컴파일
(3) JIT 컴파일러를 이용한 프로세스
- 컴파일 시 프로그램 실행 전에 전체 소스 코드를 특정 코드로 컴파일
- 이후 실행할 때 마다 컴파일한 특정 코드로 실행
컴파일러(Compiler) | 인터프리터(Interpreter) | JIT 컴파일러 | |
입력 | 전체 프로그램 | 한 줄의 코드 또는 명령 | 전체 프로그램 |
산출 | 중간 객체 코드 생성 (이후 사용 안함) |
X | 중간 객체 코드 생성 (이후 사용함) |
메커니즘 | 실행 전에 컴파일 수행 | 실행과 동시에 컴파일 실행 | 두 가지 모두 수행 |
속도 | 빠름 | 느림 | 보통 |
메모리 | 많이 필요 | 적게 필요 | 보통 필요 |
오류 감지 | 어려움 | 쉬움 | 보통 |
프로그래밍 언어 | C, C++, Scala, RUST 등 | JavaScript, Perl, PHP 등 | Java, Python 등 |
2.3. 패러다임에 따른 분류
(1) 절차적 프로그래밍
- 단순히 순차적인 명령 수행이 아닌 루틴, 서브루틴, 메소드, 함수 등을 이용한 프로그래밍 패러다임
(2) 객체 지향 프로그래밍
- 객체 단위로 명령을 수행하는 프로그래밍 패러다임
객체(Object) : 실제로 존재하는 대상 또는 개념
클래스(Class) : 객체들을 만들어 내기 위한 큰 틀
인스턴스(Instance) : 클래스를 바탕으로 구체적으로 나타낸 객체
절차적 언어 | 객체 지향 언어 |
프로그램이 프로시저 단위로 나뉜다. | 프로그램이 객체 단위로 나뉜다. |
데이터와 함수가 분리 되어 있다. | 데이터와 메서드가 통합 되어 있다. |
순차적으로 처리한다. | 비순차적으로 처리한다. |
개발 생산성, 유지보수 및 확장에 용이하지 않다. | 개발 생산성, 유지보수 및 확장에 용이하다. |
실행 속도가 빠르다 | 실행속도가 느리다. |
3. 프로그래밍 언어 순위
3.1. 2021년 1월 기준
1위 : C 언어
2위 : JAVA
3위 : Python
예전에는 JAVA를 더 많이 썼지만 최근 사물인터넷 기기가 발달하면서 C 언어가 다시 인기를 얻고 있다.
'정보보호 > 프로그래밍 개론' 카테고리의 다른 글
6/29(화) 과제 (0) | 2021.06.30 |
---|---|
프로그래밍 개요 (0) | 2021.06.28 |
- Total
- Today
- Yesterday
- DOM
- History 객체
- 변수
- Char
- Document Object Model
- short
- Screen 객체
- Navigator 객체
- int
- stdio.h
- gcc
- 리액트 #React #props #state #javascript
- 컴파일
- location 객체
- long
- c언어
- Browser Object Model
- bom
- keyword
- 자료형
- window 객체
- 키워드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |