CS는 C++ 더하기 Java가 아니다
Turbo Pascal → Delphi(Object Pascal) → C#(C Sharp) 이다.
종종 「C# 는 C++ 와 Java 의 장점을 섞은것」이라고 말합니다.
그러나, C/C++, Java, Delphi, VB 를 섭렵해오고 있는 나에게 있어서, 이것에는 동의 할수 없습니다.
C# 는 C 레벨의 문법을 근거로 해 C++ 의 일부를 답습하고 있는 부분은 있습니다만,
C++ 의 언어 사양으로부터, 분명하게 피하고 있는 부분 (가령「다중 상속」이나「unsafe 포인터」등)도 있습니다.
이 부분이 Java 에 해당된다면, C++ 를 거론하는 의미가 그다지 없어보입니다.
전체의 특성으로 선택한다면, 나는, Delphi + Java 가 아닐까 생각합니다.
Delphi 를 해보면 알겠지만, 컨트롤 측면, 특히 이벤트 측면이 매우 닮았습니다.
조금 어렵겠지만 코드로 설명해 보자면,
//Delphi ————————————-
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer
begin
for i := 0 to 10 do
begin
// TODO : 여러 가지
end;
end;
TForm1 ? Sender 근처는, 무엇인가 그것 같지요? (^^)
그래그래, Delphi 에서는, 클래스를 나타내기 위한 프리픽스에 「T」를 사용합니다만,
C# 나 VB.NET 로 생성되는 XML 문서로의 클래스도 「T:클래스 패스」라고 쓰는군요.
그런데, 이야기를 되돌립니다.(;^-^)
이상하다고 생각하는 이유의 하나로서 같은 부류의 언어인 VB.NET 의 식이 성립되지 않는다고 하는 것에 있습니다.
C# == [C++] + [Java] 로 해 버리면, VB.NET == 의 우변이 이상해지지 않겠습니까? (;^-^)
쓴다면, VB.NET == [VB] + [Java] 입니까?
아니, 이것이라면 구문 레벨이라고 하는 의미에 지나지 않게 됩니다.
프로그램의 짜는 방법이나 이벤트의 세우는 방법은 확실히 VB 와 닮아 있습니다만,
그렇다면 C# 도 [VB] + [Java] 로 하지 않는 이유가 모르게 되어, 앞뒤가 맞지 않게 됩니다.
개인적으로는, 선택해야 하는 것은 C++ 가 아니고, 아직 Delphi 라고 생각합니다.
C++ 가 완전한 실수라고 말할 생각은 없고, Microsoft 독자색이라고 하는 의미에서는,"오히려" VC++ 일까라고 생각합니다.
즉, 「C# == (Delphi + Java (일부) + MS 독자) x C 의 문법」이라고 생각합니다.
이것이라면, 「VB.NET == (Delphi + Java (일부) + MS 독자) x VB 의 문법」이 되어, 위화감이 없습니다.
Java 에 대해 「일부」라고 쓴 것은, delegate, struct 근처의 이야기가 있기 때문입니다.
특히 delegate 는, Java 의 언어 사양으로부터 빗나가고 있다고 생각할 수 있습니다.
그러한 의미로, VJ# 는... (Delphi (일부) + Java + MS 독자)일까... 조금 어려운 w
- 원래, C# 의 설계자는 Delphi 의 개발에도 깊게 관련되고 있지 않았습니까?
- 개인적으로는, 꽤 영향을 받고 있는 것처럼 생각됩니다만...
댓글
댓글 쓰기