※ 本文為 ott 轉寄自 ptt.cc 更新時間: 2015-01-13 10:13:13
看板 Soft_Job
作者 cecol (雪橘子)
標題 Re: [討論] scala未來的發展性
時間 Sun Jan 11 17:20:57 2015


有點晚回覆, 非技術性把這篇洗回來
當時看到這篇時候就想回覆 只是當時有點忙
敝公司Vpon 大量使用Scala,當成主力開發
加入公司有三個月加上自己過去一年研究scala 來分享一下

不然技術語法,談談我自己為什麼自學scala然後愛上它
會學scala是因為前年去Twitter走走, 那邊的學長跟我說Twitter scala用很兇
Twitter剛出名的時候,是用RoR, 可是當時學長跟我說後端80%都改用scala了
他跟我說整個重構, 我當下聽到覺得
哇賽 重構代價很大,
到底為什麼Twitter原意付出這個代價?
促使我回國後開始掉入scala這個大坑

當時Twitter已經有上億用戶, 每天有數十億的message要處理
可想而知後端server壓力多大, message process分散式架構要做好很不容易
最終program問題還是回到performance

可是為什麼是scala?
這個我問過我主管,問他說C最快, 幹嘛用scala?
他跟我說要找到一個C寫得很好的高手太難,更何況是一個team
相對訓練員工寫scala,並寫好平行架構比較容易
這是一個用機器+金錢+平行framework來補足效能上的問題

對, scala是jvm語言,雖然可勝過script language
先天上跟c還是有差距
所以手段就是加機器來增加效能

回頭來看看scala, 我把它當作java進化版
科技業追求就是科技進步創新
物件導向這麼久了,難不成就到此為止?
我很好奇
所以開始研究這個2003才發明的語言

scala也不是多麼高明
他也不過是functional + oop的融合
還能變出什麼新把戲?

所謂的進步創新也是立基在過去的經驗上
所以該看看functional + oop是怎麼合作
話說我覺得很奇妙的是為什麼CS學校教育不把functional納入必修
更甚者有些大學根本沒有這課程, 只有oop

說說scala, 哪些地方很迷人
trait 比起interface更自由更彈性
implicit conversion 讓code看起來可讀性更高
隱藏很多細部實做, 讓人更容易理解運作邏輯
immutable variable 讓平行處理上更安全
pattern match 比起switch 做的邏輯控制更複雜(還更快!)
anonymous function 簡潔

加上
akka framework 的actor, future 讓平行運算更容易且好debug

直白來說就是
很好寫 很好讀 很好維護
然後效能可以更快(平行處理)

回到原文的確語言百百種
任何一個語言都能做到任何事情
你也可以用javascript 寫一套OS
所以很多人都說看你需求用什麼語言
什麼語言適合做什麼事情之類的

我比較熱衷於倒過來看
透過這個語言對你來說,你學會了什麼,你看到了什麼未來?
更甚者你是否預見了什麼未來?

我覺得台灣科技業相對落後美國N年
美國都用爛了,台灣才可能只有兩三人在討論
當然這是跟市場還有商業有關
只是剛好我的公司願意嘗試新技術
主管都跟我說你去用啊, 用的好再跟我說
不好也要講 避免大家走冤枉路
這都是經驗累積 人才培養 公司成長 以至於軟體業的長遠發展

回到scala本身我讓看到program的視野
讓我體會平行處理要做好, 根本就不該有mutable state這種改死設定
了解透過設計來解決race condition,而非硬幹
相較於java的oop 它讓我看到oop更有彈性的應用
讓我更好奇再發展下去會變成怎樣

話說回到我本身
我退伍前很慌, 因為我只想找scala工作
可是台灣幾乎沒有, 剛好看到vpon有就去
好像沒太多選擇

但我待到現在的經驗就是
願意嘗試新技術的公司
那邊的人大多跟你合得來,
因為
大家熱於分享 每週五有吃吃喝喝的RD sharing 分享最近學到新技術
大家熱中幫你解問題 有問題夥伴搶著解 因為他比你更有興趣
大家熱衷工作 因為做的產品專案很棒很酷 台灣沒多少人在做
所以新技術就是在這樣的環境這樣的人才有辦法發展出來


我剛進來到現在就完成專案 也要open source自己的經驗
近來所學到所完成的勝過過去一年自己自幹的
這就是團隊

不要因為這個語言有多少工作而學習
而是看看這個語言能讓你看到多少未來而深入

最後別跟我說java 8 也有anonymous function
太晚拉!!!!

供給板上各位大大參考
有興趣討論scala相關的 比如spark
歡迎跟站內信



※ 引述《zanyking (最後的六年級生)》之銘言:
: ※ 引述《saieva (春江花朝秋月夜)》之銘言:
: : 各位好:
: : 小妹最近拿到一份offer, 工作內容以寫scala為主
: : 由於是畢業後的第一份工作,擔心未來出路會被侷限住
: : 畢竟scala還算稀有語言,寫法跟主流也不太一樣
: : 公司福利薪資還算中上,有點難為要不要試試看
: : 請問有人有不同見解可以讓我參考嗎?謝謝!

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.8.238.26
※ 文章代碼(AID): #1Kia1xuG (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1420968059.A.E10.html
bleed1979: 感動!幾乎能說服我自學Scala了,給推。1F 01/11 17:32
Push5F:    感動! 幾乎能說公司用Scala了,給推2F 01/11 17:34
del680202: 感動!幾乎能說服台灣全部都去學scala了3F 01/11 17:37
anguso:    感動!幾乎確定 C 寫得好是難得的高手了 (?)4F 01/11 17:40
guanting886: 動!幾乎要我左攻RoR 右攻Scala喇 XD5F 01/11 17:47
del680202: 感動!幾乎沒人跟我搶Haskell阿6F 01/11 17:48
bxxl: 我不曉得programming languanges是不是CS的必修, 我上過7F 01/11 18:54
bxxl: Coursera上UW的PL, 有3/4是functional programming相關的
bxxl: 1/2 standard ML, 1/4 Racket, 1/4 Ruby
robler: 一般來說是必修 但是不多10F 01/11 19:05
pizzafan: 傳統觀念fun()是單獨程式,為了重複多用,才演生oop概念11F 01/11 19:11
pizzafan: java才是oo的具現化系!真正的純物件導向,連微軟都想偷學
pizzafan: 就是obj.fun()或obj→fun()或obj::fun()
pizzafan: jQuery到達極致[連鎖鏈放出系] : o.f(o).f(o).f(o)...
pizzafan: 我亂掰的,反正大致這樣啦
pizzafan: 基本上就是物件為主,然後→功能()隨便你去想,隨便你去寫
robler: 還真的是亂掰 到底在扯些什麼..17F 01/11 19:24
recorriendo: functional programming 是電腦科學理論的基礎18F 01/11 19:27
recorriendo: 把CS當成science的話 那functional programming絕對
recorriendo: 是必修 之所以沒有變成必修 是因為大家美其名叫
recorriendo: computer science其實多數再教software engineering
recorriendo: 根本不把CS當science
recorriendo: 題外話 twitter最近不太樂觀 快倒了...
robler: functional programming 己經講很久了 f#也出很久了24F 01/11 19:39
robler: 微軟還是推不起來
GoalBased: java算純OO (?)26F 01/11 20:04
cpper: 所以是用了scala導致twitter快倒了..27F 01/11 20:07
ccccboom: twitter如果倒了要改用什麼啊?28F 01/11 20:26
robler: 不會倒吧 只會轉手給別人29F 01/11 20:31
snaketsai: 不可能倒吧...用戶多到滿出來,很多名人facebook是公關30F 01/11 20:37
snaketsai: 但是私人是用Twitter的
snaketsai: 球星、歌手、作家...真的撐不下去,Docomo、SoftBank
snaketsai: 應該很有興趣把他們吃下來
icespeech: 原po怎麼不乾脆發一間貴公司的推坑文 XD34F 01/11 20:42
remmurds: 就是標準的用台灣看世界啊 以為台灣少人在用推特就覺得35F 01/11 21:19
remmurds: 全世界都是如此
monoceros629: FP正在越來越紅中,大家快來跳坑37F 01/11 21:33
cecol: 推坑文有空來寫~最近趕data pipeline成果文章XD38F 01/11 21:40
ccccboom: 最近也開始玩haskell了39F 01/11 21:40
ntddt: 推scala~40F 01/11 21:47
uranusjr: 說真的 Twitter 不是沒可能倒, 一直在虧錢又看不到方向41F 01/11 21:48
uranusjr: 用戶數不能吃啊
y2468101216: 推43F 01/11 22:17
pizzafan: msn用戶也曾經上千萬戶吧?看看微軟自己怎麼丟了市場?44F 01/11 23:44
cecol: 話說我反而覺得Twitter的未來性比FB高,看看社群型態就知道45F 01/12 00:51
guanting886: 你看到的只是人家企業比較負面新聞46F 01/12 01:12
guanting886: twitter做產品也不是說做什麼都成功
guanting886: 要做一項成功的產品跟生意本就不是很容易的事
recorriendo: twitter本來就不賺 沒錢就會倒/賣人 用戶數不是重點49F 01/12 01:25
recorriendo: 話說facebook有一部分是用haskell寫的 很難想像

--
※ 看板: ott 文章推薦值: 0 目前人氣: 0 累積人氣: 252 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇