C#이란? [C#]

공부/C#  2012.09.02 09:00

안녕하세요. 명월입니다.
언어의 역사나 탄생배경은 프로그램을 공부할 때 크게 중요하지 않지만, 상식으로 알아두기 위해 포스트 합니다.


언어의 특징
C#은 닷넷 프로그램이 동작하는 닷넷 플랫폼을 가장 직접 반영하고, 또한 닷넷 플랫폼에 강하게 의존하는 프로그래밍 언어입니다. C#은 그 문법적인 특성이 자바와 상당히 유사하며 C#을 통해 다룰 수 있는 닷넷 플랫폼의 기술들조차도 자바를 염두에 둔 것이 많아서 자바와 가장 많이 비교되고 있습니다. 하지만 C#은 자바와 달리 불안전 코드(unsafe code)[1]와 같은 기술을 통하여 플랫폼 간 상호 운용성에 상당히 많은 노력을 기울이고 있습니다. C#의 기본 자료형은 닷넷의 객체 모델을 따르고 있고, 런타임 차원에서의 쓰레기 수집(garbage collection)이 되며 또한 클래스, 인터페이스, 위임, 예외와 같이 객체 지향 언어로서 가져야 할 모든 요소가 포함되어 있습니다.


표준화 역사와 현재

2000년 8월에 마이크로소프트, 휴렛 팩커드, 인텔은 C#과 공통 언어 기반(CLI)을 ECMA 국제 표준으로 등록하기 위한 작업을 준비하였습니다. 2001년 12월에 ECMA는 C# 언어를 ECMA-334 표준으로 발표하였고 2003년에는 ISO/IEC 23270 표준으로도 등록되었습니다. ECMA-334의 두 번째 판은 2002년 12월에 발표되었다.
2005년 6월에 발표된 ECMA-334의 세 번째 판은 닷넷 플랫폼 2.0에 관한 내용을 반영하고 있는데 부분 클래스, 익명 메서드, 널(NULL)을 대입할 수 있는 기본 자료형(nullable type), 제네릭 형식 등에 대한 내용을 포함하고 있습니다. 여기서 제네릭 형식은 새로 추가된 내용 중 가장 큰 비중을 차지하며 C++의 템플릿과 같은 형식 다형성을 위해 추가되었지만 그 내용은 서로 다릅니다. 2005년 7월에는 ECMA가 관련 표준 및 기술 리소스들을 ISO/IEC JTC 1에 latter's Fast-Track Process를 거쳐 제출하였는데 이 과정은 6개월에서 9개월 가량이 소요된다고 합니다.
2006년 마이크로소프트는 이 세 번째 판의 내용을 반영하는 닷넷 플랫폼 2.0과 비주얼 스튜디오 2005를 2005년 11월에 공식 발표하였고 몇 개월 후에는 로터 프레임워크 2.0을 발표하기도 하였습니다. 모노 플랫폼의 경우 세 번째 판의 초안이 나올 무렵부터 줄곧 세 번째 판의 내용 대부분을 빠르게 반영해왔습니다. 또한, 세 번째 판에 수록된 내용에 맞혀 닷넷 플랫폼에서 사용이 가능한 다른 언어들(Visual Basic .NET, J#, JScript .NET, Visual C++ .NET MC++ 2.0 등)에 대한 내용도 같이 갱신되었으며 제 3자 언어들(Codegear Delphi .NET, Chrome 등)도 세 번째 판의 내용이 곧 반영될 예정이거나 이미 반영되었습니다.
2007년 C# 3.0을 위한 비주얼 스튜디오 2008 베타 2, 닷넷 프레임워크 3.5 베타 2가 공개되었다.
2008년 현재 C#의 언어 버전은 3.0이다. 거기에 호응하는 닷넷 프레임워크 버전은 3.5이고, 비주얼 스튜디오 2008이 개발 도구로 제작되었습니다. 언어 내장 쿼리(LINQ)를 지원합니다.
2009년 비주얼 스튜디오 2010의 베타 버전이 공개되었다. 닷넷 프레임워크 4.0 베타버전이 포함되어 있습니다.


잘 알려진 C# 컴파일러와 개발 도구들

Microsoft Visual C#: Microsoft가 C#에 대하여 내리는 모든 표준 정의를 가장 정확하고 안정적으로 반영하는 컴파일러입니다. 최근에는 C# 3.0에 포함될 LINQ 확장과 같은 부분에 대한 기술적인 레퍼런스를 미리 테스트해볼 수 있는 도구로도 자주 쓰입니다.
Borland(CodeGear) C# Builder: 코드 기어 RAD 스튜디오(Codegear RAD Studio) 안에서 Delphi.net 과 C#.net 두 가지 언어로 .net 을 지원합니다. Microsoft Rotor 프로젝트: Microsoft .NET Framework가 발표된 후 수개월 이후에 같이 발표되는 오픈 소스 프로젝트로 Microsoft 닷넷 플랫폼에 대한 대체 구현을 제공합니다.
Mono: 마이크로소프트 닷넷 플랫폼에 대한 구현이 시작될 무렵에 시작되었으며, 현재는 제3자 닷넷 플랫폼 중에서 가장 안정적이고 성숙하었다고 평가되는 프로젝트입니다. 마이크로소프트 닷넷 플랫폼이 윈도와 소수의 유닉스 플랫폼을 대상으로 하는 것과는 달리 모노 플랫폼의 경우 윈도보다는 리눅스, 유닉스, 맥 OS X, 솔라리스와 같이 윈도우 외의 운영 체제와 플랫폼을 대상으로 합니다. 초기에는 지미안이 호스팅했으나 현재는 노벨에서 호스팅하고 있습니다. 모노 플랫폼을 기반으로 GTK#, 모질라 임베딩, IKVM(Java 바이트 코드를 모노 플랫폼 위에서 에뮬레이션하여 실행하는 VM), COCOA#, Nemerle 언어, MonoDevelop IDE 등의 기술을 지원합니다. 또한 마이크로소프트 닷넷 플랫폼과 서로 호환이 가능합니다. 현재는 리눅스 배포판들 사이에서 공식적으로 채택되고 있을 정도로 리눅스 환경에서는 대중적인 닷넷 플랫폼 구현이 되었습니다.
DotGNU Project: 모노와 비슷한 시기에 개발을 시작하였지만 아직 안정적인 버전이 출시되지 못하였다. 특유의 Portable .NET 엔진을 사용하고 있다.



출처 - C# 위키백과


정리
위 내용까지는 wiki 백과를 참조하여 글을 작성하였습니다.
정리하자면 그 전 90년대 초반에는 MS 사의 C++이 대단히 발전되어있었습니다. 그 후 중반에 들어서면서 www의 개발과 동시와 jvm을 앞세운 java의 반전으로 인해 C++은 일순 영향권이 조금씩 밀리기 시작합니다. C++로 개발되는 개발비도 그렇고 툴의 이용료 모듈의 비공개성(?)을 모두 깨친 JAVA는 무료로 앞세워 오픈소스를 내세우면서 엄청난 발전을 하게 됩니다. jvm을 앞세운 자바는 프로그램 무게도 가벼워졌습니다.



예를 들면, 지금이야 하드웨어적인 통신 속도도 비약적으로 발전하여 그러진 않지만 그 당시에는 C++로 작성된 프로그램을 로딩하면 약 1분에서 2분의 딜레이가 걸리는가 하면 자바는 jvm (.NET으로 치면 프레임워크)로 앞세워 가벼운 덩치로 코드를 읽어 들이기 때문에 거의 딜레이가 없어서 그 때 당시에는 엄청난 혁명이었습니다. 그래서 MS는 C++의 장점과 Java의 장점을 결합한 C#.NET 이 탄생 된 것입니다.



링크 - [정보 및 잡담] C, C+, JAVA, C#의 차이

목표

먼저 기본적인 C#문법을 공부하고 후반후에는 Java와 비교해서 C#에서 구현할 수 있는 특성들을 중심으로 공부하겠습니다.


'공부 > C#' 카테고리의 다른 글

메소드 [C#]  (6) 2012.09.10
배열 [C#]  (0) 2012.09.09
제어문 [C#]  (0) 2012.09.08
형변환과 주석 [C#]  (4) 2012.09.07
연산자 [C#]  (5) 2012.09.06
자료형(데이터 타입)과 리터럴 [C#]  (0) 2012.09.05
변수와 상수 [C#]  (1) 2012.09.04
C# IDE 툴 Visual Stuio 설치 하기(Express 버젼) [C#]  (2) 2012.09.03
C#이란? [C#]  (3) 2012.09.02

댓글 3개가 달렸습니다.
댓글쓰기
  1. 별리하루
    2012.10.30 14:43 신고 |  수정/삭제  댓글쓰기

    감사합니다.

  2. Tltiqchqh
    2014.01.06 16:31 신고 |  수정/삭제  댓글쓰기

    감사합니다.

  3. 초보씨샤퍼
    2014.07.31 12:38 신고 |  수정/삭제  댓글쓰기

    정주행중입니다.

    다른 블로그보다 이해하기가 더 쉽습니다.~감사합니다.