編程語言不單單是工具而已

我絕對的承認懂得多種編程語言的價值,也認爲「用正確的工具幹活兒」是個好思想。但在編程工做中,人們對這個概念有個誤解,我認爲須要在這裏指出一下。但請記住,對這個誤解的詮釋並非來否認這個思想的。 程序員

多語言電影
讓我從一個古怪的類比開始:假設這有一個電影,是關於一個政治陰謀,涉及到一系列複雜的國際冒險,衝突波及到七、8個國家。每一個演員都說着他們本地的語 言,沒有字幕。誰能看懂這個陰謀的情節?恐怕只有少數幾個懂得多語言的製片人能欣賞的了這個電影。咱們大部分人都不會去看它。 數據庫

多語言編程
咱們的上一個Web應用項目裏使用了六、7種的編程語言(Groovy, Java, HTML, CSS, SQL, Ant)。若是咱們感受須要的話,還能夠輕鬆的再增長更多的語言。再增長Clojure, Scala 或 Ruby/JRuby 並不會以爲不合適。一個懂得多種語言並有能力在多種語言間切換到程序員就被稱做「多語言程序員」。 編程

形成多語言項目產生的一個主要理由一般是「使用正確的工具幹活兒」的概念。而這個「活兒」一般指的是一個大項目裏的一些小任務,好比編譯項目,訪問數據庫, 實現永不定型的業務邏輯。對於每一個子任務,都有某個語言可以更出色的完成。除了人們對這種多語言的作法形成的隱藏成本存在爭議外,還有一個對於「工具」這 個詞的誤解須要注意。 框架

編程語言不是工具 編程語言

如 果你的工具碰巧是一種編程語言,那你生產的源代碼將和你的工具融合到一塊兒。沒有這個工具,你的產品徹底不能運行。若是你認爲編譯後的二進制代碼是「產 品」,你將沒有可能針對它作「需求變動」,這是程序員最初可能會有的一個錯誤概念。很顯然,程序員的生產的產品是「源代碼」。編程語言並非扮演工具的角色,從軟件的性質上看,它應該是材料。工具能夠扔掉,材料構成主體。 工具

編程語言是產品材料
由於源代碼依附於它的編程語言,它們是一個概念上的合體。因此,我建議,當咱們在談論編程語言時,應該改爲「使用正確的材料來幹活兒」的說法。相比起選擇 是使用飛利浦的螺絲刀仍是三菱的改錐這樣的問題,咱們修改後的說法會對編程語言的選擇起到更深遠的意義。材料須要持久的耐用,而工具大部分時間是丟在一 邊。 spa

但同時也是工具
在上面提到的咱們作過的Web應用項目中,咱們使用了不少工具。Grails是咱們的框架,Jetty是咱們的Web容 器,Spring Framework提供了強大的服務,咱們用IDEA把它們結合到一塊兒。咱們能夠輕鬆的用Tomcat替換Jetty,或用Eclipse替換IDEA。 工具須要可替換,甚至是一次性的。 教程

總結
「用正確的工具幹活兒」這話並不能簡單的應用到編程語言上,由於它們不是工具,而是材料。這就是爲何在一個項目中大量使用多語言是危險的。它很容易讓項目變成一個混亂的「複合板「項目。
ip

更多編程語言教程集合請登陸e良師益友網。 get

相關文章
相關標籤/搜索