缺乏想象力的程序員

來源: 外刊IT評論  發布時間: 2012-07-12 17:35  閱讀: 5407 次  推薦: 5   原文鏈接   [收藏]  

  英文原文:Esmerelda's Imagination

  我認識一個演員,且叫她Esmerelda吧,她曾說,“我無法想象除了當演員我還能做什么。”對于此有人反擊說,“你肯定不能成為一個優秀的演員,不是嗎?”

  當某人向我談論Go語言時,我想起了這個爭論。他說,“我不能想象如何用一種沒有范型的編程語言進行編程。”我的反駁——當時并沒有說出來——是,“那你一定不能成為一個優秀的程序員,不是嗎?”

  這篇文章并不是討論范型問題的(范型是個好東西,也許某一天Go語言里也會有,也許不會),而是關于想象力的,或者,至少是關于被程序員們誤認為是想象力的:抱怨。一個朋友發現,現代一種流行的娛樂方式就是去上網抱怨。對于抱怨者,這很有趣,對于抱怨的接收者,是使其沮喪消沉。作為一個抱怨接收者,我一定會把抱怨反送回去。

  不是很久以前,所謂程序員是指一個能編程的人,但如今看起來,編程變成了程序員的最后一件事情。如今,程序員的定義是:一個會抱怨的人,除非問題已經被解決,并且解決方案用一行代碼就可以表示。(從一個語言設計者的角度,這能推導出一個成功的語言的必然結論:任何程序都能夠縮減成一行代碼,否則,這種語言很爛。語言算法課程不需要存在了。)

  一個不同的、更公正的定義應該是:程序員是永遠用同一種方法解決任何問題、并在這種方法不好用時抱怨這些用到的工具和技術。

  對于程序員大眾來說,這種現代的消遣方式要求:當一個人需要編程,或至少需要去思考編程時,他不去編程,而是去寫一篇博客/一條微博/一句牢騷。我曾看到有人寫了數千行一句話式的咒罵,抱怨某個問題需要讓他多敲幾下鍵盤,可卻沒有意識到反諷的是,如果他把這發牢騷的功夫用在編程上,他甚至可以把這個問題解決數百次,而不用敲這么多鍵盤來抱怨。但是,當然,這需要編程。

  兩年前,Go語言面世。今年,Dart語言對外發布。兩個都來自谷歌,但出自不同的團隊,為著不同的目的;它們少有相似之處。然而,在Dart語言推出后的前幾天,我被一系列對這種語言的批評震驚:如果你把“Dart”全文替換成“Go”,你會發現很多早期對Go語言的抱怨很適合當成現在對Dart語言的漫罵。沒有必要非要先試試Go或Dart才去公開對它們品頭論足;事實上,不去試是很重要的(因為這需要去編程)。批評的聲音很大,很喧囂,但毫不相關,因為他們說的跟語言沒有任何關系。他們只是對一種新的事物做出的一種標準反應。毫無意義。這是現代程序員對任何意外事物進行抱怨的表現。抱怨是可以無限重復利用的。(“我不能想象一種語言竟然沒有XXX功能”)。畢竟,他們說的話不需要有很高的質量:不需要編譯器編譯檢查它們。

  當Go語言發布了一段時間后,這張批評聲的基調發生了一些變化。有些人真正的用過了它,但還是有很多抱怨者。包括上面引用的一條。現在的問題其實是缺乏想象力:Go是一種用來寫Go程序的語言,不是用來寫Java程序或Haskell程序或任何其它程序的。你需要換一種不同的思維方式來寫出好的Go程序。但這需要時間和努力,需要你去研究它。而通常我們聽到的故事是把一種其它語言的程序翻譯成Go語言程序,然后看是什么結果。可是,翻譯會丟失方言成語。例如,試圖在Go語言里寫出Java構造器,這不會有好結果,然而,使用Go語言里一些特定的編寫方式卻能收到意想不到的效果。在經過了10年的Java編程和10分鐘的Go編程后,任何對語言能力的比較都不會比出深層次的內容,然而,比較的結果卻出來了,因為這是現代程序員的工作。

  當然,也有好樣的。兩年來,Go語言擁有了大批的粉絲愿意去花時間研究究竟該如何使用它,很多愿意去對它進行投資的人最終得到了很好的回報。需要你花時間,需要你有想象力,需要你去編程,這才能知道如何更好的使用一種語言,這需要你很多的時間。這不斷壯大的Go語言社區創造出了大量的優秀的軟件,這給了我希望,讓我看到世界上還有真正的程序員存在。

  然而,網上關于Go語言的一知半解的責罵還是很多,所以,在2012年,我的一個自我防御的新年計劃就是:

我決定要更多的去揭露這些抱怨者的真實嘴臉,而不是關心他們抱怨的東西。威信不是靠發牢騷獲得的,而是靠經驗和洞察力,這需要你去實踐和想象力,包括做一些編程工作。

  英文原文:Esmerelda's Imagination

5
1
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()