1. 程式人生 > >每個程式設計師都應該學習使用Python或Ruby(選Python)

每個程式設計師都應該學習使用Python或Ruby(選Python)

每個程式設計師都應該學習使用Python或Ruby

如果你是個學生,你應該會C,C++和Java。還會一些VB,或C#/.NET。多少你還可能開發過一些Web網頁,你知道一些HTML,CSS和JavaScript知識。總體上說,我們很難發現會有學生顯露出掌握超出這幾種語言範圍外的語言的才能。這真讓人遺憾,因為還有很多種程式語言,它們能讓你成為一個更好的程式設計師。

在這篇文章裡,我將會告訴你,為什麼你一定要學習Python或Ruby語言。

  • C/C++/Java相比 — Python/Ruby能讓你用少的多的多的程式碼寫出相同的程式。有人計算過,Python或Ruby寫出的程式的程式碼行數只相當於相對應的Java程式碼的行數的五分之一。如果沒有絕對的必要,為什麼要花這麼多時間寫出這麼多的程式碼呢?而且,
    有人說
    ,一個優秀的程式設計師能維護的程式碼量最多是2萬行。這不區分用的語言究竟是彙編,C還是Python/Ruby/PHP/Lisp。所以,如果你用Python/Ruby寫,你一個人乾的,不管是幹什麼,如果換用Java/C/C++,那都需要一個5人的小團隊來幹。
  • VB/PHP比較 — 跟PHP/VB相比,Python/Ruby的是一種從設計上講比它們好的不知多少倍的語言。PHP和VB分別是在開發網站和桌面應用程式上非常流行的語言。它們流行的原因是非常的易學。不懂計算機的人也很容易的上手。如果你用這些語言開發過大型的專案,你就會發現這些語言的設計是如此的糟糕。是朋友,他就不會勸你使用PHP/VB。
  • Lisp/Scala/Haskell/Closure/Erlang
    相比 — Python/Ruby跟它們比起來顯得相當的“主流”。確實,這些語言每種都有其很酷的特徵,對於高階程式設計人員,瞭解這些語言能給他們對程式設計的思考帶來實際的提升。但這些應該在你以後的職業生涯中才去決定學哪一兩種。對於現在,Python/Ruby是在語言功能和實際運用之間平衡後的更好的選擇。
  • Perl相比 — Python和Ruby都受恩於Perl,在這兩種語言異軍突起前,Perl是最好、最大的一種動態語言。但現在,Perl已是明日黃花,越來越多的人轉向Ruby/Python。我感覺Perl的面向物件機制有點做作,很不好用。通常認為,Perl一種比較難學的語言,因為它提供你了太多不同的方法去完成同一個任務,它的語法有點像密碼,非常不直觀 — 除非你對它掌握的非常好。總之,我感覺Perl是一種對於學生來說不是很合適的語言—除非你有特殊的理由去學它(例如,你有很多正則表示式要處理,這是Perl的閃光點)。
  • sh/sed/awk/bash相比 — 如果你使用Linux/Unix,你可能需要做一些shell程式設計,甚至會編寫一些不小的程式。但是,對於這些語言,一旦程式達到一定的行數,事情就會開始變得讓你痛苦不堪,你最好是用Python去做這些事情。當然,做這種事情,Perl是最好的選擇,Python排第二。(Ruby對於系統shell指令碼不是很合適)。

你可以在Google上搜一下“為什麼X比Y好” — 其中把X換成Python或Ruby,把Y換成另外一種語言 — 你就會發現,有無數的文章來說明它們為什麼這麼好。

如果你有選擇你的畢業設計使用的程式語言的自由,你應該選擇Python或Ruby,它們能讓你在開發專案的過程中節省一半的時間(除非你要開發的是移動應用,這樣你必須要使用Java或Objective-C)。

下面是xkcd上的一幅漫畫,告訴你掌握Python後你會變得多麼的強大:

python

如何去學它們呢?很多很多的網站上都提供了學習Python和Ruby的教材和課程。下面的是我從中選出的一些:

有疑問嗎?請在評論了寫出來,我會盡量回答你們。

尾註:

1:我的這篇文章可能會讓很多Perl愛好者很鬱悶,現在回味一下,我認識到對這種語言的要求過於苛刻了。因此,我把關於Perl的一節改寫了一下。

Python和Ruby都受恩於Perl,在這兩種語言出現之前,Perl是最大、最好的動態語言。但Perl現在太老了。它的面向物件性不完整。它很久沒有升級更新了,它的市場份額正在丟失。對於一些新的、很火的事物(例如Web程式設計框架,Web API),它不如Python & Ruby 那樣能跟上時代的步伐。基本上,Python/Ruby在興起,Perl在衰退。

2:本文中的所有語言的比較都是用來給印度電腦科學專業的學生選程式語言時做參考的。像“X比Y好”這樣的句子準確的講是毫無意義的,因為所有的語言都是經過時間的考驗而存活下來的,有些語言會在某些領域比另外一種要強,這也是它們存活下來的原因。換句話說,總有一些情況下,PHP/Java/C/C++/Perl 看起來會比 Ruby/Python 等其它語言顯的更適合。

如何成為Python高手

這篇文章主要是對我收集的一些文章的摘要。因為已經有很多比我有才華的人寫出了大量關於如何成為優秀Python程式設計師的好文章。

我的總結主要集中在四個基本題目上:函數語言程式設計,效能,測試,編碼規範。如果一個程式設計師能將這四個方面的內容知識都吸收消化,那他/她不管怎樣都會有巨大的收穫。

函數語言程式設計

命令式的程式設計風格已經成為事實上的標準。指令式程式設計的程式是由一些描述狀態轉變的語句組成。雖然有時候這種程式設計方式十分的有效,但有時也不盡如此(比如複雜性) —— 而且,相對於宣告式程式設計方式,它可能會顯得不是很直觀。

如果你不明白我究竟是在說什麼,這很正常。這裡有一些文章能讓你腦袋開竅。但你要注意,這些文章有點像《駭客帝國》裡的紅色藥丸 —— 一旦你嘗試過了函數語言程式設計,你就永遠不會回頭了。

效能

你會看到有如此多的討論都在批評這些“指令碼語言”(Python,Ruby)是如何的效能低下,可是你卻經常的容易忽略這樣的事實:是程式設計師使用的演算法導致了程式這樣拙劣的表現。

這裡有一些非常好的文章,能讓你知道Python的執行時效能表現的細節詳情,你會發現,通過這些精煉而且有趣的語言,你也能寫出高效能的應用程式。而且,當你的老闆質疑Python的效能時,你別忘了告訴他,這世界上第二大的搜尋引擎就是用Python寫成的 —— 它叫做Youtube(參考Python摘錄)

測試

如今在電腦科學界,測試可能是一個最讓人不知所措的主題了。有些程式設計師能真正的理解它,十分重視TDD(測試驅動開發)和它的後繼者BDD(行為驅動開發)。而另外一些根本不接受,認為這是浪費時間。那麼,我現在將告訴你:如果你不曾開始使用TDD/BDD,那你錯過了很多最好的東西!

這並不只是說引入了一種技術,可以替換你的公司裡那種通過愚蠢的手工點選測試應用程式的原始釋出管理制度,更重要的是,它是一種能夠讓你深入理解你自己的業務領域的工具 —— 真正的你需要的、你想要的攻克問題、處理問題的方式。如果你還沒有這樣做,請試一下。下面的這些文章將會給你一些提示:

編碼規範

並非所有的程式碼生來平等。有些程式碼可以被另外的任何一個好的程式設計師讀懂和修改。但有些卻只能被讀,而且只能被程式碼的原始作者修改 —— 而且這也只是在他或她寫出了這程式碼的幾小時內可以。為什麼會這樣?因為沒有經過程式碼測試(上面說的)和缺乏正確的程式設計規範。

下面的文章給你描述了一個最小的應該遵守的規範合集。如果按照這些指導原則,你將能編寫出更簡潔和漂亮的程式碼。作為附加效應,你的程式會變得可讀性更好,更容易的被你和任何其他人修改。

那就去傳閱這這些資料吧。從坐在你身邊的人開始。也許在下一次程式設計師沙龍或程式設計大會的時候,也已經成為一名Python程式設計高手了!

祝你學習旅途順利。

如果你喜歡這些文章,請在微博上頂一下,讓其他人也知道。