4. 프로그래밍 언어 활용 - 프로그래밍 언어 활용(절차적 언어, 객체 지향 언어 , 스크립트 언어, 선언형 언어)

141. 절차적 프로그래밍 언어 (Procedural Programming Language)

: 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어

 

- 특징

  • 프로그램이 실행되는 절차를 중요시
  • 데이터를 중심으로 프로시저를 구현
  • 프로그램 전체가 유기적으로 연결됨
  • 자연어에 가까운 단어와 문장으로 구성
  • 과학 계산이나 하드웨어 제어에 주로 이용

 

- 장단점

  • 장점
    • 컴퓨터 처리 구조와 유사하여 실행 속도가 빠름
    • 같은 코드를 복사 없이 다른 위치에서 호출해서 사용 가능
    • 모듈 구성이 용이하고 구조적 프로그래밍이 가능
  • 단점
    • 프로그램의 분석이 어려움
    • 유지 보수나 코드의 수정이 어려움

 

-  절차적 언어의 종류 및 특징

  • C
    • 1972년 벨 연구소의 데니스 리치에 의해 개발
    • 시스템 프로그래밍 언어로 널리 이용
    • 자료의 주소를 조작할 수 있는 포인터 제공
    • 고급 프로그래밍 언어이면서 저급 언어의 특징도 존재
    • 컴파일러 방식의 언어
    • 높은 이식성 -> 컴퓨터 기종에 관계없이 프로그램 작성이 가능
  • ALGOL
    • 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어
    • PASCAL과 C언어의 모체
  • COBOL
    • 사무 처리용 언어
    • 영어 문장 형식 -> 이해와 구성이 쉬움
    • 4개의 DIVISION으로 구성
  • FORTRAN
    • 과학 기술 계산용 언어
    • 수학/공학 분야의 공식이나 수식 형태로 프로그래밍 가능

142. 객체 지향 프로그래밍 언어 (Object-Oriented Programming Language)

: 현실 세계의 개체(Entity)를 객체(Object)로 만들고, 이들을 조립해서 프로그램을 작성하는 언어 

 

- 특징

  • 객체는 데이터와 데이터를 처리하는 명령으로 구성
  • 프로시저보다 객체를 중심으로하는 프로그래밍 언어

 

- 장단점

  • 장점
    • 상속을 통해 재사용과 시스템 확장이 용이
    • 코드의 재활용성이 높음
    • 자연적인 모델링 지원 -> 분석과 설계과 쉽고 효율적임
    • 사용자와 개발자 사이의 이해가 쉬움
    • 대형 프로그램 작성이 용이
    • 개발 및 유지 보수가 용이
  • 단점
    • 구현을 지원하는 정형화된 분석 방법, 설계 방법이 없음
    • 구현 시 처리 시간 소모가 큼

 

-  객체 지향 프로그래밍 언어의 구성 요소

 

- 객체 지향 프로그래밍 언어의 기본 원칙

  • 캡슐화 (Encapsulation) : 데이터와 그 데이터를 처리하는 함수를 하나로 묶는 것
    • 캡슐화된 객체는 세부 내용이 은폐되므로 외부에 미치는 영향이 적음
    • 캡슐화된 객체는 재사용이 용이
  • 정보 은닉 (Information Hiding) : 한 객체가 자신의 세부 정보를 숨기고 연산만을 통해 다른 객체의 접근을 허용하는 것
  • 추상화 (Abstraction) : 객체의 속성에서 가장 핵심적인 부분만 중점을 두어 개략화하여 모델로 만드는 것
    • 데이터의 공통된 성질을 추출하여 상위 클래스(superclass)를 만드는 것
  • 상속성 (Inheritance) : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스(Subclass)가 물려받는 것
    • 상속받은 하위 클래스는 상위 클래스의 모든 속성과 메소드를 별도의 정의 없이 사용할 수 있음 
  • 다형성 (Polymorphism) : 객체가 메시지를 받아 연산을 수행할 때 각 객체가 가진 고유한 방법으로 응답하는 것
    • 여러 객체가 동일한 메소드명을 사용하고, 동일한 메소드 호출에 대해 고유한 방식으로 작동하는 것

 

- 객체 지향 언어의 종류 및 특징

  • Java
    • 분산 네트워크 환경에 적용 가능하고 멀티 스레드 기능을 지원
    • OS와 하드웨어에 독립적이며 이식성이 강함
    • 캡슐화가 가능하고 재사용성이 높음
  • C++
    • C 언어에 객체 지향 개념을 적용한 언어
    • 모든 문제를 객체로 모델링하여 표현
  • Smalltalk
    • 1세대 객체 지향 언어 중 하나로 순수한 객체 지향 언어
    • 최초로 GUI를 제공한 언어

143. 스크립트 언어 (Script Language)

: HTML 문서 내에 직접 프로그래밍 언어를 삽입하여 컴파일러 없이 별도의 번역기가 소스를 분석해 작동시키는 언어

 

- 특징

  • 데이터베이스 처리 작업 수행에 주로 이용 (게시판 입력, 상품 검색, 회원 가입, etc.)

 

- 장단점

  • 장점
    • 컴파일 없이 바로 실행하여 결과를 바로 확인할 수 있음
    • 습득과 코딩이 쉬움
    • 개발 시간이 짧음
    • 코드 수정이 간단함
  • 단점
    • 해석으로 인해 실행 속도가 느림
    • 런타임 오류가 자주 발생

 

- 스크립트 언어의 종류와 특징

1. 클라이언트용 스크립트 언어 : 클라이언트의 웹 브라우저에서 해석되어 실행되는 스크립트 언어

  • JavaScript
    • 웹 페이지의 동작 제어에 이용
    • 클래스 기반의 상속을 지원하여 객체 지향 언어의 성격도 존재 
    • Prototype Link와 Prototype Object를 통해 프로토타입의 개념을 활용
  • VB Script(Visual Basic Script)
    • 마이크로소프트의 클라이언트 스크립트 언어
    • Active X를 사용해 애플리케이션을 컨트롤

 

2. 서버용 스크립트 언어

  • ASP (Active Server Page)
    • 서버에서 동적으로 수행되는 페이지를 만들기 위한 언어
    • Windows 계열에서만 수행 가능
  • JSP (Java Server Page)
    • Java로 제작된 서버용 스크립트 언어
    • 다양한 OS에서 사용 가능
  • PHP (Professional Hypertext Preprocessor)
    • Linux, Unix, WIndows 등의 OS에서 사용 가능한 언어
    • C, Java 등과 문법이 유사하여 학습이 쉽고 널리 사용

 

3. 기타 언어

  • Python
    • 귀도 반 로섬이 제작한 대화형 인터프리터 언어
    • 객체 지향 기능 지원
    • 플랫폼에 독립적
    • 문법이 간단하여 습득이 쉬움
  • Basic
    • 절차 지향 기능을 지원하는 대화형 인터프리터 언어
    • 쉬운 문법 구조를 가짐
  • Shell Script
    • Unix/Linux 계열의 쉘에서 사용되는 명령어 조합으로 구성된 스크립트 언어
    • 실행 속도가 빠름
    • 저장 시 ".sh" 확장자를 가짐
    • 쉘의 종류 : Bash Shell, Bourne Shell, C Shell, Korn Shell, etc.
    • 사용 제어문 : if, case, for, while, until

144. 선언형 언어 (Declarative Language)

: 명령형 언어와 반대되는 개념의 언어로, 문제 해결 방법이 아닌 프로그램이 수행해야 할 문제를 기술하는 언어

 

- 특징

  • 목표는 명시하지만 알고리즘은 명시하지 않음

 

명령형 언어

: 순차적인 명령 수행을 기본으로 하는 언어로 문제 해결 방법에 초점을 두고 코드를 작성

  • 폰노이만 구조에 개념적인 기초를 둠
  • 알고리즘은 명시하지만 목표는 명시하지 않음
  • 특정 구문의 연산을 통해 상태를 변경하고 프로그램을 작동
  • 개체의 동작과 상태를 중시
  • 절차적 언어와 객체 지향 언어로 구분

 

- 장점

  • 가독성과 재사용성이 좋음
  • 작동 순서를 구체적으로 작성하지 않아 오류가 적음
  • 프로그램 동작을 변경하지 않고 관련 값을 대체할 수 있음

 

- 선언형 언어의 종류 및 특성

1. 함수형 언어 : 수학적 함수를 조합하여 문제를 해결하는 언어

 

- 특징

  • 알려진 값을 함수에 적용하는 것을 기반으로 함 (적용형 언어)
  • 재귀호출이 자주 이용
  • 병렬 처리에 유리

- 포함 언어

  • LISP
    • 인공 지능 분야에 사용되는 언어
    • 연결 리스트를 기본 자료 구조로 함
  • Haskell
    • 부작용이 없는 함수형 프로그래밍 언어
    • 코드가 간결하고 에러 발생 가능성이 낮음

 

2. 논리형 언어 : 기호 논리학에 기반을 두어 논리 문장을 이용해 프로그램을 표현하는 언어

 

- 특징

  • 선언적 언어
  • 반복문이나 선택문을 사용하지 않음
  • 비절차적 언어

 

- 포함 언어

  • PROLOG
    • 인공 지능 분야에서 논리적 추론이나 리스트 처리 등에 주로 이용

 

3. 기타 언어

  • HTML
    • 인터넷 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어
    • 단순한 텍스트로 호환성이 좋고 사용이 편리
  • XML
    • HTML의 단점을 보완하여 웹에서 구조화된 다양한 문서들을 상호 교환 가능
    • HTML에 사용자가 새로운 태그를 정의할 수 있으며 문서의 내용과 이를 표현하는 방식이 독립적