팀 버너스리가 개발한 웹(www)이 한마디로 대박이 났습니다. 엄청난 인기를 끌기 시작했죠. 이로 인해 팀 버너스리는 영국에서 기사 작위까지 받았습니다. 아무튼 이 상황을 유심히 지켜보던 썬의 제임스 고슬링은 본인이 개발하고 있는 언어가 웹의 부족한 부분을 보완할 수가 있다고 판단하였고, 자바(Java)라는 언어를 개발하여 1995년에 공개하였습니다. 자바는 등장 이후 수많은 개발자들과 회사에게 사랑을 받으며 인기 고공행진을 하기 시작했습니다.
자바의 성공을 부럽게 바라보던 마이크로소프트는 썬과 라이센스 계약을 맺은 후 자바의 확장 언어인 Visual J++를 만들게 됩니다. 하지만 중간에 특허 문제가 생겨 사용할 수 없게 되었죠. 이로 인해 마이크로소프트는 자체적으로 더 진보적인 프로그래밍 언어를 만들어야겠다고 생각하였습니다. 그래서 아네르스 하일스베르를 중심으로 새로운 언어 개발에 착수하게 되었습니다. 그리고 2000년, 드디어 C#을 세상에 발표하였습니다. 마이크로소프트는 자바의 장점은 살리고 부족한 부분은 보완하여 C#을 개발하였습니다. 이 때문에 자바에 비해 구조, 문법, 성능 등 여러가지 면에서 더 우수하다는 평가를 받고 있습니다.
처음 언어가 개발될 때 논의된 이름은 COOL(C-like Object Oriented Language)이었다고 합니다. 하지만 나중에 COOL이라는 키워드로 검색하면 프로그래밍 언어가 아닌 다른 내용이 더 많이 나올 것 같다는 의견으로 탈락하였다고 하죠. 최종적으로 C#이라는 이름이 확정되었습니다.
C언어 이후에 나온 C++이라는 언어가 있죠. C++이라는 이름으로 지은 것은 C언어의 특징을 거의 유지하면서 필요한만큼 향상 시켰기 때문이라고 합니다. 그런데 C++ 아래에 ++기호를 더 붙이게 되면 #과 비슷한 기호가 만들어지는데요. 그만큼 C#은 C++보다 더 업그레이드된 언어라는 뜻을 내포하는 것 같습니다. 또 음악에서의 #(Sharp)은 반음을 올렸다는 뜻이죠. 하나의 이름에 여러 의미가 담겨있는 것이 깜찍하고 재미있네요.
처음 발표된 후로 벌써 20년이 지났지만 C#은 여전히 아름답고 믿음직스럽습니다.
문법은 지나치게 장황하거나 간소하지 않은 좋은 절충점을 가지고 있습니다. 특별히 프로퍼티(Property)를 통해 getter와 setter를 구현하는 것과 링크(LINQ)는 정말 직관적이고 깔끔하죠! 또 언어의 버전이 올라가도 문법의 차이가 거의 없습니다. 이 때문에 개발자는 코드를 편하고 안정적으로 작성할 수 있습니다.
게다가 C#은 기가막힌 친구들이 정말 많습니다.
ASP.NET(Core)는 원하는 기능만 주입하여 가볍고 안정된 웹 API와 웹 애플리케이션을 빠르게 만들 수 있습니다.
Entity Framework는 DB와 맵핑하는 ORM으로 LINQ와 결합했을 때 높은 생산성을 제공합니다.
Nuget은 오픈소스와 라이브러리 등을 설치하고 관리해주는 패키지 매니저로써 GUI와 CLI 모두 제공합니다.
WinForm은 마치 파워포인트처럼 UI를 그릴 수 있고 몇 번의 클릭만으로 Windows 앱을 쉽게 만들 수 있습니다.
Unity에서는 C# 프레임워크인 Mono를 기반한 엔진으로 게임을 개발할 수 있습니다.
Xamarin은 한 번 작성한 폼과 로직으로 Android, iOS Native 앱을 동시에 개발할 수 있습니다.
Visual Studio는 C#을 강력하게 뒷받침해주는 IDE로 높은 수준의 인텔리센스와 디테일한 디버깅 기능을 제공합니다.
최근에는 .NET Core가 출시되면서 Windows, Linux, macOS, Android, iOS 등의 환경에서도 실행할 수 있는 포용력을 갖추었죠. Windows에서만 가능했던 C# 개발도 Mac과 Ubuntu 등에서도 가능해진 것입니다. 폐쇄적이었던 Microsoft가 시대의 요구와 흐름에 맞춰 개방적으로 변화하는 것이 놀랍고 기대가 되네요.
이상으로 C# 언어에 대해 소개해드렸고요, 다음 챕터에서부터는 구체적인 문법에 대해 알아보겠습니다.
Articles
|
|
---|---|
C# 강의 - 09 메모리 | 2021-02-12 |
C# 강의 - 08 함수 | 2021-02-08 |
C# 강의 - 07 조건문2 | 2021-02-08 |
C# 강의 - 06 조건문1 | 2021-02-08 |
C# 강의 - 05 주석 | 2021-01-26 |
C# 강의 - 04 데이터 타입 | 2020-10-08 |
C# 강의 - 03 변수 | 2020-10-02 |
C# 강의 - 02 첫 번째 앱 | 2020-09-14 |
C# 강의 - 01 언어 소개 | 2020-09-12 |