首頁 後端開發 Python教學 一位國外老程式設計師的反思:C、Python、Java 不可兼得,專心學習好程式語言就好!

一位國外老程式設計師的反思:C、Python、Java 不可兼得,專心學習好程式語言就好!

Apr 30, 2023 pm 03:01 PM
python java c

一位国外老程序员的反思:C、Python、Java 不可兼得,专心学好一门编程语言就行!

最近,著名遊戲程式設計師、id Software 創辦人之一John Carmack在訪談中表示,程式設計師應該專心學好一門程式語言。這倒讓我感到有點驚訝。雖然我個人非常贊同這項建議,但在現今的程式設計師圈裡,這種觀點是有爭議的。

我猜,我就是大家所說的「老程式設計師」了。我的歲數不小了,一生都在從事程式設計工作,而且從步入社會之後就一直在從事這項專業工作。有時,我覺得自己是個程式語言愛好者,親眼目睹了許多程式語言的發展。回顧過去,這是一段令人興奮的歷史,我們會不由自主地得出一個(錯誤的)結論:多掌握幾種程式語言總沒壞處。程式語言的歷史發展非常精彩,但現今的發展情勢相對較平和。

在本文中我想回顧一下曾經的歷史,總結經驗教訓,並看一看究竟哪種程式語言才是最好的標準化語言。

史前階段(50年代~80年代)

隨著計算硬體和電腦科學作為一門學科逐漸興起,電腦程式設計(除了處理器本身的指令之外)也開始緩慢地發展。在最初的幾十年裡,程式語言主要是學術界的研究對象,也俘虜了一小部分研究人員。程式設計師的選擇很有限,主要取決於領域。

商業程式設計使用COBOL,科學程式設計使用Fortran,還有一些其他語言通常用於特定領域、研究或硬體。

對大多數程式設計師來說,整個程式設計生涯或在很長一段時間裡,只需專心學習程式語言。雖然有人對程式語言的設計感興趣,但彼時該領域還很稚嫩。儘管出現了一些很有趣的創新,但對於如何才能設計出好的程式語言,人們還沒有很好的理解。

專業化(80年代~90年代)

隨著電腦硬體數量的增加以及用途的日益多​​樣化,程式語言的數量也開始增長,編程語言的選擇變成了一個流行的話題。人們開始對程式語言進行分門別類。我們可以透過程式設計師的種類以及他們渴望達到的專業水平,判斷他們會選擇哪種語言。

個人電腦程式設計愛好者使用越來越流行的BASIC。這是一種很荒誕、原始的程式語言,卻被廣泛使用並成為了一代程式設計師(包括我自己)的引路人。 Pascal引入了結構化編程,並產生了巨大的影響(Pascal與Turbo-Pascal 和 Delphi 建立了一個蓬勃發展的社區,但最終消失了)。

起源於UNIX的C成為了系統程式語言。 C 成為了C的後繼者,並藉鑒了Smalltalk的物件導向編程,成為了專業應用程式和服務開發人員的語言。最終 Visual Basic(與BASIC毫無關係)普及了“可視化編程”,滿足了應用程式開發的需求(隨著 Windows 的出現而迅速增長),並成為大眾的首選。但人們普遍認為,VB程式設計師是領域專家兼職程式設計工作,而C和C 才是「專業」的程式設計師。

這個階段,人們仍然沒有很好地理解程式語言的設計,導致許多流行的程式語言很多方面的設計都不太理想。 C語言簡單而強大,但很難熟練,有可能出錯的地方太多。 C 的意圖雖好,但最終的設計不佳,而且使用感不好。 Visual Basic既有趣又簡單,但有點兒戲,在當時的技術條件下,優雅與效率都不達標。 Smalltalk 和 LISP 都是有趣而優雅的語言,但由於捆綁到了專門的硬體和昂貴的工具,導致最後失勢。

成熟(90年代~2000年)

後來,網路興起。網路對程式語言的影響究竟有多大也許未可知,但無疑這是一個重大因素。很久以前,程式語言是一個稀有之物,通常誕生於研究實驗室和大型商業公司;但如今似乎任何一個人都可以開發出自己的程式語言。曾有一段時間,PERL成為了流行的通用語言,涵蓋了從系統管理到 Web 程式設計的各個方面。

後來,Python從科學研究語言變成了簡單易學的通用語言,儘管最初發展緩慢,但最終席捲了整個世界。據傳,Netscape 的 Brandan Eich只花了幾天時間就開發出了JavaScript(作為功能十分有限的瀏覽器擴充語言)。這不僅證明Eich是個天才,也證明那個時期人們對程式語言的設計有了很好的理解。

這段時期出現了許多其他的程式語言,其中最有名的是Java。這門語言本身並沒有特別之處,但它提供的JVM是一個通用的運行時環境,實現了“編寫一次,到處運行”,也就是說該語言十分通用,不受特定硬體、作業系統、或目標環境的限制。嚴格來講,早期的JVM並沒有什麼值得炫耀的,但它開創了語言運行時及部署選項日益成熟的時代。

迅速發展(2000年~2010年)

#自JVM以後,程式語言就開始朝著一個有趣的方向迅速發展。源自Self語言(Smalltalk的後繼者,雖然優秀但非常失敗)的即時編譯器(JIT)得到了更深入的研究,從而誕生了Java的HotSpot,而微軟為了對抗Java推出了.NET CLR。 .NET則更進一步,將 CLR(Common Language Runtime,公共語言運行時)作為了多語言的通用運行時,而不僅僅是C#。事後看來,這是一個分水嶺:程式語言的選擇變得無關緊要。

這可能不是微軟做出這個選擇的主要原因(當時他們仍在努力繼續支援流行度非常高的Visual Basic,還有C#),再加上那段時間微軟的封閉式許可,最終CLR未能成為最受歡迎的運作環境。但在千禧年之後的第一個十年中,程式語言的數量越來越多,而且無所不在。

另一方面,程式設計師的數量也出現了爆炸性成長。隨著軟體的需求快速增長,以及工具和知識的普及,全世界數百萬人都變成了程式設計師。這些程式設計師也是人類,他們渴望強烈的群體認同。就像一般人對運動團體有著強烈而非理性的看法一樣,程式設計師也開始在程式語言的選擇問題上站隊。許多程式設計師迫不得已選擇某種新興、獨特、特殊的程式語言。

例如,有人聲稱函數式程式設計才是王道、Ruby比Python好、Scala將徹底改變資料科學、不選Clojure是你的損失…至此,程式語言從線性發展進入了混亂的達爾文優勝劣汰時期。

超標準化(2010年至今)

原以為,這個時期的人們會意識到某些程式語言太瘋狂,無法持續發展。然而,實際情況並非如此,相反,情況出現了意想不到的轉變。在「雲端」運算時代,許多應用程式和服務的部署跨互聯網上的大量分散式節點,使用哪種程式語言似乎已無關緊要。程式設計師都在開發互相交流的獨立元件,又有什麼必要糾結程式語言呢?元件之間並不需要知道彼此是用哪種語言寫的。如果程式設計師喜歡用X語言寫元件,那就用這種語言好了。誰在乎呀。

在不同機器上運行的組件也是如此,隨著Docker的發布,容器得到了普及,無論是在一台機器上運行的應用程序,還是通過編排軟體在機器集群上協作運作的軟體,都可以使用相同的範例輕鬆管理。

如今人們仍在開發新的程式語言,其中不乏前途無量且備受期待的語言。有些是特定領域的(行動應用程式使用的Swift、Kotlin 和Dart,以太坊智能合約使用的Solidity),而有些則比較通用,但每種語言都得益於這幾十年來積累的經驗教訓(面向雲端程式設計的Go,系統導向的Rust,以及JavaScript的超集TypeScript,等等)。

同時,程式設計世界達到了一個新的成熟度,我們不再追逐每一種新趨勢,採用每一種新語言。我們都成長了。

專心學好一門程式語言

毫無疑問,有些程式語言確實更為出色,而有些程式語言則更適合處理某些特定的用例。任何從事過程式設計一段時間的人都清楚,學習新語言一點也不難。大多數程式設計師只需一個下午,就可以輕鬆學習一門新語言的基礎知識,使用幾天後就可以多或少地提高工作效率。新手程式設計師可以從任何一門主流程式語言開始學習,並將學到的程式設計知識輕鬆地應用到其他語言中。

然而,頻繁變更程式語言並非好事,原因主要有兩個。首先,學習程式語言有點像學下棋。你可以快速學習規則,但這並不意味著你可以戰勝經驗豐富的玩家。你需要學習策略,而這需要時間和練習。這是一個由最佳實踐、陷阱、最佳化技術,以及函式庫、工具和社群組成的生態系統。其次,程式設計雖簡單,卻容易出錯。

即使擁有常見的程式設計經驗和最好的工具,將想法轉換為電腦程式碼也不是一件直覺行為。無論程式設計師建立了怎樣的直覺,也必須經歷反覆使用、即時回饋和糾錯的循環。每次更換程式語言,你都需要付出代價。所以,根據我的經驗,程式語言的選擇很重要,但是一旦做出了選擇,從長遠來看,就應該堅持下去。

如何選擇程式語言

#時至2022年,我們在選擇程式語言時,需要考慮以下幾點。

首先,最關鍵的考慮因素是語言的適用範圍。如果是特定的領域,必須使用一些特定於領域的語言,則最具普遍適用性的語言是首選。值得慶幸的是,自從Java提出「寫一次,到處運行」以來,執行時間和部署不再是問題,成本和授權也不再是限制因素。時至今日,所有程式語言、運行時以及各種工具基本上都可以免費取得。如果某種語言不適合某個特殊的場合,只能說它的流行度不夠,沒有普及到所有人;要么是因為一些基本因素,導致該語言確實不適合該任務。

流行度很重要,我們應該選擇擁有強大的社群、豐富的資訊來源、大量其他程式設計師可供合作或僱用的語言。任何不受歡迎的語言都不值得選擇。如果遇到特殊情況,則選擇會更困難。沒有任何一種語言能夠適用於所有場景,但在理想情況下,通用的主流語言應該足以應付大多數場景。

最後,我們選擇的程式語言應該優於大多數其他語言。即使在2022年,仍有一些糟糕的程式語言,難以學習和使用,很容易讓程式設計師陷入困境。

#鑑於上面的陳述,我認為實際上我們並沒有太多選擇。下面,就讓我們來看看這些最佳程式語言。

最佳程式語言

JavaScript / TypeScript

#程式語言界的JavaScript就像人類溝通時所使用的英文一樣。它是最受歡迎、最通用的程式語言,適用於許多不同的場景(瀏覽器/前端、系統/後端、作為擴展語言嵌入到許多環境中)。 JavaScript的執行階段(V8 / Node / Deno)非常高效,擁有許多出色的工具和龐大的社群。

TypeScript是JavaScript的超集,引進了強型別和標準工具,正快速發展成為JS程式設計的預設選擇。

Rust

Rust擁有C/C 的所有功能,更容易使用,而且也沒有太多陷阱。 Rust的社區和生態系統非常強大且不斷發展,工具也很好用。如果你需要的功能Rust都提供了,那它絕對是不二之選。以前只能使用C或C 的場合,如今也可以選擇Rust。此外,Rust也正在建立自己的WebAssembly通用語言(WebAssembly可以說是終極版的「編寫一次,到處運行」的運行時)。

強而有力的競爭對手

Python

我使用Python已經超過20年了,可惜時至2022年,Python依然算不上真正的通用程式語言。原因之一是,Python仍然非常低效,許多注重性能的場合都無法採用Python。還有一個原因是,它未能進入主流的面向使用者環境,例如網頁瀏覽器或手機。儘管如此,Python仍不失為一種出色的程式語言,而且在資料工程/資料科學/機器學習中佔據了重要位置,所以如果你從事這些領域的工作,那麼Python絕對是一門值得了解和熱愛的語言。就目前的情況來看,Python很可能會作為資料科學的通用語言繼續發展下去,但可能無法突破這個領域。

Go

Go是一種非常適合「雲端」程式設計的語言。 Go語言優雅、易於學習和使用,擁有出色的社群、生態系統和工具。它被廣泛應用於雲端原生領域的核心產品,因此它會長期發展下去。不幸的是,Go並沒有普遍的適用性,基本上無法用於網路伺服器以外的環境。此外,由於Go設計上的選擇,它在C/C 世界中表現不佳。 Go固然好,但如果必須做出選擇,凡是Go能實現的功能Rust都可以實現,隨著時間的推移,Go有可能會被主流系統程式語言取代。

C#/Java

C#及其生態系統非常出色,你可以用它來實現很多功能。 Java的各個方面都比不上C#,所以我不理解為什麼有人會喜歡它,但Java確實很流行。 C#的應用很廣泛,不僅是一種系統和「商業」語言,現在更是延伸到了行動應用程式和瀏覽器。強大的運行時,偉大的生態系統。但是,除非你需要C#的一些量身定制的運行時間和工具的功能,否則在短期內C#很難與JavaScript和Rust競爭。

C/C

根據林迪效應,C和C 在未來幾十年內將繼續流行下去。如果你已是這兩種語言的專家,肯定不愁找工作。如果有這方面的需求,花時間學習二者也是不錯的選擇。否則,選擇Rust更合適。

榮譽獎

Swift / Kotlin / Dart

##這幾種語言在特定領域佔有一席之地。如果需要移動UI編程,則這些是不錯的選擇。但JavaScript的適用性更普遍,也同樣適用於行動開發,因此我們更應該選擇JavaScript。


LISP(Racket / Clojure)

LISP很特別,即使日常工作沒有這種需求,也應該學習一下。 Racket 是最先進的、非常複雜的語言(實際上它是一種語言建構工具包)。據傳,Clojure的功能很強大,因為它的目標是JVM,可以使用 Java 函式庫。但我不清楚這個賣點有多大作用。

Haskell / F# / Scala

函數式語言很重要。在某些情況下,它們是更優的選擇。 Haskell是函數式程式設計的代表。 F#具有更好的普遍適用性,因為它的運作平台是CLR,並且可以使用 .NET 函式庫。 Scala不是純粹的函數式,但非常通用,並且在 JVM 上運行。

Julia / R / MATLAB

Julia非常適合數學領域。 R和MATLAB都有各自擅長的特定場合。不過,在Python主導的資料工程領域,這些程式語言恐怕很難存活。

PowerShell

如果你從事shell編程,那麼PowerShell是迄今為止最好的選擇。它適用於所有作業系統,所以我們沒有理由使用任何其他 shell。 PowerShell也算是一種通用程式語言,但實際上在非系統管理之外,沒有人使用它。

遲暮之年

PHP / 紅寶石/ PERL

這些語言也曾有過輝煌的歲月,主要是作為網路“後端”語言。無論你如何看待這些語言,如今都不該再在它們身上白花力氣。它們都在走向滅亡。

Visual Basic / VBA

VB 改變了世界,但如今卻被淘汰出局了,無論是作為通用語言還是作為對其他程式的擴展。在遙遠的過去可以用VB實現的功能,如今都可以用其他現代語言更出色地實現。

總結

我喜歡程式語言,而且永遠對新語言充滿了好奇。但是,就目前而言,TypeScript是我心目中的C位,而在需要強大的功能和低階存取權限的情況下,Rust居第二。我相信,2022年幾乎所有程式設計師都與我有類似的看法。

以上是一位國外老程式設計師的反思:C、Python、Java 不可兼得,專心學習好程式語言就好!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

Python vs. C:了解關鍵差異 Python vs. C:了解關鍵差異 Apr 21, 2025 am 12:18 AM

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

Golang vs. Python:利弊 Golang vs. Python:利弊 Apr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t

Laravel vs. Python(與框架):比較分析 Laravel vs. Python(與框架):比較分析 Apr 21, 2025 am 12:15 AM

Laravel適合團隊熟悉PHP且需功能豐富的項目,Python框架則視項目需求而定。 1.Laravel提供優雅語法和豐富功能,適合需要快速開發和靈活性的項目。 2.Django適合複雜應用,因其“電池包含”理念。 3.Flask適用於快速原型和小型項目,提供極大靈活性。

Python vs.C:您的項目選擇哪種語言? Python vs.C:您的項目選擇哪種語言? Apr 21, 2025 am 12:17 AM

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

Python vs. JavaScript:比較用例和應用程序 Python vs. JavaScript:比較用例和應用程序 Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

作曲家:通過AI的幫助開發PHP 作曲家:通過AI的幫助開發PHP Apr 29, 2025 am 12:27 AM

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

在Python和C之間進行選擇:適合您的語言 在Python和C之間進行選擇:適合您的語言 Apr 20, 2025 am 12:20 AM

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

See all articles