티스토리 뷰

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
«   2024/09   »
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
글 보관함