問方為讀者:
答方為李維
問:僅僅比較各種語言的優(yōu)缺點(diǎn),其實(shí)沒有太多意義。這只是個(gè)人的習(xí)慣而已。很多專家對語言的比較,其實(shí)都帶有個(gè)人的偏好。
答:我不贊成, 如果只是比較各種語言的優(yōu)缺點(diǎn), 而沒有再深一層的想想每種語言為什麼會這樣設(shè)計(jì), 代表的意義是什麼的話, 那麼顯然沒有以PL的觀點(diǎn)來看, 當(dāng)然也只能以個(gè)人的喜好來判斷了.
問:所有的語言之間的比較,最終都會歸結(jié)到對語言所依賴的Runtime的比較。
所有的語言都像C#一樣都有Runtime,VB 有VB runtime,C/C++有 C/C++ Runtime Library,Delphi有Delphi VCL。只不過.NET 和java的runtime是動態(tài)的而已。語言是工
具,Runtime才提供功能。
答:.NET的Common Runtime Environmet或是Java的VM, 都只是提供了一個(gè)虛擬執(zhí)行環(huán)境, 只是JVM只需要關(guān)心Java一種語言, 而.NET需要關(guān)心數(shù)種不同的語言, 相比之下.NET的runtime會比較複雜. 不過.NET的runtime並不能停止語言創(chuàng)意的發(fā)展. 有許多人說在.NET下語言不重要, 我卻不怎麼認(rèn)為, 更不希望會如此. 因?yàn)檎Z言是應(yīng)該依據(jù)創(chuàng)意和需要進(jìn)步的, .NET只是提供一個(gè)基礎(chǔ), 但是語言卻可以不斷的加入新的想法. 例如當(dāng)Borland把Object Pascal移植到.NET上時(shí), 可以實(shí)作出更多的創(chuàng)意和編譯技術(shù).
這是什麼意思呢?如果真的有注意Object Psacal的語言進(jìn)步, 那麼我們會發(fā)現(xiàn)Object Pascal從Delphi 4之後加入Interface的觀念和功能, Delphi 5加入了semi-delegation, Delphi 6加入了common interface的觀念, 更棒的是Delphi 6的interafce可以擁有remote invokation, 而且可以克服傳遞複雜資料型態(tài)的功能. 這在SOAP和Web Service方面貢獻(xiàn)卓越, 連Microsoft的SOAP Toolkit都無法輕易做到的事情可以由Delphi 6的 invokable interafce做到. 再加上為interface加入RTTI的功能, 可以讓程式師設(shè)計(jì)出功能強(qiáng)大的架構(gòu). 當(dāng)然幫助最大的是對於工具, 元件和精靈開發(fā)者. 這個(gè)語言功能和創(chuàng)意又怎會不重要?
另外Delphi的VCL不是runtime, 只是元件架構(gòu), Delphi 6和Kylix的runtime現(xiàn)在是很強(qiáng)的.
問:我覺得倒是.NET給了大家一個(gè)機(jī)會,當(dāng)語言的Runtime降到了作業(yè)系統(tǒng)一層,那麼作業(yè)系統(tǒng)>升級,語言也會跟著進(jìn)步。當(dāng)所有語言的Runtime都統(tǒng)一了之後,選擇語言就只是個(gè)人喜好>的事情了。Java做了前面一件事情,而.NET還會做后面一件事情。
答:那是指runtime環(huán)境功能的進(jìn)步, 而不代表語言的進(jìn)步. 語言會是步伐更快的進(jìn)步標(biāo)地. 現(xiàn)在.NET中的VB.NET, C#和VC是因?yàn)樘釙N到彼此差不多的地步, 因此會說語言不重要, 但是隨著時(shí)間的過去, 語言的差異又會逐漸出現(xiàn), 許多巧妙的設(shè)計(jì)和構(gòu)思也會顯現(xiàn).
李維
相關(guān)帖子:
delphi6 爆發(fā)還是滅亡?
李維:我的回憶和一些有趣的事
看IT風(fēng)云變幻,寶蘭與微軟背后的故事,
看寶蘭, 一年之間連續(xù)推出kylix1.0 ,interbase6.0, delphi6,jbuilder5 ,c++builder6也不日即出,敬請關(guān)注寶蘭2001年與微軟對絕的殺手锏kylix
陳寬達(dá): 遊戲程式設(shè)計(jì)初學(xué)者常遇之疑問
明修棧道,暗渡陳倉,陳寬達(dá)點(diǎn)指開發(fā)工具
新聞熱點(diǎn)
疑難解答
圖片精選