C# VS Java

Posted by 엘키의 주절 주절 on July 5, 2020

내가 가장 오래 사용한 언어는 단연 C++이다.

게임 업계에선 꽤나 오랜 기간 이견이 없었던 언어이다.

이후 루비 파이썬 등을 접했고, 그리고 C#, 자바, 자바 스크립트를 사용해가며 감상이 많았다.

이 중 가장 많은 대중적인 비교를 당하는 것이 바로 C#과 자바라고 할 수 있다.

C++처럼 실수하기 쉽고, 실수의 리스크가 큰 어려운 언어에 비해 강타입 언어의 장점은 그대로 유지하고 실수의 여지를 줄인 언어로써 포지셔닝을 동일하게 가져갔기 때문일 것이다.

즉, C++의 성능, 스크립트 언어의 생산성의 중간점을 찾기 위한 합리적 언어의 포지션 말이다.

이견의 여지 없이 현재 자바가 승자이나, 이런 뻔한 이야기를 하고자 하는 것은 아니다.


그 자바마저 현재는 점유율을 타 언어에 많이 뻈겼으며, 동시성 이슈를 깔끔히 해결하지 못한 문제, 발전 속도 이슈, 오라클 라이선스 이슈 등으로 시끄럽고, 그래서 자바 진영에서도 코틀린 등으로 이전과 같은 언어 변화도 꿈꾸는 형국이다.

나는 C++ 이후에 다른 언어를 여럿 실무에 사용한 이후에나 자바를 썼기에, 자바의 불편함에 대해 여러 번 토로한적이 있다.

C#은 온전한 Generic, Partial, Extend, LINQ, 타 언어들에 비해 압도적으로 빠르게 구현되었던 async-await, Visual Studio, 이제는 리눅스에서도 온전히 사용 가능한 .NET CORE 등의 장점은 자바의 아쉬운 생산성을 극복한 대체 언어로 손색이 없다.

이러한 장점이 여러가지 편견으로 인해 잘 받아들여지지 않는 것이 아쉽다.

C#은 애초에 자바의 아쉬운 점을 극복하기 위해 등장한 언어이고, 많이 극복했음에도 점유율이 높아지지못했고, 대체 포지션에 오히려 다른 언어들이 대안이 되는 상황도 그렇고 말이다.

개인적으로는 C#이 생산성을 위해서 끊임없이 발전하고, 자신들의 OS 종속 마저 포기한 .NET CORE는 신의 한수라고 본다.

여전히 내가 C#으로 서버를 짠다고 하면,

1
2
3
윈도우 서버 쓰실려고요?
ASP 그거 구닥다리 아닌가요?
C#도 웹 서버 있어요?` 

같은 반문을 자주 듣는다.

리눅스 서버에서의 구동은 물론이고 .NET Core 2.X 이후 (3.X 포함)와 Visual Studio 2017 이상의 버전을 이용하면 그 어떤 개발 환경보다 Docker 지원 및 테스트, 디버깅이 원활한데도 말이다. Dockerfile을 IDE가 작성해주기도 하며, Docker 구동 모드로 구동 시켜주며, 해당 구동 상태에서의 디버깅이 원활하다.

이렇게까지 지원되는 언어와 IDE는 난 아직 못봤다. (내가 못 본 것일뿐, 다른 언어나 IDE에서도 지원한다면 코멘트 부탁드립니다! 그 언어와 IDE도 멋진거 같아요!)

이 것이 오랜 기간 C#에 대해 쌓인 인식이고, .NET CORE가 3.1 버전까지 도달한 상황임에도 여전히 인식적인 변화를 주지 못했음을 의미하기도 할 것이다.

하지만 조금만 편견을 내려놓고 C#과 .NET CORE를 검토해본다면, 그 완성도, 지원 속도, 발전 속도, 발전 방향 모두 훌륭함에도, 많은 편견으로 검토조차 이루어지지 않는 아쉬움에 대해서 꼭 한번 얘기하고 싶었다.