不愿將多種編程語言雜糅在一起?可能你還沒意識到而已
譯文之前我曾經在一篇博文中就多語言開發的問題進行過探討,這一周來很多朋友發來了評論與郵件,其中自然不乏支持與反對的聲音。其實這也早在意料之中,此類爭議性話題總會帶來兩個不同陣營,雙方分執一詞吵個不可開交。
我實在弄不清楚為什么事情總要變成這樣,也許這一切早在我們的孩提時代就已有征兆:那時候偏愛雪佛蘭品牌的小孩兒會在福特汽車上小便,而支持福特品牌的小孩兒也樂于用污物糊雪佛蘭一熊臉。也許隨著年紀的增長、我們不會再糾結于超人和蝙蝠俠誰更厲害,但類似的爭論卻仍然經常性、持續性出現在我們身邊。
我們往往會對自己“最偏愛”的語言產生過度依賴,對于任何人來說掙脫自己熟悉的一切、踏出邁向未知領域的步伐都相當困難。我們都喜歡躲在自己選定的“shell(殼)”里平靜生活。從通用的Bash shell轉向Zsh確實能讓我們接觸到一個迥異于前且突破了思維慣性的新世界,但由此帶來的陌生感、失落感以及學習過程所必須投入的寶貴時間都不免讓人感到惱火,有時候我們甚至寧愿拋開這一切、再度回到Bash的懷抱。這并不難理解,畢竟不是每個人都擁有充足的時間來推翻自己過去幾十年中積累的經驗、下定決心從頭學起——無論最終成果有多么誘人,這樣的成本都實在太過高昂了。
然而在不同編程語言之間游弋對于開發人員來說是一種非常理想的自我提升方式,這是永遠顛撲不破的真理。無論是編程語言、shell還是應用程序,我們總是會選擇那些自己最為熟悉的命令及實踐方式,而且一旦建立起基本工作習慣、我們就再也不想離開這個溫暖而舒適的安樂窩了。
舉例來說,今天在使用Vi編輯器的時候,我仍然習慣性地連敲三次“w”鍵來將光標向前推向三個詞距,或者按下“0”來直接將光標移至本行末尾;我當然知道可以使用“3w”或者“)”這類更為簡潔的運算符,但習慣的力量就是這么可怕。同樣的道理,當需要上移至文件頂端時,我永遠會本能地使用“1G”而非“gg”。這些直觀反應已經溶化在了我的血液當中。
這類情況在開發工作中同樣數見不鮮。我們擁有自己積累下來的函數認知、久經考驗且穩定可靠的處理方法,也在自己喜愛的語言中掌握了拿來就用的操作模塊。盡管我們清楚其它語言的用法,但在真正面對這些功能元素時、我們仍然會有種踏入未知水域的莫名恐懼感。
有趣的是,在多數情況下,浪費在反復使用固有方法上的時間足以幫助我們學習并掌握其它語言所提供的更為科學的處理機制。一旦我們擁有了數十次同一內容的編寫經驗,我們就會喪失觀察其背后邏輯的愿望與理由。我們只知道我們可以將這些函數添加進來、為其填寫內容,它們就自然會給出相應的正確答案。如此這般,青春就在重復中離我們而去。但如果換一種思路,立足于不同語言對同樣的函數加以審視、我們往往會發現更多原先從未意識到的優化空間。用新視角觀察舊代碼既新鮮刺激又令人恐懼,但這也正是其意義所在。
但撥開重重迷霧,大家必須認清這樣一個事實:大部分開發者已經在工作過程中使用多種語言進行程序編寫——只不過很多人還沒有意識到。我們所編寫的代碼又會編寫出其它代碼,而這些“其它代碼”又會生成新的代碼,這正是現代Web應用的特性。我們所編寫的Python、PHP或者Ruby代碼會生成JavaScript以及HTML。而在使用Rails等框架時,我們編寫的代碼會引用函數、從而為我們生成HTML、CSS、SQL以及JavaScript等結果。
在這樣的情況下,無論選擇哪一種核心語言、Web應用開發人員都必須在剛剛開始工作時就熟練掌握多種編程語言。當然,看起來在Rails中編寫十行代碼以保證Web應用能夠執行某些簡單功能——例如將文本字段插入到數據庫當中再將返回結果顯示出來——好像沒什么難度,但如果大家不熟悉相關語言的真正基礎,那么在嘗試解決限制性問題或者檢查代碼問題的過程中必然會碰到很多其它更為嚴峻的挑戰。
正如我在上周的文章中所說,選擇成為一位掌握多種語言的開發者不僅能夠拓寬我們的選擇范圍,同時也能幫助大家更清醒地意識到當前項目的實際需求與特定語言的實際功能之間存在著怎樣的交集與差異。當然,最理想的情況是大家已經擁有多種語言開發能力,而且從事過Web應用的相關工作。
考慮到這一點,大家不妨拿出幾天時間把自己已經利用某種語言編寫出的成果換作另一種語言再重新編寫一次,在我看來這是掌握新語言的最快方法。沒錯,這屬于那種“重新發明輪子”的重復勞動過程,但由于模板由我們自己提供、因此我們所重現的輪子至少源于自己的創新成果。
英文:http://www.infoworld.com/d/data-center/dont-want-mix-programming-languages-you-already-do-239907
【編輯推薦】
- 2014年5月編程語言排行榜:Adobe ActionScript進入top20
- 技術趣聞:十三種編程語言和它們名稱背后的故事
- 你最深愛的編程語言其實很爛
- 2014年4月編程語言排行榜:Perl 創歷史新低
- 90分鐘實現一門編程語言——極簡解釋器教程