接觸 Python 是兩年前的事了。那時(shí)因?yàn)橐獙憘€(gè)程式來分析數(shù)值資料,開始的時(shí)候打算用自己最熟的 PHP,試了幾下,很不順手。后來轉(zhuǎn)用了 Perl,開始的時(shí)候都挺順利的。直至有一天整理程式,想把寫好的幾個(gè)東西整理成一個(gè)工具箱給自己用,試了半天就放棄了:根本是精神虐待。反省后覺得自己學(xué) Perl 只會(huì)走捷徑,打算上網(wǎng)找些基本的學(xué)習(xí)文件從頭努力,但竟然找到了 Python 的網(wǎng)頁。就這樣開始了學(xué) Python,而且是欲罷不能。現(xiàn)在我要寫什么,基本上都是先考慮用 Python,一來實(shí)在好用,二來用 Python 寫的程式總會(huì)有重用的機(jī)會(huì),所以手頭的工具越來越多,用起來就更得心應(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)單。無論是學(xué) Python 還是用 Python,都是一件賞心樂事。當(dāng)你寫 shell scripts 寫得鬼哭神號(hào)時(shí),當(dāng)你改 perl scripts 改得頭昏腦漲時(shí),有沒有想過寫 script 其實(shí)是很好玩的一件事。你可能從來不相信當(dāng)你寫一套嚴(yán)肅而功能強(qiáng)大的程式,你可以用一個(gè)如此好玩的程式語言來開發(fā)。更難令你相信的是,就算在程式開發(fā)的后期,甚至是幾個(gè)月以后當(dāng)你再次想修改它的時(shí)候,你依然都會(huì)覺得是一件好玩的事。

          Python 能做什么?

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

            · Python 有發(fā)展 XML 的大型函式庫,并開始有大型系統(tǒng)的構(gòu)建初型。 · 用 Python 寫的 Zope,可以用來架設(shè)整個(gè)網(wǎng)站 · Python 語言自己是用 C 來寫的,但現(xiàn)已有用純 Java 寫的 Python 語言實(shí)現(xiàn),近期更有用微軟 .NET 方式實(shí)現(xiàn)的 Python 翻譯器,由此證明了 Python 語言定義的高度完整。 · 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 好許多。

          和其他語言的比較

          一般的說法的這樣的:

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

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

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

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

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

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

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

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

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

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

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

          主站蜘蛛池模板: 博湖县| 翼城县| 张北县| 东阿县| 正阳县| 杭州市| 韶关市| 冀州市| 灯塔市| 枣庄市| 赤壁市| 潼关县| 行唐县| 图片| 哈巴河县| 青龙| 彭水| 怀仁县| 寻甸| 区。| 江门市| 沂南县| 东源县| 姜堰市| 达尔| 罗源县| 噶尔县| 大庆市| 沾益县| 巴林右旗| 湟中县| 延吉市| 格尔木市| 大庆市| 古丈县| 余庆县| 祥云县| 南涧| 鄂伦春自治旗| 屏东县| 丰宁|