*增加scheme,icon等語言
*增加幾個logo、basic、c++和Prograph等語言的編譯器,修改了一些語言的說明。
*點擊查看相應的介面
本文將介紹10多種不同的程式設計語言,以及如何下載它們的免費的編譯器,(注意,是免費,而不是盜版),如果下載或者安裝有問題,可以給我發郵件:
ruoyu0088@sohu.com
20年後,我們用什麼樣的語言?也許現在誰都不好回答,20年前的程式員們會告訴你用彙編吧,今天人們也許會告訴你用c語言(c++?)吧。那麼20年後呢,也許不是c語言了吧。下面都是所謂的非主流語言,不過它們的設計思想、所能夠完成的功能,絕對不比c語言差。也許將來它們會成為主流,也許不會,可是不管怎樣,它們都有自己的閃光之處。
--->你要麼站在電腦的硬體上編程,要麼站在巨人的肩膀上編程,請選擇吧。
人工智慧領域常用的語言,開發自然語言分析,專家系統,以及所有和智能有關的程式,都非常拿手。可以到我的首頁來學習這門語言 http://web.archive.org/web/20030205031354/http://cdtzx.go.163.com/
http://web.archive.org/web/20030205031354/http://www.visual-prolog.com/
顧名思義,這是一個可以製作介面的Prolog,有試用版本下載,大概20M左右。這個prolog版本需要對謂詞以及資料進行聲明,就像C語言一樣。因此在使用的時候比較複雜,不過更加適合編製較大的程式。編譯出來的程式可以直接運行。
http://web.archive.org/web/20030205031354/http://www.amzi.com/
這個prolog版本包含解譯器、編譯器,不過編譯出來的程式不能夠直接運行,需要運行器運行。可以很方便的和其它語言(例如visual basic,java,C,CGI)串連,開發智能程式。解譯器的運行效率較低。它所說使用的文法體系和visual prolog不同,程式需要進行適當的修改才能夠在visual prolog中運行。
http://web.archive.org/web/20030205031354/http://www.swi-prolog.org/
我沒有怎麼使用過這個版本的prolog解譯器,不過它的運行速度要比amzi prolog的解譯器快,和amzi的編譯之後的程式差不多快,如果下載圖形軟體包XPCE的話,還可以開發有介面的程式。它的文法和amzi prolog相同,程式可以通用,不過內部謂詞有些不同,有時候需要修改一下。
如果需要可以給我發郵件
Dos版本的prolog,有開發介面,可以編譯成可執行檔,文法和visual-prolog相同,不過內部謂詞有許多出入。
http://web.archive.org/web/20030205031354/http://www.cad.mse.kyutech.ac.jp/people/zhou/index.html
好像是中國人開發的prolog軟體,據說比其它的prolog運算速度都要快,我曾經在linux下面使用過這個prolog,也有window版的,不過沒有什麼整合式開發環境。文法和其它的幾個都不太相同,需要適當的修改程式才能夠在此環境下運行。此prolog提供了許多測試速度的解謎題的程式,這個版本的prolog支援constraint程式設計。
http://web.archive.org/web/20030205031354/http://www.dobrev.com/
1兆的容量,包括完整的開發介面,協助,常式,提供了幾個棋類遊戲的來源程式。可以直接開發有介面的prolog程式,共用版不能夠編譯,就解釋執行吧。
http://web.archive.org/web/20030205031354/http://www.sics.se/sicstus/
Sicstus Prolog無疑是Prolog版本中最出色的,雖然它並不是免費軟體,但是可以下載到有時間限制的試用版本,而且只要修改時間也可以無限期的使用下去(到期之後修改時間也不會有問題)。它文法與amzi prolog類似,都屬於ISO標準,內部胃詞豐富,提供了豐富的庫,例如集合、圖、帶權圖等等。支援unix和windows等各種作業系統平台。支援constraint程式設計。
人工智慧語言的老大哥。語言格式只有一個形式:列表,所以也叫做表處理語言,這可不是一般的表,是可以包容任意結構的表,有了它,你還用c語言來寫鏈表,二叉樹的程式嗎?學習資料結構不妨使用lisp,讓你更加關心演算法,而不是資料如何在電腦內部表達。
http://web.archive.org/web/20030205031354/http://www.xemacs.org/
與著名的guns emacs編輯器的起名,並且介面更加友善,內帶emacs lisp, 和許多使用lisp編寫的工具軟體,例如calc, 是一個功能強大的計算機,支援符號運算,有全部的來源程式,如果能夠好好研究這些來源程式,收穫一定不小。
common lisp
http://web.archive.org/web/20030205031354/http://www.franz.com/
windows下的common lisp整合式開發環境, 60天試用。
common lisp
http://www.xanalys.com/
無限期使用,沒有任何功能限制
這是lisp的一種方言,比lisp更加標準化。
http://web.archive.org/web/20030205031354/http://mitpress.mit.edu/sicp/
這裡有一本非常好的介紹編程技術的書,使用的語言是lisp/scheme。在這裡還可以下載到Scheme的解譯器,基本上是模仿emacs作的。
http://web.archive.org/web/20030205031354/http://www.drscheme.org/
DrScheme是一個Scheme語言的互動整合式開發環境。非常適合於教學使用。支援多種語言層級(初級、中級、進階等等),有豐富的介面庫,支援TCP/IP。內帶詳細的協助和教程。
這是一類語言,叫做函數型程式設計語言。是一種非常進階的語言。一種基於λ演算和在70年代後期才發展起來的新語言類型。大多數程式設計語言明顯地規定要執行操作的次序。次序的詳細規定是很需要的,因為語言的語句對程式的變數有“作用”,如果改變這些作用的次序,就可以改變產生的最後值。但是函數型語言卻沒有這種性質。在這個意義上,函數型語言能建立可計算性的數學公式模型。讓我們來看一個簡單的例子:
qsort :: [a] -> [a] | Ord a
qsort [] = []
qsort [a:xs] = qsort [x \\ x<-xs | x<a] ++ [a] ++ qsort [x \\ x<-xs | x>=a]
這段程式就是快速排序的代碼,你看有多麼簡潔,並且它的這個qsort可以對任何類型的資料進行排序(只要這種資料可以比較大小)。想讀懂上面的程式嗎?那麼下載下面的clean, 或者haskell,好好研究吧,祝你有新的發現。
http://web.archive.org/web/20030205031354/http://www.cs.kun.nl/~clean/
並行的函數型語言,可以把來源程式編譯成exe檔案,帶有豐富的庫,從tcp/ip, 到介面設計,到遊戲開發,無一不全。
http://web.archive.org/web/20030205031354/http://www.haskell.org/hugs/
hugs是haskell的免費編譯器,文法和clean相似,不過是解釋執行,因此易於學習。
http://web.archive.org/web/20030205031354/http://www.ocaml.org/
又一個函數型語言,速度很快,編譯出來的程式速度和用C做出來的差不多快。
http://web.archive.org/web/20030205031354/http://www.mozart-oz.org/
mozart oz 是具有魔力的語言。它融合了目前幾種流行的程式設計思想,我們叫它多範式語言。它是物件導向的語言,它是函數型的語言,它是約束邏輯(constraint)的語言,它是並髮式的語言,它還是分布式的語言,幾句話很難概括它的功能。最好去它的網站看看吧,下載一個慢慢研究?
他使用emacs作為開發介面,因此如果你想在windows下使用本語言,首先需要安裝emacs for windows(也可以在mozart的網上找到,也可以去www.gnus.org去找,也可以安裝xemacs), 如果你安裝了emacs 那麼你也就同時獲得了emacs lisp, 呵呵,收穫不小。
為了提起您的興趣,請思考如下的問題如何編程解決,然後你可以在mozart中找到驚人簡單的解決方案。
15個人每天出去玩,每天分為5組,每組3人,玩一個星期,使得任何兩個人都曾經在一組中玩過,你如何安排?
http://web.archive.org/web/20030205031354/http://www.jsoftware.com/
不要和java搞混淆了。J是一種面向陣列的語言,也就是說向量,矩陣,以及高次數組都是它的最基本的資料類型,J中引入了大批量的運算子,以及獨特的算式分析方法,大幅度的擴充了數學算式的表達能力。 例如如果你要算從1加到100, 用c怎麼做? J的程式是:+/i.100 對,就這麼短,一個運算式解決了問題,事實上,使用運算式編寫出來的程式異常簡潔,雖然初看上去很難讀懂,一旦掌握了J語言,你就會發現,原來你可以用只有c語言1/20的字元表達同樣的功能。
http://web.archive.org/web/20030205031354/http://cdtzx.51.net/pimage/www.jsoftware.com
forth是一種可擴充的,互動語言。最初為小型的嵌入式電腦設計的,現在它幾乎可以在任何主流的晶片上運行。 在試算表,專家系統, 多使用者資料庫,和分布式即時控制系統中有廣泛的應用。
表面來看,forth是一種基於堆棧的概念機。例如如果要計算 (3+4)*5 ,我們的程式就是:3 4 + 5 * . 首先把3和4入堆棧,然後調用+子程式,+把堆棧的最頂上兩個元素取出(也就是3和4)進行加法運算,然後把結果入堆棧,然後把5入堆棧,然後調用*子程式,把最頂的2個元素,也就是7和5取出,並進行乘法運算,然後把結果入堆棧,最後的.把結果從堆棧中取出。 事實上這是一種簡單有效概念機。當然forth遠遠不止這些,它有什麼樣的功能,就由你去發掘了。
被稱為最佳的啟蒙語言,事實上它的功能遠遠不止啟蒙這麼簡單。一切別的語言能夠完成的它也能夠完成,只是更加簡潔一些,通常logo是使用lisp編寫的,我們就可以想象它的高度靈活性了。
http://web.archive.org/web/20030205031354/http://www.softronix.com/
這個網站還有個邏輯數字電路類比的軟體,很有意思,再也不用為什麼觸發器 門電路之類的發愁了。
http://web.archive.org/web/20030205031354/http://www.media.mit.edu/starlogo
starlogo的網站如是說:
StarLogo是一個可以編程的建模環境,用來研究分散系統的運行機制。所謂分散系統是指:沒有召集人而組織,沒有協調者而協調的系統。使用StarLogo你可以對許多現實世界中的現象進行建模並且觀察研究,例如鳥群、交通、螞蟻以及市場經濟。
StarLogo是一種特殊的Logo語言,和傳統的Logo語言一樣,你可以通過向海龜發命令來作圖。除此之外,Starlogo容許你並行的控制上千個海龜,並且為這些海龜設定不同的行為模式。StarLogo非常適合於研究人工生命。
http://web.archive.org/web/20030205031354/http://www.python.org/
python是一種解釋型、互動式、物件導向的語言,我們經常拿它來和Tcl Perl Scheme Java來比較。它有非常清晰的文法,有模組,有類,異常處理,進階的動態資料結構。它比perl更加易學,功能更加強大。python採用動態資料結構,也就是說變數沒有資料類型,這一點和Lisp十分相似,在python中所有事物都是對象(object),字串、函數以至於類和模組。這種物件導向的概念和smalltalk很相似。並且內建了豐產豐富的模組庫。對於初學者,python很適合於學習編程思想,而不會讓讀者為了繁雜的文法而頭痛。對於進階使用者,python是最出色的指令碼語言,它可以很容易的內嵌某個軟體中,作為那個軟體的擴充,例如著名的3D設計軟體blender就可以使用內嵌的python指令碼語言來設計複雜動畫。
可是物件導向的程式設計語言的鼻祖阿,並且正在蓬勃的發展,沒有過時。它是純物件導向的語言,就連整數也是對象。開放環境也非常整合,如果感興趣可以到一下網站下載,絕對有耳目一新的感覺。舉個例子,迴圈語句在smalltalk中是向一個整數對象發送訊息:10 timesRepeat: [ teresa moveRight: 10 ].其中timesRepeat:為訊息名稱,10為接受訊息的整數對象,[ teresa moveRight: 10 ].是訊息的參數,這又是smalltalk強大的地方,它可以把一段程式作為參數傳遞給某個對象!!!
http://web.archive.org/web/20030205031354/http://www.squeak.org/
這是一個非常有趣的smalltalk版本,看上去就像在你的電腦上類比了另外一套完成的視窗系統,這裡面的視窗更加利害,你甚至可以旋轉它,不看不知道,看了才發現還有這麼奇妙的語言,這麼奇妙的開發環境。10M左右
http://web.archive.org/web/20030205031354/http://www.cincom.com/scripts/smalltalk.dll/home.ssp
這個版本比較實用,有詳細的協助,可以開發真正的windows程式。30M左右
http://web.archive.org/web/20030205031354/http://www.object-arts.com/
這裡提供的免費smalltalk版本只有3M不到,如果你想先嘗試一下這種語言的話,可以下載這個。
http://web.archive.org/web/20030205031354/http://192.219.29.95/
Prograph可能是全球唯一的純可視化語言。在這裡程式用圖表表示,編程式就是繪製圖表。我沒有看出這麼做的優勢在那裡,不過對於初學編程的人的確有很大協助,而且嘗試新東西總是好的,也許這也是一個發展方向吧。
到上面的網站可以下載一個免費版本,可以解釋運行,但是不能夠編譯。大小約為27M。
這個語言和表徵圖沒有什麼關係,不要誤解了。這是一種很神奇的語言,雖然目前已經有幾年沒有更新版本了,不過我覺得它的許多思想都是很先進的。
http://web.archive.org/web/20030205031354/http://www.cs.arizona.edu/icon/
在文法形式上與c,pascal很相似,但是功能卻更加強大,以下是它的一些特點:
Icon的運算式可以產生一系列的值,而不是一個值。
面向目標的求值方式,可以自動的搜尋正確的解答(這一點和prolog很像)
強大的字串處理功能
當然,至於鏈表、集合、甚至詞典(dictionary,也可以叫做hash表)都是它的基礎資料型別 (Elementary Data Type)。記憶體也是自動管理的,無需擔心記憶體流失或者溢出等瑣碎的問題。
他特別適合於文本分析、文本編輯、資料格式化、人工智慧、專家系統、符號運算的方面的編程。
下面給幾個簡單的例子:
every f(i to j) ---Icon
for(k=i;k<=j;k++) f(k); ---C
every write(find("or",sentence)) ---輸出sentence中所有子字串or的位置
Basic版本到網路上一搜尋一大堆,這裡介紹的是一種最適合於編遊戲的Basic。
http://web.archive.org/web/20030205031354/http://www.blitzbasic.com/
有demo下載,2D,3D的都有,不能夠編譯成exe,但是可以解釋執行,3D版本限制使用次數,如果需要破解,可給我發郵件。
這個basic專門針對遊戲開發而設計,想快速開發遊戲的懶人們趕快去下載一個吧。:)
2D的主要功能有:
高速繪製塊、映像、圓、線條等圖形映像
支援流行的映像格式:bmp,jpg,png
雙緩衝繪製流暢的動畫
碰撞檢測,精確到點
遊戲可以在windows中運行,也可以全屏運行
高速!
最後我們還是回到c語言,畢竟這是目前最流行的語言,如果你不想用盜版,不想安裝100多兆的垃圾(大多數初學者不可能完全使用borland c++ builder 或者visual c++的全部功能,而只是用來學習c語言本身),也不想在dos的edit樣子的面孔下,使用Tc編程式,那麼try下面的東東吧。3M的大小絕對值的下載。
http://web.archive.org/web/20030205031354/http://www.cs.virginia.edu/~lcc-win32/index.html
如果想下載C++的編譯器,去http://web.archive.org/web/20030205031354/http://www.bloodshed.net/devcpp.html看看,這個整合式開發環境使用Delphi編寫,C++編譯器是Mingw編譯系統。