Game Development, 게임개발

C#에 대한 모든 특징, The features of C#

게임이 더 좋아 2021. 6. 5. 19:45
반응형
728x170

우리나라에서 그렇게 수요가 많지는 않지만

외국에서 수요가 많은 C# 정확히 .NET 계열..

C#에 대해서 알아보자

 


 

C#은 닷넷 프레임워크 위에서 실행된다.(범용성이 좋은 이유)

** .NET Framework는 MS에서 개발한 윈도우 프로그램 개발 및 실행 환경이다.

 

동작은 공통 언어 기반, CLI ( Common Language Infrastructure) 통해서 이루어진다.공통이라는 단어가 주는 어감이 있듯CLI는 프로그래밍 언어에 무관하게 동작하는 환경을 만들어 준다. 자바의 VM 같은 느낌이다.C# 외에도 다른 언어가 있지만 각 언어에 해당하는 컴파일러가 공통 중간 언어, CIL( Common Intermediate Language)로 변환해준다.또한 그 중간언어는 공통 언어 런타임, CLR ( Common Language Runtime )을 통해

특정 플랫폼(환경)에서 동작할 수 있게 만들어준다.

 

특정 환경에서 실행할 수 있게 만들어준다고???

CLI는 같지만 CLR을 바꾸면 되겠구나????해서 생긴 것들이 3가지가 있다.

 

우리가 처음에 말한 .NET Framework, 닷넷 프레임워크

리눅스, MacOS,  윈도우 환경에서 개발하는 .NET Core, 닷넷 코어

안드로이드, iOS, 윈도우 모바일에서 개발 동작하는 Xamarin, 자마린

 

 

보면 알 수 있듯이 환경에 자유롭다고 볼 수 있다.

유연성이 높은 것이 C#의 특징 중 하나다.

 


 

 

다양한 사이트에서 순위가 각각 다르기 때문에 출처를 밝히진 않겠지만

아무곳이나 검색을 해도C#은 범세계적으로 수요 5위 안에 항상 들었다.

우리나라 같은 경우는... ㅎㅎ 아니지만..ㅎㅎㅎㅎㅎ

외국의 수요가 우리나라에 언젠가 반영되지 않을까 싶다.C#도 공부하고 C++도 공부해야지..

 

 


우선 요약을 하면 

C#은 크게 4가지 특징이 있다.

1. Compile Language

2. Managed Code, 

3. Strongly Typed

4. Object-Oriented

 


 

Compile Language

 

컴파일 된다는 말이다.

우리가 쓰는 프로그래밍언어는 직접 컴퓨터나 기계가 이해할 수 없는 언어다.

즉, 컴파일러를 통해 기계가 알아들을 수 있도록 바꿔주는 것이다.

그리고 컴파일된 Application을 컴퓨터가 실행한다.

컴파일 언어들은 대부분 연산 속도가 매우 빠르고, 플랫폼에 특화되어있다.

++ 즉, 어떤 컴파일러를 쓰느냐도 관련이 있지만 깊게는 다루지 말자.

 

이렇게 성능이 향상되면 많은 부분에서 최적화를 가져올 수 있는데

연산 속도가 빨라지면 높은 프레임 유지가 가능해지고, 좀 더 렌더링을 잘할 수 있고 유저친화적인 환경을 구현할 수 있다.

때문에 거의 모든 게임을 만드는 엔진들이 컴파일 언어를 쓴다고 볼 수 있다.

 

Compile에 대비되는 개념으로는 Interpreted가 있다. (Ex Python, PHP, JavaScript)

 


 

Managed Code

 

관리된 언어란 뜻이다.

 

대표적인 예로 메모리 할당의 문제다.

C, C++과 같은 경우 메모리를 직접 할당하고 할당했으면 반환해주는 작업을 해야한다.

만약 반환해주지 않으면 Memory Leak로 실제 우리가 가지고 있는 메모리보다 덜 쓰게 되는 현상이 발생한다.

 

하지만 C#에서는 자동 할당, 자동 반환이다.(정확히는 닷넷 프레임워크에서 자동 메모리 관리를 해준다)

garbage collection에 의해 이루어진다.

약간의 지체가 있어 직접 할당, 반환보다 성능이 떨어지는 것이 사실이다.

 

Garbage Collector에 대해서는 따로 글을 쓰겠다.

 

[분류 전체보기] - C#에서의 GC(Garbage Collector), 가비지 컬렉터

 

 


 

Strongly Typed

 

타입이라는 말에서 자료형이 느껴진다.

바로 자료형을 정확히 선언해야 한다는 것이다.

-> Strong Typed

Python에선

a = 3
a = 3.4
a = "Hello"
a = b

하나의 변수에 다 담아진다.

-> a single variable can hold any kind of data. 

++ 파이썬과 같은 언어를 Weakly Typed 언어라고 한다.

 

 

이런 것이 사용자에겐 편리할 수 있다. 

반대로 불편할 수 있다.

 

단적인 예로

MS에서 MonoDevelop이라는 것이 있다.

이 친구는 프로그래머가 실시간을 짜는 코드를 체크해서 프로그래머가 무엇을 하려는지, 하려는 것이 맞는지를 알려준다.

때문에 Strong Typed가 느린 것 같지만 나중엔 오류를 줄여주고 시간도 단축해준다.

 


 

Object-Oriented

 

객체지향언어다.

객체지향의 특징은 너무나도 많고 가볍게 다룰 정도는 아니기에 다른 곳에서 다루기로 하자.

 

 

 

 


 

C++과의 차이점

 

 

 

 

 

 


 

요약

 

C#은 다양한 플랫폼 위에서 작동한다. (범용성이 좋다, Cross Platform)

C#은 객체지향 언어이다.

C#은컴파일 언어이다. 

C#은 엄격한 타입형 언어이다.

C#은 Managed Code이다. (메모리할당)

 

 

 


 

반응형
그리드형