프로그래밍 언어별 특징
1. 프로그래밍 언어의 유형 분류
1.1 개발 편의성 측면에 따른
저급언어(Low-Level Language)- 컴퓨터가 직접 이해할 수 있는 언어
- 실행속도는 빠르나 기계마다 기계어가 상이하여 호환성이 없고, 유지관리가 어렵다.
고급언어(High-Level Language)- 인간이 이해할 수 있는 소스코드로 되어 있는 언어
- 실행을 위해서 저급언어로 번역하는 과정이 필요하다.
1.2 실행 및 구현 방식에 따른 분류
명령형 언어(Imperative Language)- 컴퓨터가 동작해야 할 절차를 통해 프로그래밍의 상태를 변경시키는 구문에 중점을 둔 방식
- FORTRAN, C 등
함수형 언어(Functional Language)- 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임 중 하나다.
- LISP, Scala 등
논리형 언어(Logic Language)- 논리 문장을 이용하여 프로그램을 표현하고 조건이 만족되면 연관된 규칙이 실행되는 방식
- PROLOG 등
객체지향언어(Object-Oriented Language)- 객체 간의 메시지 통신을 이용하여 동작하는 방식
- JAVA, C++ 등
1.3 빌드(Build) 방식에 따른 분류
컴파일 언어(Compile Language)- 소스코드를 목적 코드로 변환하여 실행하는 방식
- 소스코드를 컴퓨터가 이해할 수 있는 언어로 번역을 하는 방식
- C, C++ 등
인터프리터 언어(Interpreter Language)- 소스코드를 한 줄씩 실행하는 방식
- 소스코드를 컴퓨터가 이해할 수 있는 언어로 통역을 하는 방식
- BASIC, Python 등
바이트 코드 언어(Byte Code Language)- 컴파일을 통해 가상머신이 번역할 수 있는 Byte Code로 변환되고, 가상머신이 기계어로 번역하는 방식
- JAVA, Scala 등
2. 절차적 프로그래밍 언어
2.1 절차적 프로그래밍 언어 개념
- 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어
- Procedure(루틴, 서브루틴, 메소드, 함수)를 이용하여 작성하는 프로그래밍 스타일
- 순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다.
2.2 절차적 프로그래밍 언어 장/단점
- 장점
- 함수를 통해 코드의 재활용성이 높아진다.
- 컴퓨터의 처리 구조와 유사하며 실행속도가 빠르다.
- 단점
- 프로그램 분석이 어려움
- 유지보수나 코드의 수정이 어려움
2.3 절차적 언어의 종류
C 언어- 1972년 데니스 리치에 의해 개발
- 운영체제를 작성하기 위한 시스템 프로그래밍 언어로 개발
- 이식성이 뛰어남
COBOL- 금융 및 인적 자원과 같은 비즈니스 컴퓨터 프로그램을 위해 설계됨
- 4개의 DIVISION으로 구성
FORTRAN: 과학 계산용으로 주로 사용되는 언어BASIC: 교육용으로 개발되어 언어의 문법이 쉽다
3. 객체지향 프로그래밍 언어
3.1 객체지향 프로그래밍 언어 개념
- 만들고자 하는 소프트웨어의 구조를 객체로 만들고, 객체들끼리 상호작용 하도록 만드는 프로그래밍 언어
- 객체들을 적절히 조립하고, 연결하여 소프트웨어가 동작하도록 만드는 것
3.2 객체지향 프로그래밍 언어 특징
캡슐화(Encapsulation)- 데이터와 연산을 하나로 묶어 캡슐처럼 만드는 것
- 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급효과가 적다.
- 캡슐화된 객체들은 재사용이 용이하다.
정보은닉(Information Hiding)- 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
상속(Inheritance)- 상위 클래스의 데이터와 연산을 하위 클래스가 물려받는 것
- private 한 요소 외의 모든 내용을 하위 클래스가 사용할 수 있다.
- extends 라는 키워드를 사용한다.
다형성(Polymorphism)- 메시지를 통해 연산을 수행할 때, 같은 이름을 가진 여러 메서드 중 특정 메서드가 호출되는 것
- 오버로딩과 오버라이딩이 있다.
추상화(Abstarction)- 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것
3.3 객체지향 프로그래밍 언어 장단점
- 장점
- 재 사용성
- 생산성 향상
- 자연적인 모델링
- 유지보수의 우수성
- 단점
- 개발 속도가 느려진다.
- 실행 속도가 대체적으로 느리다.
- 코딩 난이도 상승
3.4 객체지향 프로그래밍 언어의 종류
JAVA: 객체지향언어의 대표적인 언어시뮬라67: 최초의 객체지향언어스몰토크(Smalltalk): 최초로 GUI를 제공하는 언어오브젝티브-C(Objective-C): 애플의 운영체제인 iOS에서 사용되는 언어C++: 객체지향성이 더해진 C 언어의 확장형파이썬(Python): 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어
4. 스크립트 언어
4.1 스크립트 언어 개념
- 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어
- 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어
- 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다
4.2 스크립트 언어의 종류
자바스크립트(JavaScript)- HTML 문서 내에 삽입되어 사용되며, 동적인 인터렉티브한 페이지를 만들 수 있게 한다.
JSP- 자바 서버 페이지(JavaServer Pages)의 약자
- HTML 페이지 안에 자바(Java) 코드를 직접 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어
PHP- HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어
- 리눅스 운영체제에 아파치(Apache) 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용된다.
ASP: 마이크로소프트의 윈도우 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어Perl: 유닉스 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어Python- 네덜란드 암스텔담의 귀도 반 로썸(Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어
- 별도의 컴파일 과정이 필요없다.
- 리눅스나 윈도우 등 특정 플랫폼에 독립적이다.
VBScript: 마이크로소프트 Visual Basic(비주얼베이직) 기반의 스크립트 프로그래밍 언어
5. 선언형 언어
5.1 선언형 언어 개념
- 프로그램이 수행해야 하는 문제를 기술하는 언어
- 목표를 명시하고 알고리즘은 명시하지 않는다.
- 가독성이나 재사용성이 좋고, 오류가 적음
5.2 선언형 언어의 종류
하스켈(Haskell): 함수형 프로그래밍 언어HTML: 웹 콘텐츠의 의미와 구조를 정의할 때 사용SQL: 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어