後端工程師的第一堂課 (2) : 語言的選擇與比較 — 靜態語言

Johnliutw
JohnLiu 的軟體工程思維
7 min readMay 4, 2022

這是篇共 30 天的後端領域入門系列文章,預計 1 -2 週新增 1 個新文章。
在後端領域有許多資源在告訴我們怎麼寫好 Python, Golang, Java, PHP … 等各種程式語言。但卻很少告訴我們怎麼學會 Web 後端領域 的知識。

希望你可以透過這篇文章,搭配你正熟悉中的某門任何程式語言,讓你順利入門 Web 後端 :)

【後端工程師的第一堂課】全系列: https://medium.com/@johnliutw/list/da301cc31b15

介紹完動態語言後,這篇文章會介紹許多中大型網站的骨幹語言 — 靜態語言 ,由於其相較動態語言較佳的穩定性和效能,一直是許多中大型公司的選擇偏好!

C#

C# ( 唸作 C Sharp )是我們偉大的微軟公司在背後支持的語言。Web 界佔在第二名,約佔 7% 左右。

但除了用在網站開發外,還有用在一個遊戲界大家耳熟能詳的引擎 — Unity,基本上目前許多的遊戲都需要靠 Unity 開發,不過我對遊戲開發生態系不熟悉,所以我們只專注在網站開發這端。

C# 是個跟 Java 接近, 87 % 相似的程式語言,當初推動 C# 的 Anders Hejlsberg 也說:

C#是為了取代 Java 而生。

由於是微軟推動的程式語言,因此具有非常完整的技術支援團隊、文件和社群,至少台灣 C# 相關技術社群本身幾乎都有微軟的協助支持,而且也有一群被認證為微軟技術專家的 MVP ,推動整個開發生態與解決許多商業問題。

這個語言開發上由於繼承 Java 的特性,對於從學校體系出身的工程師們來說,十分容易上手,且身為靜態語言類別,具有較嚴謹的開發規範,會在本地開發時期就出現錯誤,提升新手開發程式的程式品質。

目前國內有許多大公司和公家單位使用 C# 作為他們網站的開發語言,
以及很多接案公司也會使用 C# 作為他們的主要開發語言。

優點: 完整的開發生態系,先進的語法功能,大公司技術支持,擁有貼身打造的地表最強 IDE — Visual Studio
缺點: 複雜的程式碼結構,本地編譯測試速度稍慢些

ASP .NET

過去 C# 的網頁框架為 ASP, Asp .net 等等… ,而在 2014 年時推出這個框架的原型,Asp .net vNext,這是一個非常新穎的框架,他的核心引擎是 .net core,也是具有 MVC 設計概念的架構,此框架的系統設定方向從原始的 xml 檔案轉變為 json 此較大眾化的資料格式。

函式庫的部分,目前大部分的 C# 網站還是以 Asp .net framework( 4.0 ) 或 Asp .net MVC 的框架進行開發。

Asp .net MVC 和 Asp .net Core MVC 兩個框架十分相似,因此兩者的開發方式也很雷同,值得注意的是,Asp .net framework 就跟其餘兩者有較大的差別,是屬於較舊的網頁開發模式,因此學習上建議是當作不同的框架預期心理,才比較容易估好學成所會花費的時間。

Java

Java 可以說是個家喻戶曉,鄰里街坊阿公阿罵都略知一二的知名程式語言,
於 1995 年正式推出至今也 20幾個年頭過去了,幾乎所有學校 CS 相關科系的基礎科目,都會使用 Java 作為程式語言入門教材。

除了非常貼近所謂『物件導向設計』的理念,也因為獨特的編譯方式,
擁有極好的跨平台執行效率。

另外他最值得稱許的,是具有當時推出 Java 時,C++ 和 C 語言沒有的自動垃圾回收機制,而自動垃圾回收機制是什麼呢?

不管是什麼樣的程式語言,在執行的過程中,會有很多所謂的垃圾資料產生,包括被使用過的變數、沒有被參考的物件等等…

而在 C 和 C++ 的語言中,要自己寫其他的程式去處理這些垃圾,但是 Java 算是最早擁有自動回收垃圾機制的程式語言之一。兩者之間的關係,就像一個自己要去追垃圾車,買垃圾袋,一個只要丟到子母車內就可以拍拍屁股走人。

目前已更新到 Java 18 的版本,而Java 的語法嚴謹,結構嚴密,因此新手在學習時容易會需要先寫到還不需要懂的程式語法,才能執行出最簡單的 印出文字,這個功能。

但是 Java 的應用十分廣泛,在 Web 端雖然不是市場的領銜者之一,不過在其他企業應用程式、內部軟體等等,許多都是使用 Java 撰寫的。而台灣會使用 Java 寫網頁的,大部分都是銀行金融機構,因此有志在去銀行金融機構服務的讀者,可以考慮以此語言當作 Web 語言的第一步。

另外 Android 的開發也是以 Java 為主,對 App 開發有興趣的人也能選擇此為主要學習與開發的語言~

優點: 應用廣泛,職涯道路寬、開發嚴謹軟體結構完整, 執行效率優秀
缺點: 開發過程極吃電腦記憶體量(緩慢)、程式語法較為龐雜

Spring

Spring 框架是針對 Web 開發端的工作,所推出的 Java web 框架,雖然 Java 原始具有 jsp 的開發方法,但較為老舊且無大型架構性,因此逐漸被成長快速的 Spring 框架取代。

Spring 框架對比一般 MVC 框架最大的特色為使用 控制反轉 這個技術,
降低程式間因改動出 Bug 的關聯程度,因此提升了維護性。

另外 Spring 也整合了原始 Java 內 JDBC, Jsp 等網頁相關的套件模塊。靠著 Java 在各大金融業網站的佔有率。

Spring 在台灣也有一定的成熟度, 許多軟體培訓機構也有豐富的學習課程和優質的講師,而學會 Java 相關技術,在轉往其他語言跑道的陣痛期也會小上許多,因此如果是很有毅力,想學習完整的軟體開發 Web 架構的學生,也很適合從 Java Spring 開始 Web 工程師之路~

以下原系列文無,加碼推出

GO

Go 是 2009 年 Google 團隊推出的程式語言,跟其他的語言相比,非常年輕,但在市場上的市佔率節節攀升,有越來越多的團隊與新專案選擇使用 GO 開發。

GO 是一個效能非常優異的程式語言,可以說是專門被設計來解決大流量問題的程式語言。

Go 的語法風格貼近 C 語言,但卻有垃圾回收機制,可以說是汲取 C 的優點,並改進最讓人詬病缺點的程式語言。

在程式語言的可讀性上,GO 語言也保持了很棒的簡潔性,因此在團隊的擴展性上非常優異,讓許多工程師可以快速的開始使用 GO 進行開發,因此有很多伺服器的程式,都遷移到使用 GO 語言開發。

在 Web 框架選擇上,推薦使用目前社群上最多 stars 數量的 Gin ,Gin 是 Go 裏面代表性的 Web 框架,除了速度效能出色,也在 CPU 等硬體資源的耗損上表現優異。

因此假設你想選一個純粹 Server 介面問題處理的程式語言,我很推薦你選擇 Go 去學習喔!

--

--

Johnliutw
JohnLiu 的軟體工程思維

熱愛軟體全端技術開發,較為擅長 Web 領域,並有多年線上與線下授課經驗,專精軟體新手教學。 相關合作: johnliutw@hotmail.com