日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

編程語言介紹

 just_person 2009-06-24

在介紹編程語言之前,先說說開放源代碼的必要性。現(xiàn)在,在軟件生產(chǎn)領域存在巨大的智利浪費,大家把大量的精力用在編寫別人已經(jīng)實現(xiàn)的 程序代碼上??纯矗谋揪庉嬈饔卸嗌?,看看ftp程序有多少,看看字處理程序有多少,這些程序雖然有差別,但主要的功能都是一樣的。要實 現(xiàn)個性化的功能,在已有的軟件基礎上修改會節(jié)省多少時間呀!而每個程序各編一套,又浪費多少時間?如果,沒有這些重復的工作量,世界 上的程序員至少可以節(jié)省80%的工作量。同時,開放源代碼也方便了大家的交流,閱讀源代碼應該是最直接最有效的學習途徑。尤其是比較專業(yè) 的領域。

要開放源代碼,下面幾點比較重要: ×、語言要流行。 ×、語言的函數(shù)和類庫統(tǒng)一。 ×、語言的語法和編譯器要統(tǒng)一。 ×、編譯器是否開 放源代碼。 ×、API是否開放源代碼。 ×、語言的可重用性、功能、友好性。

語言統(tǒng)一的必要性:如果大家都用一種編程語言,都用同樣的函數(shù),同樣的類庫,那么,大家的共同語言就會很多。大家只要學會一種語言, 一套函數(shù),一套類庫,就可以相互讀懂源代碼,這樣,學習量是最少的。學習新的API浪費程序員大量的時間和精力,尤其是當這個API有大量 和其他API重復的功能的時候。

要增加代碼的可重用性,要從下面幾點著手: ×、代碼的可讀性。如格式、是否接近英語語法和單詞。 ×、代碼的表達能力,也就是簡單性 ,能用最少的語句和單詞實現(xiàn)同樣的功能。 ×、代碼的結構性,如函數(shù)、模塊、類。

語言功能的強大從下面幾點來說: ×、是否擁有大量的庫支持。這是最重要的,要求編寫任何功能的程序都有強大的庫支持。 ×、語法功能 是否強大,比如是否有出錯處理。是否有指針。

語言的友好性: ×、語言包的大小,語言包越小,學習越簡單。 ×、語言是否有友好的編輯調(diào)試環(huán)境。 ×、語言的可視化和集成編程環(huán)境。

c語言:

從性能上說,除了匯編語言,c語言是最接近機器的語言。各種操作系統(tǒng)的編程接口的默認語言都是c語言。因此,用c語言編程,可以最大限 度發(fā)揮操作系統(tǒng)的能力。同時,由于絕大部分的商品軟件都是c實現(xiàn)的,都有c編程接口,可以說,沒有c不能實現(xiàn)的功能。

在linux環(huán)境中,c具有很好的開放源代碼的條件,它有統(tǒng)一的編譯器gcc,有強大但比較難掌握的編程環(huán)境emacs,有統(tǒng)一的API:posix和 linux接口。并且編譯器和API是開放源代碼的。

在linux上編寫圖形界面程序,有兩個選擇KDE和gnome,KDE更成熟,gnome支持多語言和面向對象的程序間的協(xié)同。

在windows環(huán)境中,現(xiàn)在統(tǒng)一到了vc上,但有一個缺點,windows的升級換代太快,從dos環(huán)境到windows31

,從windows31到windows95,到windows2000,到.net。API常常變換,這樣,在windows上的程序代碼的壽命會比較短。并且vc的編譯器和API 太復雜,難于掌握。

同時,由于c具有現(xiàn)代語言的大量特征,現(xiàn)在常常代替pasical作為教學的編程語言。

實際上,如果不深入學習,c也是一種很簡單的語言。不學basic,直接學c完全沒有問題。

和其他語言相比,c有多種編譯器,多種操作系統(tǒng)API,多種語法和函數(shù)。學習的難度大,統(tǒng)一性差。

和java相比,c的語法不夠豐富、現(xiàn)代。

java:

相對c,java作為現(xiàn)代語言,具有非常豐富的語法特征,如模塊和類,不像c隨操作系統(tǒng)和編譯器的不同有極大差異,java是一個公司的產(chǎn)品 ,具有唯一的API,因此,java程序員沒有語言隔閡。

相對跨平臺的語言來說,java具有最好的圖形界面編程API。

java所有的API都是類庫,相對c的函數(shù)來說,是非常大的進步。java具有現(xiàn)代語言幾乎所有的特征。

perl:

perl的最大特點是有強大的字符串模式匹配,是最好的文本文件的讀取和生成語言。

perl具有很大的自由性,象英語一樣有很大的隨意性,

perl有一個強大的數(shù)據(jù)庫接口和其他各種接口。

perl有最大量的程序庫。

perl不適合編寫大程序。

perl有一個著名的缺點是難懂,也有一個著名的優(yōu)點是簡練。

php:

我感到php是個怪胎,本來perl加嵌入html的功能就完全能實現(xiàn)php的功能,還要另創(chuàng)一種語言,加重了大家的學習負擔。

php可以嵌入html,更容易編寫服務器端程序。

php天然和web服務器以及mysql數(shù)據(jù)庫相結合。

php可以動態(tài)生成圖像。

python:

首先,python是和basic一樣面向初學者的語言,和英語一樣容易懂。

python具有和java一樣的最豐富的語法。

python有和perl類似的簡單性,但沒有模式匹配。

python適合編寫大程序。

python有和lisp相似的地方,它有將字符串作為程序執(zhí)行的eval函數(shù),可以對一個對象的所有數(shù)據(jù)進行保存,可以把函數(shù)作為參數(shù)傳給另一 個函數(shù)。

python具有非常好的擴充性,python程序可以和c程序,以及java程序很好地結合。

tcl:

tcl具有最簡單的語法,最好的和其他程序交互的能力,有編寫圖形界面程序的tk。

javascript:

編寫動態(tài)網(wǎng)頁的最佳工具。

lisp:

lisp的語法非常簡單,只有簡單的函數(shù)和參數(shù)的語句結構。

lisp數(shù)據(jù)和程序的界限模糊。

lisp可以深度嵌套。

prolog

prolog是一種專門的語言。專門用來處理知識。

我感覺prolog是一種數(shù)據(jù)庫的處理工具。

也是根據(jù)一些知識衍生出更多知識的推理工具。

basic:

現(xiàn)在最著名的basic是vb,

basic是簡單的初級語言。

vb是快速的界面生成語言,是快速的數(shù)據(jù)庫程序開發(fā)語言。

vba是vb的應用版,嵌入在offic中。編寫offic上的程序很好用。

vbscript是vb的腳本語言,可以產(chǎn)生服務器端和客戶端的動態(tài)網(wǎng)頁。

basic的丑陋在于參數(shù)還是默認傳地址。太危險。

delphi:

和vb一樣是快速開發(fā)環(huán)境,但性能更好,功能更強大。

.net:

支持多種語言的統(tǒng)一的API類庫,

可以編寫webform程序,即所有的邏輯都在服務器端,傳到客戶端的是標準的html3.0,可以被各種瀏覽器支持。各程序組件間通過soap交換 消息。


2002-04-12新增內(nèi)容:

除了匯編語言外,c是最接近系統(tǒng)底層的語言,因此它是大部分程序的編程語言。c的缺點是沒有統(tǒng)一的函數(shù)庫,標準不統(tǒng)一,因此,同樣是c程 序員,相互看不懂代碼是很平常的事。


ada的出現(xiàn)就是為了解決統(tǒng)一標準的問題。有一個國際組織專門進行嚴格ada語言的認證來保證ada的統(tǒng)一。因此,ada編譯器有很多種,但ada語 言程序用任何ada編譯器編譯都能通過。同時,ada的執(zhí)行程序的效率和c比較接近。有人說比c要快,我想不可能,除非c用的庫有問題。ada比c 排錯能力更強,但c也有類似的功能。ada還有一個缺點,就是語言羅索,象cobol一樣非常難看。


java是對c的大大的改進。有統(tǒng)一的標準,豐富的庫,完全的面向對象。也繼承了c的一些特點,無所不包的全功能,深入系統(tǒng)底層的編程的靈 活性。但因為java學習了c的深入系統(tǒng)底層的特點,它的語言就嚴格、呆板、羅索。另外,java要跨平臺,它的速度就非常令人不滿意,只能局 限在高級應用方面。在速度上,可以選擇微軟的.net和蘋果的coco(可能拼寫有錯誤)。他們也同樣是底層的面向對象語言。


作為高級的應用程序,如果沒有保密要求,腳本語言是最合適的。腳本語言因為不用編譯,因此開發(fā)速度會比編譯語言快很多。

basic和perl都是古老的腳本語言。basic被微軟發(fā)揚光大了,但它的缺點是沒有完整的面向對象特性,因此編寫大型程序很困難。另外,微軟 的產(chǎn)品肯定是“腫件”。perl被特別設計來進行文本的處理,文本處理能力非常強,但不適合編寫大程序,語言風格也比較令人費解。

python定位于入門的編程語言,是basic的代替品,它具有和basic同樣的簡單性,并且編程語句更優(yōu)雅。python有比較完整的面向對象特性, 可以用來編寫大程序,因此有些大型的實用程序是python完成的,從加快開發(fā)速度的角度,可以代替c和java。python的另一個巨大的應用領域 是用來操作定制其他程序,這個能力basic也有,從這個角度說,python就是unix世界的basic。但python更進一步,和c的溝通能力非常好,任 何為c編寫的接口能夠很容易轉化為python的接口。和java的接口有專門的python的java版,就是jython,jython可以和java本身一樣使用各種 java資源。

ruby首先是smalltalk的替代品。有徹底的面向對象特性。另外,也努力作為perl、php、basic、python的替代品。

rebol是lisp的替代品,同時作為腳本語言的一員,有自己的獨特之處,他的網(wǎng)絡編程和圖形用戶界面編程是最強大的。

語言解析語言yacc、 html、xml、xlt、xul等也可以算作語言。


[edit]

各種語言的選擇

如果編寫對性能要求苛刻,或和操作系統(tǒng)結合緊密的程序,必然選擇c。

如果編寫到處可用的程序,選java。

如果編寫大程序,可能的化盡量用python,不行了再用java和c。因為python帶來了生產(chǎn)力。

編寫文本的處理程序用perl。

編寫知識的處理程序用prolog。

編寫最靈活,最模糊的程序用lisp。

編寫office程序用vba。

編寫服務器端程序,php、perl、python、asp都是選擇。

編寫數(shù)據(jù)庫程序用vb或delphi。


[edit]

各種語言的選擇

如果要追求性能和程序的能力,要完全發(fā)揮操作系統(tǒng)的能力,使用c語言是合適的。在windows環(huán)境下用vc,在linux環(huán)境下用gcc。

如果不是追求和操作系統(tǒng)完美結合,而只是性能,又要追求跨平臺性,那么仍然選擇c,但可以選擇跨平臺的庫,如qt、gtk、fox、wxwindows 。如果要編寫游戲也有跨平臺選擇:SDL。

如果不滿意c領域標準的不統(tǒng)一,不滿意c的容易出錯,不滿意c的面向對象特征不徹底。如果不在乎跨平臺,windows平臺可以選擇c#,mac平臺 可以選擇coco。如果需要跨平臺,可以選擇java。

如果需要跨平臺,又要廣泛的支持的話,選擇java。

如果不在乎商業(yè)機密,應用目標也不是太苛刻的話,編寫大型跨平臺程序還有一個選擇就是python或ruby。腳本語言,但是具有全面的庫的支 持,有和c語言的方便的交互能力。他們和java相比,編程效率更高。同時因為沒有編譯,程序更方便修改。因為他們的庫都是c實現(xiàn)的,也比 java有更高性能。同時,他們都是開源的,都是對商業(yè)應用友好的,也是簡單的、方便定制的。也是不滿意java的不可控制的越來越龐大的庫 的又一個選擇。

在linux下,最方便的工具語言是perl,它有強大的社區(qū)和代碼庫的支持。

如果只作為簡單應用的工具語言,python和ruby是更好的選擇,他們的跨平臺移植性好,應用也比較廣泛。其中python更適合入門和交流,長 期使用也不錯。ruby是對python不滿意的另一個選擇,它提供了很多額外的功能。

如果要選擇一個程序的嵌入語言,原來有l(wèi)isp、basic和java,現(xiàn)在還可以選擇python和ruby。

如果在要求動態(tài)解釋執(zhí)行語言,而又不想學其他語言的話,c程序員的選擇是pike,java程序員的選擇是beanshell。

在java平臺,又想用腳本語言的話,可以用jython。

最正統(tǒng)的基于文檔的語言或叫動態(tài)頁面語言是javascript。

最專門的服務器端語言是php,當然也有很多其他選擇。

xml語言以xul為最著名,dtml也算一個,你自己也可以用xml作為自己特殊用途的語言。比如jedit就用xml作為一種模式定制語言。xml語言是 一種比較先進的趨勢,比現(xiàn)有的語言在特殊領域更高效。

要找容易實現(xiàn)的語言,lisp和tcl是選擇。

lisp的數(shù)據(jù)和程序融為一體的能力和自由是其他語言都沒有的?,F(xiàn)在出現(xiàn)了一個lisp的現(xiàn)代化的變種:rebol。

如果有基于事實的編程的需要的話,prolog和clips是必然。


[edit]

我為什么選擇了python

首先聲明,我編程只編應用程序,就是代替自己工作的小程序。如果編寫系統(tǒng)程序總會用到c或java的。

我喜歡腳本語言,腳本語言不用編譯就可以運行,非常便于修改,而編程序是一種經(jīng)常性的活動,程序編完后總在不斷的修改中,沒必要搞的 很隆重,還要編譯。另外,腳本程序每個使用的人都可以隨手拿來修改,不會出現(xiàn)還要去找源代碼的情況。因此,c和java就被排除了。

我喜歡簡單的語言,不喜歡為了編寫簡單的程序而去學習大量復雜的規(guī)定,需要大量的學習才會的語言不是好語言,是把人當機器看。c和java 都有嚴格但羅索的語法,有永遠學不完的函數(shù)、類、庫。讓人看到就頭大。而perl有各種怪里怪氣的速記符號,程序常常讓人頭暈。簡單的含 義除了容易學,還要功能豐富,常用到的東西要早就準備好,不用每個人都去寫同樣的數(shù)據(jù)結構程序等。python有豐富的數(shù)據(jù)類型,有完備的 面向對象的結構,有規(guī)則表達式等各種方便編程的模塊。這個邏輯就是程序做的多,人做的就少,如果程序做的少,就要人做的多。這就是界 面友好的問題。容易上手,功能豐富是程序設計的很重要的目標,windows就是靠這個流行的。而python也很好的體現(xiàn)了這點。而perl象unix的 emac之類其它工具一樣,功能強大,但太難學,太難懂。是比較違背人性的。

關于性能。現(xiàn)在cpu已經(jīng)很強大了。除了很大的程序和系統(tǒng)程序,沒必要關心性能。

關于功能。如果不是編寫系統(tǒng)程序和貼近系統(tǒng)的程序,沒必要使用操作系統(tǒng)特別提供的功能。c是可以干任何事情,但它編程效率低,復雜。

至于我為什么不用vb,因為vb太龐大了。我沒必要實現(xiàn)一個小功能啟動這么龐大的程序。太夸張。另外,vb沒有類繼承,雖然是應用編程,但 如果要編稍微大的程序,總會用到類繼承的。

python得強大得擴展能力使對python得學習不會浪費。python經(jīng)過簡單得處理能使用各種得c和c++庫,也可以被c和c++調(diào)用。python可以直接 使用java得類,也可以直接被java調(diào)用。這樣,對python、java、c得學習和使用經(jīng)驗都不會被浪費,還能相互補充。python可以提高java和c 得編程效率,java和c可以補充python功能上得不足。python還可以和tcl直接交互,這種功能是內(nèi)置得。期待python能簡單的調(diào)用perl和php得 功能。能使用lisp和prolog更好。

[edit]

ruby 吸取了所有語言精華的語言 第二版

ruby 語言還是雜耍 ruby :O ruby 日本人的玩意

ruby有

* perl的正則表達式

* python的語言的簡單性可讀性、最容易的擴展能力,強大的可移植性。

* php的嵌入功能和多種客戶端

* smalltalk的純面向對象語法和單繼承

* lisp的無窮嵌套的語法,也就是函數(shù)式的語法。

* 用“塊”來實現(xiàn)更快捷的數(shù)據(jù)結構的處理。不知道是不是scheme的宏功能。用塊能更清楚的實現(xiàn)python的表處理功能。

* java和ada的線程編程

* java的安全編程

不得不承認ruby確實是個精彩的語言,它完全學會了lisp的所有編程都是函數(shù)的思想,smalltalk的所有東西都是對象的思想,perl的一個目的 多種手段的方法,python的簡單化的“最少驚喜”的原則,java的多線程和安全控制的功能,tcl的容易擴展的功能,php的嵌入功能和強大客 戶端的功能,最方便的shell命令的調(diào)用。


[edit]

ruby和python的比較

[edit]

python和ruby的相同點

* 都強調(diào)語法簡單,都具有更一般的表達方式。python是縮進,ruby是類basic的表達。都大量減少了符號。

* 都是動態(tài)數(shù)據(jù)類型。都是有豐富的數(shù)據(jù)結構。

* 都具有c語言擴展能力,都具有可移植性,比perl的可移植性更好。也都可以作為嵌入語言。

* 都是面向對象的語言,都可以作為大項目的開發(fā)工具。

* 都有豐富的庫支持。

* 也有最寬松的版權許可,除了一些工具屬于GNU世界。

* 都有l(wèi)isp特色的eval函數(shù),也都能把函數(shù)作為參數(shù)。

* 也有圖形界面的ruby的專門編輯器。

* 都獲得了廣泛的c庫的支持。如qt、gtk、tk、SDL、FOX等,ruby計劃實現(xiàn)SWIG接口。

* 都有完善的文檔。

[edit]

和python相比ruby的優(yōu)點

* 具有正則表達式和嵌入html的功能。python也有正則表達式,但沒有ruby的應用方便和廣泛。python的嵌入html項目才剛起步。ruby還有 apache的mod模塊。ruby本身也實現(xiàn)和很多unix工具,如racc,doctools。比python更親近linux。

* 比python功能更完整的面向對象的語法。

* ruby的整個庫都是具有類繼承的結構。

* 他的基本的數(shù)據(jù)類型和運算符都是可以重載的。

* ruby主要的功能都是通過對象的方法調(diào)用來實現(xiàn)的,而不是函數(shù)。python也在向這方面發(fā)展,但沒有ruby做的徹底。

* ruby的類是更規(guī)范的單繼承,還有接口等概念的實現(xiàn)。

* python可以實現(xiàn)在列表內(nèi)的條件語句、循環(huán)語句,而ruby用“塊”的方式來實現(xiàn)這個功能,比python的更靈活,更具有通用性。

* ruby具有類似lisp的徹底的函數(shù)方式的條件語句、循環(huán)語句等。語句的表達能力更強。

* 附帶一些unix工具,如racc等。

[edit]

和python相比ruby的不足

* 最大的不足正是因為ruby的強大所引起的。它沒有python的簡單性好。比較復雜的面向對象語法、“塊”語法的引入、正則表達式的引入、 一些簡寫標記都增加了語言的復雜性。

* python的縮進表達方式比ruby的basic的表達方式更讓人悅目,ruby程序的滿眼的end讓人不舒服。當然,ruby認為end的方式比python更先 進。

* ruby還沒有python的“自省”的能力,沒有從程序文件中生成文檔的能力。

* ruby沒有國際化的支持。國際化支持在ruby的計劃中。這是因為ruby的歷史比python要短造成的。

* ruby沒有類似jython的東西。

[edit]

python和ruby的語言的選擇

從簡單的就是好的來說,選python是沒錯的。python適合尋找簡單語言的人,這很可能造成python更流行,因此也有更多的支持。但如果要追 求更強大的語法功能,則ruby是好的選擇。因為ruby和python的哲學有很多相似的地方,先從python入手,盡量用python,如果python的能力 不足了,可以在找ruby。

ruby和python的比較,就像五筆和拼音輸入法的比較。拼音作為入門的輸入法和長久使用的輸入法都沒有問題。五筆適合更高要求的情況。如 果追求性能的不妨學學ruby。對編程語言感興趣,想了解各種編程概念的學ruby也會很興奮。


[edit]

php有什么好處

我一直認為php是一個垃圾,因為它只是實現(xiàn)了腳本語言得嵌入,卻單獨實現(xiàn)一種語言、實現(xiàn)大量得函數(shù)庫,浪費了大量得開發(fā)人員得寶貴時間 來重復其他腳本已經(jīng)實現(xiàn)了得功能,也浪費了php開發(fā)人員得大量學習時間,還要單獨學一種只能存在于web服務器得語言,浪費了perl、 python得已有得使用經(jīng)驗。相似得還有pike,一種c得腳本語言,沒什么新東西,還不如仍然用c編譯器。

但我最近看書才了解php得獨特得開發(fā)目標。

php為什么不直接用perl作腳本語言。是因為perl是一種unix語言,帶有unix傳統(tǒng)得字符神秘高深,讓人難于學習。而編動態(tài)網(wǎng)頁得人不見得會 用perl這種unix工具,他們可能只有html知識。php就簡化了perl得語言,變成了一種簡單友好得語言,免去了人們學習perl得困難。

php為什么不選python作腳本。因為python是一種面向對象得語言,大量得功能都要涉及面向對象概念,而web應用只是簡單得實現(xiàn)客戶機邏輯 和顯示功能。沒必要涉及面向對象得復雜概念。函數(shù)是最簡單,最容易理解得,因此,php傾向于所有得功能都用函數(shù)來解決,而不是用對象來 解決。這有點象c和c++之爭。應該承認,函數(shù)在實現(xiàn)簡單功能得時候是最有利得工具,它得語句量最少。

php定位于以html為用戶界面,充當各種服務器得客戶端,實現(xiàn)得是傳統(tǒng)得客戶端編程得任務。它有pop、smtp、ftp、多種數(shù)據(jù)庫等各種服務器 得客戶端得函數(shù),也有圖片、pdf生成,xml處理等這種必要得功能。這些都是其他腳本比不上php得地方。

我?guī)缀鯖]用過php,說得不對,請指教。


[edit]

ada語言草述

ada語言我看了他的介紹。

ada語言和c一樣是一種編譯語言,他們最后編譯出的執(zhí)行文件的機器碼都很小。因此現(xiàn)在眾多的語言只有c很ada能比較。

和c相比,ada的特點是可靠、可移植。

他的可靠是通過比其他語言都強大的類型,每種類型還都可以象數(shù)據(jù)庫字段一樣進行強類型、范圍的檢查。以此來保證在編譯中就發(fā)現(xiàn)錯誤。

它有強大的標準化組織,嚴格認證ada編譯器的標準。有多線程能力。

適于編寫實時程序。

但和c相比太復雜、羅嗦,因此注定不能流行。


[edit]

多腳本語言的大統(tǒng)一及疑問

現(xiàn)在各種腳本語言太多了,有必要進行整合,parrot是一個好的想法。.net也是好的想法。它為各種腳本提供了一個統(tǒng)一的虛機,為各種腳本 語言提供了基于“類”的相互調(diào)用,為各種腳本提供了統(tǒng)一的類庫。

現(xiàn)在各種腳本語言只是提供了對c語言的交互性,這種交互也是費勁的和效果不好的。比如python、perl、ruby等都提供了對c的交互功能。腳 本語言之間的交流障礙重重。而類似.net的東西,提供了非常容易的各種腳本的相互利用的途徑,避免了很多的代碼的重復編寫。這種標準平 臺的力量是很大的,這種標準平臺為什么沒有在開源領域首先出現(xiàn)呢?眾多的腳本正是開源的特點和優(yōu)勢,為什么這種問題要微軟來解決呢? 前面有人提出了類似的問題,在linux中為什么至今沒有好用的類似ODBC的東西呢?

可能這種整合只有商業(yè)公司有能力實現(xiàn)吧。

我的理解是,如果有創(chuàng)新思想的人都拿他的想法去賣錢了,因此,在開源中只剩下了模仿的人。kde是模仿windows,koffice是模仿office, linux是模仿unix,gcc、bash等也全都是模仿,以及gstep等,還有freedos、atheos等也是模仿,wxwindows、SDL也是模仿。我想知道開源社 區(qū)有沒有自己的創(chuàng)新?我所知道的創(chuàng)新是zope,但zope最初也是商業(yè)產(chǎn)品,后來才開源的。perl是創(chuàng)新,python是創(chuàng)新,但還有什么呢?是不 是開源領域只有hack,沒有creator?


[edit]

.net介紹

.net所實現(xiàn)的java的功能

可控代碼 跨平臺的虛機和偽碼免費贈送命令行編譯器 純面向對象語言 對xml和xml web services的支持 和jsp對應的asp.net 網(wǎng)頁上的程序 一套統(tǒng)一的中間件環(huán)境。

asp.net跟jsp不是同一個層次上的web技術, asp.net使用完善的事件響應機制,WinForms類似的 WebForm技術,只有JSF跟Asp.net有可比性。

.net未實現(xiàn)的java功能

免費的集成開發(fā)環(huán)境 多廠家支持,跨平臺的成熟度

免費的IDE, #develop , ASP.net的有MS的WebMatrix 而免費開源的CLR實現(xiàn),有MS自己的XP,F(xiàn)reeBSD,MacOS下的實現(xiàn)(原理演示不能進行商 業(yè)應用), Novell下的Mono項目,已經(jīng)發(fā)布了Beta1版本,在2004-6-30 將會發(fā)布Release1; 還有GNU的一個.net實現(xiàn)!!

[edit]

.net實現(xiàn)的java不具備的功能

多語言支持 強大的集成開發(fā)環(huán)境。在windows上媲美本機程序的速度。 對COM的支持,對vs的繼承 對widows form 、web form、服務器端程序 的圖形直觀編程。

[edit]

相對vs6的改進

統(tǒng)一了集成開發(fā)環(huán)境,使c++程序也具有了vb的友好性。


[edit]

xml各種技術介紹

xml:

xml是統(tǒng)一格式的結構化數(shù)據(jù)的文本文件。

基于xml的程序,數(shù)據(jù)結構是開放的,方便不同程序處理同一種文件,這樣,程序之間可以達到高水平的協(xié)作。

xml現(xiàn)在成為了各行各業(yè)統(tǒng)一數(shù)據(jù)格式的基礎。

xml發(fā)展出了完善的語法,它用DTD或scheme來界定xml的標記語言。用uri來唯一確定一個xml格式。用css或XLT來轉換xml格式,xlink和 xpointer等來建立xml的鏈接,用xpath來定位xml中的數(shù)據(jù)。

xhtml:

是嚴格符合xml格式的html。

RDF:

基于xml的元數(shù)據(jù)描述語言。方便交換結構化數(shù)據(jù)。方便交換知識。

RDF是用主語、謂語、賓語來描述知識的。

SVG:

xml格式的矢量圖形格式。

SMILE:

xml格式的各種多媒體在時間線上的協(xié)同。

xmath:

xml格式的公式描述語言。

xml-rpc和soap:

以http協(xié)議和xml格式來進行網(wǎng)絡程序之間的消息通訊。

xul:

netscape的mazilla使用的程序界面語言,基于xml格式,比html強大的多的描述圖形界面的xml語言。它用css來換膚,用DTD來實現(xiàn)多語言界 面,用javascript來實現(xiàn)程序邏輯,以此編寫跨平臺的可方便定制界面的程序,現(xiàn)在這個程序API功能已經(jīng)很強大了,整個mazilla程序就是基 于xul的。

xaml:

MS在LongHorn平臺的最新編程語言,將統(tǒng)一Windows與Web編程,直接使用

LongHorn下的瀏覽器進行執(zhí)行, 跟XUL有類比性

[edit]

最先進的xml格式圖形界面程序開發(fā)工具-xul

大家知道netscape程序,一個僅次于ie得瀏覽器,也有很多人知道m(xù)ozilla,netscape得開放源代碼版本。但很多人只是使用mozilla,不知道 mozilla另一個重要得功能--程序開發(fā)。在netscape開放源代碼后三年mozilla得1。0版還沒有問世,很多人譏笑他的超慢得開發(fā)速度,實際 上,mozilla醞釀出了一個超酷得新產(chǎn)品,可以看作是軟件開發(fā)工具發(fā)展得另一個里程碑。

現(xiàn)在基于瀏覽器得三層開發(fā)結構非常流行,微軟得.net得思路就是基于這個結構得。另外,不考慮服務器結構,就是基于網(wǎng)頁得javascript小 程序也對人很有吸引力,這些產(chǎn)品得思路都是以html為用戶界面,但開發(fā)人員常??鄲烙趆tml太簡陋。而mazilla得xul解決了這個問題。

xul是對html得擴展,完全兼容于html,xul基于xml格式對html進行了擴展,實現(xiàn)了完整、強大得圖形用戶界面設計功能??梢栽O計出復雜得圖 形界面程序。實際上mazilla整個就是由xul設計得。xul用css來控制界面風格、用DTD來替代字符串,方便的實現(xiàn)本地化,用javascript來對用 戶界面的操作作出反應,提供基本的邏輯編程,javascript通過對象文檔接口DOM來動態(tài)控制用戶界面。同時javascript通過調(diào)用mozilla提供 的豐富的底層API來實現(xiàn)強大的功能。mozilla提供了功能強大的API可以進行文件操作、網(wǎng)絡操作、圖形操作等各種操作,并且這種API是完全 跨平臺的。最后,mozilla用RDF格式來存儲獨立于界面的數(shù)據(jù)。

總結:xul由于兼容html,提供了最強大的用戶界面的定制,DTD提供了最方便的本地化。xul、javascript、RDF提供了顯示、邏輯、數(shù)據(jù)的分 離。mozilla的底層API提供了跨平臺的強大編程能力。

希望大家都來關心mozilla。

[edit]

最接近人類語言的編程語言-rebol

rebol的詳細資料見www.。這里談一下我得印象。

rebol的缺點是明顯的。它是一個商業(yè)公司的產(chǎn)品。它只是象java一樣免費使用。但不開放源代碼。并且它的數(shù)據(jù)庫連接的函數(shù)庫是收費的。但 它的優(yōu)點也十分明顯,如果因為不是開放源代碼軟件而不能放心使用,也可以欣賞和借鑒它的種種特點,并且了解了rebol肯定還會忍不住使用 它。

首先rebol是一個lisp語言的替代品,它能實現(xiàn)lisp的所有能力。他具有l(wèi)isp語言的數(shù)據(jù)和程序同等處理的特點,也有語句和表達式的統(tǒng)一。但 大大打破了lisp的局限。它允許中綴運算符的形式,沒有滿眼的括號,和一般編程語言的表達方法完全一樣。同時具有豐富的庫,有完全的圖 形界面庫,完全的網(wǎng)絡庫。因為是一個公司的產(chǎn)品,也保證了庫的統(tǒng)一。

rebol自稱為網(wǎng)絡編程語言,它的網(wǎng)絡編程能力很強,一般一個語句就可以下載一個文件,或下載一個網(wǎng)頁,或接受一個郵件。

rebol一個神奇的特點是它的圖形界面設計,它的界面編程非常簡單,完全不用語句和函數(shù),而是和html一樣只要表達核心內(nèi)容就行了。這得益 于rebol的“方言”能力。

rebol內(nèi)置了“方言”能力。就是象yacc一樣的語言解析能力??梢噪S時擴展“子語言”。

rebol內(nèi)置了幾十種數(shù)據(jù)類型,用它編程,語句肯定是最精煉的。

rebol可以實現(xiàn)java一樣的網(wǎng)絡下載程序運行的能力,也有砂箱功能。它比java更進一步,有自己的桌面,在桌面上可以任意啟動各個rebol程 序,它的桌面象html一樣有豐富的表達形式和超鏈接。鏈接到有rebol功能的網(wǎng)站上就可以象瀏覽網(wǎng)頁一樣使用各種程序。由于rebol語言比 java要簡練的多,同時是不用編譯的腳本語言,它的程序文件非常小,更適合網(wǎng)絡傳輸。因為rebol有這樣神奇的功能,它自稱internet操作系 統(tǒng)。因為rebol是腳本語言,因此它天然是跨平臺的。它有很多操作系統(tǒng)的實現(xiàn)。

還有一個特點,rebol語言自身只是一個幾百k的可執(zhí)行文件,因此rebol程序的發(fā)布是非常簡單的。

[edit]

一個小巧強大的腳本語言lua

第一眼看到lua的介紹,感覺它象tcl的替代品,因為它的主要目的是作為腳本語言。但接下來就看到它不是象tcl那樣是命令行式的函數(shù)語言, 它和其它語言一樣有語句結構。它實現(xiàn)和c程序互動的方式和python類似,具有和python一樣的和c結合的能力。并且lua全部是用ansi c實現(xiàn)的 ,可以實現(xiàn)完全的跨平臺。

然后,看到lua的一個顯著的特點就是具有對象數(shù)據(jù)庫功能,可以實現(xiàn)變量的永恒存儲。這個特點讓人首先聯(lián)想到fish,fish的最重要的特點也 是語言內(nèi)含一個對象數(shù)據(jù)庫,不過fish有outline的可視界面,和數(shù)據(jù)庫瀏覽能力。但fish不是開源的,因此,如果需要一個非內(nèi)存的變量存儲 空間可以選擇lua。這種對象數(shù)據(jù)庫都是不但能存儲數(shù)據(jù),也能存儲操作數(shù)據(jù)的函數(shù)。實際python也具有一個將整個內(nèi)存存儲在一個磁盤文件的 功能,另外,還有zope的zodb可以實現(xiàn)專業(yè)的永恒變量功能。另外,scheme天然具有永恒存儲能力,它只要把表變量輸出到一個文件中就可以 了。因為scheme是不分數(shù)據(jù)和程序的,因此可以實現(xiàn)將程序和數(shù)據(jù)同樣存儲在文件中。

lua和python相比規(guī)模比較小,因為它是和c緊密結合的,可以完全使用各種c庫,就不需要有自己的庫。lua給人的印象是小規(guī)模的python。lua 也是動態(tài)數(shù)據(jù)類型,也有內(nèi)存管理功能。只是python自帶強大的庫,而lua只攜帶一個小型的庫,具有字符串和數(shù)學計算能力,同時lua標準攜 帶一個對象數(shù)據(jù)庫。另外,可以把c庫隨時編譯到lua中。lua引以自豪的是它的速度很快。

lua的語法比較簡單,它把數(shù)組、字典、結構等復雜的數(shù)據(jù)結構都統(tǒng)一為表。另外,lua具有正則表達式功能。

[edit]

最具有現(xiàn)代感的lisp解釋器drscheme

lisp是一個古老的計算機編程語言,給人的印象是速度慢,輸入輸出能力弱,沒有圖形界面,自身攜帶的庫太少,很多功能不能實現(xiàn)。這一切 在drscheme手中改變了。

drscheme具有大量的現(xiàn)代語言具有的功能,比如作為嵌入腳本的能力,圖形界面的編程能力,面向對象的能力,組件編程能力,正則表達式能 力,xml能力,作為web服務器和客戶端來輸入輸出能力及其它網(wǎng)絡能力,產(chǎn)生獨立可執(zhí)行文件的能力。一個集成的編輯調(diào)試環(huán)境。不過它的程 序執(zhí)行速度還是稍慢。

當然,它具有所有scheme的優(yōu)點,語法的宏定義能力,命名空間能力,數(shù)據(jù)和程序不分的能力,堆棧式內(nèi)存管理,無窮嵌套,用“表”來表現(xiàn) 所有語句和數(shù)據(jù)的簡單方式,也天然帶有程序環(huán)境的永恒存在能力。這些特點好像正在最新出現(xiàn)的編程語言中出現(xiàn)。好像目前的編程語言的發(fā) 展趨勢是從c語言的方式向具有更多l(xiāng)isp特點的方向發(fā)展。就像windows逐漸具有了越來越多的unix早已實現(xiàn)的功能。

才知道lisp的編程環(huán)境已經(jīng)這么好了。


eiffel語言印象

印象深的是它是全開發(fā)周期的語言,并且是在開發(fā)周期可回溯的。它的contract和ada類似。eiffel是和c++類似的編譯的面向對象語言,不過 更簡單,能夠多繼承。eiffel是c語言的面向對象編程的代替物。

[edit]

mozart oz語言

oz介紹它是面向對象的、能夠邏輯編程的、并發(fā)分布的語言。我對oz印象最深的是它的多線程能力。一個簡單的case語句,就可以啟動多個線 程。另外,它也是一個prolog的代替物,可以編寫分布并發(fā)的人工智能程序。

[edit]

一般是使用什么軟件,就用什么軟件的語言

就拿我用的軟件舉例:

使用excel,就用vba編程。

使用autocad就用autolisp編程

使用zope就用python編程

如果使用gimp就用python或scheme編程

使用gnome office就用python或basic編程

使用blender就用python編程

[edit]

然后看處理什么樣類型的數(shù)據(jù)

如果處理文件的操作就用shell語言。比如bash

如果處理文本文件,就用perl或awk,如果喜歡perl的風格,又象編大程序,就要用ruby

如果處理數(shù)據(jù)庫,簡單的用sed。否則用sql。

如果是對象數(shù)據(jù)庫,可以使用python+ZODB、或lua、fish

如果一般的數(shù)據(jù)庫不能滿足要求,需要做專家系統(tǒng),就用prolog

如果處理結構化文本,如xml,就用xslt。

處理html,客戶端用javascript,服務器端用php

如果處理類似語言分析的文本,就用yacc

如果處理出來的結果是打印文檔或屏幕文檔,就用tex

如果是圖像、動畫或其它二進制的文件,一般用c語言。

如果處理的問題和操作系統(tǒng)底層打交道,用c語言


[edit]

從語言特點來說

如果極端要求運行中的多線程的并發(fā)和分布,可以考慮oz語言。

如果極端重視文檔,希望把程序的文檔寫出來了,程序也幾乎就完成了,那么用cweb

復雜的程序,在編寫之前需要做uml的文檔。

如果要編寫規(guī)模較大的程序或打算只學一種編程語言,就要用python

如果編寫程序來處理復雜的數(shù)據(jù)結構和算法,就用lisp和scheme (喜歡lisp的風格,并希望更簡單,用rebol)

如果想最簡單的實現(xiàn)一個語言來作為嵌入語言,就用tcl,如果tcl有局限,就用lua


[edit]

c語言是最普及的語言,但c語言有一些缺點,因此,就產(chǎn)生了很多改進c的語言

因為c不能編寫大程序,就產(chǎn)生了c++

因為c++還有指針等缺點,就產(chǎn)生了java

如果不喜歡c++的各種缺點,又想使用一個編譯型語言,就選擇eiffel

c語言的一個缺點是標準庫規(guī)模小,不能解決所有的問題,就產(chǎn)生了大量不兼容的庫,導致了很多不可移植的程序。如果想要一個和c用樣級別 的可移植的編程語言,就選擇ada。ada的圖形用戶界面庫和各種和操作系統(tǒng)相關的庫都是標準化的,可以選擇不同賣家的解決方案。是軍隊要 求的標準編程語言。

如果不喜歡c語言的繁瑣,希望常做的事編程能夠簡單,那么可以用python。完成同樣的工作,python代碼行數(shù)是c的幾分之一。

c風格的腳本化語言是javascript,pike


[edit]

關于圖形用戶界面的選擇

最簡單的圖形界面接口是tk,可以在各種平臺上可用

如果有更高的要求使用gtk。gtk移植性差些。

一個以移植性為目標的開源c庫是wxwindow

如果希望簡單的編程,要求不很高,可以用xul

跨平臺的圖形用戶結構是java的awt和swing。如果不跨平臺,還有ibm的java解決方案。

如果對商業(yè)編程語言不排斥,可以用qt,因為qt的程序,如果商業(yè)使用是要付費的。

如果要編寫全屏的文本界面程序,emacs是最權威的。我們可以回憶,turbo c的編程環(huán)境和圖形用戶界面一樣友好。它就是全屏的文本用戶界 面。

如果編寫office家族類似的程序,在open office上也是可以考慮的選擇。gtk也可以。

>如果處理結構化文本,如xml,就用xslt。 xml本身也算吧. >處理html,客戶端用javascript,服務器端用php php不是唯一. >如果處理出來 的結果是打印文檔或屏幕文檔,就用tex 超強. >如果是圖像、動畫或其它二進制的文件,一般用c語言。 >如果處理的問題和操作系統(tǒng)底層打 交道,用c語言我會在c/c++里面選c++ >如果極端要求運行中的多線程的并發(fā)和分布,可以考慮oz語>>言。 20年以后的語言. >如果編寫程序來 處理復雜的數(shù)據(jù)結構和算法,就用lisp和>scheme Lisp也是讓人喜歡.

>如果要編寫全屏的文本界面程序,emacs是最權威的。我們>>可以回憶,turbo c的編程環(huán)境和圖形用戶界面一樣友好。它>就是全屏的文本用 戶界面。哈,Emacs.

也許,語言是用來超越的.許多應用就需要不同語言混合. 把Python嵌到應用程序中,我覺得很誘人.

====再補充說一下web服務器編程====

在商業(yè)開發(fā)中流行的是java和.net,其實zope也是選擇之一,zope的特點就是全部開源,層次少,簡單。并且集成一個內(nèi)容管理器和眾多的附 加產(chǎn)品。附加產(chǎn)品多是開源軟件必然的優(yōu)勢。zope之前的一些缺點在zope3中將得到解決。另外,zope的組件架構和cmf開發(fā)架構,并不必java 的組件開發(fā)環(huán)境差多少(我沒接觸很多java,只是評感覺說,其他人可以有不同意見)。

php雖然看起來不適合大程序開發(fā),但在php平臺上已經(jīng)有了很多大規(guī)模的程序,比如puke。tiki。

另外,web服務器已經(jīng)被很多程序缺省支持,用很多語言都能編寫出獨立的web服務器程序。

文學編程和CWEB介紹

CWEB是tex的作者創(chuàng)立的一種編程語言。tex是主流的文檔打印標準和文檔生成工具。tex及相關的metafont就是用cweb編寫的軟件,同時tex體 現(xiàn)了cweb的編程特點。CWEB的編程思想叫“文學編程”。實際應該叫“文章編程”,因為和文學關系不大,反而和學術著作類似。主要思想就 是:編程應該象寫學術著作那樣,有整體構思,以部、章、節(jié)、子節(jié)、子子節(jié)那樣逐級豐富。這實際和我們說的“自頂向下”的編程方法類似 。但“自頂向下”只是一種軟件工程的方式,它是以編寫文檔的方式實現(xiàn)的,沒有和編程語言結合起來。CWEB用我的說法是用編程語言實現(xiàn)了 “自頂向下”。

CWEB的實現(xiàn)方式是“宏替換”,就是逐級用更具體的內(nèi)容來代替較概括較簡略的內(nèi)容。我們使用的編程工具“maker”實際就是一種宏替換工具 (我沒用過maker,只是聽說)。zope的TAL語言是一種替換工具,但不是宏替換工具,因為它的內(nèi)容不是可執(zhí)行的,如果內(nèi)容是可執(zhí)行的,那 么它也可以叫宏替換。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多