接觸 Python 是兩年前的事了。那時(shí)因?yàn)橐獙憘€(gè)程式來(lái)分析數(shù)值資料,開(kāi)始的時(shí)候打算用自己最熟的 PHP,試了幾下,很不順手。后來(lái)轉(zhuǎn)用了 Perl,開(kāi)始的時(shí)候都挺順利的。直至有一天整理程式,想把寫好的幾個(gè)東西整理成一個(gè)工具箱給自己用,試了半天就放棄了:根本是精神虐待。反省后覺(jué)得自己學(xué) Perl 只會(huì)走捷徑,打算上網(wǎng)找些基本的學(xué)習(xí)文件從頭努力,但竟然找到了 Python 的網(wǎng)頁(yè)。就這樣開(kāi)始了學(xué) Python,而且是欲罷不能。現(xiàn)在我要寫什么,基本上都是先考慮用 Python,一來(lái)實(shí)在好用,二來(lái)用 Python 寫的程式總會(huì)有重用的機(jī)會(huì),所以手頭的工具越來(lái)越多,用起來(lái)就更得心應(yīng)手了。

          如果你以前只會(huì)用 Shell Script 或是 DOS Batch File 而想學(xué)些其他的東西,Python 會(huì)是你的首選,如果你己經(jīng)會(huì) Perl 或是 Tcl 或是別的什么,那 Python 會(huì)令你改變對(duì) scripting language 的想法。

          為什么要學(xué) Python?

          答:好玩。就是這樣簡(jiǎn)單。無(wú)論是學(xué) Python 還是用 Python,都是一件賞心樂(lè)事。當(dāng)你寫 shell scripts 寫得鬼哭神號(hào)時(shí),當(dāng)你改 perl scripts 改得頭昏腦漲時(shí),有沒(méi)有想過(guò)寫 script 其實(shí)是很好玩的一件事。你可能從來(lái)不相信當(dāng)你寫一套嚴(yán)肅而功能強(qiáng)大的程式,你可以用一個(gè)如此好玩的程式語(yǔ)言來(lái)開(kāi)發(fā)。更難令你相信的是,就算在程式開(kāi)發(fā)的后期,甚至是幾個(gè)月以后當(dāng)你再次想修改它的時(shí)候,你依然都會(huì)覺(jué)得是一件好玩的事。

          Python 能做什么?

          答:倒不如問(wèn),Python 不能做什么? Python 已經(jīng)差不多把一個(gè) scripting language 作為整合工具 (gluing tool) 的強(qiáng)大功能完全發(fā)揮了出來(lái),任何程式,只要有個(gè)給 Python 用的接口,Python 就可以把它據(jù)為己用,和其他的程式一塊使用。而且

            · Python 有發(fā)展 XML 的大型函式庫(kù),并開(kāi)始有大型系統(tǒng)的構(gòu)建初型。 · 用 Python 寫的 Zope,可以用來(lái)架設(shè)整個(gè)網(wǎng)站 · Python 語(yǔ)言自己是用 C 來(lái)寫的,但現(xiàn)已有用純 Java 寫的 Python 語(yǔ)言實(shí)現(xiàn),近期更有用微軟 .NET 方式實(shí)現(xiàn)的 Python 翻譯器,由此證明了 Python 語(yǔ)言定義的高度完整。 · Python 已移植到許多的操作平臺(tái)上,包括 Linux、Windows、HP、Solaris、Irix、AIX、BeOS、甚至是 Cray。幾乎和 Perl 一樣多。 ·由于 Python 本身是 object oriented,所以很容易和 C++,Java 等整合,尤其在 Visual 當(dāng)?shù)赖?Windows 系統(tǒng)。這點(diǎn)要比 Perl 好許多。

          和其他語(yǔ)言的比較

          一般的說(shuō)法的這樣的:

          • Shell script 太舊了,無(wú)論如何不能用來(lái)寫程式。
          • Perl 擅長(zhǎng)做服務(wù)器的管理,因?yàn)樗淖执幚砉δ芴貏e強(qiáng)大,同時(shí)有全面的編程接口和操作系統(tǒng)相連。自己用沒(méi)問(wèn)題,就是不懂人家在寫什么。
          • PHP 擅長(zhǎng)于網(wǎng)頁(yè),因?yàn)樗梢郧度朐?HTML 文件中并支援各類資料庫(kù)。但一離開(kāi)網(wǎng)頁(yè)就左支右絀。
          • Python 特別適合一般的需求,因?yàn)樗Z(yǔ)法簡(jiǎn)明,容易維護(hù),有很多模組可用,而且容易做出圖形介面。但它并不是 object oriented 并不純,速度也較 Perl 慢一些。
          • Tcl/Tk 基本變數(shù)形態(tài)只有文字串,每次算術(shù)都是從文字變數(shù)字再變文字,鳴,沒(méi)什么好提的了吧。
          • Java 太偉大了,我可不想每次開(kāi)始寫程式時(shí)都幻想要完成一個(gè)跨企業(yè)的解決方案,引入幾十個(gè)標(biāo)頭檔,寫完了才明白原來(lái)我只需它讀一個(gè)用戶指定的文件,畫兩條直線就行了。唉,落差太大。
          • Ruby 太新了,要正式應(yīng)用是將來(lái)的事。

          但事實(shí)上我個(gè)人的感受最深的是它比較好玩的說(shuō)法。雖然像是不認(rèn)真,但一種可以讓人寓編程于娛樂(lè)的程式語(yǔ)言,正是程式語(yǔ)言的設(shè)計(jì)終極嘛。

          Python 的作者是數(shù)學(xué)家,而 Perl 的作者則是個(gè)天才程式員。因此這兩種語(yǔ)言的風(fēng)格回異:Python 語(yǔ)法鋪排的很整潔,相同功能的程式由不同人寫出來(lái)的樣子都很像,這些一致的、前后呼應(yīng)的程式對(duì)于系統(tǒng)的拓展和整合十分重要。因此閱讀 Python 的程式感覺(jué)上很暢順。Perl 的語(yǔ)法則很濃縮,而且經(jīng)常會(huì)有些意想不到的巧思,可惜這些每每體現(xiàn)在字里行間的妙著對(duì)整個(gè)程式的可讀性帶來(lái)負(fù)面影響。因而一個(gè)短小的 Perl 程式往往令人愛(ài)不釋手,但當(dāng)它越來(lái)越長(zhǎng)時(shí)總會(huì)變成程式員的永痛。

          至于PHP,因它的發(fā)展歷史一直是圍繞著 web page,所以做網(wǎng)頁(yè)設(shè)計(jì)是十分方便的,但是寫一般的工作則平平無(wú)奇。比如說(shuō)控制執(zhí)行緒,處理進(jìn)程間的訊息傳送以致做圖形用戶介面等都久奉,這是因?yàn)閺?WEB 的角度,這些并不重要:圖形介面,HTML 就己經(jīng)是了,而程式的執(zhí)行和互相合作則是 Web Server 要考慮的事。

          我推薦 Python 是因?yàn)槲矣X(jué)得它比較適合用作一般性程式編寫和系統(tǒng)整合,尤其是在科學(xué)和教育領(lǐng)域中。我并不是說(shuō)大家沒(méi)本事學(xué)好 Perl,只是很多時(shí)候我們并不需要用到 Perl 的精妙之處,更多的時(shí)候用一個(gè)清楚直接的描述要比用一個(gè)智力題級(jí)的招數(shù)更有好處。除了語(yǔ)法的設(shè)計(jì)較為整潔外,Python 還有很好的對(duì)電腦圖形的支援,也有十分快的數(shù)學(xué)陣列模組。

          而它最方便的地方是很容易的把其他的程式整合在一起,譬如說(shuō)你有個(gè)幾年前寫的 C 程式,只要修改很小的一部份就可以編譯成 Python 可用的模組。事實(shí)上已經(jīng)有自動(dòng)幫你做這些修改的程式了,人們也己為許多各種好用的函式庫(kù)做出了 Python binding,如 OpenGL、GTK、QT、GD、甚至于解方程組的、找頻譜的都有。

          而在使用了一段時(shí)間后,我開(kāi)始體會(huì)下面的說(shuō)法:

            ‘Python 是設(shè)計(jì)出來(lái)的,而 PHP 和 Perl 是累積而來(lái)的。’

          雖然它們各自都有類似的功能,但在使用時(shí)會(huì)發(fā)現(xiàn) Python 的寫法總是較為一致,這是因?yàn)?Python 從一開(kāi)始便考慮了它整個(gè)的架構(gòu)。相反,像 Perl 或 PHP 則有很多功能都是后來(lái)慢慢加上去的,所以到后期 Perl 的發(fā)展越來(lái)越難,以致 Perl 6 幾乎要從頭設(shè)計(jì)。而 PHP 則現(xiàn)在才開(kāi)始頭痛于構(gòu)思新的函數(shù)名稱 (所有的 PHP 函數(shù)都是全域定義的,所以每加一個(gè)函數(shù)都有可能和已經(jīng)定義了的名字重復(fù))。為了解決問(wèn)題,它們各自都開(kāi)始注意加強(qiáng) class, object 的支援。但很明顯的是,在程式成熟后再加這些基本功能會(huì)令整個(gè)語(yǔ)言的框架變得頭重腳輕,無(wú)論是寫起來(lái)還是用起來(lái)都有些不穩(wěn)的感覺(jué)。

          然而 Python 在一開(kāi)始的時(shí)候就把這些考慮了進(jìn)去:Python 根本就是以物件導(dǎo)向作為設(shè)計(jì)的基礎(chǔ)。因此在加了許許多多的功能和模組后,它的風(fēng)采仍舊,清新依然。

          好話說(shuō)了不少,光說(shuō)不練可是不行。參考程式示范區(qū)的實(shí)際例子,看看 Python 到底是怎樣一回事。

          主站蜘蛛池模板: 泾阳县| 阳原县| 阳春市| 建水县| 澎湖县| 浙江省| 沧源| 湘西| 炉霍县| 治县。| 普陀区| 扎兰屯市| 石城县| 文安县| 桂东县| 任丘市| 罗甸县| 秦皇岛市| 阿克陶县| 胶南市| 志丹县| 巴林右旗| 潜江市| 洛浦县| 四平市| 平阳县| 枝江市| 柳江县| 罗平县| 洱源县| 博白县| 哈巴河县| 石林| 龙里县| 阳山县| 嘉兴市| 安西县| 绥江县| 洞头县| 澜沧| 咸宁市|