成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編程語言的被淘汰:選錯語言毀終身

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

[[350038]]

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

可真的是如此嗎?

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

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

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

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

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

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

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

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

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

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

Scala,早期的某個項目,我幾個月后看不懂幾個月前寫的代碼。

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

引子 2:適用領域與流行應用

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

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

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

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

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

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

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

編程語言的被淘汰

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

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

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

可維護性丟失

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

缺失更好的 IDE 支持

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

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

可遷移的語言出現

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

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

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

其它

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

結論

有沒有可能出現一個兼容所有語言的語言?

本文轉載自微信公眾號「Phodal」,可以通過以下二維碼關注。轉載本文請聯系Phodal公眾號。

 

責任編輯:武曉燕 來源: phodal
相關推薦

2016-11-04 14:43:23

編程語言 程序員

2022-01-29 00:08:30

程序員編程語言Java

2011-01-06 09:00:01

靜態語言動態語言

2009-04-24 10:57:25

2024-07-10 08:22:42

2021-04-13 10:14:12

編程語言PythonJava

2022-08-09 08:29:50

TIOBE編程語言排行榜程序員

2009-04-24 14:56:24

2010-03-19 09:39:17

Python編程語言

2012-09-28 13:23:43

編程語言語言進化程序員

2021-05-28 05:34:06

Golang語言編程

2021-01-13 10:40:42

編程語言PLCGraph

2020-10-13 06:34:15

編程語言IDE

2021-08-10 19:15:17

語言編程應用

2020-10-23 18:40:56

編程語言HTML程序員

2011-10-21 10:54:04

編程語言

2015-11-02 17:25:23

Elixir編程語言未來

2018-11-12 12:50:30

C語言編程匯編

2021-02-25 15:39:26

Python編程語言PYPL

2010-03-11 15:16:52

Python編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产精品一区二区三区 | 嫩草视频在线免费观看 | 毛片免费观看视频 | 欧美精品福利 | 九九热在线免费视频 | 中文字幕电影在线观看 | 国产精品久久久久久婷婷天堂 | 亚洲精品一区二区三区在线 | 久久99国产精一区二区三区 | 九九亚洲 | 久久久久久久国产 | 精品一区二区在线观看 | 在线观看av网站永久 | 国产二区av | 国产精品观看 | 在线成人免费视频 | 6080亚洲精品一区二区 | 午夜精品一区二区三区三上悠亚 | 人人草人人干 | 久久久久久久久99精品 | 国产精品久久久久无码av | 一区二区三区中文字幕 | 久久久久久久久久久丰满 | 亚洲成人午夜在线 | 污视频在线免费观看 | 一区欧美 | 成人国产a| 亚洲综合大片69999 | 美女日批免费视频 | 毛片.com| 成人久久网| 亚洲xxxxx| 日本成人综合 | 日韩一区二区三区四区五区 | 欧美激情综合五月色丁香小说 | 亚洲精品在线看 | 91成人午夜性a一级毛片 | 中文在线观看视频 | 亚洲免费影院 | 一区二区在线免费播放 | 毛片入口|