總結成功應用軟體的一個經驗

來源:互聯網
上載者:User

縱觀80年代以來的成功應用軟體,凡是獲得長久成功者,絕大多數具有如下特點:

以一種系統語言(通常是C/C++)於OS API之上提供一高層的應用程式運行時(runtime),包括一個高層次、面嚮應用進行語義最佳化的虛擬機器,一個龐大的應用程式級API庫(基於普通過程的函數庫,或基於OO的類庫,或基於component的構件庫),一個具有可擴充性的軟體體系架構(尤以外掛程式式結構或面嚮應用的framework為典型),以及,最理想地,一個面嚮應用的語言引擎。整個應用以系統語言與應用級語言共同完成。擴充時主要使用應用級語言,亦可使用系統級語言,無論哪種,都必須依賴一個擴充架構。

且看一些例子:

1. Emacs,以C開發核心,並實現elisp解譯器,可用C及elisp實現原子函數。整個程式用C及elisp共同完成,並可以任一種方式進行擴充。

2. AutoCAD,以C/C++開發核心,實現AutoLISP,整個程式用C/C++及AutoLISP共同完成,可用C/C++/AutoLISP/VB擴充。同樣來自Autodesk公司的3D Max亦裝備有Max指令碼。

3. Mathematica,以C開發核心,實現Mathematica語言,整個程式用C及Mathematica語言共同完成,主要使用Mathematica進行應用開發。

4. Matlab,以C/C++開發核心,實現Matlab語言,整個程式用C/C++及Matlab語言共同完成,主要使用Matlab進行應用開發,也可使用C/C++/Fortran進行擴充。

5. Microsoft Office,基於COM體系,C/C++編寫核心模組,VB負責整合,並提供VBA供應用開發。

6. TeX,Pascal編寫核心解譯器,以宏擴充的方式開發高層系統。

還有如SAP、Perl、Python此類例子數不勝數

此種思路,屢獲成功,實當為我輩悉心模仿。其核心痛點有二,一是runtime的設計,動態性的實現,framework之權衡(需要面嚮應用,全如Eclipse那般靈活,對於特定應用領域而言並非最優),對底層計算平台的抽象(真正成熟的網路應用開發,應當將網路透明化);二是應用級語言的設計與實現,設計是關鍵,也是中國程式員之最弱點,

面嚮應用的高層語言的設計,相當於機械工業中的大型成套裝置製造,是主幹行業,核心技術。要設計出好的應用語言,要求設計者一通系統程式設計技術,對解譯器的及其與系統的互動、擴充的實現技術非常熟悉,二要深刻理解程式設計語言理論,精通形式語言理論及語言發展曆史,能不受困於20年來的主流思想,以最自然的方式提供所需語義,三是要熟悉應用領域,為設計提供方向引導。目前國內的教育體制及浮躁氣息,很難培養出如Larry Wall這樣的大師。

.NET CLR提供了上述所需的具動態性的runtime,FCL提供了完備的支援庫,這就使我們開發高品質應用程式的難度大大降低。但是VB和C#就應用開發來說,層次還顯得稍低。下一步應當是提供類似Python那樣的動態語言。.NET平台上的動態語言是什麼樣子?有兩種可能,一是把Python直接移植過來,我相信這是一定會發生的事,但是就微軟官方來說,它會採取另一條路,那就是直接把C#和VB指令碼化。而我估計在這一過程中,VB會優先。

最終我們會走向特定於領域的語言,我覺得這方面的一個典範是Mathematica,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.