본문 바로가기

컴퓨터일반/프로그래밍 언어론

프로그래밍 언어 특징

프로그래밍 언어

- 인간이 컴퓨터와 의사소통할 수 있도록 컴퓨터가 이해 가능한 명령으로 프로그램을 작성할 수 있도록 만든 언어입니다.

프로그래밍 언어 종류

고급언어

- 사람이 이해하기 쉬운 언어입니다.

- 자바, 코볼, 포트란 등이 있습니다.

- 컴파일 단계 : 원시 프로그램(소스 코드) -> 어휘분석 -> 구문분석 -> 의미분석 -> 중간 코드 생성 -> 코드 최적화 -> 목적 코드 생성 -> 목적프로그램

저급언어

- 컴퓨터가 이해하기 쉬운 언어입니다.

- 기계어, 어셈블리어 등이 있습니다.

프로그램 구현 기법

컴파일러를 이용한 기법

- 목적 프로그램을 생성합니다.

- 반복문이 많은 프로그래밍의 실행에서 효율적입니다.

- 번역된 프로그램을 저장하기 위한 큰 기억 장소를 요구하는 단점이 있습니다.

- C, C++ 등이 있습니다.

인터프리터를 이용한 기법

- 고급 언어 프로그램을 명령문 단위로 하나씩 해석하여 바로 실행합니다.

- 목적 프로그램을 생성하지 않습니다.

- 자바스크립트, JSP, HTML, 액션스크립트, SQL, python, ruby 등이 있습니다.

하이브리드 기법

- 인터프리터가 중간 언어로 번역된 프로그램을 해석하고 실행합니다.

언어 번역 프로그램

컴파일러

- 고급언어를 이진목적모듈로 변환하는 프로그램입니다.

어셈블러

- 어셈블리언어로 기술된 프로그램을 목적 코드로 변환하는 프로그램입니다.

링커

- 여러 목적 모듈을 통합하여 실행 가능한 하나의 모듈로 변환이 가능합니다.

로더

- 실행 가능한 모듈을 주기억장치에 탑재하는 기능을 가집니다.

Pascal(파스칼)

- 1970년대 후반과 1980년대에 프로그래밍 교육에 가장 널리 이용되던 언어 중의 하나입니다.

- 파스칼의 프로그램 작성에서는 GOTO문 없이 조건과 루프 제어 구조의 순차적 사용을 강조했습니다.

- 표시방법에 있어서는 알골 언어와 유사했으나 그 기능은 포트란과 코볼뿐만 아니라 알골을 뛰어넘습니다.

- 복잡한 정보를 조직하기 위해 데이터 형태를 정의할 수 있습니다.

C언어

- 시스템 프로그래밍 언어입니다.

- 함수 언어입니다.

- 이식성이 강합니다.

- 다양한 자료형을 지원합니다.

- 다양한 제어문을 지원합니다.

- 표준 라이브러리 함수를 지원합니다.

- 구조적 프로그래밍을 구현합니다.

객체지향 프로그래밍

- 프로그램을 여러 개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것입니다.

- 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있습니다.

- Simula 67, smalltalk, Visual Basic.Net, Objective-C, C++, C#, JAVA, Objective Pascal, Delphi, Python, Perl 등이 있습니다.

객체지향 언어의 특징

추상화

- 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 단순하게 합니다.

- 추상화를 통해 정의된 자료형인 추상 자료형은 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것으로 접근 제어를 통해서 자료형의 정보를 은닉할 수 있습니다.

상속

- 새로운 클래스가 기존의 클래스의 자료와 연산을 이용하고 더 필요한 부분은 추가할 수 있는 기능입니다.

- 상속을 받는 클래스를 부클래스, 파생 클래스, 하위 클래스, 자식 클래스라고 하며 새로운 클래스가 상속하는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 합니다.

- 클래스가 2개 이상의 클래스로부터 상속 받을 수 있는 다중 상속이 있는데 JAVA는 다중상속을 지원하지 않습니다.

다형성

- 어떠 한 요소에 여러 개념을 넣어 놓은 것으로 일반적으로 오버라이딩이나 오버로딩을 의미합니다.

Python

- 높은 효율, 쉬운 사용법, 확장성을 지닌 객체지향적 언어입니다.

- 인터프리터식이며 실행 시점에 데이터 타입을 결정하는 동적 타이핑 기능을 가집니다.

- 플랫폼에 독립적인 대화식 언어입니다.

- 클래스를 정의하여 객체 인스턴스를 생성할 수 있습니다.

Java

- 컴파일된 프로그램이 JVM 상에서 인터프리터 방식으로 실행되는 플랫폼 독립적 프로그래밍 언어입니다.

C#

- 마이크로소프트 닷넷 프레임워크를 지원하는 객체지향 언어입니다.

Kotlin(코틀린)

- 안드로이드 스튜디오 개발사인 Jet Brains에서 2011년에 공개한 언어입니다.

- JVM에서 구동되는 언어로 자바와 상호운용할 수 있도록 만들어졌습니다.

- 정적 타입 지정 언어, 함수형 프로그래밍과 객체지향 프로그래밍, 무료 오픈 소스 등의 특징을 갖습니다.

웹 관련 기술

ASP, JSP, CGI, PHP

- 서버 측에서 실행되는 스크립트 언어입니다.

JavaScript, VBScript

- 클라이언트 측에서 실행되는 스크립트 언어입니다.

XML

- 전자문서를 표현하는 확장가능한 표준 마크업 언어입니다.

- 사용자가 태그를 정의하여 사용할 수 있습니다.

URL

- 인터넷에서 자원의 위치를 표현하는 방식입니다.

HTTP

- 웹 클라이언트와 웹 서버가 통신할 때 사용하는 프로토콜입니다.

CSS

- HTML, XHTML, XML 등의 문서 스타일을 꾸밀 때 사용하는 스타일 시트 언어입니다.

- 문서의 뼈대를 구성하고 CSS를 이용하여 글꼴, 배경색, 너비, 높이, 위치 등을 지정하거나 웹브라우저, 스크린 크기, 장치에 따라 화면이 다르게 표시될 수 있도록 지정할 수도 있습니다.

- HTML에 CSS를 적용시키는 방법은 3가지가 있습니다.

- 주석은 /*와 */ 사이에 작성합니다.

형식문법

-  넌터미널 집합, 터미널 집합, 생성규칙, 시작기호로 구성됩니다.

넌터미널 집합(비단말기호들)

- 문법에서 어떤 구문을 표현하는 기호입니다.

터미널 집합

- 알파벳이나 기호의 집합으로 문법을 통해 마지막 단계에 생성된 문장을 의미합니다.

생성규칙

- 문법 규칙들의 집합입니다.

시작기호

- 생성규칙의 시작기호로 넌터미널 기호 중 하나입니다.

정규언어

- 정규문법에 의해 생성된 언어를 의미합니다.

- 촘스키가 구분한 4가지 문법 중 가장 간단한 형태인 3문법에 해당합니다.

정규문법

- 컴파일러의 어휘분석 단계에서 입력 프로그램에 나타나는 토큰의 구조를 정의하는데 사용됩니다.

정규표현

- 정규언어를 표현하는 수식으로 토큰을 인식하는 유한 오토마타를 구성하는데 사용됩니다.

유한 오토마타

- 정규표현이나 정규문법에 의해 생성되는 스트링을 인식하는 가상적인 기계로 상태의 수가 유한개인 유한상태 기계라고도 합니다.

결정적 유한 오토마타

- 임의의 상태 s로부터 하나의 입력 a에 대한 전이가 하나만 존재하거나 존재하는 것이 없는 오토마타입니다.

비결정적 유한 오토마타

- 어떤 상태에서 주어진 입력 기호에 대해 전이할 수 있는 다음 상태가 하나 이상 존재할 수 있는 오토마타입니다.

조건문

for문

- 조건식과 조건을 만족했을 때 실행하고 반복을 벗어날 수 있도록 증감 연산을 수행합니다.

while문

- 조건을 만족하면 실행하고 만족하지 않으면 실행하지 않습니다.

case(switch)문

- 여러 개의 조건이 있고 각 조건을 만족했을 때의 실행이 여러 개 있을 때 사용합니다.

do-while문

- 명령을 일단 실행하고 조건을 만족하는지 판단합니다.