iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
1

這幾天陸續比較了Sinatra、Laravel、Django
接下來自然是輪到Phoenix
如果有人擔心在前五天就比較完所有框架,那接下來的二十幾天要寫什麼怎麼辦?

不用擔心
接下來我會依照新手指引(確實我也是新手)
一個一個陸續完成環境設定與建置
利用每一個框架實做一個基本的CRUD網站
我想在實作的過程中,應該會有更多的發現
可以提供給猶豫不知該選哪個入門的人參考

Productivity vs Performance

在正式進入之前,我想先談談怎樣算是一個好的框架,以及各種取捨
坦白說這樣的討論應該擺在很前面
畢竟沒有標準,就無從比較
但我希望我看過更多可能之後,再來選擇我想要的標準

在有關框架的討論之中,常常被提出來比較的是:
「開發效能」(Productivity)與「執行效能」(Performance)
比方說我最愛的Rails在開發效能這點上相當傑出
但同時執行效能就常常為人所詬病
最知名的就是Twitter的案例
當產品爆紅到某個程度的時候,需要用java或其他效能更高的語言改寫
來降低機器成本
儘管Ruby本身也時時更新想要提升執行速度(事實上確實加快了許多)
而且坦白說,不是每個團隊都會遇到Twitter障礙
但這件事終究成為Ruby使用者心中一個硬傷
畢竟每個開發者都會擔心
要是自己的團隊不小成為下一個Twitter,
整個專案需要重新改寫一遍那豈不是很麻煩嗎?(跟中樂透的理財規劃有異曲同工之妙)

Son of Erlang and Ruby

我以前聽過一句話:

新的語言之所以能取代舊的語言成為流行,正是因為它能解決舊語言的問題

這句話說得鏗鏘有力
Elixir就是產生來解決開發與執行效能不能兩全的問題!
(至少他是這麼宣稱啦)
要介紹Elixir,首先要先從Erlang開始講起:
Erlang是一個相當古老的語言,1987年由瑞典的愛立信公司所發表
一開始是私有軟體,在1998年才開放原始碼
長期運用在電信交換業務上,經過時間證明是相當可靠而且容易擴充的語言
他的特點是支持熱插拔,運作中也可以更新
在一般機器上一萬連線視為考驗的情況下,單一機器的Erlang可以支持兩百萬的連線
缺點是不太好寫(XD)

在2013年誕生的Elixir繼承了Erlang所有的優點
同時擷取了Ruby等現代語言的優點,簡潔好寫
這是因為Elixir的創作者 José Valim(葡萄牙文,巴西人)他同時也是Ruby on Rails的核心團隊成員
所以在許多地方都會讓Rails工程師感到相當親切(這也是為什麼這麼多Rails工程師感興趣的原因)
也有人說Elixir是Erlang與Ruby的小孩

Power of Elixir

接下來簡單介紹一下 Elixir 的特色:

  • 首先他並不是物件導向,而是函式導向程式語言(Functional programming)。這兩種語言各有優劣,很難說哪個比較好,我個人是習慣物件導向。
  • 偏向動態強型別語言 (變數型別不會在運算中自動轉型) 如同 Ruby、Python ;相較於 PHP、JavaScript 這類語言則是偏向動態弱型別 (自動轉型);Java則是靜態型別(需要事先宣告型別)。
  • 善於處理 concurrency 問題,利於開發分散式/雲端運算平台。

當我們在一開始認識一個語言的時候,都會很想知道有哪些公司是使用它的
比較知名的有WhatsApp與Pinterest(更多名單
其中Pinterest運用在「通知系統」一秒可以傳送 14,000 筆訊息只需要15台主機
原本用 JAVA 的舊架構則需要 30台主機
而且程式碼檔案大小僅有原本的 1/10 !
聽起來是不是威力相當強大,而且吸引人呢?

前面講了這個多,都還沒正式進入Phoenix
在我安裝完環境讀了一下教學後
我決定多開幾篇繼續深入
今天的篇幅就先到介紹到這邊囉~

參考資料:
https://zh.wikipedia.org/wiki/Erlang
http://bobochen.com/elixir/introduction_to_Elixir/
http://www.infoq.com/cn/news/2015/04/elixir-web-erlang


上一篇
Django與Rails比較
下一篇
Phoenix起步走:環境安裝與建立專案
系列文
新時代的網頁框架比較-- 淺談Rails、Django、Phoenix、Laravel31

尚未有邦友留言

立即登入留言