본문 바로가기

정보처리기사 실기/02. 응용SW엔지니어링

[2020 정보처리기사 실기 - 프로그래밍 언어 활용] 2. 언어 특성 활용하기 - 1

 

 

* 프로그래밍 언어의 발전 과정

- 1960년 이전 : ASSEMBLY, FORTRAN, LISP

- 1960년대 : COBOL, PL/I, BASIC

- 1970년대 : PASCAL, C, SMALLTALK, PROLOG

- 1980년대 : ADA, C++, PERL, PYTHON

- 1990년대 : RUBY, JAVA, JAVASCRIPT, PHP, VISUAL BASIC

- 2000년대 이후 : C#, SCALA, GO, CLOJURE, CEYLON, KOTLIN, DART 등

 

*프로그래밍 언어 유형

 

1) 개발 편의성

-저급 언어 : 기계가 이해할 수 있도록 만든 언어

                      추상화 수준이 낮고 프로그램 작성이 어려움

                      저급 언어에 능숙한 개발자는 매우 효율적으로 프로그램을 작성할 수 있음

                      기계어, 어셈블리어

-고급 언어 : 개발자가 소스코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어

                      번역하는 과정이 필요하며, 컴파일러 또는 인터프리터로 이용

                      C, C++, C#, JAVA, PYTHON

2) 구현방식

- 절차지향 언어 : 기계가 이해할 수 있도록 만들어진 언어/ 추상화 수준이 낮고 프로그래밍이 어려움

- 객체지향 언어 : 개발자가 소스코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어/ 번역 필요, 컴파일러와 인터프리터 사용

- 함수형 언어 : 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식의 언어 / Lisp, Scalar, Clojure, haskell

- 논리형 언어 : 규칙에 대한 활성화 조건이 만족되면 연관된 규칙이 실행하는 구조

                            이론과 관계 규칙에 의해 원하는 결과를 얻음 PROLOG

3) 실행방식

- 컴파일 방식 : 고급 언어를 기계어로 변환, 실행에 필요한 정보가 컴파일 시간에 계산되어 실행 속도가 높음

                            C, C++, PASCAL, FORTRAN

- 인터프리터 방식 : 고급언어를 명령어 단위로 하나씩 번역하고 실행, 프로그램 실행 시 계산

                                     JAVASCRIPT, PROLOG, LISP, PYTHON

- 혼합형 : 고급 언어를 컴파일하영 중간 언어로 변환 후 인터프리터에 의해 번역 실행

                  JAVA

 

 

 

* 절차적 프로그래밍 언어

장점 : 코드의 재사용, 프로그램 흐름 파악, 모듈화 및 구조화

 

1) 프로시저와 모듈성

크고 복잡한 프로그램을 작성할 때 모듈성은 필요, 모듈성은 프로시저에 어떤 형태의 입출력이 이뤄지는지 명확한 규칙을 정해서 구현

- 매개변수 반환값 : 입력은 주로 인수의 형태로 문법적으로 지정하고, 출력은 결과값으로 지정

- 유효범위 : 프로시저가 모듈성을 잘 지킬 수 있게 해줌. 프로시저가 다른 프로시저의 변수에 접근하거나 그 반대의 경우를 막아줌

                      서로다른 장소에서 같은 이름의 변수를 사용하여 혼동되는 것을 막아주고, 다른 프로시저의 영역을 침해하는 것을 막음

- 명시적 허가 : 명시적인 허가 없이는 방금전의 자기 자신의 변수에도 접근할 수 없음

- 약 결합 : 변수가 프로그램의 부분들 사이에서 독립적 관계에 있다면 모듈성을 강학함

 

2) 절차적 프로그래밍 언어 사례

- C : 정규화된 표준 C라이브러리를 이용한 프로그래밍 언어로, 유닉스 시스템의 바탕 프로그램은 모두 C로 작성됨

- 포트린 : 주로 과학적인 계산을 하기 위해 시작된 프로그램 언어

- 알골 : 알고리즘 연구개발에 이용하기 위한 목적으로 만들어진 알골계 언어의 총칭

- 베이직 : 교육용으로 개발되어 언어 문법이 쉬운 절차적 언어

 

3) 절차적 프로그래밍 언어와 객체지향 프로그래밍 언어의 비교

프로시저 단위가 아닌, 객체 단위로 재사용이 가능한 객체지향 언어의 장점을 부각시키기 위해 자주 비교

- 절차적 프로그래밍 

데이터 기능 : 기능과 데이터가 분리

변경 용이성 : 프로그램 변경이 어려움

개발 용이성 : 프로그램의 구성요소가 실세계를 추상화. 프로그램 어려움

재사용 단위 : 프로시저

-객체지향 프로그래밍

데이터 기능 : 하나의 객체에 데이터, 기능 통합

변경 용이성 : 용이함

개발 용이성 : 프로그램 구성 요소가 실세계와 일치

재사용 단위 : 객체