'TIOBE'라는 소프트웨어 품질 서비스 공급 업체는 홈페이지에 매월, 매년 단위로 프로그래밍 언어 인기 순위(이용수, 강의수, 검색수 기반)를 게시하는데요. 수백 개의 프로그래밍 언어 중에서도 꾸준히 높은 순위를 유지하고 있는 언어들이 있습니다. Python(파이썬), JAVA(자바), C, C++, 그리고 C#입니다.
C와 C++은 오랜시간동안 전세계적으로 가장 많이 사용되는 프로그래밍 언어이고, Python은 인공지능기술 덕분에 상승세를 타고 있어서 몇 년째 1위입니다. JAVA는 웹 개발 부문에서 압도적인 위치를 점유하고 있습니다. 그리고, 고유한 특색을 갖고 있는 C#이 있습니다.
마이크로소프트(MS)사는 객체지향 언어로 활용성이 높은 자바를 견제하기 위해 C++과 자바와 비쥬얼베이직(VB)의 강점을 합쳐 C#을 개발했습니다. C#은 C로부터 기초적인 프로그래밍 언어의 기능을, C++로부터 객체지향 속성을 상속받고, 자바의 프로그래미 언어 개념과 비쥬얼베이직의 편리함을 갖춘 언어로 'MS의 자바 킬러'라고 불릴 정도로 자바를 이기기 위한 MS의 각별한 노력이 깃든 언어입니다. C#의 주목할만한 특징으로,
① 수많은 라이브러리의 강력한 기능으로 뛰어나면서도 쉽고 빠르게 프로그래밍을 할 수 있습니다.
② 다른 언어와 호환성이 좋습니다. 개발환경과 실행환경을 통일시킨 닷넷(.NET)은 기존 C언어 계열, 닷넷 계열 개발자들에게 익숙한 비쥬얼스튜디오를 개발환경으로 사용해 익숙함과 편리함을 제공합니다.
③ 그래픽적 요소가 뛰어납니다. 그래픽 프로그래밍을 할 때 floating-point 연산을 많이 하는데 C#의 경우 연산 처리속도가 빠릅니다.
④ 자바가 다양한 플랫폼에서 활용될 수 있도록 구성되어있다면, C#은 윈도우에서 바로 사용될 수 있도록 구성되어 있기에 자바보다 좀 더 유연하다고 볼 수 있습니다.
C#과 자바의 차이를 한마디로 요약하자면, 지향하는 목표가 다르다는 것입니다. 자바는 어디서든 작동할 수 있는 것이 목표였기에 호환성이 뛰어나며, 그래서 웹, 모바일, 서버 환경 개발에 용이합니다. 그러나 C#은 윈도우 환경에서의 편리한 개발과 빠른 처리속도가 목적이기 때문에 게임개발, 스마트팩토리, 사물 인터넷(IoT), 머신러닝 등에 많이 활용됩니다.
게임엔진 분야에서 가장 큰 점유율을 갖고 있는 것은 Unity입니다. 전세계 시장의 절반, 모바일 게임 시장에서는 약 70%이상의 점유율을 보입니다. 바로 여기서 C#이 프로그래밍 주력 언어로 사용됩니다. 대표적으로 <포켓몬 고>가 Unity로 개발되었죠. 증강 현실(AR) 환경을 구현한 것이 바로 C#입니다. 이와 더불어 앞에서 말했던 C#의 객체지향 프로그래밍과 그래픽적 요소의 뛰어남이 Unity의 객체기반구조와 딱 들어맞았기 때문에 시너지가 생겼다고 볼 수 있습니다.
C#을 주력으로 하는 Unity가 점유율을 독차지한 이유는, 초보 개발자도 접근하기 쉬운 개발환경입니다. GUI(그래픽 사용자 인터페이스)가 직관적이기 때문에 에셋의 위치를 바꾸거나 적용할 때 매우 편리하고 쉬운 편입니다. 이것은 곧 별도의 디자이너와 협업하지 않아도 개발자 혼자서 게임을 개발할 수 있다는 것을 의미합니다. 그래서 Unity의 게임 제작 온라인 마켓인 에셋스토어가 활성화되면서, Unity 개발자 시장을 확장하는데 일조했습니다.
무엇보다도 모바일과 PC, 콘솔 등 여러 디바이스에서 가능한 게임을 만드는 '크로스 플랫폼' 개발에 C#과 Unity는 궁합이 좋습니다. 윈도우뿐만 아니라 iOS, Android, PS4, Xbox 등 여러 플랫폼을 동시에 개발할 수 있기 때문에 리소스를 적게 들면서도 더 많은 유저들의 유입을 확보하기 때문에 C#의 Unity가 게임 개발 시장을 독점하는 부분이 이해되는 대목입니다.
스마트팩토리는 공장 내 설비와 기계에 센서(IoT)가 설치된 데이터가 실시간으로 수집 및 분석되어 공장 내에 모든 상황들을 모니터링하고 분석하여 목적에 따라 스스로 제어가능한 공장을 말합니다. MES(제조실행시스템)기반 공장이라고도 합니다. 지금까지의 공정 자동화 기술은 각각의 공정별로만 자동화가 이뤄져있어 공정을 유기적으로 관리하기가 어려웠다면, 스마트팩토리는 ICT기술과 결합되면서 모든 설비나 장치에 무선통신으로 연결되어, 데이터를 자유롭게 연계하고 분석하여 최적의 생산환경을 구축할 수 있게 한 것입니다.
여기서 C#의 강점은 닷넷(.NET)프레임워크를 기반으로 한다는 것입니다. 닷넷은 산업용 소프트웨어에서 주로 사용하기 때문에 C#의 데이터처리 및 분석 능력, 자동화 프로토콜 지원, 사물인터넷(IoT) 연동 등의 활용성으로 적합할 수 밖에 없습니다.
우리나라는 삼성, 현대 등 제조 대기업의 활약으로 경제력이 급성장을 이뤘습니다. 이후 4차산업혁명 덕분에 제조업에서도 IT와 융합하면서 스마트팩토리(MES)의 발전이 급격하게 이뤄졌습니다. 한편으로 웹과 모바일, 인공지능 등의 새로운 분야가 주목받으면서 자바, 파이썬이 눈에 띄는 인기를 보이며 개발 언어 강자의 입지를 가져갔지만, 사실 제조업 강국에서 스마트팩토리의 주력 언어인 C#은 과거, 현재, 미래까지 흔들리지 않는 입지를 차지하고 있다고 볼 수 있습니다.
멀티플랫폼이란 영역에서 C#은 자바와 약 20여년간 경쟁하고 있지만, 2023년부터는 자바의 입지를 C#이 확실히 위협하고 있습니다. 왜냐하면 마이크로소프트 윈도우용 앱 개발을 위해 만든 언어이지만, 이제는 제한 없이 여러 개발환경에서 활용할 수 있도록 오픈소스로 전환했기 때문입니다. 반면 자바는 유료 라이센스를 도입하였고, 한편으로 코틀린으로 대체화가 되어가고 있습니다. 더군다나 AI의 등장으로 마이크로소프트사는 Azure AI서비스를 확장하고 있는데, ML.NET을 사용하면서 C#을 통해 직접 머신러닝 모델을 쉽게 구현하고 수행할 수 있기 때문에, 닷넷 생태계에서는 C#개발이 우위를 점할 수 밖에 없습니다. 빠르게 변화하는 IT시대에서 유연하게 적응하는 C#의 도약을 기대해 볼 수 있습니다.