티스토리 뷰
C# (C-Sharp).
거대 다국적 IT 회사인 Microsoft(MS)에 의해서 2000년도 초에 개발된 대표적인 윈도우즈 플랫폼 기반의 객체 지향 프로그래밍 언어이다. 현재 6.0이 .NET 플랫폼기반으로 안정적인 배포 버젼(2015년 기준)이다. 지난 몇년 간 오픈소스 진영의 리눅스 개발자들을 중심으로 점점 늘어나는 C#의 호환성 요구를 충족시키기 위한 많은 노력으로 인해, 이제는 Mono 프로젝트(Compiler 제공)를 중심으로 리눅스 호환 운영체제나 맥에서도 윈도우즈에서 처럼 C#을 자유롭게 사용할 수 있게 되었다.
C#은 언뜻 보기에 문법적 면이나 개념적인 특성이 이보다 몇년 앞서 세상에 등장한 주류 프로그래밍 언어인 Java와 매우 흡사하다. 그래서 Java를 배우고 나서 C#을 학습하면 어렵지 않게 학습해 나갈 수 있다. 하지만, 본인이 보기에는 C#은 Java 언어 보다 여러모로 앞써 나가는 언어가 아닌가 싶다.
사실 C#은 ECMA/ISO 표준으로 호환성이 갖춰지고, Mono에 의해서 오픈소스 진영의 도움을 받기 전까지는 매우 폐쇄적인 MS의 윈도우즈 .NET 플랫폼 전용 언어로만 취급되었다. 그 근간 설계부터 CLR/CLI 구조를 통해서 Java 보다 개방적이고 혁신적인 구조로 출발했음에도 불구하고, 생각보다 MS 전용 소프트웨어 개발 회사에 다니지 않는 이상, 많은 개발자들에게 선호되지 않았던 언어였다.
그런데 이러한 상황이 아이폰으로 대변되는 모바일 스마트폰이 대락 2010년 경을 전후로 세상을 크게 바꾸면서 삶의 문화로써 정착 되었고, 특히나 콘솔기기나 PC 보다 더 거대한 게임 플랫폼으로써의 모바일 환경이 자리를 잡으면서 크게 바뀌게 된다. 즉, 여러분들도 아시다 시피, 지금은 수많은 전세계에 걸출한 개발자들이 자유롭게 모바일 앱을 마음대로 개발해서 판매할 수 있는 시대이다. 특히 게임은 그 구조상 능숙한 개발자들도 상당히 고전해야 결실이 나오곤 하는데, 2d/3d 게임 개발환경에서 Unity가 등장하면서 상황이 바뀐다(물론, 그 전에 Cocos2d 등 유명 프레임워크 등이 있었음).
본인 또한 게임회사에서 직접 몸을담고 개발자로써 경험을 했기에 게임 개발에 대한 큰 어려움들을 잘 알고 있다. 그런데 유니티는 현재 수많은 모바일 게임들이 매우 손쉽게 개발 될 수 있는 일체의 환경을 제공해주는 매우 강력한 도구이며, 이를 통해서 생각보다 쉽게 퀄리티 있는 게임을 누구나 개발 할 수 있게 되었다(물론 상용 게임 개발을 위해서는 그 기획 단계부터 실제 상품의 출시 전후의 고된 경험들이 반드시 필요하다고 생각한다).
이 유니티의 주력 언어가 바로 C#과 Javascript이다. 물론 JS로도 해외 개발자들은 유니티를 이용하여 게임 개발을 많이 하지만, 그래도 타입이 강하게 제한되고 보다 구조적으로 메모리도 관리해주는 강력한 언어는 C#이라서 그런지 C#기반 유니티 게임 개발이 주류를 이루고 있다.
여러분들도 만약 C#이 처음이라면 이 포스팅을 통한 이번 JSON 처리를 계기로 꼭 C# 프로그래밍에 입문하기를 바란다.
CLI(Common Language Infrastructure)
Java 가상머신이나 이전의 Flash 플레이어처럼 중간 단위로 컴파일되고, 빌드된 코드를 플랫폼이나 기기 등 환경에 무관하게 거의 동일하게 실행시켜주기 위한 것이다. CLI는 다양한 고수준 프로그래밍 언어들이 각자의 컴파일러를 통해 번역되고 이를 각 환경별로 구현되어 제공되는 런타임 해석기인 CLR(Common Language Runtime)을 통해서 일관되게 동작할 수 있도록 해준다.
여기서 플랫폼 환경에 중립적인 코드를 CIL(Common Intermediate Language)용 산출물이라고 부르고 이를 다시 번역하여 실행하는 것이 CLR이다. 그림에서처럼 CLR을 통해서 0과 1로 이루어진 이진코드가 각 기기 환경에서 동작하게 된다.
이러한 CLI를 지원하는 프로그래밍 언어는 C#, Eiffel, Boo, IronPython, Basic, Prolog 등 매우 많으며, 대표적인 것이 바로 C#이다.
C#은 MS에 의해서 주도적으로 개발되어 CLI를 구현한 기본적인 CLR로 .Net 프레임워크에 기반한다. 그리고 오픈소스로 Mono 프로젝트와 Portable .Net 구현체들이 있다.
'프로그래밍' 카테고리의 다른 글
JSON .NET 패키지 (0) | 2020.05.21 |
---|---|
C# 개발 환경 (0) | 2020.05.20 |
OBJECTIVE-C (0) | 2020.05.19 |
구글 프로그래밍 언어(Go) (0) | 2020.05.19 |
NODE.js (0) | 2020.05.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- bson
- 자바스크립
- json
- 자바
- 동적그래프
- 인코딩
- C# 개발 환경
- json요소별문법
- array배열
- html
- php
- Java
- 데이터베이스
- Object
- swift프로그매밍
- RUBY(루비 프로그래밍 언어)
- json기본구성
- 디코딩
- JSON .NET
- 폴리글랏시대
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함