티스토리 뷰

개발언어

C# 언어

지똥애비 2020. 6. 16. 22:36

C# 언어

1995년에 Java가 나오자 MS에서도 썬 마이크로시스템즈와 라이센스를 맺은 뒤 독자적인 Java 확장 언어 비주얼 J++를 만들었다. 그런데 썬에서 개발한 JVM에 MS가 임의로 부가 기능을 추가하면서 썬과 특허권 소송이 걸리는 바람에, MS의 비주얼 스튜디오에서 비주얼 J 시리즈와 MS VM(MS 버추얼머신)을 사용할 수 없게 되었다. 하지만 Java라는 언어 자체가 매력적인 언어이고 MS 역시 이를 버릴 수 없다고 생각한 것인지, 1999년부터 개발에 착수하고 2000년에 .NET 프로젝트와 함께 C#이라는 이름으로 새로운 언어를 발표한다. C# 2.0 까지는 ECMA 및 ISO 두 곳 모두에 표준이 등재되어 있으나, 이후 버전은 C# 5.0만이 ECMA 표준이 등재되어 있다. 현재 C#의 시장 점유율은 높은 편이고, 언어의 완성도도 현존하는 언어 중 가장 괜찮다는 평이 많다. C++는 생산성이 너무 떨어지고, Java의 경우 여러가지로 제약이 많아 아쉬운 점을 C#이 덜어주고 있다는 것. 코드기어(구 볼랜드)에서 Delphi와 C++Builder를 개발하여 유명해진 Anders Hejlsberg를 영입해 만들었는지라 컴포넌트 개발 환경이 우수하다. 엄청난 생산성을 자랑하던 델파이와 개발환경이 거의 유사하기 때문에 델파이의 개발자들은 거의 C# 개발자로 넘어갔다. 비주얼 스튜디오 6의 비주얼 베이직과 델파이/C++ Builder/C#을 비교해 보면 서로 간에 안드로메다 급으로 차이가 난다. 뿐만 아니라 GUI를 만들 때도 C#(윈폼)이 월등히 편리하다. 윈도우즈 개발자들이 UI 작업 이야기 할 때 뭔가 이슈가 있다면 C# 개발자들은 그걸 아주 쉽게 생각한다. 하지만 C++, 특히 MFC 개발자들은... 사실 MFC의 경우 단순히 Win32 API의 래핑수준을 넘지 못하지만, C#의 UI 컴포넌트는 근본 설계부터 컴포넌트 구조를 위해 설계되었으니 당연한 부분이다. MS사의 개발 도구에서 C#을 강력히 밀어줬는데도 불구하고 2005년 이전까지만 해도 C#의 점유율이 크게 낮았다. 전문가들에게는 C++, 초보자들에게는 VB 6.0에게 밀렸기 때문이다. 하지만 2010년 이후로는 C++의 점유율이 서서히 낮아지고 있는 반면 C#의 점유율은 크게 높아졌다. C#은 강력한 reflection 구조를 갖고 있기 때문에 인텔리센스(자동완성)를 언어 차원에서 지원하므로, 비주얼 스튜디오 2002~2005 버전을 써 본 사람은 C#과 C++의 인텔리센스 기능이 얼마나 차이가 났는지 기억할 것이다. 언어적 특성으로 따지면 경쟁관계에 있는 언어는 Java라고 할 수 있는데, 처음 만들어질 때부터 Java를 많이 참고했으며 Java의 태생적 문제를 모두 해결하고 유용한 기능을 더한 형태이기 때문에 C#이 월등하다고 볼 수 있다. 하지만 이것이 시장성으로 이어지지는 않고 있는데, 많은 솔루션들이 웹으로 컨버전되고 있는 시대적 특성 때문에 웹이 아닌 데스크톱 애플리케이션 분야의 시장이 줄어들고 있기 때문이다. C#도 ASP.NET이라는 웹 언어가 있기는 하지만, JSP나 PHP 등에 크게 밀리는 상황으로 점유율이 매우 낮다. 특히 .NET Core가 나오기 전까지는 서버 OS가 많은 로열티를 발생시키는 MS Windows로 제한되었다는 점이 낮은 점유율에 크게 일조하였다. 하드웨어 제어나 공장 등 웹으로의 전환이 불가능에 가까운 환경에서는 어느 정도 경쟁력이 있긴 하지만, 닷넷 프레임워크 자체가 워낙 거대한 탓에 잘 선택되지 않는다. 그래도 최근에는 그러한 장비들의 환경 역시 성능이 많이 올라와서 부담이 덜어지고 있다는 것이 그나마 희망이긴 한데, 이쪽은 워낙 이전 버전이 유지되는 특성이 강하다 보니 C++와의 경쟁이 쉽지 않다.  2019년에 열린 'MS Build2019' 컨퍼런스에서 MS가 흥미로운 계획을 발표했는데, 2020년 안으로 Mono가 흡수된 .NET 5 버전을 출시할 예정이고, 이는 .NET 프레임워크가 아닌 .NET Core를 기반으로 할 것이라는 내용이다. 이는 윈도우 전용이었던 WinForms/WPF 등의 GUI 프레임워크가 타 운영체제에서도 사용이 가능해진다는 의미이며, 윈도우/macOS/리눅스/안드로이드/iOS/ASP.NET 등 수많은 환경을 대상으로 한 애플리케이션을 하나의 .NET으로 개발할 수 있게 될 것이다. Java와의 상호운용성도 지원할 예정이라고 한다. 웹 애플리케이션 개발용으로는 ASP.NET을 밀어주고 있다. 이는 Java의 JSP에 대응되는 것으로, 기본적인 사항은 거의 비슷하다. 기업에서 주로 쓰고 있으나, 윈도우 서버(인터넷 정보 서비스)를 비롯한 각종 라이선스 비용 문제 등으로 JSP만큼 크게 활성화되지 못했다. 2014년의 .NET 오픈소스화 이후, macOS와 리눅스에서도 돌아가는 오픈소스 구현체인 ASP.NET Core가 등장했지만 그리 흥하지는 못하고 있다. JSP를 주로 쓰는 곳은 비교적 보수적인 SI나 관공서, 대기업 등이어서 ASP.NET으로 넘어갈 의향이 없고, 최신 기술에 민감한 회사들은 쉽고 간편하게 웹 애플리케이션을 만들 수 있는 Express나 Django, Ruby on Rails 등으로 넘어갔기 때문이다. 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함