언어란 무엇일까? 언어는 인간이 서로의 생각과 의미를 전달하기 위해 목소리를 내고, 글자로 적는 의사소통 도구다.프로그래밍 언어도 이러한 맥락에서 출발한다.


프로그래밍 언어란 무엇인가

프로그래밍이란 컴퓨터를 이용해서 계산하거나 출력하는 등의 목적에 맞게 프로그램을 설계하고 만드는 과정을 의미한다. 즉, 사용자가 필요로 하는 프로그램을 만드는 과정을 프로그래미이라 한다. 그리고 프로그램을 만들고 정상적으로 실행하기 위해서,프로그램이 시제 실행되는 컴퓨터와 이러한 프로그램을 만드는 프로그래머가 의사 소통하는 도구를 프로그래밍 언어라 할 수 있다.


우리가 사용하는 언어에 문법과 단어,관용구가 있듯이, 프로그래밍 언어에도 문법과 단어 관용구가 있다. 또한 전 세계적으로 사용되는 언어가 다양하듯이 프로그래밍 언어도 C, C++,자바(JAVA),비주얼 베이직,C#등 매우 다양하다.

따라서 (아이가 커가면서 말과 글자를 배워야만 완전한 의사소통을 할 수 있듯이)프로그램 개발자가 되려면 적어도 한 개 이상의 프로그래밍 언어를 배우고, 적절히 구사할 수 있어야만 사용자가 필요로 하는 프로그램을 개발할 수 있다.


 

인간의 언어 

프로그래밍 언어 

 종류

한국어, 영어, 일어 ,중국어 

C , C++ ,C# , JAVA 

 목적

 인간 사이의 의사소통

프로그램의 개발 

 발전

 나라의 문화, 풍습 , 환경 , 기후 등에 따라

운영체제 , 개발환경 ,개발목적에 따라 


프로그래밍 언어의 역사

오늘날의 C#에 이르기까지 사용했던 프로그래밍 언어들을 간략하게 도식화하면 다음과 같다.

이전에 사용하던 언어들은 함수 중심적이었지만,C++를 기점으로 현재에 사용하는 언어는 객체 지향적 언어임을 알 수 있는데, 초기에 사용했던 함수 중심적 언어는 다음과 같은 단점이 있었기 때문에 객체 지향적으로 발전했다.

-나날이 다양하게 늘어나는 멀티미디어 자료를 모두 다루기 힘듦

-스스템 유지보수의 어려움

-소프트웨어적 위기상황 발생


소프트웨어적 위기상황이란 "기존의 언어로는 새로운 환경에 맞는 소프트웨어를 개발하는 것이 어렵다" 는 것을 의미한다. 이에 따라 새로운 기법의 여러 개념이 제안되었으며, 그 중에 인간의 사고 형태를 모델링한 객체 지향 개념이 해법으로 등장했다. 따라서 현재의 프로 그래밍은 객체 지향적 언어를 이용해서 , 플랫폼에 상관없이 사용할 수 있는 글로벌 객체 프로그래밍으로 발전하고 있다.


닷넷 프레임워크

마이크로소프트에서 발표한 닷넷(NET)이라는 기술과 닷넷의 중심인 닷넷 프레임워크(NET FRAMEWORK)를 다룬다. C#을 배우기 전에 닷넷과 C#의 구동 환경인 닷넷 프레임워크를 확실히 배워두면 훨씬 수월하게 C#을 이해할 수 있기 때문이다. '닷넷이란' 마이크로소프트에서 2000년 7월에 발표한 닷넷은 지금까지 존재했던 마이크로소프트사의 모든 소프트웨어 기술을 총망라하고, 다른 언어의 장점을 접목시킨 새로운 기술이다.

 비주얼 스튜디오 닷넷


 닷넷 프레임워크

윈도우 서버 시스템 

닷넷 빌딩 블록 서비스 


위 표는 닷넷의 구성 요소를 보여주는 그림으로 닷넷을 사용하려면 다음과 같은 요소가 필요하다.

⊙비주얼 스튜디오 닷넷 : C# 등의 닷넷 언어를 만들기 위한 통합 개발환경으로 2장에서 자세하게 배운다.

⊙닷넷 프레임워크 : 닷넷을 사용할 수 있게 해주는 환경을 제공한다.

⊙윈도우 서버 시스템 : 닷넷을 이용한 윈도우 프로그램 개발이나 웹사이트를 구축할 때 필요한 윈도우 요소를 지원한다.

⊙닷넷 빌딩 블록 서비스 : 닷넷의 문제를 해결하기 위해 설계된 시스템이다.


닷넷 프레임워크는 크게 두 가지로 나눌 수 있는데, 프로그램을 개발할 때 필요한 서비스 집합과 프로그램 실행 환경으로 구성되어 닷넷 프레임워크에 기반한 개발 언어에는 VB.NET , C#.NET 등이 있다.

닷넷  프레임워크의 구성 요소는 크게 '공용 언어 런타임 ( Common Language Runtime , 이하 CLR )과 닷넷 프레임워크 클래스 라이브러리로 나눌 수 있다. CLR은 닷넷을 사용할 때 여러 언어를 사용할 수 있게 해주는 기술로 바로 뒤에서 살펴볼 것이다.


닷넷 프레임워크 클래스 라이브러리는 애클리케이션을 개발할 때 필요한 기능의 묶음으로, 필요한 기능을 개발자가 일일이 만들지 않아도 이미 만들어진 클래스 라이브러리를 사용해서 구현할 수 있게 한 것이다. 클래스 라이브러리는 기본 클래스 라이브러리 ( BCI ,Basic Class Library ) 와 윈도우 사용자 인터페이스 , ASP.NET , ADO.NET 으로 나눌 수 있다.

⊙기본 클래스 라이브러리 : 클래스 라이브러리 중 가장 핵심적인 기능을 하는 클래스 모음이다.

⊙윈도우 사용자 인터페이스 : 닷넷 언어로 윈도우 프로그램을 만들 때 지원하는 클래스다.

⊙ASP.NET : 닷넷 언어로 웹 프로그래밍할 때 지원하는 클래스다.

⊙ADO.NET : 데이터베이스를 사용할 때 지원하는 클래스다.


공용언어 런타임은 다음과 같이 구성된다. CLR을 설명하기 전에 먼저, 고유 코드에 대해서 이해할 필요가 있다. 고유 코드(Native Code)란 윈도우 같은 운영체제에서 직접 해석할 수 있는 코드로서, 원시 코드라도도 부른다.그렇지만 일반적인 프로그래밍 언어는 개발의 편의를 위해서 사람이 읽고 해석할 수 있도록 작성하기 때문에 이 자체로는 운영체제에서 해석할 수 없다. 따라서 컴파일( compile ) 이라는 과정을 통해서 운영체제에서 해석할 수 있도록 고유 코드로 변환해줘야 한다.


따라서 CLR도 닷넷 언어로 만들어진 코드를 읽고 해석한 후, 운영체제에서 해석할 수 있게 컴파일 해주는 일종의 가상머신 ( Virtual Machine )이라고 이해하면 쉽다. 그렇지만 VB.NET ,C# 등과 같은 닷넷 언어는 윈도우 등 운영체제의 고유 코드로 바로 컴파일되지 않고,마이크로소프트 중간 언어(MSIL , MicroSoft Intermediate Language)로 컴파일 된다.


따라서 운영체제에서 닷넷 애플리케이션을 바로 실행할 수 없는데,닷넷 애플리케이션을 실행하려면 닷넷 프레임워크의 CLR에 있는 JIT(Just-In-Time) 컴파일러를 통해서 MSIL코드를 고유 코드로 변환한 후 실행해야 한다. 결국 , CLR은 JIT 컴파일러를 통해MSIL 코드를 고유코드(실행 가능한 코드)로 변환하는 역할을 한다. 


그렇다면 왜 닷넷에서는 고유 코드를 바로 실행 가능한 코드로 컴파일 하지 않고 MSIL을 만들까? MSIL을 사용하는 이유는 닷넷언어가 C# 뿐만 아니라 VB.NET , J# , C++.NET 등 개발 언어가 다양하기 때문에 이를 통합적으로 해석한 후에 고유 코드를 만들기 위해서다.

MSIL은 프로그램을 한번 만들어 놓으면 그것이 어느 플랫폼에서 만들어졌는지에 상관없이 자신의 플랫폼에서 사용할 수 있게 해준다.


그래서 닷넷이 다중 플랫폼을 지원할 수 있는 것이다. 예를 들어 VB.NET , C# , C++.NET 등으로 만든 프로그램을 MSIL로 컴파일하면 exe , dll 파일 등으로 만들어져 보관했다가, 실행될 CPU와 운영체제가 결정되면 그에 맞는 JIT 컴파일러를 통해 실해 코드가 생성되어 사용되는 것이다.


기본 클래스라이브러리(BCL)

BCL은 닷넷 언어를 이용해서 쉽게 개발할 수 있도록 기존 마이크로소프트의 다양한 개발 라이브러리를 닷넷에서 사용할 수 있게 통합해놓은 기본적인 클래스 라이브러리의 모음이다. 이러한 BCL은 네임스페이스를 사용해서 논리적으로 그룹화되어 있다. BCL은 모든 닷넷 기반 애플리케이션과 컴포넌트에서 공통으로 자주 사용하는 System , System.Collections , System.Diagnostics 등과 같은 네임스페이스를 포함하고 있다. 또한 네트워크 연결, 프로토콜 구현, 파일과 스트림 입출력 클래스 , 멀티스레딩, 텍스트 처리 , 정규 표현식(Regular Expression) 그리고 리플렉션 (Reflection) 등의 기능도 함께 포함 하고 있다.


ADO.NET : 데이터와 XML

ADO.NET은 닷넷 프레임워크의 일부로 System.Data 네임스페이스와 하위 네임스페이스에서 제공하는 데이터 접근 기술이다. ADO.NET은

인터넷이나 인트라넷과 같은 비연결 기반 프로그래밍 모델을 제공하는데, 다음과 같이 구성된다.


System.Data 네임스페이스 

ADO.NET 객체 모델을 구성하는 클래스로 이뤄져 있다. ADO.NET 객체 모델은 크게 연결기반 계층과 비연결 기반 계층으로 나눠져 있기 때문에 개발하고자 하는 형태의 애플리케이션 아키텍처에도 적합하게 사용할 수 있다.


System .Xml 네임스페이스

W3C 호환 XML 파서와 XML 작성기(XML Writer) , 그리고 XSLT와 XPath 등 많은 XML관련 기술을 위한 클래스로 이뤄져 있다.


윈도우 사용자 인터페이스

윈도우 폼은 닷넷 프레임워크 기반의 윈도우 애플리케이션을 개발하기 위한 새로운 플랫폼이다. 특히 윈도우 폼은 풍부한 사용자 인터페이스를 포함하는 윈도우 애플리케이션을 개발하기 위해서 명료하고, 객체 지향적이며 확장 가능한 클래스의 집합으로 구성으로 있다. 또한 분산 계층 솔루션에서 로컬 사용자 인터페이스로 활용될수도 있다. 윈도우 폼 생성에 관련된 클래스는 System.Windows.Forms 네임스페이스에 포함되어 있으며, 윈도우 폼 유형은 크게 표준 윈도우, MDI 윈도우, 대화상자로 나눌 수 있다.


ASP.,NET

ASP.NET은 강력한 웹 애플리케이션 개발하기위한 프로그래밍 프레임워크다.그리고 ASP.NET 웹 폼은 쉬우면서도 강력한 방법으로 웹 사용자 인터페이스 페이지를 생성할 수 있게 하며, ASP.NET 웹 서비스는 분산 웹 기반 애플리케이션 생성을 위한 빌딩 블록을 제공한다.


System.Web 네임스페이스

웹 서비스와 웹 사용자 인터페이스 모두에 공통으로 사용될 수 있는 캐싱,보안,애플리케이션 환경 설정 등과 같은 하위 단계 서비스를 위한 클래스를 제공한다.


System.Web.Services 네임스페이스

프로토콜 등과 같은 웹 서비스를 핸들링하기 위한 클래스를 제공한다.


System.Web.UI 스페이스

웹 페이지나 컨트롤과 같이 사용자 인터페이스의 컨트롤에 대한 클래스를 제공한다.


ASP.NET에서의 컨트롤은 크게 System.Web.UI.HtmlControls 네임스페이스에서 제공하는 HTML 태그와 직접 매핑되는 HTML컨트롤, System.Web.UI.WebControls 네임스페이스에서 제공하는 강력한 웹 컨트롤로 나눌 수 있다.



'정보 > IT' 카테고리의 다른 글

코드 블록과 제어문의 종류  (0) 2018.03.10
코드 블록과 제어문  (0) 2018.03.10
프로그램 구성 요소  (0) 2018.03.10
C#  (0) 2018.03.09

+ Recent posts