1) 저급 언어와 고급 언어
① 저급 언어 (Low-Level Language)
- 기계 중심의 언어
- 실행 속도가 빠름
- 상이한 기계마다 다른 코드를 가진다
기계어 (Machine Language) : 컴퓨터가 직접 이해할 수 있는 언어, 0과 1의 2진수 형태로 표현되며 수행시간이 빠름. 전문적인 지식이 없으면 프로그램 작성 및 이해가 어렵다, 기종마다 기계어가 다르므로 언어의 호환성이 없음. 프로그램 유지보수가 어렵다.
어셈블리어 (Assembly Language) : 기계어와 1:1로 대응되는 기호로 이루어진 언어, 기호 코드(Mnemonic Code)라고도 함. 기계어와 가장 유사하며, 기계어로 번역하기 위해서는 어셈블러(Assembler)가 필요함
② 고급 언어 (High-Level Language)
- 사람 중심의 언어
- 실행을 위해서는 번역하는 과정이 필요함
- 상이한 기계에서 소스 수정 없이 실행이 가능함
- 포트란 (FORTRAN) : 과학 계산용 언어로서, 뛰어난 실행 효율성으로 성공한 언어
- 코볼 (COBOL) : 회사의 사무용 자료처리 언어로 개발되었다. 기계 독립적인 부분과 기계 종속적인 부분을 분리하는데 성공한 언어이다.
- ALGOL : 알로리즘의 연구개발을 위한 목적으로 개발된 언어, 실무보다는 주로 교육용으로 사용되었다.
- LISP : 리스트 처리용 언어, 인공지능 분야에서 주로 사용되었다.
- APL : 고급 수학용 프로그래밍 언어
- PL/1 : 과학, 공학 및 산업 응용 프로그램을 위해 개벌된 명령형 프로그래밍 언어
- BASIC : 교육용으로 개발된 프로그래밍 언어
- SNOBOL : 스트림 자료 활용이 가장 많은 언어, 문자열 대치, 복사, 치환 등과 같은 문자열의 조작을 편리하게 수행할 수 있도록 여러 가지 기능을 제공함
- Pascal : 간결하면서도 강력한 언어로 손꼽히고 있다. 교육용 언어로는 뛰어나다는 평가를 받고 있다
- PROLOG : 논리 기반의 비절차적 언어, 인공지능 분야에서 주로 사용되었다
- Ada : 미 국방성의 주도로 개발된 고급 프로그램 작성 언어, 데이터 추출과 정보 은폐에 주안점을 두었고, 입출력 기능이 뛰어나서 대량 자료 처리에 적합함
- C : 1972년 미국 벨연구소의 데니스 리치에 의해 개발된 언어, 고급 언어 프로그래밍과 저급 언어 프로그래밍도 가능하다. 시스템 프로그래밍에 가장 적합한 언어이다.
- Java : 썬 마이크로시스템즈에서 개발한 객체 지향 프로그래밍 언어이다.
③ 저급 언어와 고급 언어의 특징
구분 |
고급 언어 |
저급 언어 |
호환성 |
좋다. |
나쁘다. |
용이성 |
쉽다. |
어렵다. |
실행속도 |
상대적으로 느리다. |
빠르다. |
2) 객체지향 프로그래밍 언어
① 객체지향 프로그래밍 언어의 개념
- 현실 세계의 현상을 컴퓨터상에 객체(Object)로 모델화함으로써, 컴퓨터를 자연스러운 형태를 사용하여 여러 가지 문제를 해결할 수 있는 언어이다.
- 절차적 언어에 비해 특히 유지보수성(Maintainalbility) 과 재사용성(Reusability) 이 좋다.
- 종류 : Ada, Smalltalk, C++, Java 등
② 객체지향 언어의 기본 구성 요소
객체(Object) |
- 데이터와 메소드로 구성된다 - 데이터(Data) : 객체가 가지고 있는 정보로서, 속성(Attribute)이라고도 한다 - 메소드(Method) : 객체가 메시지를 받아 실행해야 할 구체적인 연산을 정의한다 |
클래스 (Class) |
- 코드작성의 기본 단위이며 객체들을 찍어낼 수 있는 설계도/템플릿 역할. |
메시지 (message) |
- 객체들 간의 상호작용을 위한 수단으로 사용되며, 메시지를 받은 객체는 메소드를 수행한다. |
③ 객체지향 언어의 주요 특징
- 캡슐화 (Encapsulation) : 데이터와 메소드를 클래스 하나로 묶어, 객체 내부에서 필요로 하는 정보를 외부로부터 은닉시키고, 매소드를 통한 접근을 제공한다.
- 추상화 (Abstraction) : 자료 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것이다.
- 상속 (Inheritance) : 이미 정의되어 있는 상위 클래스와 메소드를 비롯한 모든 속성을 하위 클래스가 물려받는 것이다.
- 다형성(Polimorphism) :다형성 개념이란 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 일반적으로 오버라이딩(같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것)이나 오버로딩(같은 이름의 메소드가 인자의 갯수나 자료형에 따라서 다른 기능을 하는 것)을 의미한다. 다형성 개념을 통해서 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있다.