想罵人!為什麼有這麼多開發語言?

「來源: |51CTO技術棧 ID:blog51cto」

關注

51CTO技術棧

,悅享技術,成就 CTO 夢想

有時候,寫 TypeScript 寫多了,寫 Java 的時候就老容易出錯。而當陷入某個專案一段時間之後,自我感覺老熟悉的 Python 和 Golang,會變得非常的陌生。

想罵人!為什麼有這麼多開發語言?

圖片來自 Pexels

而某段時間寫起來行雲流水的 Bash 指令碼,每次重新拿起,都會進入看文件寫程式碼的境地。

因為工作和個人興趣的原因,需要在多種語言中進行切換,這種感覺尤為強烈。

個人精力有限,不可能每天都照顧到這些刁鑽的,五花八門的語言,所以最後乾脆放棄了掙扎,讓語言的圈子漸漸的將開發人員隔離開來。

為什麼不能統一成一種開發語言呢?下面這張圖或許可以說明一下。

想罵人!為什麼有這麼多開發語言?

每種語言在出現的時候,都覺得自己吊的不行,尤其是 Golang,覺得自己是個另類,是終極目標。而事實上,它也是發展路線上的一枚棋子罷了。

別的不說,就連函式宣告,各門語言都 TM 統一不起來。在這上面做文章,不是閒的蛋疼麼?

我們來看一下。

Golang 的函式宣告關鍵字是 func:

functest(x int,y int)int{

}

java 的函式宣告,沒有關鍵字:

publicinttest(int x,int y){

}

typescript 的函式宣告:

functiontest(x: number,y: number):int{

}

python 的函式宣告:

deftest(x,y):

kotlin 函式宣告:

funtest(x: Int,y:Int): Int{

}

rust 函式宣告:

fntest(x: i32,y:i32){

}

。。。

如此種種,僅僅定義函式的關鍵字就有多種。func,function,fun,fn,def。。。,且不說引數的宣告方式和定義方式。

我時常在想,創造這門語言的這些人,腦子是不是有病?關鍵字是一門語言的根本競爭優勢嗎?

沒辦法,有時候只能按照開發語言將開發人員進行區分。比如招聘 Golang 程式設計師,招聘 Java 程式設計師。

雖然說語言在軟體開發中,只是佔了很小一部分,但在實際落地的時候,卻往往又影響重大。

不同的語言,細節差異多,編碼規範不同,對程式的影響就比較大。這些差異,往往需要開發人員在日積月累之間,不斷的積累經驗。

在語言之上,建立的類庫和生態,更是龐大。這些差異是無法消除的,只能隔離。

我是常年搞 Java 的,對待 Java 自然是親切而熟悉,也早已經能夠忍受它的冗長和複雜。但在其他語言眼裡,Java 是個不折不扣的魔鬼。

就拿常見的 Lambda 語法來說,在其他語言中,都是 e=>{} 使用 => 這種語法。只有 Java 另類,使用 -> 來表示。我就經常在寫完 TypeScript 之後,回到 Java 中會腦子抽筋。

Java 的泛型也是一般,一個 int[] 陣列,並不能直接使用 Arrays。sort() 進行自定義的排序,還得把它轉成 Integer[] 才行。

這些問題有,但都是有限的。問題是,別人覺得有問題,就會推倒重來,比如 groovy,scala,比如 kotlin,程式碼可以更簡潔,但你 TM 別改關鍵字啊。

目前,已經有 700 多種程式語言,它們風格迥異,標稱著能夠解決特定行業的問題,但大多數都是同質化的萬能語言。

在 Tiobe 排行榜上,C、Python、Java、JavaScript、Php、SQL 等,常年存在於排行榜前 10。

想罵人!為什麼有這麼多開發語言?

可以說,語言的度格局已經大體形成,剩下的就是你爭我奪的搶奪戰源於百。比如 Java 和 C#,在一定程度上來說,就是一個東西,但現在它們的生態卻文章來完全不同。語言有什麼複雜的?複雜的是邏輯還有程式碼組織方式,不是語言。

它們的發展,就像是中國的網際網路,雖然標榜著自己哪裡哪裡不一樣,到最後還是一樣的同質化,該牛x的地方一樣牛x,該垃圾的地方一樣少不了。

語言也是,你參考我的,我參考你的,只要道理上說的通,那就可以安排上。比如 Java 的 record 關鍵字,真正的 Javaer 真的不在乎多一點 getset 方法的。

未來,有哪個語言標稱統一了所有的語言,你就笑一笑看看罷了,它不過是第 n+1 種語言而已。

另外,偷偷的告訴你,使用 f 關鍵字進行函式定義的語言,到現在還沒有出現,如果你想造一個的話,考慮一下啊。

作者:小姐姐味道

編輯:陶家龍