日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

開發(fā)者需要掌握多少門語言?

 阮靈蘊 2019-04-14

諸如Apple、Facebook及Google這樣的大公司正在開發(fā)他們自己的編程語言,開發(fā)者們被迫只有適應(yīng)。前不久的世界開發(fā)者大會上,Apple公布了它的新開發(fā)語言Swift。這是最近大型技術(shù)公司們開發(fā)的一大波新語言中的最新成員,這些新語言某種程度上都是專門應(yīng)用于他們自己的平臺。

對iOS開發(fā)者,Apple有Swift;而Facebook 有 Hack —— 一門用于后端開發(fā)的語言。與此同時,Google已經(jīng)擁有了它自己的Javascript替代者 Dart,以及一門新的通用編程語言Go。

這一波又一波的新語言,給開發(fā)者們帶來了許多問題。也許其中最嚴重的問題正如我一位同事Adriana Lee在Apple發(fā)布Swift后所說:

 

 

計算機語言的通天塔

目前已經(jīng)存在的編程語言有數(shù)百種,同時還有更多的語言正在涌現(xiàn)。其中許多都是被設(shè)計用在相對較窄的應(yīng)用程序范圍內(nèi),大多數(shù)甚至從未走出過項目小組的范圍。

與此類似,大技術(shù)公司開發(fā)的新語言其實也是伴隨著公司一起成長的。通用語言的鼻祖,C語言,就源于上世紀70年代初的AT&T貝爾實驗室。Java,目前作為Android app開發(fā)的主要語言,誕生于上世紀90年代Sun公司的Microsystems系統(tǒng)。

發(fā) 展到現(xiàn)在,不同之處在于,公司們擁抱新語言、從而想要延伸的特定商業(yè)目標的范圍不一樣了 —— 這一過程同時建立了一個忠心耿耿的開發(fā)者基礎(chǔ),他們被牢牢鎖定在了某個公司的特定平臺上。這類一石二鳥的戰(zhàn)略,最早可以追溯到Sun對Java的采用,當 時公司就將其作為了挑戰(zhàn)微軟PC桌面統(tǒng)治地位的一種手段。(事情雖然沒有像Sun計劃的那樣發(fā)展下去,但在Google轉(zhuǎn)向Android之前,Java 大體上也算是在企業(yè)中間件系統(tǒng)中找到了自己的一席之地。)

這么看來,Apple的Swift其目標也就很明確了。Swift應(yīng)該不會辜負公 司前期的大肆宣傳,通過磨平Objective-C那粗糙的毛邊,看起來它能夠成功簡化iOS app開發(fā)者的開發(fā)過程。但是同樣還是這些開發(fā)者,他們卻需要學習一門新語言的輸入和輸出,而這些功能很可能在其他地方都不會用到。

大公司們?yōu)槭裁匆貜?fù)造輪子

“不要重復(fù)造輪子”這一哲學在絕大多數(shù)開發(fā)者心中根深蒂固,大公司們對此卻并不買賬。那他們?yōu)楹尾恢皇切薷南卢F(xiàn)有語言用于新的用途呢?

答案很簡單,公司們發(fā)明他們自己的語言,是因為他們有這個能力。設(shè)計一門新語言可能很復(fù)雜,但對資源要求卻并不很高。困難之處也就在對其提供支持,包括提供軟件資源(共享代碼庫、API、編譯器、文檔等)以及贏得開發(fā)者的支持。大公司們在這兩方面尤其擅長。

還有一個事實,現(xiàn)有語言通常很難硬塞進如今的復(fù)雜代碼框架中。舉個栗子,F(xiàn)acebook決定發(fā)明的Hack,就是一個普遍適用于Web開發(fā)的腳本語言PHP的超集合(superset)。

Facebook 的Hack最近已經(jīng)比較普遍,其主要目標就是改進代碼的穩(wěn)定性,針對這一目的,它強制在程序運行之前對數(shù)據(jù)類型進行檢測。這樣的檢測確保了一個程序,比方 說,不會將一個整數(shù)解析為一個字符串,這樣的錯誤如果捕獲不到很可能會導致不可預(yù)知的后果。在Hack中,這些檢測會預(yù)先執(zhí)行,以便程序員能夠在程序上線 前早早發(fā)現(xiàn)這樣的錯誤。

據(jù)Facebook的Hack項目組核心成員Julien Verlaguet透露,公司之前嘗試過用一門現(xiàn)有語言實現(xiàn)更高效的編程。但是Facebook的大部分代碼都是由PHP編寫的,公司實際上已經(jīng)建立了一 個支持PHP及其分支的軟件架構(gòu)。即使能夠讓PHP同其他語言編寫的代碼協(xié)同工作,實現(xiàn)的難易程度和運行速度都無法滿足要求。

“比如說我們 嘗試用Scala重寫PHP代碼庫,”Verlaguet說?!癝cala是一門設(shè)計優(yōu)秀的漂亮語言,但是它與PHP完全不兼容。每次我需要從Scala 的代碼庫部分調(diào)用PHP的時候,都會損失性能。我們很愿意使用一門現(xiàn)有語言,但是對于我們來說,這條路行不通?!?/p>

于是,F(xiàn)acebook發(fā)明了Hack,它與PHP一樣能夠共用公司現(xiàn)有的架構(gòu)。Verlaguet介紹說,F(xiàn)acebook的代碼庫主體已經(jīng)從PHP遷移到了Hack,同時公司將Hack開源,希望獨立開發(fā)者們能夠幫公司找到Facebook以外的用途。

“你仍然可以使用PHP,”他說,“但是我們希望你有使用Hack的欲望?!?/p>

誰說了算

公司和開發(fā)者之間有一種微妙的平衡。公司可以按照自己的喜好發(fā)明語言。但是如果開發(fā)者都不愿使用這門語言,那就沒人用了,公司以外的人也就沒人愿意將自己的職業(yè)生涯托付給這家公司。

公 司在開發(fā)過程中同時使用不同的語言,這并不少見。例如,你可能用Objective-C開發(fā)iOS app,但卻用Java開發(fā)Android app。對開發(fā)者來說,這從來都不是癥結(jié)所在,因為Objective-C和Java都是通用面向?qū)ο笳Z言。它們用途廣泛適用于很多場合。

然 而,Hack、Dart、Go和Swift,到目前為止,仍然只適用于嚴格特定公司的編程解決方案,往往和公司選擇的編程環(huán)境相對應(yīng)。誠然,現(xiàn)在下結(jié)論可 能還太早。比方說Hack,就可以用在一些后端的實現(xiàn)中;它只是太新了,以至于Facebook還沒有任何數(shù)據(jù)供人們?nèi)绱耸褂谩?/p>

不是開發(fā)者 不能學習多門語言。事實上,大多數(shù)人已經(jīng)掌握了多門語言。這好比羅曼斯語(一種由拉丁語演變而成的語言),如果你會說西班牙語,再去學法語就比那些不會西 班牙語的人簡單許多。與此類似,如果你已經(jīng)會Java,再學Ruby或Perl就簡單得多。如果你會PHP,基本上就已經(jīng)學會了Hack。

與此相反,學習多門語言更多的是一個習慣問題。如果Java已經(jīng)解決了你的問題,你就不再有動力去學Ruby。如果你用Objective-C編寫iOS app感覺很爽,你就不會有強烈的意愿去學Swift。

另外,對于一些開發(fā)者來說,封閉生態(tài)系統(tǒng)的語言只會使每個人的生活變得更糟。例如,自由設(shè)計師Jack Watson-Hamblin就告訴我說,像Apple這樣強勢推出Swift,其實是在冒險增加程序員的負擔,同時將開發(fā)者社區(qū)割裂開來:

程序員掌握多門語言固然重要,但是不斷強迫他們緊跟新語言,卻是行不通的。如果我正在開發(fā)一個簡單的跨平臺app,我可不想被迫掌握四門語言再來完成它。如果真的需要,我也只想使用一門語言。

Watson- Hamblin就主張說,當每家公司都為了自家需要發(fā)明自己的語言時,程序員的注意力被分散,開發(fā)的視野也局限于一種,這只會拖慢整個開發(fā)進程。他說, “如果拿公司負責一門語言與負責一個開源社區(qū)相比較,這兩者的區(qū)別就好比一家大企業(yè)與一個初創(chuàng)小公司的區(qū)別”。社區(qū)生來就更加靈活,適應(yīng)能力更強。

當然,Apple有許多非常好的理由推出Swift從零開始,就像當初Facebook發(fā)明Hack的時候一樣。我并不是說,大公司不會強迫開發(fā)者接受這種改變,在這方面,有些公司一直都很讓人討厭。

“新語言的發(fā)明,伴隨著霸權(quán)的支配,”Verlaguet說,“被迫不停追趕,確實令人沮喪,但另一方面,你又多了一種解決問題的新語言。反過來想想,要是全世界的程序員都用同樣一門語言做所有事情,即使啥都湊合著能干,這門語言也一定干得不怎么樣”。

 

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多