erlang找到了癥結並正確的解決了問題,所有的其他人(非erlang人)都找錯了方向,解決了錯誤的問題。
全世界其他人想解決的問題是如何讓現存的程式能並行執行。
2023年之前,摩爾定律一直有效。每年我們的程式執行都會變得更快,我們不需要成為乙個優秀的程式設計師,我們不需要掌握更優化的演算法就能讓程式一年比一年更快。晶元越來越大,時鐘速度越來越快,程式執行速度越來越快,每年大概以15%幅度的效能提公升。
到了2023年,這些現象終止了。晶元已經足夠大,時鐘的速率已經快到在乙個時鐘週期內時鐘脈衝不能到達晶元的所有部分。電路設計開始改變。多核處理器出現。從2023年開始,晶元的體積仍然在增大,但時鐘的速率開始變小,每個晶元上的cpu數量開始增加。我們從每乙個晶元只有乙個超級處理器的時代進入到每個晶元有多個速度較慢、效能較弱的多核處理器時代。由此開始,順序執行的程式顯得越來越慢,一年慢過一年,而並行執行的程式開始變得越來越快。
問題是,根本沒有並行執行的程式,有也是極少。而erlang是一種具有併發特徵的程式語言,所以erlang程式本質上在具有並行能力的計算機上執行時要比其它程式都快的多。而唯一能阻擋它執行的更快的問題就是erlang程式中可能存在一些必須順序執行的瓶頸。
並行程式中有需要順序執行的部分,這正應驗了amdahl定律。
假設你的程式中有10%是需要順序執行的(其餘部分可以並行),可以並行的部分的執行時間可以壓縮近似0——只要有足夠的可以並行的處理器。但順序執行部分的時間無法縮減。如果程式中含有10%的需要順序執行的**,你的程式執行速度最高能提高10倍。其中1/10的程式的速度永遠無法提高,其它9/10的程式的執行時間可以縮減至接近0。
所以,對於erlang程式設計師來說,提高他們的程式的執行速度的技巧就是找出**中需要順序執行的部分。
而對於任何對於其他編寫順序執行程式的程式設計師來說,提高他們程式速度的方法是找出他們程式中可以並行執行的部分。讓序列程式自動並行化的征途鋪滿荊棘,無法走通。(並不完全是這樣,在某些特殊環境中是可以實現的,但絕非易事)。
現在的資料中心了都排滿了酷炫的新型計算機,某些頂級的配置裡擁有多達24核。但它們的效能呢?這些酷炫的新機器能快24倍嗎?對某些程式來說是的,但對大多數程式來說不是。對大多數程式來說24個cpu中只有乙個被利用。
走進幾公尺童話世界,《我的全世界只有你》推出VR版本
幾公尺漫畫與虛擬實境結合起來,也許能引起更多讀者的共鳴。在今年,幾公尺推出了繪本作品 我的全世界只有你 你也許知道幾公尺是乙個有名氣的台灣漫畫家,也許早已看過這個最新繪本,但你應該沒有接觸過vr版的幾公尺漫畫。在日前開展的第六屆中國國際版權博覽會上,幾公尺繪本被打造成vr版本的故事。關於 我的全世界...
進入erlang的世界
今天開始研究用erlang實現大型併發服務的方法,以期充分利用它的高併發 高可靠特性來實現我們網路應用服務,達到 電信級服務 的要求。根據網上的介紹,寫了乙個簡單的測試程式test.erl,卻不知道預設可以放在 我用c test 命令編譯報告檔案找不到,後來發現要把它放到bin目錄去 預設是cean...
全世界最短的IE判定
以前最短的ie判定借助於ie不支援垂直製表符的特性搞出來的。var ie v1 僅僅需要7bytes!參見這篇文章,32 bytes,ehr 9,ehr 7 to know if your browser is ie 講述外國人是如何把ie的判定從32 bytes一步步縮簡成7 bytes 的故事 ...