iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
1

語言的選擇與比較( 2 )

第二天,我會介紹一些市佔率『總體』較低,
但許多新創產業,以及國外也很常使用的網站程式語言,
他們並不是不好用,只是還沒有得到那麼多愛啦~

Ruby

ruby
Ruby 是筆者目前最常用的程式語言,也是最早能用來開發的程式語言,
這個語言是日本人松本行弘開發的,因此會看到許多早期的文件用日文編寫,
作者當初設計的理念為:減少開發不必要的瑣碎時間、良好的介面設計,
因此這個語言對於『略懂』網站開發的人來說,非常快速能夠上手,
也提供許多指令和語法,快速完成許多複雜的邏輯功能,
但也因此,對新手來說,我認為要『學懂』這個語言的學習曲線,
相較PHP, C# 等語言,稍微高了一些。
但是台灣也有像 “五倍紅寶石” 這樣的組織在推廣這個語言,
因此學習上不用擔心沒有好的資源可以學習,
不過會非常建議使用 Mac 或 Linux 作為 Ruby 開發的作業系統,
因為 Ruby 在 Windows 上的開發有很多怪雷,造成許多不便。
通常 Ruby 的開發有 99% 都是搭配 Rails 進行,所以我們可以很快速地跳到 Rails 區塊

優點: 語法簡單輕便、開發與部署高效、大量易於使用的商用套件
缺點: 程式執行效率較差、學習曲線較高

Rails

rails
基本上,Ruby 這個語言決大部分都是使用 Rails 作為網站開發框架,
江湖上人稱 [Ruby on Rails],簡寫為 RoR,是個嚴格 MVC 架構的框架,
這個框架的核心概念為『不做重複的事』與『慣例優於設定』(人類的認知慣例大於自行設定),
這個框架幾乎是其他語言 MVC 框架的參考始祖,是個非常簡潔漂亮的框架,
更新速度也非常快速,在今年 8月份時更新到了 5.2.1 版,非常符合 Web 發展的脈動,
並且許多超熱心的好心大大們,都會寫好許多方便的套件可以在 Rails 下使用,
最經典的莫過於 devise 這個套件,靠幾行指令就能生出完整的會員系統。
雖然這個框架能幫新手快速建立應用程式,但也因為『異常』快速,
會讓新手工程師沒有接觸到一些必要的概念,就直接獲得成果,
因此在真正做客製化調整時,會有比較大的學習曲線和挫折,
另外 Ruby on Rails 應用程式的執行效率,和其他語言相比,是一直被詬病的問題,
但在一般正常的使用流量下,還是能提供足夠的執行速度。
Ruby on Rails 在台灣使用的公司都以新創為主,
因為新創有『快速迭代』以及『一人多工』的需求,
這是 Ruby on Rails 工程師和框架最大的特色,
合格的Ruby on Rails 工程師,可以說是至少是個基礎的全端工程師(前後端皆開發),
但也因為學習曲線稍高,人才供給量不是說很大量,
但在台灣有五倍紅寶石這個優質的培訓機構,
也有小弟我參與的 Rails Taiwan 社群很願意幫新手們解決問題,
因此偷渡一下ㄏ : https://www.meetup.com/rails-taiwan/
歡迎每週二晚上來找我們聊聊~~

Java

java
Java 可以說是個家喻戶曉,鄰里街坊阿公阿罵都略知一二的知名程式語言,
於 1995 年正式推出至今也 20幾個年頭過去了,
幾乎所有學校 CS 相關科系的基礎科目,都會使用 Java 作為程式語言入門教材,
除了非常貼近所謂『物件導向設計』的理念,也因為獨特的編譯方式,
擁有極好的跨平台執行效率。
另外他最值得稱許的,是具有當時 C++ 和 C 語言沒有的自動垃圾回收機制,
自動垃圾回收機制是什麼呢?
簡而言之,程式在執行的過程中,會有很多垃圾,
而 C 和 C++ 要自己寫程式去處理這些垃圾,
但是 Java 首創自動回收垃圾的機制,
就像一個自己要去追垃圾車,買垃圾袋,
一個只要丟到子母車內就可以拍拍屁股走人的關係。
目前已更新到 Java 10 的版本,Java 的語法嚴謹,結構嚴密,
因此新手在學習時容易會需要先寫到還不需要懂的程式語法,
才能執行出最簡單的『印出文字』,這個功能。
但是 Java 的應用十分廣泛,在 Web 端雖然不是大大大大王,
但在其他企業應用程式、內部軟體等等,許多都是使用 Java 撰寫的。
台灣會使用 Java 寫網頁的,大部分都是銀行金融機構,
因此有志在去銀0行金融機構賣肝的,可以考慮以此語言當作 Web 語言的第一步。
另外 Android 的開發也是以 Java 為主,對 App 開發有興趣的人也能選擇此語言~

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

Spring

spring
Spring 框架是針對 Web 開發端的工作,所推出的 Java web 框架,
雖然 Java 原始具有 jsp 的開發方法,但較為老舊且無大型架構性,
因此逐漸被成長快速的 Spring 框架取代。
Spring 框架對比一般 MVC 框架最大的特色為使用『控制反轉』這個技術,
降低程式間因改動出 Bug 的關聯程度,因此提升了維護性。
另外也整合了原始 Java 內 JDBC, Jsp 等網頁相關的模塊。
靠著 Java 在各大金融業網站的佔有率,Spring 在台灣也有一定的成熟度,
許多軟體培訓機構也有豐富的學習課程和優質的講師,
而學會 Java 相關技術,在轉往其他語言跑道的陣痛期也會小上許多,
因此如果是很有毅力,想學習完整的軟體開發 Web 架構的學生,
也很適合從 Java Spring 開始 Web 工程師之路~

Python

python
說到程式語言,應該現在的年輕人沒有人沒聽過 Python 這個當紅炸子雞,
Python 是工程師最大問題解答網站: Stackoverflow ,統計成長速度最快的程式語言,
也是現在最熱門機器學習、AI 等領域的主流撰寫語言。
https://ithelp.ithome.com.tw/upload/images/20181016/20107758YO45ZVsE84.png
也有許多學校的 CS 基礎課程,要以 Python 取代 Java 作為第一堂程式語言入門課程,
會有這個現象,是因為除了它非常簡潔易讀的程式語言結構,
而且本身的編譯方法,讓 Python 程式可以快速自由的跨平台執行,
不像 Ruby 受限於作業系統、Java 受限於緩慢的執行測試速度。
目前 Python 慣用的版本有兩個, Python 2 和 Python3 ,
兩個版本不能說是可以無痛切換,會有一些語法上設計的轉變,
因此推薦新手從 Python 3 開始學習,比較不會有未來轉版本改程式語法架構的問題。
Python 被廣泛應用於各種軟體開發中,不過我們就專注的討論『Web 開發』的領域。

優點: 語法簡單、應用層面極廣、熱門度高未來性看好
缺點: 執行速率較慢,縮排寫法新手易錯

Django

django
Django 的軟體設計模式為『MTV』,是一個與 MVC 略有不同,但核心概念相同的設計方法,
因此新手不用擔心學了 Django ,再遇上其他 MVC 模式的網站,會有轉不過去的問題。
Django 時常被拿來與另外一個常見的 Python 框架 “ Flask ”比較,
Flask 較為輕量化,結構簡單,適合快速製作一些機制簡單的網站,
如果要用在長期穩定的大型商業結構,還是推薦使用 Django。
不過目前台灣職場使用 Python Django 開發網站的公司實在不多,
主要也是以新創為主。
因此建議新手學習 python 可以不用把自己侷限在『Web』領域,
而是多碰觸 Python 針對不同問題延伸的熱門套件,像是 numpy, Panda 等,
才會有更好的職涯發展。

Node js

Node js
Node js 是近年非常火紅的後端程式語言,因為它實現了,可以在後端執行 Javascript 的機制,
JavaScript 是前端幾乎說是唯一使用的程式語言,
因此他提供了前端工程師快速進入後端的渠道,快速建立全端的能力,
並且由於 JavaScript 本身語言簡單易懂的特性,讓 Node.js 也非常易寫,
這個語言雖然易寫,但他的執行效能卻非常優良,與前面提到的 Ruby, Python 不同。
Node js 發展速度非常快,已經有許多大型科技巨頭在他們的產品內使用 Node js,
此外,由於全端開發的特性,許多新創公司也開始選用 Node js 建構他們的 MVP 產品,
Node js 也是能跨平台開發與執行的語言,因此不需要擔心使用的筆電類型,
但可愛之語言必有其可恨之處,難以維護是他常被人詬病的地方,
如果在建構 node js 應用程式時,沒有好好規範撰寫規則,
那就很容易出現很多『麵條程式碼』,也就是説看起來很像一堆常常義大利麵的程式碼,
這是 JavaScript 語言的致命傷,因為實在太好隨便寫隨便過了XDD

優點: 開發快速,輕量、執行效率高、可跨端跨平台執行
缺點: 維護困難,程式碼有Bug 影響範圍較巨大

Express

Node js
Express 是 Node js 官方唯一認證的建議 Web 開發框架,
他並不是一個完整嚴謹的 MVC 開發框架,
但此框架把一些後端常用到的機制包裝成易用的模組,降低開發者的知識負擔,
像是複雜的路由機制( router ) 和網路問題 ( http )( 看不懂的話就知道這是複雜的東西了吧XD ),
因此如果你是想要自學入門後端工程領域,且對於新創企業較有興趣的新手,
我會非常推薦從這個輕量級的框架與語言開始入門,
而台灣雖然因為此為新興 Web 語言,較無老牌穩定的社群,
但新興的社群很多,而且其實也能參加 Javascript 的社群,
也有許多熱情的工程師和學習資源~

結束了語言的比較後,之後會開始從基本的程式語言邏輯開始教起,
會手把手帶大家開始了解『程式語言』的基本機制~

如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~
參考資料:
https://stackoverflow.blog/2017/09/06/incredible-growth-python/


上一篇
[Day1] 語言的選擇與比較( 1 ) 與前言
下一篇
[Day3] 程式基本邏輯(1) - 變數與資料型態
系列文
菜鳥後端工程師的第一門課30

尚未有邦友留言

立即登入留言