日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
編程語言的被淘汰:選錯語言毀終身

在我當(dāng)前所在項目里,其中的某一個子系統(tǒng)是用 Groovy 中的 Gradle 插件。Groovy 作為一個運行在 JVM 上的腳本語言,天生具有膠水的特性。加之,它支持 DSL 與其程式的簡潔語法。嗯,如果不考慮性能問題,這真的是不一個不錯的語言。

創(chuàng)新互聯(lián)的團(tuán)隊成員不追求數(shù)量、追求質(zhì)量。我們經(jīng)驗豐富并且專業(yè),我們之間合作時就好像一個人,協(xié)同一致毫無保留。創(chuàng)新互聯(lián)珍視想法,同時也看重過程轉(zhuǎn)化帶來的沖擊力和影響力,在我們眼中,任何細(xì)節(jié)都不容小覷。一直致力于為企業(yè)提供從域名與空間、網(wǎng)站策劃、網(wǎng)站設(shè)計、商城系統(tǒng)網(wǎng)站開發(fā)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。

可真的是如此嗎?

開始之前,我再次 FBI warning 一下:

  • 關(guān)于編程語言的討論,并非能真實,都存在或多或少的個人偏愛因素。因此,文中的某些觀點或許會有些偏頗。若是不正確又或者是出入較大,也希望大家能指正。
  • 這里的場景主要是基于團(tuán)隊協(xié)作的場景之下討論的,而非個人項目,又或者是小項目。也就是說,只有團(tuán)隊協(xié)作時,才會出現(xiàn)的問題,才會出現(xiàn)各種討論。
  • 說起這一點我也是有個人偏好,如業(yè)余開發(fā)選各種語言,而真正做項目的時候,選的語言便是 Java;業(yè)余開發(fā)用 React、Stencil.js,在公司做項目的時候,還是 Angular 大法好。

引子 1 :編程語言的讀與寫

我們都知道,編程語言是寫給人看的代碼,寫機器運行的機器碼。所以呢,對于編程語言而言,我們會有一個簡單的判別標(biāo)準(zhǔn),即它的讀與寫。從使用體驗上呢,我們可以分為:易讀易寫,易讀難寫,易寫難讀,難寫難讀,這么四類的語言。

為了貼合文章的主題,我大概對我在項目上用過的 JVM 語言做了一個分類。(PS:真實情況下,差異沒有這么大。)與此同時,由于每個語言的使用場景不一樣,我們并不考慮諸如于性能等問題。

難度 易寫 難寫
易讀 Java Groovy
難讀 Kotlin Scala

簡單說明一下 (笑,我們并不討論他們的優(yōu)點。例子中的 Kotlin 不太適合,只是我暫時沒有在項目上用過其它 JVM 語言,也許 JRuby 就不好讀了):

Java 語言嘛,大家都懂,又好讀又好寫,所以 Java 程序員便宜。

Groovy (Gradle 所采用的 DSL 語言)難寫的地方在于,文檔少、語法糖導(dǎo)致IDE 支持差(相對而言)。事實上,它也不是那么好懂,在 IDE 支持的情況下,要用碳基腦做個類型推斷。

Kotlin,如果已經(jīng)熟悉 Java 或者其它語言的話,寫 Kotlin 并不是一件難事。這件事情難就難在閱讀別人的 Kotlin 代碼,可能會有點費勁,除非你有良好的 IDE 支持——它的親爸爸可能是 Jetbrains。離開了 IDEA,找個擴(kuò)展(extension)都得找半天。所以難度總體上還是不難的,只是相對難讀一點——因為語法糖。

Scala,早期的某個項目,我?guī)讉€月后看不懂幾個月前寫的代碼。

而如上所說,對于語言每個人是有偏好的。所以,這里依舊是我的一些個人觀點。我也并非這方面的專家,只是從個人閱讀開源代碼和編寫相關(guān)代碼的感受來說的。

引子 2:適用領(lǐng)域與流行應(yīng)用

談及編程語言,我們要討論的是另外的另一特質(zhì):適用領(lǐng)域。如我們熟悉的:

  • Golang 背靠云原生和 Google
  • Python 是科學(xué)家們的偏好,畢竟不是以代碼為生。
  • JavaScript 是交互方式發(fā)生了變化
  • Ruby 是 Rails 框架,所以流行開了。
  • Java 用于企業(yè)編程,因為程序員便宜

而諸如 Rust 這樣的小類語言,還沒有正式有一個能發(fā)揚光大的場景。

引子 3 :編程的快樂,先寫得爽

有一些語言能讓你拾起編程的快樂,比如 Ruby,但是也能讓你不想去維護(hù)代碼——讓人又愛又恨的 Method Missing,可以讓你搞起元編程。也能分分鐘讓你看不懂別人寫的代碼。如果沒有文檔的話,那么我覺得你不會再看了。

又比如說,操作符重載也是一個讓人寫的代碼更加直觀。嗯,再重載一下賦值操作符,是不是非常爽。

對于快樂來說,維護(hù)性那是以后要考慮的問題。

編程語言的被淘汰

在項目上經(jīng)歷了慘痛的 Groovy 開發(fā)大型項目的經(jīng)驗后,我和我的同事們一致覺得這是一門可能被淘汰的語言。主要原因有這么幾個:

  1. 可維護(hù)性丟失
  2. 缺失更好的 IDE 支持(相比于 Java 之類的)。說白了就是開發(fā)人員寫起來不爽。
  3. 在最廣泛的場景之下,可遷移語言出現(xiàn)(如 Kotlin Script)

如果你還想把編程語言的一些缺點考慮一下,那也是可以的。

可維護(hù)性丟失

這也并非是語言本身的問題,而是語言應(yīng)對大型項目時,將會遇到的一個挑戰(zhàn)。對于大型項目而言,自由靈活的語法糖會帶來大量的問題。而隨著項目的進(jìn)一步擴(kuò)大,保持同一套代碼風(fēng)格容易,而要使用同一套語法越來越困難。如同樣是聲明類型,有的用具體的類型,有的則是用 def 或者是 var。

缺失更好的 IDE 支持

嗯,如果你習(xí)慣了用 IDEA 對 Java 代碼進(jìn)行快速的重構(gòu)之后。而與此同時,你并不能使用相似的方式來對你的 Groovy 代碼進(jìn)行重構(gòu)。你們就會慢慢陷入了一個循環(huán),既然有一個更好的語言,為什么我們不去使用它們呢。

退而求其次的,為了使用 IDEA 的高級功能,如重構(gòu)。我們開始將代碼中的 def 轉(zhuǎn)換為具體的類型。

可遷移的語言出現(xiàn)

而其實上面兩個問題,并不是這個語言的主要問題。畢竟,對于小的項目來說,IDE 和可維護(hù)性支持都不是問題。

過去,我們根據(jù) Gradle 官方文檔,使用 Groovy 來編寫 Gradle 插件。而有一天,Gradle 官方文檔同時提供了 Kotlin Script 的支持。

這就相當(dāng)于是,上帝真的拋了個橄欖枝給你。你可以同時擁有更好的 IDE 支持,更好的可維護(hù)性。同時,還可以快速地遷移過去。為什么不呢?

其它

與之相似的一個例子便是 JavaScript 和 TypeScript,但是瀏覽器運行的是 JavaScript。所以,JavaScript 并不能這么容易被取代。

結(jié)論

有沒有可能出現(xiàn)一個兼容所有語言的語言?

本文轉(zhuǎn)載自微信公眾號「Phodal」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Phodal公眾號。


分享文章:編程語言的被淘汰:選錯語言毀終身
網(wǎng)站鏈接:http://www.5511xx.com/article/ccocdij.html