13살 소녀

" 게임프로그래밍 "에 해당되는 글 1건

  1. 프로그래밍 언어

프로그래밍 언어


프로그래밍 언어: 주어진 어떤 문제를 해결하기 위해 인간과 컴퓨터 사이에서 의사소통을 가능하게 하는 인공적인 언어이다. 프로그래밍 언어를 공부하면, 효율적인 알고리즘을 개발할 수 있는 능력 향상, 현재 사용하는 프로그래밍 언어의 능력 향상, 주어진 과제를 해결하는 최적의 언어 선택을 할 수 있고, 새로운 언어를 쉽게 배울 수 있다.

 

프로그래밍 언어의 특성

-간결성: 사람이 프로그램을 수비게 이해하고 읽을 수 있도록 간결하게 표현할 수 있다.

-직교성: 언어의 각 구성요소가 상호 독립적이면서도 어떤 환경에서도 그 구성요소가 같은 의미로 사용된다.

-가독성: 사람이 이해하기 수비도록 작성된 프로그램이나 프로그래밍 언어의 문법, 주석 등이 가독성의 향상에 도움이 된다.

-정확성: 잘 정의된 문법은 정확성을 보장한다. 각 언어의 문법은 대부분이 세계표준이다.

-기계 독립성: 서로 다른 컴퓨터 상에서 항상 같은 결과를 요구한다.

 

저급언어: 하드웨어에 관련된 직접제어가 가능하다. 프로그램 작성시 상당한 지식과 노력이 필요하다. (X와 Y의 합을 Z에 넣고 출력하는 예제-데이터를 입력하고 기억장치의 어떤 장소 X에 넣어라-> 데이터를 입력하고 기억장치의 어떤 장소 Y에 넣어라-> X의 내용을 임시기억 장치인 레지스터 R1에 넣어라-> Y의 내용과 R1의 내용을 가산기에 입력하고 가산기의 가산결과를 R1에 넣어라-> R1의 내용을 기억장치의 어떤장소 Z에 넣어라-> Z의 내용을 출력하라)

 

고급언어: 하드웨어관련 지식 없이도 프로그램 작성이 가능하다. 사용자의 명령을 컴파일러가 해석하여 기계어보다 효율성이 낮다. 일상언어와 기호 등을 그대로 이용한다. 기억장소를 임의의 기호에 저장하여 사용한다. 하나의 명령으로 다수의 동작이 가능하다. (예제-2개의 데이터를 입력하여 변수 X,Y에 넣어라-> X와 Y를 더하여 결과를 변수 Z에 넣어라-> Z의 내용 출력)

컴파일러 방언어와 인터프리터 언어: 고급언어를 기계어로 번역해주는 도구 또는 논리적 장치이다. 컴파일러의 경우 한 프로그램을 한꺼번에 번역한 뒤 실행하는 데, 인터프리터 방식의 경우에는 명령어 단위로 한 행식을 번역해 가면서 실행한다. 컴파일러는 한번 번역하면 빠른 시간 내에 전체를 실행할 수 있지만 프로그램의 일부를 수정하는 경우에도 전체를 컴파일 해야한다. 인터프리터는 큰 기억장치가 필요하지 않고 번역과정이 비교적 간단하지만 반복문이 많은 경우 매 반복 때마다 번역해야한다.

FORTRAN: 엔지니어, 수학, 과학 등을 위한 수식 계산에 강한 2세대 언어이다.

-최초의 고급 언어중 하나로서, 다른 언어의 설계에 많은 모델이 되었다.

-매우 단순하고 간결하며 수치와 계산에 강하다.

-실행시 자료의 크기가 고정되어 있고, 동적 배열이나 재귀호출 등은 지원하지 않는다.

-같은 장소에 서로 다른 변수가 가능하고 이명효과나 부작용 등의 가능성을 내포한다.

 

COBOL(COmmon Business Oriented Language): 사무처리에 적합하도록 설계된 것이다.

-컴퓨터와 독립적으로 설계되었다.

-사무처리를 목적으로 설계되어 파일처리에서 강점을 보인다.

-일상적인 영엉문장구조로 쉬운 가독성을 보인다.

-자연어(영어)문장구조는 프로그램의 커지는 결과를 초래하여 효율성이 떨어진다.

 

BASIC(Beginner's All-purpose Symbolic Instruction Code): 초보자를 위해 개발된 것이다.

-초보자도 쉽게 배우고 다양한 작업을 할 수 있다.

-COBOL과 같은 대화체를 사용하지만 COBOL에 비해 적은 프로그램의 양으로 많은 사무용 프로그램을 대채한다.

-마이크로 소프트의 지원으로 현재도 계속 발전한다.

-대부분의 OS에서 지원한다. 

 

Pascal: 구조적 프로그래밍과 알고리즘 학습에 적합하다.

-교육용으로 적합, 알고리즘, 프로그램의 연습에 알맞는 문법이다. 

-구조적인 프로그램을 작성할 수 있도록 한다.

-컴파일러의 효율성이 좋고, 컴파일러를 만들기 숩다.

-객체지향 등의 새로운 개념이나 기술을 채택하여 새로운 언어로 발전하고 있다.

-C언어에 비해 너무 엄격하게 짜여진 구조여서 전문프로그래머들은 좀더 유연한 C나 C++언어로 이동하는 경향이 있다.

 

Lisp: 자연어 처리와 인공지능 분야에 강하다.

-대화식 구성의 인터프리터 방식으로 사용자의 요구에 그 즉시 반응한다.

-임의의 자료형을 만들고 결과 값으로 사용가능하다.

-프로그램과 자료가 동일한 형태로 처리된다.

-메모리를 동적으로 관리하는 기능이 있다.

-Lisp의 객체=>원자(문자열) 또는 리스트(원자또는 리스트의 열로서, 공백으로 구분)

 

Prolog(PROgramming in LOGic): 논리형 인공지능 언어 이고 비절차적 논리형 언어이다.

-여러기종의 컴퓨터에서 구현이 가능하다.

-사실, 규칙, 질문들로 프로그램이 구성된다.

-사실과 규칙들을 데이터베이스로 구성하며, 프로그램 실행은 자료에 대한 질문의 응답형식.

-인터프리터 언어이며 대화식의 명령방식을 사용한다.

-사용자의 질문에 답하기 위해 추론 엔진을 사용하고 사용자가 사실과 규칙 등을 입력한다.

 

C: 기존의 언어에 비해  신뢰성, 규칙성, 간소하고, 저급언어기능이 구현 가능하며, 융통성과 이식성이 좋아 고급프로그래밍 언어의 개발 속도 향상에 기여한다.

-매우 유연한 구조로 되어있는 언어이다.

-대부분의 운영체제에서 지원하는 기본적인 언어이다.

-고급언어와 저급언어 양쪽의 장점을 모두 포함한다.

-모든 실행단위가 함수로 구성되어 있다.

-UNIX 등의 운영체제의 기능을 사용하는 데 편리한 방법을 제공한다.

 

C++: 객체지향 프로그래밍을 지원하기위해 탄생하였다. 대다수의 응용프로그램을 만들 때 가장많이 사용되며 강력함과 편리함의 양쪽 장점을 골고루 내포하여 효율성을 제공한다.

-C의 유연성에 객체지향의 편리성을 접목시켰다.

-기존의 C언어로 개발된 모든 프로그램을 수정없이 사용가능하다.

-C언어에 익숙해지면 C++도 빠르게 적응할 수 있다.

-대부분의 운영체제에서 C++를 지원한다.

-JAVA와 같은 새로운 객체지향 언어의 기틀이 되었다.

 

제 4세대언어(Fourth-Generation Programming Language:4GL)

 

-Power Builder: 주로 데이터베이스용 응용프로그램을 작성할 때 쓰이며, 그림을 그리듯이 디자인할 수 있는 효율적인 언어이다.

1. 클라이언트/서버 응용 프로그램 개발환경: 주로 데이터베이스 관련 프로그램으로는 서버는 데이터베이스와 관련된 작업, 클라이언트는 사용자 입출력 등의 사용자 부분을 처리한다.

2. 4GL의 RAD Tool:  그래픽 유저 인터페이스 환경에서 간단한 마우스 동작만으로 빠른 개발이 가능하다.

3. 다양한 운영체제를 지원하는 개발환경: Windows, UNIX, Mac 등의 다양한 버전을 지원한다.

=> 즉, Power Builder는 특정업무용 프로그램을 여러운영체제에서 사용가능하고, 편리한 데이터베이스 관련기능으로 인기가 많다. 하지만 프로그램 작성 후 배포시에 여러가지 불편한 점이 많고, 데이터베이스 이외의 프로그램에서는 다른 4GL언어보다 성능이 떨어지고 불편하다.

 

-Delphi: 기본적인 내부구조는 Object Pascal을 이용한다.

1. Object Pascal언어와 컴파일러를 사용한다.

2. VCL이라는 편리한 컨트롤을 제공한다.

3. Windows와 100%호환이 가능하며 Windows OS하에서는 강력한 능력을 발휘한다.

*컨트롤: 단순한 기능을 하는 작은 독립적 프로그램 조각으로 많은 프로그램에서 재사용이 가능. 이런 컨트롤(컴포넌트)의 재사용은 프로그램의 개발시간 단축과 품질향상에 기여.

 

-Visual Basic: 마이크로 소프트에서 제작

1. 가장 배우기 쉬운 Basic을 사용한다.

2. 개발시간은 꽤 빠른 편이나 큰 프로그램을 작성하거나 객체지향적 프로그램을 하기엔 무리.

3. 개발시에는 인터프리터를 사용, 개발 후에는 컴파일러를 사용하여 양쪽 모두의 장점을 가짐.

4. 다른 마이크로 소프트사의 도구들을 간편하게 사용할 수 있다.

5. 포인터와 객체지향의 자원부족으로 다른언어에 비해 언어의 자유도가 부족하다.

 

-Visual C++: 기존의 C++에 여러가지 Windows 기능을 추가하였다.

1. MFC(Microsoft Foundation Class)라는 강력하고 방대한 라이브러리를 제공한다.

2. Windows의 모든기능을 가장 강력하고 자연스럽게 사용한다.

3. Delphi나 Visual Basic같은 마우스로 하는 디자인적 요소는 거의 미비한 반면 프로그래밍의 코딩, 디버깅, 프로젝트 관리면에서는 탁월한 기능을 발휘한다.

4. 객체지향형 설계도구를 포함해 클래스를 포함한 프로그램 설계시에 순수하고 강력한 객체지향적 설계와 구현이 가능하다.

5. 대부분 상업적인 프로그램이나 복잡한 작업에 많이 사용한다.

 

객체지향(Object-Oriented)

-객체: 우리가 주변에서 볼 수 있는 물체나 논리적으로 생각가능한 그 어떤것을 의미한다. 프로그램의 관점에서는 가장먼저 생각해야할 최초의 것이다.

-객체의 상태: 객체의 현재상황, 객체의 특성에 대한 상태=> 멤버변수, 속성 등으로 표현한다.

-객체가 할 수 있는 일: 멤버함수 또는 method 등으로 표현한다.

-클래스의 특징

1. 캡슐화: 외부에서 알 필요가 없는 정보는 감추어 하나의 캡슐상태로 유지하여 외부에서는 함부로 접근하거나 변경 등이 불가능하다.

2. 다형성: 외부에서는 하나의 작업처럼 보이지만 내부에서는 각기 다른방법으로 구현된다.

3. 상속성: 하나의 클래스가 정의되고, 그 이후에 어떤 클래스라도 이 클래스의 정의 중에서 하나 이상의 정의를 물려 받을 수 있는 성질이다. 즉, 같은 기능을 하는 클래스는 다시 작성할 필요없이 계속 물려 받아 쓸 수 있고, 결과적으로 빠른 프로그램 개발을 보장한다.

 

Java: 가전제품을 목적으로 만들어져 낮은 시스템에서도 운영이 가능하도로 설계되었다. 운영체제나 중앙처리장치에 관계없이 모든 플랫폼에서 사용이 가능하고 자바와 플랫폼 사이에 자바 가상머신이 인터페이스 역할을 수행한다.

-객체지향 언어이다.

-C와 C++와 비슷한 모양(문법)을 가져서 사용이 쉽다.

-객체지향의 다형성을 위해 실행시간에 함수 호출을 결정한다.

-동적이고 편리한 메모리 관리를 지원하며 자동으로 쓰레기수거를 실행한다.

-가상기계위에서 인터프리터방식으로 동작하므로 성능이 떨어진다.

 

UNIX기반의 언어

-ProC: C언어의 UNIX확장판이고, C언어를 사용한 UNIX의 데이터베이스 관리에 많이 사용됨.

-C: UNIX의 가장 중심적 언어이고 UNIX자체를 C언어로 제작하여 UNIX 프로그래밍에 필수.

-Shell 프로그래밍: 여러가지 Shell 명령어를 순차적으로 수행.

*Shell은 UNIX에서 대화형 사용자 인터페이스를 부르는 용어로, 사용자가 입력하는 명령어를 이해하고 실행하는 역할을 수행한다.

 

LINUX기반의 언어

-Perl: 인터넷의 등장과 함께 인기를 누린 스크립트형 언어이다. 초보자도 배우기 쉽고 객체지향적인 특징을 지원한다.

-Python: 가장 최근에 등장한 강력하고 배우기 쉬운 언어이다. 쉬운 문자열 제어와 객체지향적 특성을 제공하고 C언어와 연계성을 제공하며 Windows에서도 사용이 가능하다.

-PHP: 인터넷에서 사용하는 대표적인 스크립트 언어이다. 컴퓨터에서 실행하지않고 웹 서버에서 실행되는 대표적인 Server Side Script언어이다.

-Java: 운영체제에 구애받지 않는다.

-Lisp: UNIX/LINUX의 경우 Emacs라는 에디터의 제어언어로 사용한다.

-FORTRAN: UNIX/LINUX버전에 따라 F77, F90, F95등 다양한 버전을 지원한다.

-C/C++: UNIX와 마찬가지로 LINUX에서도 지원한다.

-Tcl: X-Windows프로그래밍에 많이 쓰이는 스크립트 계열의 언어이다.

 

닷넷 플랫폼: Windows 2000을 포함하는 기존의 윈도우즈 운영체제 서비스와 새로운 API를 제공하는 개발 프레임워크이다.

 

닷넷 프레임워크: 웹 기반의 분산 응용프로그램을 지원하도록 설계되었는데, C#으로 만든 컴포넌트는 다른 프로세스나 네트워크, 인터넷에 있는 다른 시스템에 존재하는 것이 가능하고, 여러가지 윈도우즈 운영체제에서 작동된다. 닷넷 프레임워크는 다음과 같은 요소들로 구성.

1. C#,VB.NET,Managed C++, Jscript.NET 등 4개의 공식 프로그래밍 언어

2. CLR: 모든 개발언어가 공통으로 사용하는 윈도우 및 웹 개발을 위한 객체지향 플랫폼

3. FCL: 다양한 관련 클래스 라이브러리들

 

C#: 닷넷 환경의 응용 프로그램을 개발하기 위한 프로그래밍언어로서 간결성, 안전성, 현대성, 객체지향, 인터넷 중심이라는 목표에 맞춰 설계되었다.

-C#을 이용하면 새로운 클래스와 method, property를 정의하는 것 뿐 아니라, 객체지향 프로그래밍의 근간이라고 할 수 있는 캡슐화, 상속성, 다향성을 구현할 수 있다.

-XML스타일의 문서화 방식을 지원하여 응용프로그램에 대한 참고문서 작성이 쉽다.

-클래스가 지켜야하는 속성이나 method의 세부사항을 정의하는 규약인 인터페이스를 지원.

-구조체를 지원하고 컴포넌트 기반의 기술을 지원한다.

-C++스타일의 포인터를 이용하여 직접 메모리에 접근하는 것을 허용한다.


4교시 수업 사랑깊은약속 킴씨어터 미키앤미카 도아네 놀이터 ★ 산삼 장터 방울이 오타쿠 세계로 루키뮤직 봉봉 쇼콜라
2009/03/27 15:09 2009/03/27 15:09
top

Leave a comment..