프로그래밍 언어
1. 프로그래밍 언어
1) 프로그래밍 언어의 정의
∙ 프로그램을 작성할 수 있는 언어로 기계가 이해할 수 있으면서 사 람이 이해할 수 있는 형태로 컴퓨터가 주어진 작업을 수행하도록 명시하는 방법
2) 평가기준
∙ 판독성(Readability)
∙ 작문성(Writability)
∙ 신뢰성(Reliability)
∙ 비용(Cost)
2. 프로그래밍 언어의 발전 과정
1) 1세대 언어(1950년대) - 기계어, 어셈블리어
2) 2세대 언어(1950년대 말 ~ 1960년대 초) - 고급 언어 개발에 중점
3) 3세대 언어(1960년대 중반 ~ 1970년대) - 절차적 언어의 기초 확립
4) 4세대 언어(1980년대) - 비 절차적 언어, 데이터베이스 및 질의 언어
5) 5세대 언어(1990년대) - 인공지능 분야, 자연어
∙ 절차적 언어(ProceduralLanguage):기존 고급 언어들로 프로그래밍 할 때 문 제 해결을 ‘어떻게,어떤 절차로 할 것인지’를 정의하는 문제 해결 중심의 언어 ∙ 비 절차적 언어(Non-ProceduralLanguage):4세대 언어로,‘무엇을 할 것인 지’와 ‘결과가 무엇인지’만을 정의하는 것
3. 언어 번역 프로그램
1) 용어
∙ 목적 프로그램(Object Program) : 컴파일러에 의해 기계어로 번역 된 프로그램
∙ 연계편집(Linker) : 목적 프로그램을 실행 가능한 프로그램으로 만 드는 과정
∙ 로드모듈(Load Module) : 목적 모듈에 번지 등을 지정하여 실행할 수 있는 형태의 프로그램
∙ 적재(Loader) : 프로그램을 실행시키기 위해 주기억 장치에 프로그 램을 적재하는 프로그램
3. 언어 번역 프로그램
2) 번역기의 종류
∙ 컴파일러
- 고급언어로 작성된 프로그램을 기계어로 번역하는 프로그램
- 실행시간의 효율성을 강조
- FORTRAN, COBOL, PL/1, PASCAL 등
∙ 인터프리터
- 융통성을 강조한 처리
- 명령 단위 별로 번역 즉시 실행
- 기억 장소가 적게 필요
- Interactive 처리
- BASIC, LISP 등
∙ 어셈블러(Assembler)
- 어셈블리어로 작성된 원시 프로그램을 기계어로 번역하는 프로그램
4. 프로그래밍 언어별 특징
1) 저급언어
∙ 기계어
- 2진수만 사용하여 명령어와 데이터를 표현한 기계 중심 언어
- 프로그램의 실행 속도가 빠름 - 프로그램의 유지 보수가 용이
∙ 어셈블리어 - 기계 중심의 언어로 기계어에 1:1 대응되는 언어
- 저급언어로써 기계어에 가장 가까운 언어
2) 고급언어
∙ FORTRAN
- 과학기술용
- J.Backus에 의하여 개발되었으며 수학, 과학, 공학 등과 같은 수 리계산 분야에 널리 사용되는 언어
- 번역기를 구현한 최초의 고급언어이며, 컴파일러 방식의 대표적 언어
∙ COBOL
- 사무처리용
- 기계 독립적인 부분과 기계 종속적인 부분을 분리
- 4개의 영역으로 구성(IDENTIFICATION, ENVIRONMENT, DATA, PROCEDURE)
∙ LISP
- 인공지능 분야에 사용되는 언어
- 선언문을 사용하지 않음
∙ SNOBOL4
- 스트림 연산
- 문자열 복사, 치환 등과 같은 문자열의 조작을 편리하게 수행할 수 있도록 여러 가지 기능을 제공
∙ BASIC
- 대화형(회화형)언어
- 명령어의 종류가 적고, 문법이 간단함
∙ C 언어
- 시스템 프로그래밍 언어
- 고급언어와 저급언어 프로그래밍이 가능
- 대표적인 컴파일 언어
- 이식성이 높은 언어
- 구조적 프로그래밍이 가능
1) 추상화(Abstraction)의 개념
∙ 정보를 보여주지 않고 숨기는 정보 은닉(Information Hiding) 기법 의 하나로 정보의 구체적인 내용은 자신만이 알고 있으면서 외부에 있는 객체들에게는 정보에 대하여 개념적인 내용만 알려주는 모델 링 기법
∙ 프로그래밍 언어의 가독성과 작성의 용이성, 신뢰성, 기계 독립성, 이해 향상을 위해 활용
2) 추상화의 특징
∙ 자료와 수행될 연산을 함께 정의
∙ 함수를 이용하는 외부 프로그램과 함수 사이에 독립성을 보장
∙ 프로그램 시스템을 “어떻게”라는 측면에서 관찰하기 보다 “무 엇”이라는 블랙박스로 이해하게 함
[3-5강] 운영체제 (0) | 2019.07.03 |
---|---|
[3-4강] C언어, 객체지향, 순서제어 (0) | 2019.07.03 |
[3-3강] 자료형, C언어 (0) | 2019.07.03 |
[3-2강] 언어의 설계와 구현 (0) | 2019.07.03 |