top
Loading...
深入C#-訪問微軟首席設計師AndersHejlsberg(一)
深入C#
訪問微軟首席設計師 Anders Hejlsberg (一)

本文根據飛鳥貼在Microsoft.Net版的文章翻譯

今年七月份,O’Reilly編輯John Osborn 參加了微軟專業開發人員研討會,并就微軟的.Net框架和C#程序設計語言為主題訪問了 Anders Hejlsberg -著名的軟件工程師,C#語言的首席設計師。

Osborn:
我曾經看過一些出版物,根據他們的觀察,C#可以說是微軟版的Java。作為牽頭人,你喜歡別人這么說嗎?

Hejlsberg:
首先,C#不是Java的翻版。在設計C#過程中,我們參考了多種語言,象C++,Java,Modula2,C以及Smalltalk等。多種語言有一些相同的核心思想不奇怪,象 deep object-orientation, object-simplification等等,這些也是我們感興趣的。C#語言與其他語言,特別是Java語言的最主要區別是其盡量與C++靠攏。C#保留了C++的絕大部分操作符,關鍵字,描述方法。我們還保留了一些被Java拋棄的程序功能,例如enum ,這么一個強大的功能沒理由放棄。在C#中,我們不僅保留而且有所增強,enum 成為.NET基礎類庫的system.Enum中的強類型數據類。不經過映射,foo類enum 不能等同于bar類。我們還保留了操作符重載和類型轉換等。
C#超越那些傳統編程語言的一個概念是面向組件。我們保留了原有的properties, methods, events, attributes, 以及 documentation 等優秀的語言概念,并且新創了其他語言從未有過的attributes (用于給任意對象增加帶類型的,可擴展的元數據)。C#也是第一種組合了XML注釋符,以讓編譯器在源代碼中生成可讀文檔的語言。另一個重要概念是“一步到位”,就是你可以在一個文件中完成所有工作,不用再去建立頭文件,IDL文件什么的,使其可以很方便地插入asp頁面和其他環境中。
在行業中有許多關于編程語言是否需要支持properties 或 events的爭論。的確,我們可以改用methods來表述這些概念。比方用象get和set的命名模式來實現property的作用等,就象在C語言中也模擬面向對象操作,只是有很多東西需要你自己打理而已。
但我們所重點考慮的是讓語言更容易地操作對象。現在的程序員所編寫的組件,已經不是從頭編寫獨立的應用軟件或類庫,而是在通過繼承其他一些基本組件,override它們的methods,properties以及events。這是一個首先要樹立的概念。

Osborn:
你最近給C#做了個描述:它是C/C++家族中第一種面向組件的語言。

Hejlsberg:
是的,這也是我的主要目標。其實象Smalltalk,Lisp這些語言實際上也能做到,但代價不菲。我認為C#的一個重要創新就是使面向組件編程更加容易。比如說boxing和unboxing這兩個概念,boxing允許將任何類型的值轉換為一個對象,而unboxing將一個對象的值轉換為一個簡單類型的值。并不是說這些概念以前沒有出現過,但我們使這些概念實用化,易用化。
我們并不是要讓軟件工程師從頭掌握一種新東西,重寫軟件,現在的軟件行業已經付不起這個代價。我們給與開發人員更大的靈活性去兼容各種網絡標準,象HTTP,HTML,XML等,以及已在使用的微軟技術和將來新出的.NET技術。

北斗有巢氏 有巢氏北斗