C Sharp(C#)은 마이크로소프트가 개발한 프로그래밍 언어이다.

1 역사

C# 언어는 초기에 마이크로소프트의 주도 하에 휴렛 팩커드, 인텔의 지원에 힘입어 개발된 언어이다. Java 언어에 대항하여 개발이 시작되었는데, 이 배경에는 마이크로소프트의 비주얼 J++ 및 마이크로소프트 JVM을 이유로 썬 마이크로시스템즈에 의해 소송당한 이유가 크다.

닷넷 프레임워크 2.0과 함께 배포된 C# 2.0은 ECMA[1]ISO[2]에 표준으로 등록되었다. 다만 이후 새 버전들은 5.0을 제외하면 ISO에 개정안이 제출되지 않았다. ECMA에는 1.0버전부터 최신 버전인 7.0까지 모두 등록되어 있다.

C# 2.0이 사용되던 시기에는 수세 리눅스로 유명한 노벨 사의 한 프로그래머가 Mono라는 런타임 및 C# 컴파일러를 개발했는데, 많은 오픈소스 커뮤니티 사용자들은 C#을 사용할 경우 마이크로소프트의 특허 침해로 인한 위기를 맞을 수 있다며 우려했으며, 많은 언어 이용자들을 확보해야 하는 마이크로소프트는 Mono를 상당히 반겨했으며 절대로 C# 및 닷넷으로 특허권을 행사하지 않겠다고 약속했다.

2 특징

기본적인 문법은 Java에서 계승되었으나, 상당히 많은 프로그래밍 언어의 문법들이 참고되어 적용되었다. 이를 테면 함수형 언어의 특징이 녹아있는 Lambda 문법, 두 개의 함수가 교차 실행되는 Coroutine 문법, DBMS에서 사용하는 SQL 문법이 차용된 Linq 문법, 인터프리터 언어에서 자주 쓰이는 동적 객체 및 동적 타입, PHP스위프트 등에서 유용하게 쓰이는 형태의 문자열 보간 문법 등 상당히 많은 언어들이 분석 및 참고되어 새 버전에 계속 추가되고 있다.

C#의 새 버전은 보통 닷넷 프레임워크의 주 버전이 개정될 때 갱신되는데, 최신 버전의 C# 문법은 이전 버전 닷넷 프레임워크에서도 사용할 수 있다. 다만 개발 도구를 업데이트 해야 사용할 수 있기 때문에 최신 문법을 이용하려면 최신 버전의 비주얼 스튜디오를 사용해야 한다.

3 용도

C#이 공개된 초기에는 C#을 이용할 수 있는 용도로는 Win32 응용프로그램, Win32 콘솔 응용프로그램, Win32 서비스, ASP.NET 웹 서비스 정도만 개발할 수 있었다.

C#이 구동되는 런타임인 닷넷 프레임워크가 지원하는 플랫폼의 한계가 컸기 때문인데, 이후로도 스티브 발머의 CEO 재임 기간에는 마이크로소프트와 관련된 플랫폼인 윈도우, 윈도우 CE윈도우 모바일, Zune, 윈도우폰, 엑스박스 360을 제외하면 ASP.NET 웹 서비스, 실버라이트 웹 플러그인 정도나 C#으로 개발할 수 있었고 이 외에는 정식 지원 플랫폼이 아닌 리눅스유닉스, macOS를 Mono를 이용해 구동하는 정도였다.

사티아 나델리가 마이크로소프트의 새 CEO가 된 이후로는 공식 지원 플랫폼의 범위가 넓어져서 C#의 최신 버전인 7.0을 개발할 수 있는 IDE인 Visual Studio 2017 기준으로 아래와 같은 플랫폼을 공식 지원하게 되었다.

오픈소스 버전인 Mono 런타임이 지원하는 플랫폼은 아래와 같다.

이 외에 Cosmos라는 프로젝트에서 C#을 이용해 운영체제를 개발할 수 있는 도구를 제공한다.[3]

4 부연 설명

  1. 편의상 아래의 런타임들을 제외한 모든 마이크로소프트 공식 런타임을 총칭
  2. 마이크로소프트 공식 오픈소스 버전 닷넷 런타임
  3. Xamarin 사에서 Mono를 기반으로 개발한 것을 마이크로소프트에서 사들였다

5 출처

  1. "Standard ECMA-334". ECMA International. 
  2. "ISO/IEC DIS 23270". International Organization for Standardization. 
  3. "COSMOS - C# Open Source Managed Operating System".