21일차 : 언어 특성 활용

Dev_HG·2020년 7월 25일
0

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

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

  • 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 언어이다.
  • 명령형 프로그래밍이라고도 불린다.

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

  • 크게 복잡하지 않고 유지보수하기 쉽다.
  • 복사해서 붙이지 않고도 같은 코드를 다른 곳에서 다시 사용할 수 있다.
  • 순차적으로 진행되기 때문에 프로그램의 흐름을 파악하기 쉽다.
  • 모듈화를 하거나 구조화를 할 수 있다.

3. 절차적 프로그래밍 언어 종류

  • 알골(ALGOL) : 알고리즘의 연구개발에 이용하기 위한 목적으로 생성, 절차형 언어로는 최초로 재귀 호출이 가능
  • cf : 재귀 호출(recursive call): 함수 내부에서 함수가 자기 자신을 또 다시 호출하는 행위
  • C언어: 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어, 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 프로그래밍 언어
  • 베이직(Basic): 교육용으로 개발되어 언어의 문법이 쉬움, 다양한 종류의 베이직이 존재, 서로 다른 종류 사이의 소스 코드는 호환되지 않음
  • 포트란(FORTRAN): 과학계산에서 필수적인 벡터, 행렬 계산 기능 등이 내장되어 있는 과학 기술 전문 언어, 산술 기호, 삼각 함수, 대수함수 등과 같은 수학 함수들 사용가능

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

1. 객체지향 프로그래밍 언어(Object Oriented Programing Language)개념

  • 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위인 객체 들을 중심으로 하는 프로그래밍 언어

2. 객체지향 프로그래밍 언어의 특징

  • 클래스에 하나의 문제 해결을 위한 데이터를 모아 놓음으로써 응집력을 강화
  • 클래스 간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다.

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

  • 자료 추상화: 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 기능
  • 상속 : 새로운 클래스가 기존의 클래스의 자료와 연산을 이용 할 수 있게 하는 기능, 상속을 통해 기존의 클래스를 상속받은 하위 클래스를 이용해 프로그램의 요구에 맞추어 클래스 수정 가능, 클래스 간의 종속 관계를 형성함으로써 객체를 조직화
  • 다중 상속 : 클래스가 2개 이상의 클래스로부터 상속받을 수 있게하는 기능, 클래스들의 기능이 동시에 필요할 때 용이하나 클래스의 상속 관계에 혼란을 줄 수 있음, 프로그래밍 언어에 따라 사용 가능 유무가 다르므로 주의해서 사용(C++은 지원, 자바는 미지원)
  • 다형성 : 어떤 한 요소에 여러 개념을 넣어 놓는 기법, 일반적으로 오버라이딩이나 오버로딩을 의미, 다형 개념을 통해서 프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩 함으로써 다형 개념을 실현

4. 객체지향 프로그래밍 언어 종류

1. c++

  • C문법에 객체지향 프로그래밍 개념과 일반화 프로그래밍을 위한 템플릿 기능이 추가
  • c++ 개발자는 원하는 많은 작업들을 성능하락이 없는 형태로 개발이 가능
  • 직접 신경써야 하는 것들(메모리 관리)이 많은 언어이기 때문에 개발이 어려움

2. C#

  • 마이크로소프트에서 개발한 객체 지향 프로그래밍 언어
  • c++와 자바의 문법과 비슷한 문법을 가지고 있음
  • c#은 자바와 달리 불안전 코드(Unsafe Code)와 같은 기술을 통하여 플랫폼 간 상호 운용성 확보

3. JAVA

  • 자바는 썬 마이크로 시스템즈(Oracle 합병됨)가 개발한 객체 지향적 프로그래밍 언어
  • 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어
  • 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환

4. 델파이(Delphi)

  • 기본적인 문법은 파스칼 문법에 여러 기능들이 추가되어 존재
  • 델파이는 윈도우즈(windows) 아래에서 모든 부분을 프로그래밍할 수 있는 언어
  • 높은 생산성과 간결한 코드가 대표적인 장점이고, c++과 비슷한 수준의 저수준 시스템 프로그래밍도 가능

3. 스크립트 언어

1. 스크립트 언어(Script language)개념

  • 소스 코드를 컴파일하지 않고도 실행할 수 있는 프로그래밍 언어이다.
  • 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로긂의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다.

2. 스크립트 언어 특징

  • 일반적으로 스크립트 언어는 빠르게 배우고 쉽게 작성할 수 있다.
  • 다른 언어들에 비해 상대적으로 단순한 구문과 의미를 내포
  • 보통 스크립트 언어로 작성된 코드는 시작에서 끝날 때까지 실행되며, 시작점(Entry Point)이 따로 명시되어 있지 않다.

3. 스크립트 언어 종류

1. PHP

  • 동적 웹 페이지를 만들기 위해 설계됨
  • PHP로 작성된 코드를 HTML에 입력 시 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성
  • 명령 줄 인터페ㅔ이스 방식의 자체 인터프리터를 제공

2. 펄(Perl)

  • 인터프리터 방식의 프로그래밍 언어
  • 인터프리터(Interpreter) : 프로그래밍 언어의 소스 코드를 바로 실행하는 환경이다.

3. 파이썬(Python)

  • 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부
  • 유니 코드 문자열을 지원하여 다양한 언어의 문자 처리
  • 들여쓰기를 사용하여 블록을 구분하는 문법 채용
  • 다른 언어로 쓰인 모듈들을 연결하는 언어

4. 자바스크립트(javascript)

  • 객체 기반의 스크립트 프로그래밍 언어
  • 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능이 존재
  • 자바스크립트는 브라우저마다 지원되는 버전이 상이

4. 선언형 언어

1. 선언형 언어(Declarative Language)개념

  • 선언형 프로그래밍을 사용하여 해법을 정의하기보단느 문제를 설명하는 언어이다.
  • 선언형 언어는 무엇을 할 것인지에 중점을 두고 있다.

2. 선언형 언어 유형

  • 함수형 언어, 논리형 언어, 제한형 언어가 선언형 언어, 특수분야 언어에 해당된다.

1. 함수형 언어

  • 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임
  • 함수형 코드에서는 함수의 출력값은 그 함수에 입력된 인수에만 의존하므로 인수 x에 같은 값을 넣고 함수 f를 호출하면 항상 f(x)라는 결과가 나옴(순수 함수)

2. 논리형 언어

  • 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반
  • 논리형 프로그래밍에서 볼 수 있는 일종의 논리 문장들은 대부분 절대 문절 형태로 존재

3. 선언형 언어 기능

1. 함수형 언어

  • 순수 함수(Pure Function) : 어느 순간에 호출해도 동일한 값을(부작용이 없는 함수), 스레드 안전하고, 병렬적인 계산이 가능
  • 익명 함수(Anonymous Function): 이름이 없는 함수, 람다식이라고도 불림
  • 고계 함수(Higher Order Function): 함수를 또하나의 값으로 갖누하여 함수의 인자 혹은 반환값으로 사용할 수 있는 함수

2. 논리형 언어

  • 사실(Facts) : 객체와 객체 간의 관계에 대한 논리적 사실을 포함하고 있는 문장
  • 규칙(Rule): 목표점에 이르는 원인 규명 과정은 지식베이스로부터 새로운 논리를 찾는 과정
  • 질문(Question): 추론 규칙이 참인지 거짓인지 확인하기 위한 문장

4. 선언형 언어 종류

  • 특수 분야 언어는 말 그대로 특정 분야에서 쉽게 사용하기 위해 만들어진 언어이다.

1. 함수형 언어

  • 하스켈(Haskell) : 패턴 맞춤, 커링, 조건제시법, 가드, 연산자 정의 등의 기능이 존재, 재귀 함수나 대수적 자료형도 지원
  • cf : curring :인자를 여러개 받는 함수를 분리하여, 인자를 하나씩만 받는 함수의 체인으로 만드는 방법
  • cf : Guard : 함수에 전달된 값들의 조건이 참인지 거짓인지에 따라 몸체를 구분 할 때 사용한다.
  • 리스프(LISP): 수학 표기법을 나타내기 위한 목적으로 생성, 트리 자료 구조, 가비지 콜렉션, 동적 자료형과 인터프리터와 같은 개념제시, 함수 호출 시 함수 이름 혹은 연산자가 첫 번째로 위치하여 피연산자가 이어 위치

2. 논리형 언어

  • 프롤로그(Prolog) : 논리식을 기반으로 객체 간의 관계에 관한 문제를 해결하기 위해 사용, 인공지능이나 계산 언어학 분야, 자연언어 처리 분야에서 사용

3. 특수 분야 언어

  • SQL : 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어, 데이터베이스 관련 프로그램들이 SQL을 표준으로 책택
profile
꾸준함

0개의 댓글