大家好,我是程式設計師魚皮。
這麼一看,目前排名前 10 的語言除了 Fortran 沒接觸過外,別的語言或多或少都寫過點兒東西。
Visual Basic 是高中考計算機就學過的了,那會兒我還是計算機課代表來著,掌握著班裡電腦的使用權哈哈哈。
學過這麼多語言,乍一聽好像挺厲害的,但事實上,學過的語言很多,熟練的就那麼幾個。很多語言學完之後,不寫就忘了,就好像從來沒有學習過一樣。
那我為什麼要學這麼多程式語言?是怎麼學習的?學了這麼多語言對我有哪些好處和壞處?現在我們到底應不應該學多門語言呢?
下面分享一下。
為什麼學這麼多程式語言?
回顧我學語言的過程,無非就是四個原因:感興趣、學校讓學、找工作混飯吃、還有就是專案要用。
老實說,現在計算機專業的同學,光跟著學校學,基本就會好幾種語言了吧。
先說興趣,我在高中時就很想做自己的網站,只不過那會兒是用什麼 Front Page,Dreamweaver 拖拖拽拽就搞定了(應該沒有多少同學用過吧)。所以上了大學,我第一個自學的就是前端,對應的語言就是 HTML、CSS、JavaScript 三件套,當時的目標就是加入學校的網站建設工作室,能來點兒外快。
那會兒真是青澀啊,手裡拿了本 HTML 5 入門教程,感覺擁有了整個世界。現在回想起來,只覺得頭頂涼颼颼的~
再說說學校教的語言,當時我們剛入學第一個接觸的是 C 語言,現在好像很多學校改成了直接講 C++?
可惜的是,我當時並不開竅,心思也不在學習上,所以學的一塌糊塗,最後寫了個能在小黑框裡執行的圖書管理系統就畢業了。
之後我開始學 C++,因為感覺跟學校課堂學 C 語言時沒學到啥(也可能是我比較菜),所以這次我選擇上網自學(比如看圓臉妹妹的 C++ 課堂)。大概學了一個月左右,寫了一點簡單的桌面程式,我就放棄 C++ 了,轉戰 Java。一方面是聽說 Java 好找工作,好混飯吃;另外一方面當時我可能對學習新語言有點上癮,就想著多嘗試嘗試。
剛開始學 Java 就是學基礎語法,直到學完我都不知道為啥 Java 好找工作,感覺能做的事和 C++ 差不多。直到後來學了企業 Java 開發,也就是 Java Web,接觸了 Spring 之類的框架後,我才感嘆到:“Java 真香!”
於是我決定在後端開發這條路上堅持走下去,後來也去學了 SQL(結構化資料查詢語言)、Scala 等程式語言。SQL 可是後端程式設計師的基本功,大家可以用我做的
然後我本來以為今後再也不會用 C++ 了,但聽說演算法競賽、保研機試啥的都是它,所以後來就拿 C++ 刷了幾百道 OJ 題目。還有個戲劇性的事,打 s 我也沒想到最後我的畢設還是拿 C++ 做了個影像處理程式,當時花了一些時間專門學習 OpenCV。
再聊聊其他語言,基本都是有專案需求的時候才會學習。比如我大一學 Python,只是為了完成一個資料抓取 + 視覺化專案,聽說用 Python 簡單、做的快,就學了幾天,對照著 Demo 刪刪改改就搞定了;學 Golang 是因為當時在實驗室搞區塊鏈,有個框架是用的 Go 語言;學 C# 也是因為在實驗室有個桌面端專案要用。後面專案用不到了,這些語言我也就慢慢陌生了。
對了,還有 PHP!有趣的是,我對 PHP 的印象其實發生了好幾次轉變。
大一的時候,聽說它是世界上最好的語言,我就學了。當時因為也沒怎麼深入學習過別的程式語言,所以覺得 PHP 挺香的。但後來等前端和 Java 熟練一些,感受到前後端分離開發的優勢後,我就有點對 PHP 嗤之以鼻了。
由於效能和安全問題,再加上競爭對手的崛起,近幾年來 PHP 也一直呈現衰落之勢。目前熱度排名 16 位,甚至已經被新興語言 Rust 超越:
但最近,我卻偶爾會神神叨叨一句:“PHP 是世界上最好的語言!”
為啥呢?因為對於需要 服務端渲染 的網頁開發場景,PHP 的開發效率的確是高的。
最近我們在做
所謂的服務端渲染,就是在伺服器獲取到資料並且拼接好頁面後,再返回給瀏覽器,可以提高頁面的載入速度,並且非常有利於 SEO!
但我個人體驗下來,開發服務端渲染網站的成本比普通的網站要高很多,我們用的是前端的 Next.js 框架,要專門區分服務端和客戶端元件。這個時候,PHP 就樂了:我天然支援服務端渲染!
要不說 PHP 是曾經開發中小型網站的王者呢,知名的部落格站點 WordPress 就是使用 PHP 實現。
所以到底什麼語言、什麼框架最好? 還是要看具體的需求,語言和框架都只是工具。
像華為最近新出的倉頡語言,別的不說,肯定是未來開發華為應用的首選對吧~
學太多程式語言的煩惱
看到這,肯定有同學說了:會這麼多程式語言,那不是無所不能,肯定很爽吧!
但事實上,程式語言學多了,也讓我有了一定的煩惱。
因為每種語言在資料型別、語法和 API 上都有一定的差別,所以會的語言多了後,我時常陷入混亂,把語法給記混。尤其是學 Go 語言的時候,這玩意和其他語言的語法差別賊大,簡直讓我懷疑人生,大家可以感受一下:
我剛開始做全棧開發的時候,又要寫 Java、又要寫 JavaScript,所以就老是搞混,在 Java 中寫 JavaScript 的函式,在 JavaScript 中 new Java 的物件。再加上我白天工作用 Mac 電腦,晚上下班用 Windows,開發工具的快捷鍵也不一樣,感覺像是帶了痛苦面具。
所以有的時候,我真的很想專注地去寫一門語言。
但是,學了這麼多語言後,我變禿了,也的確變強了!
所以下面分享下學習多門語言的好處。
學多門程式語言的好處
首先,我發現自己摸清了學習語言的套路,無非就是資料型別、流程控制、函式物件和一些特性,因此學新的語言變得越來越輕鬆快速。比如我之前沒有學過 Kotlin,但後來工作中要讓我重構 Kotlin 的程式碼,我沒花額外時間去學習,也基本也都能看懂。因為說實在的,絕大多數程式碼都是 if ... else ... for 組成的業務邏輯。
我學到了更多的設計思想、瞭解了每種語言更適合做什麼,比如什麼是解釋型語言和編譯型語言,有什麼區別,又該如何選擇。
我看程式碼時再也不用被語言所束縛,基本啥都能看懂,大家在交流程式語言時,我也有了更多的發言權,啥都能聊兩句,也不用再因為爭論 “什麼是最好的程式語言” 而跟別人打架了。
此外,我在開發時有了更多的選擇。比如處理 Excel 表格,如果我只會 Java,那隻能用 Java 相關類庫,不夠方便;但因為我也會 Python,就有了更多類庫可以選擇,幾行程式碼就搞定了,效率拉滿。
最重要的,也正是學了更多的語言後,我才找到了最適合自己的語言,從前端轉到了 Java 後端。
建議
看到這兒,大家覺得有必要學多門程式語言麼?
我覺得,技多不壓身,會的語言肯定是越多越好。
雖說可能會有點混亂,但是現在編輯器的語法校驗功能都很強大了,所以哪怕語法輸錯了,也能很快糾正過來,起碼比你從零開始學的成本要低。還有一種好方法,乾脆就別去記憶語法,熟能生巧,哪怕忘了也可以透過搜尋引擎、看文件、問 AI 等方式快速找到正確的寫法。
不過千萬要記住:無論你想學多少種語言,都要先重點學好一門!一門通門門通,深入理解一門語言後,再學別的就很簡單了,很多語法概念、程式設計經驗、除錯技巧都是相通的。另一方面是時間有限,把所有語言都學的很好是不現實的,對於找工作來說價效比也是不高的。畢竟想學好程式設計,語言只是最基礎的一部分,還有太多技術、工具、方法、思想要學了。如果什麼語言都草草地去學一下語法基礎、淺嘗輒止,那就相當於是在反覆橫跳,到頭來還是不會做專案,找工作時也會吃虧。
對於剛選擇計算機專業或者剛入門的同學,可以多嘗試學習不同的程式語言,前端、Python、Java、C++ 都是適合的,儘快找到自己真正感興趣的語言和方向,之後就一條路堅持往前走就好。
更多
💻 程式設計學習交流:程式設計導航
📃 簡歷快速製作:老魚簡歷
✏️ 面試刷題神器:面試鴨