1. 난 c#이 걍 자바랑 c++ 자바 섞어가지고 닷넷이라는 가상환경에서 돌아가는 언어인줄 알았음.

아애 틀린 소리는 아닌 것 같지만 작정하고 공부해보니 난 굉장히 단면적으로만 알고 있었음.


2. c#이 메인이 아니었음. 메인은 닷넷이었음. 윈도우 환경에서 개발-배포-런타임에 이르기까지

하드웨어에 종속적이지 않게 통합적인 관리체계를 구축하고 싶었던 것 같고 

그렇게 해서 나온게 닷넷 프레임워크 였던 것 같음. jvm 보다는 훨씬 더 거대한 플랫폼 개념인 것 같음.


3. 그리고 난 닷넷이 그 핵심이라고 생각했는데, 닷넷 프레임워크 조차도 그보다 더 거대한 표준의 

구현체일 뿐이었음. 런타임의 동작표준을 cli로 정의하고, 그 cli를 마이크로소프트가 clr로 구현하고

거기에 fcl등등을 더한게 닷넷 프레임워크였던 거임.(아직 cli가 구체적으로 뭘 정의하는지는 모르겠음)


4. 더 블라블라해서 cli는 cts라는 타입명세와 연계하여 돌아가고. cts는 cli 표준안에서 작동하는 언어의

타입명세를 정리해놨음.(모든 타입은 필드, 프로퍼티, 이벤트, 메서드 로 구성되고 한정자가 어떻게 정의되고 등등)


5. 그리고 타입보다 더큰 언어적인 특성은 cls로 정의되어 있고. cls를 따르는 여러 언어중에 하나가 c#이었음. 그렇기에 cls 표준에

맞춰서 개발을 해놓으면, cls 호환 언어들 끼리라면 각기 다른 언어로 모듈로 컴파일되어있더라도 굉장히 수월하게 연계되는 동작을 할 수 있음.


6.  c#에서 정의되는 언어적 특성은 clr의 규칙보다 더 제한적이기에, 닷넷 어셈블리(il)로 언어를 직접 작성하면

좀 더 형식에 제약받지 않는 작업을 할 수 있음.(가령 internal and protected 같은 한정자)


7. 대충 여기까지 읽고 나니 깃헙갤에서 코어가 너무 늦게나왔다느니 하는 말이 대충 이해가 가기 시작.


8. 그러면 코어랑 모노랑 뭐가 다른거지가 궁굼해지기 시작했음.


9. 나름대로 알아본것 같지만 존나 아직도 심연은 저 골짜기 아래에 있는 것 같음. 


10. 다 공부하면 한세월일 것 같으니, 적당히 의문점이 해소가 되면 문법좀 더 파보고 야구게임이라도 만들어봐야겠음.