본문 바로가기
프로그래밍/.NET

21/767

by JobKea 2018. 7. 12.
반응형

이전 26페이지까지와 순서가 뒤바뀐건 알고있다.

하지만 2일치를 한번에 쓰다보니 생각나는대로 쓰게 됬다.

어차피 연관성도 없잖아.


공통언어실행환경 (Common Language Runtime) : CLR


.NET 컴파일러로 실행된 IL코드라면 CLR이 뭐든 실행 시켜둔다.

즉 C#, VB.NET, F# 같은 다른언어여도 어떻게든 IL코드로 번역한다면 CLR가 설치된 환경에서는 실행해준다는거다.


이를 .NET 컴파일러가 해주겠지. 그렇다고 다른 운영체제에서도 가능한건아니다. 

그거엔 CLR가 설치가 안될테니. 

차후 .NET core 를 공부하면 타 운영체제 실행 환경에 대해 공부할수 있을것 같다.



공통중간언어 (Common Intermediate Language) : CIL


자바의 VM에서 중간언어(고급언어와 기계어 중간에 위치한 언어)를 바이트 코드라고 하는데

닷넷이서 생성하는 중간언어는 CIL 이라 한다. 보통 IL 혹은 MSIL (마이크로소프트 IL) 이라 한다.


.NET 컴파일러는 고급언어를 CIL로 변환하고 실제 실행할떄 CLR가 기계어로 번역한다.


C# => (.NET 컴파일러) -> CIL  => CLR -> 기계어



공용타입시스템 (Common Type System) : CTS


.NET 호환 언어가 지켜야하는 표준 규격 이다. 만약 .NET 환경에서 실행되는 새로운 언어를 만들고 싶다면 이 표준에 따라 개발해야한다.

그렇다는건 지금 만들어진 .NET 환경의 언어들은 이 규격에 따라 만들어졌다는 것이다.


그리고 CTS에서 벗어나는 기능은 구현할수 없다. 

책에서 나오는 예시에 따르면 CTS에서는 클래스 는 1개만 상속을 받을수 있다고 정의되어 있다.

즉. 다중 상속이 불가하다.


그리고 모든 CTS 규격을 준수할 필요는 없다.

예를 들어 public, private 등의 타입접근성을 모두 구현하지 않고 public 만 구현해도 된다는거다.


공용언어사양 (Common Language Specification) : CLS

.NET 호환 언어가 지켜야할 최소한의 기준점이되는 사양을 말한다.

CTS는 최대 규격이라고 하면 이것은 최소 규격이라 이해할수 있다.


.NET 호환 언어를 만들고자 한다면 최소한 CLS에 명시된 사양만큼은 구현되야한다.

즉. 현재 .NET 호환 언어는 CLS의 기능을 모두 구현하고 있다.


이런게 필요한 이유는 

C# 에서 부호없는 형식을 지원하는데 이는 CTS에도 정의 되어있기 떄문이다.

만약 당신이 새로운 언어인 CC#이라는 언어를 만들었는데 부호없는 형식을 구현 안했다고 가정해보자.


만약 C#으로 만든 프로그램을 IL코드로 만들어서 CC#에서 참조했다면 실행이 될까?

부호없는 형식에 대해서 사용하고자 한다면 당연히 에러가 발생할 것이다.


공용언어기반구조 (Common Language Infrastructure) : CLI


마이크로소프트에서 ECMA 표준으로 제출한 공개 규약이다.

CTS 명세를 포함하여 중간언어코드정의, 메타데이터, 이진파일(binart file)의 구조까지 표준 사향으로 기술되어있다.


IBM에서 구현한 JVM 으로 컴파일된 파일이 오라클의 JVM에서 실행되듯이 


CLI을 준수한 구현체에서 동낙하는 파일은 다른 구현체에서도 실행가능하다.


구현하는 크기를 비교해보자면 


CLS < CTS < CLI 인듯 하다. 


 

영단어

Infrastructure :  하부구조 (구글번역), 인프라스트럭쳐, 인퍼스트럭쳐등..  

Specification : 사양 (구글), 스퍼시피케이션

Intermediate : 중간의, 중급의 , 인터미디어트

반응형

'프로그래밍 > .NET' 카테고리의 다른 글

ASP.NET 2.0을 사용하도록 사이트를 구성하시겠습니까?  (0) 2020.03.20
Visual Studio SVN (AnknSVN) 연동  (4) 2020.03.20
26/767  (0) 2018.07.12
c# 7.1 책 구매와 공부 메모  (0) 2018.07.12

댓글