Unsung Hero, Brad Cox

개념적 용어를 keyword로 정의하게 되면, 설명할때 참 힘들어진다. 특히 “역사”를 모르는 사람들에겐. C#에는 reference type이란게 있는데, C#이 기본적으로 pointer가 없는 언어인만큼( VB사용자들을 끌어들여야 하니까. 그나저나 VB는 살아있나?), explicity하게도 혹은 class처럼 implicit한 것도 있다. 근데 설명할때 reference type이라고 말하면서 C++사용자에게 포인터를 쓰는 것과 같다고 말해버리면, “아. 포인터가 아니라 reference잖아요”라고 따지고 들 수있다. 아.. 그 reference가 아닌데. pointer(*)이던 reference(&)이던 다 레퍼런스인데…

C# 에는 reference type이란게 있는데, C#이 기본적으로 pointer가 없는 언어인만큼( VB사용자들을 끌어들여야 하니까. 그나저나 VB는 살아있나?), 명시적(explicit)으로 혹은 class처럼 묵시적인(implicit) 것도 있다. 근데 설명할때 reference type이라고 말하면서 C++사용자에게 포인터를 쓰는 것과 같다고 말해버리면, “아. 포인터가 아니라 reference잖아요”라고 따지고 들 수있다. 아.. 그 reference가 아닌데. pointer(*)이던 reference(&)이던 다 레퍼런스인데…

static allocation도 그렇고…

아.. 힘들다.
시 각적으로도 그렇다. C#에서 클래스가 레퍼런스 타입이면 그냥 Objective-C처럼 모든 객체는 포인터로 선언하면될 것이지, 생긴 것은 꼭 C++처럼 생겨서, 그냥 정적(static)정의 하듯이 하고선 그것이 reference type이라고 하면, C++에서 넘어온 사람들은 그런 변수를 함수 인자(패러미터)로 넘길때 고민하게 된다. “이거 내가 하는게 맞는거야?”

C#은 참 잘 만든 언어면서도 문제가 있는 언어다.
VB 사용자들을 끌어들이려면 확실하게 VB .NET을 밀던가, C/C++은 Apple이 Objective-C로 그러했듯이, 기존 컴파일러 많이 안바꾸고, 새 키워드도 많이 안넣으면서 하던가..
C++ .NET는 ISO에선가 C++로 부르지 말라고 까지 했잖은가?
포 지셔닝은 딱 Java인데, (Java도 C++과 비슷한 점이 많아서 장점이기도 하고 단점이기도 하고), C++의 신택스를 가지고 오고 이름도 C sharp 이니 ( C pound라고 하는 사람들은 없겠지? ) 자꾸 C++처럼 생각하게 된다는…

가만히 보면 Brad Cox가 Unsung Hero가 아닐까 한다.
C 를 만든 Dennis Ritchie나 C++의 Stroustrup, SmallTalk의 Alan Kay같은 명성을 누리지 못하지만, C 컴파일러를 거의 바꾸지도 않았으면서, 할 짓 다하는, 그것도 훨씬 간결하게.. 그런 언어를 만들어 냈으니, 이게 천재가 아니면 뭔가?

(같은 포스트 :https://plus.google.com/108121537492277875096/posts/LUSeKRzjxdv )

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: