Posted on March 31, 2009 by ytshen
最近在學習Erlang,發現Erlang其實是一個蠻簡單容易理解的語言,而且針對特定的問題(concurrent progarmming, 分散式系統, 網路service),寫起來很快。尤其現在multi-core的CPU,在Functional language的model下(No share memory),應該更能好好運用其多核心的運算能力,Erlang 應該可以算是目前Functional Language在工業上面蠻常運用到的(尤其在電信業),他一開始是從Ericsson裡面的CSLab所開發出來的,後來就open source出來,他最強大的是一套可以稱為Framework or Library的工具OTP(Open Telecom Platform),因為它主要是focus on server,他把一些設計concurrent program的概念隱藏在裡面,所以你直接套用這套工具的話,可以省不少事。
Erlang是跑在他自己的Virtual machine上面,具有一些特性:
runtime update
pure message passing
light weight process
fault tolerant
runtime update:
Erlang的Virtual Machine讓你可以在程式執行的時候,去修改程式碼後,他會dynamic load進新的程式碼,讓你不必把程式關掉在執行
light weight process:
Erlang不像是其他程式語言,它直接把process的概念放進語法裡面,在Erlang的設計概念中,他希望所有的事物都是透過你把事情切割分別讓process去操作,而且Erlang創造一個process的overload不是很大
pure message passing:
在Erlang當中,既然可以自由的創造process,那這些process之間要怎麼溝通呢?他不像是傳統寫C, C++這類sequential程式一樣是利用lock/unlock等synchronize技巧,他純粹就是你直接可以Send message給別的process,其他process只要等著receice message就可以了,這有個好處,就是沒有share variable等因素可能會造成race condition or dead lock,而且Erlang並沒有限制process只能在local,你可以自由的send message到遠端的node,這正好發揮了distribute system的強處
fault tolerant:
因為Erlang一開始就用途就是為了電信業上面的switch,在電信業本身它希望程式能夠再發生error的時候,能夠自動correct error或是restart,所以在Erlang的設計概念中,他希望process如果發生處理不了的問題,就讓process自動被kill,跟這個process有相關的process會收到通知說,有process被kill,在根據原因來做一些適當的處理
待續
在part 2中,我準備稍微介紹一下OTP裡面關於實作server的pattern
Filed under: programming | Tagged: erlang | Leave a Comment »
Posted on March 21, 2009 by ytshen
昨天喝酒晚睡
今天6點就起床準備殺去九份
結果果然是約太早了XD
一開始是過深坑的小山
接著就是可怕的106縣道
尤其是72~74公里處的超長上坡
可怕處在於你每次經過轉彎, 心理會期待準備下坡
但是每每都不是, 迎面而來的是長長的上坡
精神打擊極大! (腳騎到在抖>”<)一看到bjc停下來休息, 馬上就跟進xD
不然我覺得真的超難撐的…
我們在頂點休息
過頂之後, 就是長長的下坡, 後面還幾個髮夾彎(不太好騎)
真是一座讓人又愛又恨的地方, 愛的地方太快結束了
到騎九份的時候, 我覺得已經沒什麼力氣了…
就在我艱苦的上坡路段
收到機車安的電話, 原來是上了Florida
差點沒氣接他電話
不過也應該撐過到涼亭, 看到以安
最後就是快樂的下坡加上老樣字的台五線回家
沒想到居然有騎到95km
今天算是騎車以來最累的一次阿…Orz
騎到腳青筋都爆出來了
難怪回到家洗完澡就睡了2 hr
我果然還是虛炮阿
這次騎了驚鴻, 發現不太適合…
(比原本的小銀重10kg + 後弊震依整個讓我無法變速變到最輕, 很容易就力量分散)
真想買公路車阿…
p.s 1 沒想到大中也有騎這段, 聽說有看到我的背影!
p.s 2 有3g手機感覺還不錯, 可以上網plurk XD
Filed under: travel | Leave a Comment »
Posted on March 17, 2009 by ytshen
最近看到某個library的function居然呼叫的時候,強制必須傳list comprehension,讓我很shock, 居然erlang可以這樣檢查type?!
Ex:
version 1: (ok)
qlc([X || X <- Table])
version 2: (error)
Val = [X || X <- Table ]
qlc(Val)
結果實際trace erlang的source code 加上 IRC上面的人解答
原來erlang可以用類似pre-process的方式, 在parse的時候就判斷參數的正確性
這雖然不是什麼新概念, 但是你可以寫parser的plug-in, 這感覺就很不一樣!
p.s IRC上的人果然都是好人~ 有問題都可以問問~~
Reference:
http://www.erlang.org/documentation/doc-5.4.8/lib/stdlib-1.13.8/doc/html/qlc.html
Filed under: programming | Tagged: erlang | Leave a Comment »
Posted on March 16, 2009 by ytshen
本來只是想要騎去三芝吃個德州食物就閃了,結果每次都有意外的事發生,壞人每次都慫恿我, 結果就這樣
家—>淡水—->三芝—->金山—->基隆—->家
20 1x 4x 2x
沒想到就這樣差不多100km了!!!
中途景色還好
只覺得上坡好累, 下坡好爽 (還要跟討厭的逆風飆車), 屁股好痛
都是靠意志力衝的!!
回家想要炫耀一下
我爸說他3x年前就騎過了, 還是沒變速的 (大輸 = =””)
我的小銀是n年前的300元二手車
經過我這幾次的鍛鍊
這次變速器好像壞了, 澇練也澇了三次…
不想修了, 下次換一台騎看看
結論:
一定要去買車褲!! (到現在我的屁屁都還會痛Q_Q)
跟壞人出去, 一定要準備好安全帽跟燈 (你永遠不知道會騎去哪邊!!)
聽說環島每天是100km起跳在騎
無法想像, 要也要用好一點的車…沒事不要騎隧道(好暗, 車子又開好快>”<)
經過幾次騎車, 我應該有level-up了
有機會一定要挑戰陽明山!!
(那時看地圖才9km實在是太吸引人了…沒想到是要翻過陽明山XD)
回到台北家裡,只有一個”爽”字!!!!
相簿
Filed under: travel | Tagged: bike | Leave a Comment »
Posted on March 16, 2009 by ytshen
本來這星期想騎去烏來的,可是前幾天都下大雨,今天居然白天天氣不錯,就乾脆騎到比較近的地方( bjc 就沒約你了XD)
努力的用力的採著, 往上坡爬~
邊爬邊滴汗…Orz
好不容易跨過了一個山頭, 就開始做溜滑梯
到了 深坑鄉…
發現時間還早,就殺去石碇,沒想到有人記錯路了XD (差點就跑到平溪了)
後面的路都算小case, 不用連續爬上坡真是太幸福了~
到石碇吃著蠻特別的豆花
後來又回到深坑鄉
沒想到這麼多間店, 就選到一間地雷
離開的時候 還開始下大雨
冒著大雨, 努力的回程的爬坡
冷冷冷
下坡更冷
不過現在回到溫暖的家 真是太幸福了!!
下星期要殺到平溪~~~
靠 我忘了跟我小銀照相了Q_Q
Filed under: travel | Tagged: bike | Leave a Comment »
Posted on March 4, 2009 by ytshen
經過maple的開導
我的確是該先列的目標出來, 三年之後再看達到了哪些!
short-term: – erlang, python, c 看能不能這三個都摸熟, 而且有寫過至少中型跟別人合作的project
– 基本的一點硬體知識
immediate:
– 參予設計project
– 找到一個比C++, Java好的OO language, 並且摸熟他
long-term:
–用functional language征服世界!
Filed under: life | Leave a Comment »