| 20年后,我們用什么樣的語(yǔ)言?也許現在誰(shuí)都不好回答,20年前的程序員們會(huì )告訴你用匯編吧,今天人們也許會(huì )告訴你用c語(yǔ)言(c++?)吧。那么20年后呢,也許不是c語(yǔ)言了吧。下面都是所謂的非主流語(yǔ)言,不過(guò)它們的設計思想、所能夠完成的功能,絕對不比c語(yǔ)言差。也許將來(lái)它們會(huì )成為主流,也許不會(huì ),可是不管怎樣,它們都有自己的閃光之處。 --->你要么站在電腦的硬件上編程,要么站在巨人的肩膀上編程,請選擇吧。 PROLOG人工智能領(lǐng)域常用的語(yǔ)言,開(kāi)發(fā)自然語(yǔ)言分析,專(zhuān)家系統,以及所有和智能有關(guān)的程序,都非常拿手??梢缘轿业闹黜?yè)來(lái)學(xué)習這門(mén)語(yǔ)言 http://cdtzx.go.163.com/ Visual Prolog http://www.visual-prolog.com/ 顧名思義,這是一個(gè)可以制作界面的Prolog,有試用版本下載,大概20M左右。這個(gè)prolog版本需要對謂詞以及數據進(jìn)行聲明,就像C語(yǔ)言一樣。因此在使用的時(shí)候比較復雜,不過(guò)更加適合編制較大的程序。編譯出來(lái)的程序可以直接運行。 Amzi! Prolog http://www.amzi.com/ 這個(gè)prolog版本包含解釋器、編譯器,不過(guò)編譯出來(lái)的程序不能夠直接運行,需要運行器運行??梢院芊奖愕暮推渌Z(yǔ)言(例如visual basic,java,C,CGI)連接,開(kāi)發(fā)智能程序。解釋器的運行效率較低。它所說(shuō)使用的語(yǔ)法體系和visual prolog不同,程序需要進(jìn)行適當的修改才能夠在visual prolog中運行。 SWI Prolog http://www.swi-prolog.org/ 我沒(méi)有怎么使用過(guò)這個(gè)版本的prolog解釋器,不過(guò)它的運行速度要比amzi prolog的解釋器快,和amzi的編譯之后的程序差不多快,如果下載圖形軟件包XPCE的話(huà),還可以開(kāi)發(fā)有界面的程序。它的語(yǔ)法和amzi prolog相同,程序可以通用,不過(guò)內部謂詞有些不同,有時(shí)候需要修改一下。 Turbo Prolog 如果需要可以給我發(fā)郵件 Dos版本的prolog,有開(kāi)發(fā)界面,可以編譯成可執行文件,語(yǔ)法和visual-prolog相同,不過(guò)內部謂詞有許多出入。 B Prolog www.cad.mse.kyutech.ac.jp/people/zhou/index.html 好像是中國人開(kāi)發(fā)的prolog軟件,據說(shuō)比其它的prolog運算速度都要快,我曾經(jīng)在linux下面使用過(guò)這個(gè)prolog,也有window版的,不過(guò)沒(méi)有什么集成開(kāi)發(fā)環(huán)境。語(yǔ)法和其它的幾個(gè)都不太相同,需要適當的修改程序才能夠在此環(huán)境下運行。此prolog提供了許多測試速度的解謎題的程序,這個(gè)版本的prolog支持constraint程序設計。 Strawberry Prolog http://www.dobrev.com/ 1兆的容量,包括完整的開(kāi)發(fā)界面,幫助,例程,提供了幾個(gè)棋類(lèi)游戲的源程序??梢灾苯娱_(kāi)發(fā)有界面的prolog程序,共享版不能夠編譯,就解釋執行吧。 Sicstus Prolog http://www.sics.se/sicstus/ Sicstus Prolog無(wú)疑是Prolog版本中最出色的,雖然它并不是免費軟件,但是可以下載到有時(shí)間限制的試用版本,而且只要修改時(shí)間也可以無(wú)限期的使用下去(過(guò)期之后修改時(shí)間也不會(huì )有問(wèn)題)。它語(yǔ)法與amzi prolog類(lèi)似,都屬于ISO標準,內部胃詞豐富,提供了豐富的庫,例如集合、圖、帶權圖等等。支持unix和windows等各種操作系統平臺。支持constraint程序設計。 LISP人工智能語(yǔ)言的老大哥。語(yǔ)言格式只有一個(gè)形式:列表,所以也叫做表處理語(yǔ)言,這可不是一般的表,是可以包容任意結構的表,有了它,你還用c語(yǔ)言來(lái)寫(xiě)鏈表,二叉樹(shù)的程序么?學(xué)習數據結構不妨使用lisp,讓你更加關(guān)心算法,而不是數據如何在計算機內部表達。 XEmacs http://www.xemacs.org/ 與著(zhù)名的guns emacs編輯器的起名,并且界面更加友善,內帶emacs lisp, 和許多使用lisp編寫(xiě)的工具軟件,例如calc, 是一個(gè)功能強大的計算器,支持符號運算,有全部的源程序,如果能夠好好研究這些源程序,收獲一定不小。 common lisp http://www.franz.com/ windows下的common lisp集成開(kāi)發(fā)環(huán)境, 60天試用。 Lisp Work common lisp http://www.xanalys.com/ 無(wú)限期使用,沒(méi)有任何功能限制 SCHEME 這是lisp的一種方言,比lisp更加標準化。 MIT Scheme http://mitpress.mit.edu/sicp/ 這里有一本非常好的介紹編程技術(shù)的書(shū),使用的語(yǔ)言是lisp/scheme。在這里還可以下載到Scheme的解釋器,基本上是模仿emacs作的。 DrScheme http://www.drscheme.org/ DrScheme是一個(gè)Scheme語(yǔ)言的交互式的集成開(kāi)發(fā)環(huán)境。非常適合于教學(xué)使用。支持多種語(yǔ)言級別(初級、中級、高級等等),有豐富的界面庫,支持TCP/IP。內帶詳細的幫助和教程。 FUNCTION LANGUAGE這是一類(lèi)語(yǔ)言,叫做函數型程序設計語(yǔ)言。是一種非常高級的語(yǔ)言。一種基于λ演算和在70年代后期才發(fā)展起來(lái)的新語(yǔ)言類(lèi)型。大多數程序設計語(yǔ)言明顯地規定要執行操作的次序。次序的詳細規定是很需要的,因為語(yǔ)言的語(yǔ)句對程序的變量有“作用”,如果改變這些作用的次序,就可以改變產(chǎn)生的最后值。但是函數型語(yǔ)言卻沒(méi)有這種性質(zhì)。在這個(gè)意義上,函數型語(yǔ)言能建立可計算性的數學(xué)公式模型。讓我們來(lái)看一個(gè)簡(jiǎn)單的例子: qsort :: [a] -> [a] | Ord a qsort [] = [] qsort [a:xs] = qsort [x \\ x<-xs | x<a] ++ [a] ++ qsort [x \\ x<-xs | x>=a] 這段程序就是快速排序的代碼,你看有多么簡(jiǎn)潔,并且它的這個(gè)qsort可以對任何類(lèi)型的數據進(jìn)行排序(只要這種數據可以比較大?。?。想讀懂上面的程序么?那么下載下面的clean, 或者haskell,好好研究吧,祝你有新的發(fā)現。 Clean http://www.cs.kun.nl/~clean/ 并行的函數型語(yǔ)言,可以把源程序編譯成exe文件,帶有豐富的庫,從tcp/ip, 到界面設計,到游戲開(kāi)發(fā),無(wú)一不全。 Haskell http://www.haskell.org/hugs/ hugs是haskell的免費編譯器,語(yǔ)法和clean相似,不過(guò)是解釋執行,因此易于學(xué)習。 O‘Caml http://www.ocaml.org/ 又一個(gè)函數型語(yǔ)言,速度很快,編譯出來(lái)的程序速度和用C做出來(lái)的差不多快。 Mozart OZ http://www.mozart-oz.org/ mozart oz 是具有魔力的語(yǔ)言。它融合了目前幾種流行的程序設計思想,我們叫它多范式語(yǔ)言。它是面向對象的語(yǔ)言,它是函數型的語(yǔ)言,它是約束邏輯(constraint)的語(yǔ)言,它是并發(fā)式的語(yǔ)言,它還是分布式的語(yǔ)言,幾句話(huà)很難概括它的功能。最好去它的網(wǎng)站看看吧,下載一個(gè)慢慢研究? 他使用emacs作為開(kāi)發(fā)界面,因此如果你想在windows下使用本語(yǔ)言,首先需要安裝emacs for windows(也可以在mozart的網(wǎng)上找到,也可以去www.gnus.org去找,也可以安裝xemacs), 如果你安裝了emacs 那么你也就同時(shí)獲得了emacs lisp, 呵呵,收獲不小。 為了提起您的興趣,請思考如下的問(wèn)題如何編程解決,然后你可以在mozart中找到驚人簡(jiǎn)單的解決方案。 15個(gè)人每天出去玩,每天分為5組,每組3人,玩一個(gè)星期,使得任何兩個(gè)人都曾經(jīng)在一組中玩過(guò),你如何安排? J software http://www.jsoftware.com/ 不要和java搞混淆了。J是一種面向陣列的語(yǔ)言,也就是說(shuō)矢量,矩陣,以及高次數組都是它的最基本的數據類(lèi)型,J中引入了大批量的運算符,以及獨特的算式分析方法,大幅度的擴展了數學(xué)算式的表達能力。 例如如果你要算從1加到100, 用c怎么做? J的程序是:+/i.100 對,就這么短,一個(gè)表達式解決了問(wèn)題,事實(shí)上,使用表達式編寫(xiě)出來(lái)的程序異常簡(jiǎn)潔,雖然初看上去很難讀懂,一旦掌握了J語(yǔ)言,你就會(huì )發(fā)現,原來(lái)你可以用只有c語(yǔ)言1/20的字符表達同樣的功能。 FORTH http://cdtzx.51.net/pimage/www.jsoftware.com forth是一種可擴展的,交互式的語(yǔ)言。最初為小型的嵌入式電腦設計的,現在它幾乎可以在任何主流的芯片上運行。 在電子表格,專(zhuān)家系統, 多用戶(hù)數據庫,和分布式實(shí)時(shí)控制系統中有廣泛的應用。 表面來(lái)看,forth是一種基于堆棧的概念機。例如如果要計算 (3+4)*5 ,我們的程序就是:3 4 + 5 * . 首先把3和4入堆棧,然后調用+子程序,+把堆棧的最頂上兩個(gè)元素取出(也就是3和4)進(jìn)行加法運算,然后把結果入堆棧,然后把5入堆棧,然后調用*子程序,把最頂的2個(gè)元素,也就是7和5取出,并進(jìn)行乘法運算,然后把結果入堆棧,最后的.把結果從堆棧中取出。 事實(shí)上這是一種簡(jiǎn)單有效的概念機。當然forth遠遠不止這些,它有什么樣的功能,就由你去發(fā)掘了。 LOGO 被稱(chēng)為最佳的啟蒙語(yǔ)言,事實(shí)上它的功能遠遠不止啟蒙這么簡(jiǎn)單。一切別的語(yǔ)言能夠完成的它也能夠完成,只是更加簡(jiǎn)潔一些,通常logo是使用lisp編寫(xiě)的,我們就可以想象它的高度靈活性了。 MSW Logo http://www.softronix.com/ 這個(gè)網(wǎng)站還有個(gè)邏輯數字電路模擬的軟件,很有意思,再也不用為什么觸發(fā)器 門(mén)電路之類(lèi)的發(fā)愁了。 Star Logo http://www.media.mit.edu/starlogo starlogo的網(wǎng)站如是說(shuō): StarLogo是一個(gè)可以編程的建模環(huán)境,用來(lái)研究分散系統的運行機制。所謂分散系統是指:沒(méi)有組織者而組織,沒(méi)有協(xié)調者而協(xié)調的系統。使用StarLogo你可以對許多現實(shí)世界中的現象進(jìn)行建模并且觀(guān)察研究,例如鳥(niǎo)群、交通、螞蟻以及市場(chǎng)經(jīng)濟。 StarLogo是一種特殊的Logo語(yǔ)言,和傳統的Logo語(yǔ)言一樣,你可以通過(guò)向海龜發(fā)命令來(lái)作圖。除此之外,Starlogo容許你并行的控制上千個(gè)海龜,并且為這些海龜設定不同的行為模式。StarLogo非常適合于研究人工生命。 PYTHONhttp://www.python.org/ python是一種解釋型、交互式、面向對象的語(yǔ)言,我們經(jīng)常拿它來(lái)和Tcl Perl Scheme Java來(lái)比較。它有非常清晰的語(yǔ)法,有模塊,有類(lèi),異常處理,高級的動(dòng)態(tài)數據結構。它比perl更加易學(xué),功能更加強大。python采用動(dòng)態(tài)數據結構,也就是說(shuō)變量沒(méi)有數據類(lèi)型,這一點(diǎn)和Lisp十分相似,在python中所有事物都是對象(object),字符串、函數以至于類(lèi)和模塊。這種面向對象的概念和smalltalk很相似。并且自帶了豐產(chǎn)豐富的模塊庫。對于初學(xué)者,python很適合于學(xué)習編程思想,而不會(huì )讓讀者為了繁雜的語(yǔ)法而頭痛。對于高級用戶(hù),python是最出色的腳本語(yǔ)言,它可以很容易的內嵌某個(gè)軟件中,作為那個(gè)軟件的擴充,例如著(zhù)名的3D設計軟件blender就可以使用內嵌的python腳本語(yǔ)言來(lái)設計復雜動(dòng)畫(huà)。 SMALLTALK可是面向對象的程序設計語(yǔ)言的鼻祖阿,并且正在蓬勃的發(fā)展,沒(méi)有過(guò)時(shí)。它是純面向對象的語(yǔ)言,就連整數也是對象。開(kāi)放環(huán)境也非常集成,如果感興趣可以到一下網(wǎng)站下載,絕對有耳目一新的感覺(jué)。舉個(gè)例子, 循環(huán)語(yǔ)句在smalltalk中是向一個(gè)整數對象發(fā)送消息: 10 timesRepeat: [ teresa moveRight: 10 ]. 其中timesRepeat:為消息名稱(chēng),10為接受消息的整數對象, [ teresa moveRight: 10 ].是消息的參數, 這又是smalltalk強大的地方,它可以把一段程序作為參數傳遞給某個(gè)對象?。?! Squeak Smalltalk http://www.squeak.org/ 這是一個(gè)非常有趣的smalltalk版本,看上去就像在你的電腦上模擬了另外一套完成的窗口系統,這里面的窗口更加利害,你甚至可以旋轉它,不看不知道,看了才發(fā)現還有這么奇妙的語(yǔ)言,這么奇妙的開(kāi)發(fā)環(huán)境。10M左右 Cincom Smalltalk http://www.cincom.com/scripts/smalltalk.dll/home.ssp 這個(gè)版本比較實(shí)用,有詳細的幫助,可以開(kāi)發(fā)真正的windows程序。30M左右 Dolphin Smalltalk http://www.object-arts.com/ 這里提供的免費smalltalk版本只有3M不到,如果你想先嘗試一下這種語(yǔ)言的話(huà),可以下載這個(gè)。 PROGRAPHhttp://192.219.29.95/ Prograph可能是全球唯一的純可視化語(yǔ)言。在這里程序用圖表表示,編程序就是繪制圖表。我沒(méi)有看出這么做的優(yōu)勢在那里,不過(guò)對于初學(xué)編程的人的確有很大幫助,而且嘗試新東西總是好的,也許這也是一個(gè)發(fā)展方向吧。 到上面的網(wǎng)站可以下載一個(gè)免費版本,可以解釋運行,但是不能夠編譯。大小約為27M。 ICON這個(gè)語(yǔ)言和圖標沒(méi)有什么關(guān)系,不要誤解了。這是一種很神奇的語(yǔ)言,雖然目前已經(jīng)有幾年沒(méi)有更新版本了,不過(guò)我覺(jué)得它的許多思想都是很先進(jìn)的。 http://www.cs.arizona.edu/icon/ 在語(yǔ)法形式上與c,pascal很相似,但是功能卻更加強大,以下是它的一些特點(diǎn): Icon的表達式可以產(chǎn)生一系列的值,而不是一個(gè)值。 面向目標的求值方式,可以自動(dòng)的搜索正確的解答(這一點(diǎn)和prolog很像) 強大的字符串處理功能 當然,至于鏈表、集合、甚至詞典(dictionary,也可以叫做hash表)都是它的基本數據類(lèi)型。內存也是自動(dòng)管理的,無(wú)需擔心內存泄漏或者溢出等瑣碎的問(wèn)題。 他特別適合于文本分析、文本編輯、數據格式化、人工智能、專(zhuān)家系統、符號運算的方面的編程。 下面給幾個(gè)簡(jiǎn)單的例子: every f(i to j) ---Icon for(k=i;k<=j;k++) f(k); ---C every write(find("or",sentence)) ---輸出sentence中所有子字符串or的位置 BASICBasic版本到網(wǎng)絡(luò )上一搜索一大堆,這里介紹的是一種最適合于編游戲的Basic。 http://www.blitzbasic.com/ 有demo下載,2D,3D的都有,不能夠編譯成exe,但是可以解釋執行,3D版本限制使用次數,如果需要破解,可給我發(fā)郵件。 這個(gè)basic專(zhuān)門(mén)針對游戲開(kāi)發(fā)而設計,想快速開(kāi)發(fā)游戲的懶人們趕快去下載一個(gè)吧。:) 2D的主要功能有: 高速繪制塊、圖像、圓、線(xiàn)條等圖形圖像 支持流行的圖像格式:bmp,jpg,png 雙緩沖繪制流暢的動(dòng)畫(huà) 碰撞檢測,精確到點(diǎn) 游戲可以在windows中運行,也可以全屏運行 高速! C & C++最后我們還是回到c語(yǔ)言,畢竟這是目前最流行的語(yǔ)言,如果你不想用盜版,不想安裝100多兆的垃圾(大多數初學(xué)者不可能完全使用borland c++ builder 或者visual c++的全部功能,而只是用來(lái)學(xué)習c語(yǔ)言本身),也不想在dos的edit樣子的面孔下,使用Tc編程序,那么try下面的東東吧。3M的大小絕對值的下載。 LCC http://www.cs.virginia.edu/~lcc-win32/index.html Dev-C++ 如果想下載C++的編譯器,去http://www.bloodshed.net/devcpp.html看看,這個(gè)集成開(kāi)發(fā)環(huán)境使用Delphi編寫(xiě),C++編譯器是Mingw編譯系統。 Tiny CC [Zoomq 補充,剛剛看到的信息!] GNU/Linux 系統上最小的 C 語(yǔ)言編譯器 Tiny C 編譯器。Tiny C 編譯器不 僅僅是一個(gè)常規意義上的 C 語(yǔ)言編譯器,它還使得用戶(hù)可以像使用腳本語(yǔ)言一樣使用 C 語(yǔ)言進(jìn)行快捷的腳本編程。 http://www-900.ibm.com/developerWorks/cn/linux/l-tinyc/part1/index.shtml [ZhouTing補充] UnderC 這個(gè)是C++的解釋執行環(huán)境,有Windows和Linux的版本。并且帶源碼。 http://home.mweb.co.za/sd/sdonovan/underc.html |
| Submitted by Lcx on 2005, November 30, 1:06 AM |
聯(lián)系客服