看到同事分享的有趣影片:

Most Popular Programming Languages 1965 - 2022

影片作者是個專注資料視覺化的博士班研究生,統計了自 1965 年至 2022 年最受歡迎程式語言的演進,時間軸橫跨 58 年,就當一甲子吧。統計資料來自多個國家的調查結果,再加上全球範圍內的出現率,流行程度則定義為「熟悉或正在學習/精通該語言的程式設計師所佔的百分比」。結果可能跟大家所想有所許出入(是跟我認知的趨勢差不多啦),因沒有原始數據跟計算方式可核實查證,大家就當成歷史故事看吧,不用拿來戰語言。

為了細細品味,我以每 5 年 Q1 末期為里程碑擷圖留念。

1965 年,Fortran 紅透半邊天,百分比近六成。科學界是 Fortran 的天下,COBOL 偏商用,我沒聽過的 ALGOL 從 1950 年代起是教科書及學術文章說明演算法的奧林匹克指定語言,再加上 LISP 並列為四大具影響力的程式語言。另一個我沒聽的 APL 則是種偏向數學表達式,充滿非標準化字元的獨特語言。跟硬體緊密結合的組合語言當時排第四,而 BASIC、C 跟 Pascal 已出現。

70 年代,前九名成員沒變,組合語言升上第三名,APL 嬴過 BASIC,但 FORTRAN 的百分比掉到 25,不再一方獨霸。

早年的演進速度比現在慢很多,直到 1975 年,前九名依然都是老面孔,但 LISP 衝上第三,Pacal、BASIC 分佔四、五。

80 年代,Pascal 一飛衝天,勝過 Fortran 登上冠軍,加入兩位新面孔 Ada、C++。Ada 由美國軍方發展,由Pascal及其他語言擴充而成。C++ 則以實現物件導向著名。

1985 年 C 與 Pascal 勢均力敵,爭奪冠軍寶座,Ada 以些微差距屈居第三,Lisp 排第四,昔日王者 Fortran 掉到第五 (但我唸五專學的第一個語言仍是 Fortran 77)。平易近人的 BASIC 排第六,之後是組合語言跟掘起中的 C++,COBOL 掉更多,由第四跌到第九。

90 年代由 C 語言稱霸紅透半邊天,Ada 居次,Pascal 落到第三,C++ 衝上第四,Lisp 第五,再來是 Fortran、BASIC、組合語言、COBOL、APL,然後 Visual Basic 出現惹...

1995,C 幾乎一統天下,百分比高達 70%,而 C++ 衝上第二僅 20%,Fortran 翻紅回到第三,Pascal 第四,親民易學的 Visual Basic 登上第五。Perl 也開始展露頭角(想到我開始以寫程式謀生的第一個專案,就是用 Perl 寫 CGI,而且有滿滿的 SQL Injection XD),隨著 Internet 應用普及,JavaScript 時代即將降臨。

2000 年,.COM 泡沫前夕,那個什麼都要加個 e 的時代,Java 橫空出世直接站上第二僅次於 C,而 JavaScript 也穩坐第三,C++ 居第四。好寫易上手(但也容易被新手寫成一坨 X)的 PHP 現身躍上第五,Perl 第六,Visual Basic 第七,接著是 Delphi、BASIC、Pascal。而我最愛的程式語言 - C#,也終於出現在排行榜了。

2005 年,什麼裝置上都能跑的 Java 持續居冠,JavaScript 第二,PHP 衝上第三,再來是 C、C++、C# 三連發。Visual Basic、Perl 分佔七、八,往後的霸主 Python 也現身了,最後兩名則是 Pascal 家族的 Pascal 與 Delphi。

2010 年,前五名相同,唯一變化是 C++ 反超 C,而 Python 把 C# 擠下第六名。緊接在後是因 iPhone 掘起的 Object C,即將被擠下榜的 Visaul Basic,最後是 Ruby 與 Matlab。

五年後,Java 與 JavaScript 仍穩坐一、二名,但 Python 站上第三,PHP 第四,C# 則超前 C++ 及 C 成為第五名。C++/C 後方是 Object C,另一個因 iPhone 紅起來的 Swift,資料語言 R 現身,Ruby 仍在榜末。

再過五年,Python 登基了,而 JavaScript 也反超 Java 成為亞軍,C# 站上第四,PHP 下滑至第五。再來是 C++、C、R,Swift 嬴過 Object C,而 Go 語言也進榜了。

資料統計到 2022 Q4,最後的排名前四名相同,天外飛來 TypeScript 把 PHP 擠出前五名,老兵 C++/C 分佔七、八名,Go 升到第九,Swift 與 Object C 消失,新星 Rust 與 Kotlin 登場。

時代的巨輪繼續滾動,程式語言百家齊鳴興衰消長也會繼續下去,祝大家早日找到自己鍾愛的程式語言並樂在其中~
(發現苗頭不對勿留戀,請果斷換牌,別跟你的工具、語言、程式庫談戀愛,噗)


Comments

# by Jackson284

唯一支持 PHP

# by hhh

比較好奇為什麼 typescript 是算一個獨立語言

# by Gary

C語言在某些行業是無可替代的啊,而這些行業也通常都是非常重要的行業 :)

# by Jeffrey

to hhh, 有趣的觀點。能分享為什麼覺得 TypeScript 不能算獨立語言嗎? (前端框架三巨頭中的 Angular 跟 Vue 都是用 TypeScript 開發,React 是用 JavaScript)

# by CY

如果TypeScript是一個獨立語言,Vue的Template格式,React的JSX,是不是也要分出來做一個語言呢? JavaScript也要分ES2015 2016 2017 2018 2019 2020 嗎

# by CY

反正Flutter 和React Native應該要出現在2022 Q4卻沒有出現,很奇怪 Kotlin也沒有 看來那個程式員沒有使用Android的習慣

# by Jeffrey

由留言可知,確實存在 TypeScript 不算是獨立程式語言的看法。這個觀點讓我好奇,所以我請 ChatGPT 做了分析。 我的問題為:有人主張 TypeScript 不能算一種程式語言,請嘗試分析其觀點,並解釋你是否贊同此一說法? 下面是 ChatGPT 的回覆: 有人主張 TypeScript 不能算一種程式語言的觀點可能源自以下幾個理由: 1. TypeScript 是 JavaScript 的超集:TypeScript 是由微軟開發的一種程式語言,它擴展了 JavaScript 的功能,並提供了類型檢查和靜態類型等特性。由於 TypeScript 是建立在 JavaScript 基礎上的,因此有人認為 TypeScript 只是 JavaScript 的擴展,而不是獨立的程式語言。 2. TypeScript 編譯為 JavaScript:TypeScript 程式碼需要經過編譯過程,將其轉換為純粹的 JavaScript 代碼,然後才能在瀏覽器或執行環境中運行。這種編譯的過程使得 TypeScript 更像是一種預處理器,將 TypeScript 代碼轉換為 JavaScript 代碼。因此,有人認為 TypeScript 只是一種工具或擴展,而不是真正的程式語言。 儘管有上述觀點存在,但我個人不贊同這種說法。以下是我對此的解釋: 1. 狀態為超集:雖然 TypeScript 是建立在 JavaScript 基礎上的,但它擴展了 JavaScript 的功能,並引入了類型系統、模組化和其他語言特性。TypeScript 提供了對於程式碼的靜態分析、類型檢查和更好的開發工具支援等優勢,這使得開發者能夠更容易地構建和維護大型專案。因此,雖然 TypeScript 與 JavaScript 有著相似的語法和運行環境,但它提供了額外的功能,這使得它在設計和使用上與 JavaScript 有所區別。 2. 編譯過程:編譯過程不應該成為判斷一種語言是否為程式語言的標準。許多程式語言都需要經過編譯過程,將其轉換為可執行的代碼。編譯過程提供了額外的優勢,例如提高效能、檢查錯誤、優化程式碼等。TypeScript 的編譯過程將 TypeScript 代碼轉換為 JavaScript 代碼,以便在不同的執行環境中運行。這種轉換過程並不影響 TypeScript 作為一種程式語言的本質,它依然具有自己的語法、規則和特性。 總結而言,我認為 TypeScript 可以被視為一種獨立的程式語言。儘管它建立在 JavaScript 的基礎上並進行編譯,但 TypeScript 通過引入類型系統和其他功能,為開發者提供了更強大的工具和語言特性,有助於改善代碼品質和開發效率。

# by 不愛精進的人(國文沒及格過,排版很差請見諒)

之前沒有摸很多JavaScript,後來工作接觸到TypeScript很多, 使用上TypeScript比JavaScript嚴謹很多,相同寫法在JS上可以跑但在TS是不能跑, 用JS寫法去寫結果TS不能過,搞得我那時有點氣氣氣, 後來摸熟TS寫法後,反而JS就不太會寫了XDD, TS真的方便好用跟懶人,變數名稱那些都幫你整理好了, 也不用拉回去看我之前寫甚麼東西,簡單方便 XD 我個人(本身會台語跟國語但不會說台語),對我而言JavaScript是台語,TypeScript是國語, 對我來說這是兩種不一樣的語言,只要好用都是好的程式語言。 語言是人在用,電腦不會管那麼多XD

# by yoyo

原來Delphi/Pascal以前這麼夯

# by 菜雞

我的觀點也是站在TS是JS擴展的角度上,看來這觀點也能分成兩派XD

Post a comment