정보

    • 업무명     : 정보처리기사 실기 : 26강 프로그래밍 언어 활용 (언어특성 활용하기, 라이브러리 활용하기)

    • 작성자     : 이상호

    • 작성일     : 2020-05-10

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [언어 특성 활용]

    [1] 프로그래밍 언어의 언어별 특성
    • 프로그래밍 언어는 컴퓨터 시스템의 역사와 함께하고 있으며 프로그래밍 언어가 개발된 시대적인 패러다임에 따라 유사한 특성을 가지고 있다. 프로그래밍 언어의 발전 과정과 각 언어별 특성은 다음과 같다. 

    • 1. 프로그래밍 언어의 발전 과정 프로그래밍 언어는 1940년대 컴퓨터의 발전과 함께 발전하였다. 세계 최초의 프로그램은 내장 방식의 프로그램으로, 이후에 현재까지 지속적으로 발전하고 있다. 

     

    • 2. 프로그래밍 언어별 특성 프로그래밍 언어는 각각의 특성들을 가지고 있으며, 주요 내용은 다음과 같다. 

      • (1) FORTRAN 

        • 1954년에 초기 버전이 개발된 언어로 시스템 의존적이고, 프로그램 작성을 위해서는 컴퓨터 시스템 관련 지식이 많이 필요하다는 특징을 가지고 있다. 1977년 FORTRAN 77이 등장하였으나 그 이후에 등장한 언어와 비교하여 자료 구조가 제한적이었다. 재귀 함수, 구조체, 포인터 등은 제공되지 않았으며, FORTRAN 90이 등장하고 나서야 포함되었다. 

      • (2) COBOL 

        • 1960년에 미국 국방성에 의해 개발되었다. 단순한 입출력 구현 시에도 많은 형식적인 문장이 필요하며, 비교적 프로그램 크기가 크고 구문이 복잡하다. 순차적 방식의 언어 로, 웹 응용 프로그램과 쉽게 통합할 수 있다는 점이 유용하며, 자료 구조의 선언 부분과 프로그램의 실행 부분을 분리하였다는 특징이 있다. FORTRAN과 마찬가지로 대문자로만 작성된다.

      • (3) PASCAL 

        • 1971년 개발되어 1980년대 말까지 많이 쓰인 언어이다. 잘 짜인 구조와 간결성으로 인해 프로그래밍 언어로써 성공하였으나, 분리 컴파일과 문자열의 적절한 처리 등을 제공하지는 못하였다. 사용자 정의 추상화 기능은 제공하나 정보 은닉 기능이 없어 현대의 프로그래밍 기법을 적용하기에는 다소 부족하다는 단점을 가지고 있다. 

      • (4) C 

        • 1972년에 개발된 언어로, UNIX 운영체제 구현에 사용되는 언어이다. 범용 언어로 개발되었으나 문법의 간결성, 효율적 실행, 효과적인 포인터 타입 제공이라는 특징으로 인해 가장 많이 사용되는 시스템 프로그래밍 언어가 되었다. 

      • (5) C++ 

        • C 언어를 발전시킨 언어로 클래스, 상속 등을 제공하는 객체 지향 프로그래밍 언어이 다. 대형 프로젝트 수행 시 모듈별 분리가 가능하여 개발과 유지 관리에 적합하다. 

      • (6) JAVA 

        • C++에 비해 단순하고 분산 환경 및 보안성을 지원한다. JAVA 언어는 컴파일을 거쳐 야 하며, 컴파일을 통해 생성된 class 파일을 가상 머신을 통해 실행하여야 한다. 

      • (7) JAVASCRIPT 

        • 1995년에 개발된 객체 지향 스크립트 언어로 웹 페이지 동작을 구현할 수 있다. 빠른 시간에 코드를 완성할 수 있고 확장성이 좋으며 배우기 쉽다는 장점이 있으나, 보안이 나 성능이 다른 언어에 비하여 부족하다는 단점이 있다. 

      • (8) PERL 

        • 텍스트 처리에 주안점을 두고 개발된 인터프리터 언어로 CGI용으로도 많이 사용된다. 변수를 명시적으로 선언할 필요가 없고, 모든 변수가 지정되지 않았을 경우에는 기본 초깃값을 가진다. 

      • (9) PYTHON 

        • 배우기 쉽고 이식성이 좋은 언어로 최근 트렌드와 잘 맞는다, 다양한 함수들도 많이 제공되어 스타트업과 글로벌 기업에서도 많이 사용한다. PERL 언어처럼 인터프리터 언어이면서 객체 지향 언어, 스크립트 언어이다.

      • (10) C# 

        • 2000년에 .NET 환경에 맞춰 설계된 언어이다. C와 C++의 발전된 형태로, VISUAL BASIC과 같이 사용자 인터페이스를 쉽게 만드는 컴포넌트 기능을 제공하기도 한다. .NET 환경에서 실행되기 때문에 .NET 환경이 설치되어야 하고, C# 컴파일러를 필요로 한다.

      • (11) GOLANG 

        • 2009년 Google에서 만든 언어로 짧게 GO라고도 부른다. C 언어와 직접적인 연관을 가 지며, 내장 라이브러리가 많이 지원된다. 대체로 C 언어의 문법과 유사하나 if, for, switch를 포함한 제어 구조를 가지며, 하드웨어 사양이 낮더라도 빠른 컴파일이 가능 하다는 특징을 가진다

      • (12) DART

        • JAVASCRIPT와 JAVA의 영향을 받아 개발되었으며, 객체 지향적인 언어이다. 백그라운드에서 작동한다는 점에서 JAVASCRIPT와 차이를 가지고 있으며, JAVASCRIPT와 유사 하나 단순화하였다. 별도의 라이브러리 설치 없이 HTML 페이지를 수정할 수 있다는 특징을 가진다.

      • (13) CEYLON 

        • JAVA에 기반을 둔 언어로 모듈성을 주요 특징으로 가진다. 코드를 패키지와 모듈로 정리하여 가상머신에서 컴파일을 수행하며, CEYLON Herd라는 저장소에서 모듈을 발행한다.

     

    [2] 프로그래밍 언어의 유형 분류
    • 프로그래밍 언어는 개발 편의성에 따라 저급 언어와 고급 언어로, 실행하는 방식에 따라 명령형, 함수형, 논리형, 객체 지향형 언어로, 구현 기법에 따라 컴파일 방식의 언어, 인터 프리터 방식의 언어, 혼합형 언어로 분류할 수 있다.

    • 1. 개발 편의성에 따른 분류 

      • (1) 저급 언어

        • 기계가 이해할 수 있도록 만들어진 언어로 기계어, 어셈블리어가 저급 언어에 속한다.

      • (2) 고급 언어

        • 개발자가 소스코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어로 C, C++, JAVA 등이 고급 언어에 속한다.

    • 2. 실행하는 방식에 따른 분류 

      • (1) 명령형 언어

        • 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식으로 절차형 언어라고도 불리며, FORTRAN, COBOL, PASCAL, C 등이 명령형 언어에 속한다.

      • (2) 함수형 언어

        • 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식으로 LISP 등의 프로그래밍 언어가 함수형 언어에 속한다. 

      • (3) 논리형 언어

        • 규칙에 대한 활성화 조건이 만족되면 연관된 규칙이 실행되는 구조로, 추론과 관계 규칙에 의해 원하는 결과를 얻어 내는 방식이다. PROLOG 등이 논리형 언어에 속한다. 

      • (4) 객체 지향 언어

        • 객체 간의 메시지 통신을 이용하여 프로그래밍 하는 방식으로, JAVA와 C++ 등이 객체 지향 언어에 속한다. 

    • 3. 구현 기법에 따른 분류 

      • (1) 컴파일 방식의 언어

        • 고급 언어를 기계어로 번역하는 방식의 언어를 의미하며, FORTRAN, PASCAL, C, C++ 등이 컴파일 방식의 언어에 속한다. 컴파일 방식은 실행 에 필요한 정보가 컴파일 시간에 계산되어 실행 속도가 높다는 특징을 가지고 있다. 

      • (2) 인터프리터 방식의 언어

        • 고급 언어 명령문을 하나씩 번역하고 실행하는 방식의 언 어를 의미하며, BASIC, PROLOG, LISP, SNOBOL 등이 인터프리터 방식의 언어에 속한 다. 프로그램 실행 시에 계산된다는 특징을 가지고 있다.

      • (3) 혼합형 방식의 언어

        • 고급 언어를 컴파일 하여 중간 언어로 변환한 후, 인터프리터 에 의해 번역을 실행하는 방식의 언어를 의미하며 JAVA가 이에 속한다.

     

    [3] 컴파일러와 인터프리터
    • 고급 언어로 작성된 프로그램의 경우에는 컴퓨터 시스템이 바로 이해할 수 없기 때문에 번역을 필요로 하며, 컴파일러 또는 인터프리터를 이용해 번역을 수행한다. 

      • (1) 컴파일러(Compiler)

        • FORTRAN, C 등과 같은 고급 언어를 기계어로 번역하는 도구로, 컴파일 방식의 언어는 모두 컴파일러를 필요로 한다. 컴파일러는 프로그램의 한 종류로 볼 수 있다. 

      • (2) 인터프리터(Interpreter)

        • 프로그램 문장을 하나씩 번역하고 실행할 수 있도록 하는 프로 그램이다. 컴파일 과정이 없기 때문에 개발하는 과정에서 사용하면 유용하며, 인터프리터 방식의 언어는 모두 인터프리터를 필요로 한다. 실행 속도가 느리고 메모리 사용이 비효율적이라는 단점이 있다.

     

    [4] 객체 지향 프로그래밍
    • 프로그래밍은 크게 절차 지향 프로그래밍과 객체 지향 프로그래밍으로 구분할 수 있다. 이는 프로그래밍 언어 구조에 따라 구분한 것으로, 객체 지향 프로그래밍의 개념이 절차 지향 프로그래밍보다 뒤늦게 등장하였으나, 절차 지향 프로그래밍을 알아야 객체 지향 프로그래밍을 알 수 있는 관계는 아니다. 

    • 1. 절차 지향 프로그래밍과 객체 지향 프로그래밍 

      • 절차 지향 프로그래밍은 객체라는 개념이 등장하기 이전에 모듈, 변수, 함수를 사용하여 개발하는 방법이다. 프로그램을 순차적으로 수행시키는 방법으로 자료 구조와 명령 중심 으로 프로그램을 구성한다. 객체 지향 프로그래밍의 경우에는 객체와 객체 간의 통신을 통해 프로그램이 구현된다. 객체와 속성, 메소드로 구성되는데, 절차 지향에서의 모듈은 객체에 대응되고, 변수는 속성에 대응되며, 함수는 메소드에 대응된다. 

    • 2. 객체 지향 프로그래밍의 구성 요소 

      • 객체 지향 프로그래밍은 객체, 클래스, 메시지를 이용하여 개발하는 방식으로, 각 구성 요소에 대한 내용은 다음과 같다. 

      • (1) 객체(Object): 개체, 속성, 메소드로 구성된 클래스의 인스턴스를 의미한다. 

      • (2) 클래스(Class): 객체의 타입을 정의하고 객체를 생성하는 틀을 의미한다. 

      • (3) 메시지(Message): 객체 간의 통신을 의미한다

    • 3. 객체의 구성 요소 

      • 객체는 현실 세계에서 개체(Entity)를 데이터 속성(Attribute)과 메소드(Method)를 결합 시킨 형태로 표현한 것을 의미하며, 각 구성 요소에 대한 내용은 다음과 같다. 

      • (1) 개체(Entity): 현실 세계에 보이는 본질을 의미한다. 

      • (2) 속성(Attribute): 자료 저장소 역할을 하며, 절차 지향 프로그래밍의 변수와 대응된다. 

      • (3) 메소드(Method): 호출 단위를 의미하며, 절차 지향 프로그래밍의 함수와 대응된다.

    • 4. 클래스(Class) 클래스는 객체 지향 프로그래밍에서 객체를 표현하는 추상 데이터 타입으로 객체를 생성 하는 틀이다. 기존 언어에서 지원하던 사용자 정의 자료형 및 서브프로그램의 개념을 발전시켜 JAVA, C++ 등에서 클래스를 통해 추상화된 자료형을 제공한다. 

     

    [라이브러리 활용]

    [1] 라이브러리(Library)
    • 라이브러리는 효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓은 집합체로서, 프로그래밍 언어에 따라 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공한다. 

    • 1. 라이브러리의 개념 : 라이브러리란 영어로 도서관을 의미하며, 필요할 때 찾아서 쓸 수 있도록 모듈화 되어 제공되는 프로그램을 말한다. 

    • 2. 라이브러리의 구성: 라이브러리는 도움말, 설치 파일, 샘플 코드 등으로 구성된다. 

      • (1) 도움말: 라이브러리를 사용할 수 있도록 하는 도움말 문서이다. 

      • (2) 설치 파일: 라이브러리를 적용하기 위해 제공되는 설치 파일이다. 

      • (3) 샘플 코드: 라이브러리를 이해하고 손쉽게 적용하기 위해 제공되는 샘플 소스코드이다.

     

    [2] 표준 라이브러리와 외부 라이브러리
    • 1. 표준 라이브러리 

      • 표준 라이브러리는 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리를 의미한다. 각 프로그래밍 언어의 표준 라이브러리는 여러 종류의 모듈과 패키지를 가지며, 표준 라이브러리를 이용하면 별도의 파일 설치 없이 날짜와 시간 등의 기능을 이용할 수 있다.

    • 2. 외부 라이브러리 

      • 외부 라이브러리는 표준 라이브러리와 달리 별도의 파일을 설치하여야 한다. 외부 라이브러리는 누구나 개발하여 설치할 수 있으며, 인터넷 등을 이용하여 공유할 수도 있다. 

     

    [3] 모듈(Module)과 패키지(Package)
    • 라이브러리는 모듈과 패키지를 총칭하며, 모듈이 개별 파일이라면 패키지는 파일들을 모 아 놓은 폴더라고 볼 수 있다. 

    • 1. 모듈(Module) 

      • 한 개의 파일에서 기능을 제공한다.

    • 2. 패키지(Package) 

      • 여러 개의 모듈을 한 개의 폴더에 묶어서 기능을 제공한다. 

      • 패키지명과 모듈명을 import 하여 불러올 수 있다. 

     

    [연습문제]

    • 1980년대에 탄생한 언어가 아닌 것은?

      • C언어

      • PYTHON

      • Prolog

      • Ada

     

    • 1995년에 개발된 객체 지향 스크립트 언어로 웹 페이지 동작을 구현할 수 있다. 빠른 시간에 코드를 완성할 수 있고 확장성이 좋으며 배우기 쉽다는 장점이 있으나, 보안이 나 성능이 다른 언어에 비하여 부족하다는 단점이 있는 언어는?

      • Java

      • Javascript

      • C#

      • Physon

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기