본문 바로가기
Back-end

C# 언어의 기본

by 탄이. 2019. 1. 11.

C#

개요

  • 2000년 7월 마이크로소프트가 C#, VB.NET 등 모든 닷넷 프레임워크 기반 언어를 Windows, Linux, Mac 기반에서 돌아가도록 만든 오픈소스 프레임워크이다.에서 개발된 객체 지향 프로그래밍 언어. '씨샵' 또는 '씨샾'이라고 읽는다. 1983년에 등장한 C++와 1995년에 등장한 Java에서 강한 영향을 받았다.

  • Java라는 언어 자체가 매력적인 언어이고 MS 역시 이를 생각하여, .NET Framework에서 C#이라는 이름으로 새로운 언어를 발표한다.

  • Java가 Java Virtual Machine이 필요하듯이 C#은 .NET Framework가 필요하다.

호환성 및 범용성

  • 언어적으로는 Java와 유사하지만, MS라는 특정 플랫폼에 강하게 묶여있다는 특성으로 애플의 Objective-C와 자주 비교가 된다.

  • 유니티 엔진의 기본 개발 언어이기도 하다.

Xamarin Framework

  • C#으로 안드로이드와 iOS용 앱, macOS용 Cocoa 기반 프로그램을 개발할 수 있도록 해 주는 프레임워크

  • C#.NET Framework리눅스에서도 쓸 수 있게 해주는 Mono 프로젝트에서 시작된 프레임워크이다.

  • 안드로이드iOS의 모든 API가 준비되어 있기 때문에 네이티브 앱 개발이 가능하다.

  • new Label() 하면 Android iOS WindowsPhone WPF UWP macOS Linux(GTK#) Tizen 으로 모두 번역해준다.

    • 숨차다 다양한 nuget 패키지들과 함께 이용하면 90% 이상의 코드를 공유할 수 있으며 10%이하의 OS 별 코드를 작성하여 여러 OS 용 네이티브 앱 개발이 가능하다.

  • 게임의 경우 기존 네이티브에서 제공되는 UI를 사용하는 경우가 거의 없고, 아예 해당 게임에 맞는 UI 를 바닥부터 개발하는것이 대부분이기에 유니티 같은 Cross-Platform 개발이 유리하지만, 게임 외의 앱들은 네이티브에서 제공하는 UI를 사용해야 하기에 오히려 작업이 늘어나는 경우도 있다.

    • 버튼 하나 하나 마다 이렇게 C# style, Android style, iOS style 을 왔다갔다 하면서 작업해야한다.

  • 플랫폼 의존도가 적고 커스텀 UI의 중요도가 적은 곳에 적합하며(이름부터가 폼 형식에 적합하다는 의미를 갖고 있다) 반대로 플랫폼 고유 API 지향적이며 디자인 된 UI를 중시하는 경우(사이트에 그림으로 예시하는 것들은 것은 미디어 플레이어, 게임, 지도 앱)에는 Xamarin Native(Android, iOS)를 권장하고 있다.

모노 프로젝트

  • 윈도우 이외의 운영체제에서도 C# 사용이 가능하도록 하기 위한 프로젝트

  • 모노 덕분에 Obj-C 보다는 범용성이 훨씬 높다.

.NET Core

  • 마이크로소프트가 C#, VB.NET 등 모든 닷넷 프레임워크 기반 언어를 Windows, Linux, Mac 기반에서 돌아가도록 만든 오픈소스 프레임워크이다.

통합 개발 환경(IDE)

  • 비주얼 스튜디오

완성도와 점유율

  • 현재는 C# 언어의 점유율도 높은 편이고, 언어의 완성도는 현존하는 언어 중 가장 괜찮다는 평이 많다.

  • 컴포넌트 개발 환경이 우수하다. 엄청난 생산성을 자랑하던 델파이와 개발환경이 거의 유사하기 때문에 델파이의 개발자들은 거의 C# 개발자로 넘어갔다.

  • GUI를 만들 때도 C#(WPF)이 월등히 편리하다. 윈도우즈 개발자들이 UI 작업 이야기 할 때 뭔가 이슈가 있다면 C# 개발자들은 그걸 아주 쉽게 생각한다(구현도 마찬가지).

  • 언어적 특성으로 따지면 경쟁관계에 있는 언어는 Java라고 할 수 있는데, 처음 만들어질 때부터 Java를 많이 참고했으며 Java의 태생적 문제를 모두 해결하고 유용한 기능을 더한 형태이기 때문에 C#이 월등하다고 볼 수 있다.

  • 하지만 이것이 시장성으로 이어지지는 않고 있는데, 많은 솔루션들이 웹으로 컨버전되고 있는 시대적 특성 때문에 웹이 아닌 데스크톱 애플리케이션 분야의 시장이 줄어들고 있기 때문이다.

기타

  • ASP.NET

    • C#도 ASP.NET이라는 웹 언어가 있기는 하지만, JSP나 PHP 등에 크게 밀리는 상황으로 점유율이 매우 낮다.

    • 웹 애플리케이션 개발용으로 Java의 JSP에 대응되는 것으로, 기본적인 사항은 거의 비슷하다.

    • 기업에서 주로 쓰고 있으나, 비싼 윈도우 서버(인터넷 정보 서비스)를 비롯한 각종 라이선스 비용 문제 등으로 개인 웹호스팅 쪽은 크게 활성화되지 못했다.

    • 2014년의 .NET 오픈소스화 이후, macOS와 리눅스에서도 돌아가는 오픈소스 구현체인 ASP.NET Core가 등장했지만...그리 흥하지는 못하고 있다.


댓글