정보처리기사

[정보처리기사] 프로그램 언어 특성

hminor 2023. 7. 3. 21:31

프로그램 언어 특성

  • 프로그래밍 언어의 유형 분류
    • 개발 편의성 측면에 따른 분류
      • 저급언어
        • 컴퓨터가 직접 이해할 수 있는 언어
        • 빠름
      • 고급언어
        • 인간이 이해할 수 있는 소스코드
        • 느림
    • 실행 및 구현 방식에 따른 분류
      • 명령형 언어(Imperative Language)
        • 컴퓨터가 동작해야 할 절차를 통해 프로그래밍의 상태를 변경시키는 구문에 중점을 둔 방식
        • 종류
          • Fortran
          • C
      • 함수형 언어(Functional Language)
        • 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임 중 하나
        • 종류
          • LISP
          • Scala
      • 논리형 언어(Logic Language)
        • 논리 문장을 이용해 프로그램을 표현하고 조건이 만족되면 연관된 규칙이 실행되는 방식
        • 종류
          • Prolog
      • 객체지향 언어(Object-Oriented Language)
        • 객체 간의 메시지 통신을 이용하여 동작하는 방식
        • 종류
          • JAVA
          • C++
    • 빌드 방식에 따른 분류
      • 컴파일 언어(Compile Language)
        • 소스코드를 목적 코드로 변환하여 실행
        • 소스코드를 컴퓨터가 이해할 수 있는 언어로 번역을 하는 방식
        • 종류
          • C
          • C++
      • 인터프리터 언어(Interpreter Language)
        • 소스코드를 한 줄씩 실행하는 방식
        • 소스코드를 컴퓨터가 이해할 수 있는 언어로 통역을 하는 방식
        • 종류
          • BASIC
          • Python
      • 바이트 코드 언어(Byte Code Language)
        • 컴파일을 통해 가상머신이 번역할 수 있는 Byte Code로 변환되고, 가상머신이 기계어로 번역하는 방식
        • 종류
          • JAVA
          • Scala
  • 절차적 프로그래밍 언어(하향식)
    • 개념
      • 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어
      • Procedure(루틴, 서브루팅, 메서드, 함수)를 이용해 작성하는 프로그래밍 스타일
      • 순차적인 처리를 중요시 하여, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
      • C언어가 대표적
    • 장점
      • 함수를 통해 코드의 재활용성이 높아지며, 실행 속도가 빠르다
    • 단점
      • 프로그램 분석이 어려우며, 유지보수 및 코드의 수정이 어렵다.
    • 종류
      • C언어
        • 1972년 데니스 리치에 의해 개발됨
        • 운영체제를 작성하기 위한 시스템 프로그래밍 언어로 개발
        • 이식성이 뛰어남
        • 예시로 리눅스는 C언어로 만들어서 이식이 좋지만, 유닉스는 90%는 C언어, 10%는 어셈블리 언어로 만들었기에 이식이 좋지 못하다.
      • COBOL
        • 금융 및 인적 자원과 같은 비즈니스 컴퓨터 프로그램을 위해 설계됨
      • FORTRAN
        • 과학 계산용으로 주로 사용되는 언어
      • BASIC
        • 교육용으로 개발되어 언어의 문법이 쉽다.
  • 객체지향 프로그래밍 언어(상향식)
    • 개념
      • 만들고자 하는 소프트웨어의 구조를 객체로 만들고, 객체들끼리 상호작용 하도록 만드는 프로그램이 언어
      • 객체들을 적절히 조립하고, 연결하여 소프트웨어가 동작하도록 만드는 것.
    • 특징
      • 캡슐화(Encapsulation)
        • 데이터와연산을 하나로 묶어 캡슐처럼 만드는 것
        • 정보은닉
        • 캡슐화된 객체들은 재사용이 용이하다.
      • 상속(Inheritance)
        • 상위 클래스의 데이터와 연산을 하위 클래스가 물려받는 것.
        • private한 요소 외의 모든 내용을 하위 클래스가 사용할 수 있다.
        • extends라는 키워드를 사용한다.
      • 다형성(Polymorphism)
        • 메시지를 통해 연산을 수행할 때, 같은 이름을 가진 여러 메서드 중 특정 메서드가 호출되는 것.
        • 종류
          • 오버로딩
            • ex) a(), a(x), a(x,y)
          • 오버라이딩
      • 추상화(Abstraction)
        • 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것
        • 공통의 성질을 모아둔 것
      • 정보은닉(Information Hiding)
        • 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것.
    • 장/단점
      • 장점
        • 재사용성
        • 생산성 향상
        • 자연적인 모델링
        • 유지보수의 우수성
      • 단점
        • 개발 속도가 느려진다.
        • 실행 속도가 대체적으로 느리다.
        • 코딩 난이도 상승
    • 종류
      • JAVA
        • 객체지향 언어의 대표적인 언어
      • 시뮬라67
        • 최초의 객체지향언어
      • 스몰토크
        • 최초로 GUI를 제공하는 언어
      • 오브젝티브-C
        • 애플의 운영체제인 IOS에서 사용되는 언어, 맥용
      • C++
        • 객체지향성이 더해진 C언어의 확장형
      • 파이썬
        • 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑 대화형 언어
        • 플랫폼 독립적
          • 리눅스, 유닉스 등 어디에서든 잘 돌아간다.
        • 동적 타이핑
          • 동적으로 자료 타입을 할당
  • 스크립트 언어
    • 개념
      • 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어
      • 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어
      • 최종 사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 한다.
    • 종류
      • 자바 스크립트(Java Script)
        • HTML 문서 내에 삽입되어 사용되며, 동적인 인터렉티브한 페이지를 만들 수 있게 한다.
      • JSP(Java Sever Pages)
        • HTML 페이지 안에 자바 코드를 직접 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어
      • PHP
        • HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어
        • 리눅스 운영체제에 아파치 웹 서버를 설치하고 MYSQL DB 환경에서 PHP 프로그래밍 언어가 주로 사용된다.
      • ASP
        • MS사의 웹 프로그래밍 언어
      • Perl
        • 유닉스 계열 운영체제의 스크립트 프로그래밍 언어
      • Python
        • 귀도 반 로썸이 개발한 객체 지향 스크립트 프로그래밍 언어
        • 별도의 컴파일 과정이 필요 없다.
  • 선언형 언어
    • 개념
      • 프로그램이 수행해야 하는 문제를 기술하는 언어
      • 목표를 명시하고 알고리즘은 명시하지 않는다.
      • 가독성이나 재사용성이 좋고, 오류가 적다.
    • 종류
      • 하스켈(Haskell)
        • 함수형 프로그래밍 언어
      • HTML
        • 웹 콘텐츠의 의미와 구조를 정의할 때 사용
      • SQL
        • 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어