본문 바로가기
정보처리기사/필기

[정보처리기사] Part04-02-2. 언어특성 활용

by 채연2 2022. 2. 16.

* 프로그램 개발 언어

    1. 프로그램 실행 방식에 따른 분류

        ▶ 개발 언어

            ▷ 컴파일러 언어

                → 번역사 같은 작업

                → 프로그램 전체 라인을 처음부터 끝까지 해독해 목적 코드로 만든 후 실행

                → C, C++, COBOL, Ada, FORTRAN, PASCAL 등

            ▷ 인터프리터 언어

                → 통역사와 같은 작업

                → 프로그램 라인 단위로 한 줄씩 해석하고 바로 실행

                → 자바스크립트, BASIC, LISP 등

            ▷ 스크립트 언어

                → 소스 코드 컴파일 하지 않고도 실행 가능한 프로그래밍 언어

                → 별도 컴파일 없이 내장된 번역기에 의해 번역되므로 바로 실행 가능

                → 컴파일러 언어와는 다르게 인터프리터 사용해 코드 한줄 한 줄을 즉시 해석 및 실행

                → JavaScript, ActionScript, AutoHotKey, JSP, Perl, PHP, Python, Lua 등

 

    2. 절차적 프로그래밍 언어

        → 절차 지향 프로그래밍 혹은 절차 지향적 프로그래밍

        → 프로시저 호출 개념을 바탕으로 하는 프로그래밍 의미

 

        ▶ 장점

            ▷ 코드 재사용

                → 같은 코드를 다른 장소에서 호출만으로 재사용 가능

            ▷ 쉬운 프로그램 흐름 파악

                → GOTO문, JUMP문 사용이 아닌 쉬운 흐름 파악 가능

            ▷ 모듈화 및 구조화

                → 재사용 단위인 모듈로 구성하여 프로그램 구조화

 

        ▶ 대표적인 절차적 프로그래밍 언어

            ▷ C

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

            ▷ 포트란

                → 주로 과학적 계산 하기 위해 시작된 컴퓨터 프로그래밍 언어

            ▷ 알골

                → 알고리즘 연구 개발에 이용하기 위한 목적으로 만들어졌으며  ALGOL계 언어 총칭

            ▷ 베이직

                → 교육용으로 개발되어 언어 문법이 쉬운 절차형 언어

 

    3. 객체 지향 프로그래밍 언어

        → 실세계에 존재하거나 또는 개념적인 그 어떤 것을 의미하는 객체 이용하여 프로그래밍 하는 방식의 언어

 

        ▶ 절차 지향 프로그래밍과 객체 지향 프로그래밍 비교

            ▷ 절차 지향 프로그래밍

                → 모듈, 변수, 함수 사용하여 개발

                → 프로그램 순차적으로 수행시키는 방법으로 자료구조와 명령 중심 프로그램 구성

            ▷ 객체 지향 프로그래밍

                → 객체와 객체 간 통신 통해 프로그램 구현

                → 객체, 속성, 메소드로 구성되는데, 절차 지향에서의 모듈은 객체에, 변수는 속성에, 함수는 메소드에 대응

 

        ▶ 특징

            ▷ 캡슐화 (Encapsulation)

                → 속성과 메소드를 하나로 결합하여 객체로 구성

                → 클래스 선언 후 그 클래스 구성하는 객체에 대해 public, private, protected 등 접근 지정자 선언해 처리

            ▷ 추상화 (Abstraction)

                → 공통 성질 추출하여 슈퍼클래스 설정

                1. 기능 추상화 : 클래스 내 메소드 정의 (obj.getName())

                2. 자료 추상화 : 객체 클래스 자체를 데이터 타입으로 사용 (String.Class)

                3. 제어 추상화 : 제어 행위에 대한 개념화, 명령 및 이벤트 (if, for, while)

            ▷ 다형성 (Polymorphism)

                → 동일한 이름의 오퍼레이션이 각 클래스마다 다른 사양으로 정의될 수 있다는 것

                1. Overloading : 메소드 이름은 같으나 argument나 return type 다른 경우

                2. Overriding : Argument와 return type이 같은 경우

            ▷ 정보 은닉 (Information Hiding)

                → 클래스 속성에 직접 접근은 데이터 무결성에 치명적

                → 속성들을 접근제어자인 private로 감춰두고 getter, setter 메소드 통해서만 접근 가능하게 하는 것

            ▷ 상속 (Inheritance)

                → 하위 클래스에게 자신의 속성과 메소드 사용 가능토록 허용

                1. 단일 상속 : 부모와 자식 클래스 간 관계가 수퍼클래스와 서브클래스로 유지

                2. 다중 상속 : 하나의 클래스가 하나 이상의 클래스로부터 상속

                3. 반복 상속 : 같은 조부모 클래스로부터 상속 받은 두 부모 클래스로부터 상속

 

        ▶ 구성요소

            ▷ 객체

                → 개체, 속성, 메소드로 구성된 클래스의 인스턴스

                    ■ 구성요소

                        □ 개체 (Entity)

                            → 현실 세계에 보이는 본질

                        □ 속성 (Attribute)

                            → 자료 저장소 역할. 절차 지향 프로그래밍의 변수와 대응

                        □ 메소드 (Method)

                            → 호출 단위 의미. 절차 지향 프로그래밍의 함수와 대응

            ▷ 클래스

                → 객체 타입 정의하고 객체 생성하는 틀

            ▷ 메시지

                → 객체 간 통신

 

        ▶ 종류

            ▷ C#

                → 마이크로소프트에서 개발한 언어. 닷넷 프레임워크 환경에서 동작

            ▷ 자바

                → 썬 마이크로시스템즈에서 개발

            ▷ 델파이

                → 기본 문법은 파스칼 문법과 같지만 파스칼에 여러 기능 추가되어 발전

            ▷ 스위프트

                → 애플의 iOS와 MacOS 위한 언어. objective-C 와 함께 공존할 목적으로 만들어짐

 

    4. 스크립트 언어

        → 응용 소프트웨어 제어하는 컴퓨터 프로그래밍 언어

        → 상대적으로 단순한 구문과 의미 내포하며 빠르게 배우고 작성하기 위해 개발된 언어

        → 짧은 소스 코드 파일이나 설치하지 않아도 코딩이 가능한 REPL 환경으로 상호작용에 적합

 

        ▶ 종류

            ▷ 파이썬

                → 플랫폼 독립적인 인터프리터식, 객체 지향적, 동적 타입 대화형 언어

            ▷ PHP

                → 동적 웹 페이지 만들기 위해 설계 되었으며 작성자가 원하는 웹 페이지 생성

            ▷ JCL

                → 일괄 처리 작업 수행하거나 하부 시스템 시작하는 방법을 시스템에 지시

            ▷ 자바스크립트

                → 웹 브라우저 내에서 주로 사용, 다른 응용 프로그램 내장 객체에도 접근 가능한 기능

 

    5. 선언형 프로그래밍 언어

        → 특정 선언으로만 프로그램 동작시키는 프로그래밍 패러다임

        → 가장 유명한 라이브러리로는 제이쿼리가 있으며 앵귤러는 선언형 언어의 최신 트랜드인 반은형 웹 개념 도입

 

        ▶ 특징

            ▷ 참조 투명성

                → 프로그램 동작 변경 없이 관련 값 대체할 수 있다면 그 표현식을 참조상 투명하다고 함

            ▷ 지연평가 지원

                → 계산 필요한 순간이 올 때까지 수행 미룬다는 개념

            ▷ 빠른 개발

                → 알고리즘에 집중하며 이미 만들어진 것을 선언 통해 사용

            ▷ 적은 버그

                → 구체적인 작동순서 나열하지 않기에 버그 적음

 

        ▶ 종류

            ▷ 하스켈 (Haskell)

                → 난립하고 있는 함수형 언어들을 통합 정리하여 만든 일반적인 순수 함수형 프로그래밍 언어

            ▷ SQL

                → RDBMS 데이터 관리 위해 설계된 특수 목적의 프로그래밍 언어

            ▷ 프롤로그

                → 논리식 토대로 오브젝트와 오브젝트 간 관계에 관한 문제 해결하기 위해 사용

            ▷ XML

                → 특수 목적 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어

320x100

댓글