最近工作之餘研究數值演算法,覺得一些傳統問題還有優化空間。以C++試作了一些程式後,決定轉用fortran作為主力開發的程式語言。稍微讀了一些教學,以及一些試寫,想趁著新鮮感寫些心得。 雖然這未必是主流的看法,但我認為學習新的程式語言的成本其實很低。昂貴的是不同圈子的生態系,而不是程式語法。所謂的程式語言生態系其實涵蓋很多面向,例如它的適用環境(伺服器、桌機、手機、GPU、還是瀏覽器?),應用情境(遊戲開發、資料應用、網頁後端、科學模擬、機器學習等等),以及與之相映的工程師社群。好比說,要用網頁原生語言javascript來寫手機遊戲不是做不到,但效能以及精緻度就是遠遜專為手機特化的程式。與其硬是想如何讓javascript寫出漂亮的手機程式,還不如從頭學手機程式該怎麼寫。 數值程式是最早的程式種類之一,甚至可以說它比電腦的存在還古老(電腦出現之前,會以人工迭代數字來進行演算)。電腦的萌芽時期(1940–1970),以電腦來計算彈道、火箭控制、微分方程等是主流,程式是以組合語言寫成。1957年起,fortran誕生,它是一個專為數值計算特化的語言。我認為時至今日,要在超級電腦上計算大型數值程式,fortran應該還是遠勝其他語言的生態系,包含python, julia, matlab, C/C++等等。

最近工作之餘研究數值演算法,覺得一些傳統問題還有優化空間。以C++試作了一些程式後,決定轉用fortran作為主力開發的程式語言。稍微讀了一些教學,以及一些試寫,想趁著新鮮感寫些心得。

雖然這未必是主流的看法,但我認為學習新的程式語言的成本其實很低。昂貴的是不同圈子的生態系,而不是程式語法。所謂的程式語言生態系其實涵蓋很多面向,例如它的適用環境(伺服器、桌機、手機、GPU、還是瀏覽器?),應用情境(遊戲開發、資料應用、網頁後端、科學模擬、機器學習等等),以及與之相映的工程師社群。好比說,要用網頁原生語言javascript來寫手機遊戲不是做不到,但效能以及精緻度就是遠遜專為手機特化的程式。與其硬是想如何讓javascript寫出漂亮的手機程式,還不如從頭學手機程式該怎麼寫。

數值程式是最早的程式種類之一,甚至可以說它比電腦的存在還古老(電腦出現之前,會以人工迭代數字來進行演算)。電腦的萌芽時期(1940–1970),以電腦來計算彈道、火箭控制、微分方程等是主流,程式是以組合語言寫成。1957年起,fortran誕生,它是一個專為數值計算特化的語言。我認為時至今日,要在超級電腦上計算大型數值程式,fortran應該還是遠勝其他語言的生態系,包含python, julia, matlab, C/C++等等。

以小型的數值程式而言,今日我們其實有多種選擇。熱門的選項包含python, julia, matlab, R等。如果你的演算法相當高階,意即不需要寫多層複雜的loop就能驅動,那以上數種語言挑喜歡的去用就好。當程式需要高效能的迴圈時,才需要在C/C++/fortran當中做選擇。

我自己認真比較C/C++/fortran,以及相關的生態系及程式實作(lapack, fortran BLAS, openblas)後,結論如下:如果目標是組合語言級的高效能程式,那麼應該用C/C++甚至是組合語言來撰寫;不過此類程式大多已經被openBLAS及其他BLAS實作涵蓋了(apple accelerate, intel MKL, cuBLAS, etc.)。如果目標是要寫演算法,那麼fortran對這類程式的開發,語法及生態系都要比C/C++還要友善。

舉例來說,一個二維的矩陣在fortran 90及以上的版本,相當容易表達、更動、平行化、以及在函式間傳遞。如果是C,那你必須傳遞矩陣的維度給函式;如果是C++,雖然有Eigen這類函式庫來處理矩陣,但撰寫相關的函式其實比想像中還要繁瑣的多。fortran這方面比起C/C++有多方便呢?numpy/matlab上常見的array slicing,fortran直接內建在語法之中。換言之,fortran一定程度上跟python/matlab一樣方便,但速度遠勝python/matlab。

我自己接觸過的程式語言相當多。我學到最重要的事情之一,就是硬要把別的語言上的生態系搬到自己熟悉的語言上,通常痛苦程度遠高於學習一個新的程式語言。這理由也不難理解:搬生態系時有很多未知的麻煩,即便上網查也不一定能找到解答。相對的,學一個新的程式語言碰到問題時,上網查一下就能找到給新手的解答。如果問題比較複雜,在原生生態系當中也有比較高的機率找到其他人如何處理類似的問題。這些好處,真的遠勝要學新的程式語言的學習門檻。

--

--

應該要來寫一篇文回應台積電赴美造廠。簡單來說就是只要台灣維持領先,這領域的事物就會繞著台灣轉。我覺得台灣最大的難處,是在文化上相當缺乏自己可以站在頂點的自信及企圖心。比起在領域上做到頂尖,台灣人普遍的認為 1. 覺得自己做不到 2. 能做讓自己開心的事更好。 我現在應該比較有資格說,「有心就做的到」。即便競爭對手是哈佛、MIT、CMU等也一樣。缺什麼知識,就買書來看、直接看這些學校的線上課程、寫程式來驗證學習程度。我是非資訊領域畢業,但我十分感激當初敢轉行的勇氣。正是因為轉行成功的信心加持,讓我在資訊子領域裡面比這些名校畢業的同行更敢探索跨領域項目。不論是大數據、系統開發、機器學習、編譯器、硬體開發理論、數值線性代數、凸優化理論,我都有在做,也有外面看得到的成績單(這次去NeurIPS就是發表機器學習、編譯器、及硬體開發理論合一的演算法) 我知道對許多台灣人來說,會覺得這是例外、這不干他的事、或覺得自己做不到。就算刺耳,我還是得說:成功的人找方法,失敗的人找藉口。台灣人普遍缺乏企圖心,本質上就是太習慣於找藉口。設定好自己的目標,然後克服自己可能不喜歡的事,直到自己能駕馭為止。沒有經過這樣的歷程,你的「喜歡」還有「興趣」都只會流於感官上的享樂。幾年後回頭看,只會覺得自己一事無成。

應該要來寫一篇文回應台積電赴美造廠。簡單來說就是只要台灣維持領先,這領域的事物就會繞著台灣轉。我覺得台灣最大的難處,是在文化上相當缺乏自己可以站在頂點的自信及企圖心。比起在領域上做到頂尖,台灣人普遍的認為 1. 覺得自己做不到 2. 能做讓自己開心的事更好。

我現在應該比較有資格說,「有心就做的到」。即便競爭對手是哈佛、MIT、CMU等也一樣。缺什麼知識,就買書來看、直接看這些學校的線上課程、寫程式來驗證學習程度。我是非資訊領域畢業,但我十分感激當初敢轉行的勇氣。正是因為轉行成功的信心加持,讓我在資訊子領域裡面比這些名校畢業的同行更敢探索跨領域項目。不論是大數據、系統開發、機器學習、編譯器、硬體開發理論、數值線性代數、凸優化理論,我都有在做,也有外面看得到的成績單(這次去NeurIPS就是發表機器學習、編譯器、及硬體開發理論合一的演算法)

我知道對許多台灣人來說,會覺得這是例外、這不干他的事、或覺得自己做不到。就算刺耳,我還是得說:成功的人找方法,失敗的人找藉口。台灣人普遍缺乏企圖心,本質上就是太習慣於找藉口。設定好自己的目標,然後克服自己可能不喜歡的事,直到自己能駕馭為止。沒有經過這樣的歷程,你的「喜歡」還有「興趣」都只會流於感官上的享樂。幾年後回頭看,只會覺得自己一事無成。

--

--

思考台灣的地緣戰略關係時,有兩個關鍵:一是思考不同戰略情境下的最糟情況,二是需要以歷史證據支持論點,不然就只是一相情願。

舉例而言,假若台灣與中國統一,不論是一國兩制或是簽署和平協議,最糟情況下會對台灣造成什麼樣的影響?切記,我們不能一相情願的角度相信中國就一定會善待台灣。相對的,我們必須思考,中共會不會害怕好不容易到手的台灣又暴動武裝獨立,以及其可能的應對方式。

俄羅斯打烏克蘭已經發射了遠超過中國對準台灣的飛彈數量。要能攻城掠地,最後還是得兩棲登陸。要知道,兩棲作戰是極其不利於進攻方的。如果統治了台灣,是不是應該先把卸除台灣武裝視為第一要務?中共為了自身統治的便利,為何需要去承擔台灣軍人的福利以及增加額外叛亂的風險?

解除台灣抵抗能力是中共賽局中不可避免的。一旦知道方針,執行的方法要有多少就有多少。例如,煽動台灣親共黑道組織叛亂,如果鎮壓,就說台灣殺害愛黨的中國人,然後大量解放軍進駐台灣「鎮暴」。順帶還可以把黑名單都送進再教育營,以「預防犯罪」。

如何判斷我以上所說不是陰謀論?就看歷史證據。首先中共高壓統治的例子歷歷在目,香港、新疆、西藏都是活生生的例子。1949投降的國民黨武裝力量還是潛在威脅,就把大量的軍人送去長津湖凍死。揮軍進攻害怕戰爭而宣稱中立的鄰國在歷史上也屢見不鮮。波羅的海三小國都是中立,但被紅軍入侵;盧森堡、荷蘭、挪威、丹麥等二戰時也是中立,但被德國入侵;中華民國被日本入侵時也是中立國,想在日俄中間畫三角形,但很顯然的非常失敗。

對於獨裁者而言,沒有任何事情比自己的統治根基還要更重要。所謂的「任何事情」包含國家的利益、人民的生命、台灣的人民、甚至是台積電。就算統治台灣導致台積電全毀,然而達成此「歷史大業」所鞏固無可動搖的權力,對獨裁者本人絕對還是利多。其他國家的經濟制裁、甚至是軍事行動都無所謂,只要自己以及支持自身權力的寡頭沒事就好。以上論點看過去及現在的獨裁者都成立,例如毛澤東、史達林、希特勒、普丁等等。只有民主國家的執政者需要對人民負責,獨裁者是不需要對人民負責的。

妄想親中能帶來和平,這樣的論點根本禁不起歷史證據的檢驗。

--

--

權力的本質,是暴力。文明的社會則是透過眾人讓渡暴力以維繫。

從微觀來看,FBI的連環殺人犯研究指出,犯人透過殺害小動物、性侵、乃至虐待及殺戮來滿足自身的權力慾。這些殺人犯在社會結構中多數處於權力的底層,對生活事物能掌控的範圍極小。然而透過暴力,卻能大幅翻轉權力結構。他們一旦身陷其中,就無法自拔。此觀點是FBI行為科學組安.伍柏特.布吉斯理清連環殺手混沌內心所出的結論。科普書詳見她寫的「破案女神」一作。

從巨觀來看,湯瑪斯・霍布斯指稱,和平的國家是透過公民讓渡自然權力(包含暴力)給國家主權來維繫。公權力微弱的國家會黑道林立,甚至是軍閥割據。近代強大的國家大都經歷過中央集權,也就是收編地方諸侯、大名、貴族等的權力(徵稅權、軍權)至中央。其中也不乏試圖執行中央集權而失敗的例子,例如1649年英國查理一世就被國會處斬、民國初期軍閥割據、美國南北戰爭等都算是中央權力不彰所導致的混亂。

儘管與近代國際關係的主流說法不同,我認為美國單極獨大也是近代世界和平(沒有世界大戰)的關鍵因素。不論自願與否,各國容許美國獨大跨洲投放武力的事實,讓跨國貿易及各國文明相處成為可能。

近代國際關係的主流說法(現實主義)認為,現代國際關係是穩定的無政府(安那其)。在國家之上沒有足以約束國家互動的威權,即法律上國家平等,誰也沒權利號令誰。主權國家為國際關係下的行為體,任何國家都會做出基本相似的理性決策;國家的根本利益是實現安全,而不是無限制地獲得、維持和增加權力。其中一個變體(守勢現實主義)認為,只要讓權力均衡,讓戰爭代價極大化,讓勝利無利可圖,就能維繫和平。

我認為從中國對台武統的野心,以及俄羅斯對烏克蘭的侵略,皆能看出此種國際關係的基本假設的漏洞:主權國家未必會以最大化國家安全及利益為行為準則。漢彌爾頓對安那其的批評擲地有聲:

希望和同一地域內一群獨立的、各不相關的國家能夠長期和睦相處,是忽視人類社會發展的共同過程,有心藐視歷史上累積的經驗 — 《聯邦論・第六章》

國家間相互敵視的原因多不勝數:希望有卓越的支配地位、對他國的猜忌、以維持自身安全為藉口發動戰爭、商業國家間的利益衝突、甚至個人間的恩怨、野心等等都有可能促發戰爭。別的不說,獨裁者對外發動戰爭時常損及國家利益,卻可以鞏固自身的權力(軍權集中,人民支持也通常會衝高)。不論近代或古代,國家間衝突的原因千奇百怪,也往往與最大化國家安全無關。即便是民主國家,對外發動戰爭也能鞏固自身及政黨的支持率。漢彌爾頓批評:「(政治科學)理論應該以過去經驗為證據,缺乏經驗佐證的理論就只是譁眾取寵。…人類的本性與那些企圖麻痺我們警覺性的主張相去甚遠。環境的接壤使鄰國成為天然的敵人。」

回過頭來看巨觀的權力關係。目前國際間多以文明,意即非暴力的方式(貿易、金融)相處,我認為歸功於美國軍事,特別是海權的單極獨大。美國海軍在世界各大洋確保各國自由航行的權力,是國與國大宗自由貿易的根基。沒有獨大海權的存在,各國或各商會就必須武裝自己的貿易船來防範海盜,甚至是流氓國家的劫掠。一二戰前多極列強競爭的結果是世界大戰;冷戰時雙極競爭也是讓戰爭風雨欲來。

權力的本質是暴力,而文明的社會則是透過眾人讓渡暴力以維繫。面對中俄試圖推翻美國單極獨大的主張時,我們應以此舉會將會推向世界戰爭回應。對於短視只顧維繫自國短期經濟利益的國家,我們也應呼籲縱容侵略會導致各國不得不武裝自己,國與國間文明的交流將會破滅。面對中俄的擴張,沒有人可以置身事外。

--

--

結論先寫在前頭,只以演算法來確保稀有性的加密貨幣,並沒有滿足成為真正貨幣的充分條件。即便作為金融商品來投資,也有許多挑戰。

要能理解貨幣,我們需要簡單介紹經濟以及金融。弄清楚貨幣在現代經濟系統中的作用後,才能回過頭來去檢視加密貨幣是否有滿足這些條件。

經濟

我們從比較原始的經濟活動出發來瞭解經濟,人們不使用錢幣,只有以物易物。將我家種的米與你家做的鍋碗交換,兩家人都能煮米吃飯。個體經濟學中,人們追求的並非最大的金額值(在這例子中,錢幣甚至不存在),而是追求最大的「效用」(utility),用白話來講就是滿意度。在以上例子中,儘管總財貨相同,兩家人的「效用」(滿意度)都增加了。

在經濟學中,財貨(Goods),或簡稱財,是一種用於滿足消費者欲望和需求的財貨,同時提供效用。狹義上的財貨指有形財,在此情況下與無形的服務 (Service) 對比。 (ref:wiki)

人們可以將陶土燒製成鍋碗,由於鍋碗的效用比陶土高,總體的財貨價值就增加了。服務則涵蓋所有在買賣過程後不會有物品留下,提供其效用來滿足客戶的這類無形產業。

這些經濟活動,才是財富的本質,無須貨幣或金融系統也能成立。到頭來,形成我們生活品質的是能運用的有形的資產(例如房產、車子、奢侈品)及無形的服務(公眾服務如大眾運輸,或是私人服務如理髮等)。

金融

金融活動的歷史也遠早於貨幣。

金融的核心是跨時間、跨空間的價值交換,所有涉及到價值或者所得在不同時間、不同空間之間進行配置的交易都是金融交易。(ref:wiki)

跨空間的金融活動很容易理解。以前的旅行商人運輸貨物時不會攜帶貨幣,而是使用匯票在不同城市進行交易。如此一來就能降低被搶劫的風險,盜匪無錢可偷,銷贓貨物也不容易。

跨時間的價值交換就是債券。例如三十年房貸是以未來三十年的經濟活動,兌換房子的居住權及所有權。國家的公債則是以未來人民的經濟活動產生的稅收,用來兌換現金以進行建設。

從以上例子可以看出,時間及空間的價值交換能成立,仰賴債務契約是否能被履行。現代國家大都能以公權力來確保契約;即便違規了,也能透過法拍來變賣抵押品。有一些金融體系除了仰賴國家提供的強制力,還有更進階的信任與信用。例如主宰金融世界的猶太人。

貨幣

介紹了簡化的經濟及金融的構成要件後,我們總算能檢視(法定)貨幣的特徵了:

  1. 國家以法律規範的貨幣,無須透過票據簽名來形成契約。
  2. 政府單就發行貨幣就能取得鑄幣稅(面額與錢幣成本的差額),同時政府也負擔了責任。
    * 確保債務人能履約(讓銀行有法拍,以及將人趕出房子的公權力)
    * 政府也要以外匯存底及其他資產來擔保本國貨幣的購買力。
    * 央行可作為最終放款人來處理銀行的擠兌

法定貨幣能夠運行的基礎,是藉由中心化的政府來完成。沒有政府擔保債權執行(帳號可以跑路)的貨幣,距離真正貨幣的要件還差得遠。

去中心化金融值得投資嗎?

金融行為的基礎在於能夠履行契約,而這份基礎在區塊鏈上面是相當薄弱的。一般銀行有實體的財貨及法定的資金儲備作為抵押品來放貸,加密幣卻會碰到以下問題:

  1. 以算法形成的穩定幣,作為抵押品的其他加密幣可能不具價值(還是要看他們的擔保)
  2. 實質擔保品只有兌換進交易所的錢幣本身。一般銀行可用的財貨(例如房產)無法成為擔保,因為他們無法像銀行一樣進行擔保品的法拍。
  3. 如同其他金融服務,可以藉由放貸來提升流通的「貨幣」,然而它無力要求債務人履約。
  4. 債務人鮮少拿加密幣去產生其他的經濟活動,總體財貨未必有提升,甚至可能是下降的(因為需要付gas fee)。傳統金融由於能放貸給不同領域的項目,不論是藉由交換所造成的效用提升,或是藉由生產造成效用提升,都有助於整體經濟。相對的,大多數的加密幣經濟侷限在區塊鏈的小圈圈裡,即便內部人士滿足於NFT等帶來的效用,這類效用卻很難影響到圈外去。

區塊鏈經濟最大的優勢其實在於交易效率。傳統金融所有的資金流動都要課稅,相對的區塊鏈買賣只需要付相當微薄的gas fee,直到轉換為現金為止。因此就微觀來看,加密幣還是有其促進市場效率的優點。不過從巨觀來看其金融體質,則是有相當多本質上的挑戰。

--

--

前天同家人一起參觀了聖地牙哥的中途島航空母艦博物館。這艘軍艦命名的由來(中途島戰役)以及自身的戰鬥歷史都相當有趣,不過我覺得最值得我紀錄下來的,是軍艦上與電腦相關的科技。

中途島號是美國二十世紀服役時間最長的航母 — 自1945起到1992,啟用時是世界上最大的航母,也是第一艘無法通過巴拿馬海峽的船。中途島號有參與越戰、防禦日本、以及波灣戰爭。其甲板經過三次擴建,蒸氣彈射、雷達、陀螺儀、衛星導航等等都是經過擴充才裝上中途島號的。整台航空母艦根本就是美國二戰後五十年軍事科技的縮時攝影。

航海士的工作區

在艦橋上一位老軍官Mark介紹我們中途島號的導航系統。在船長室的背後,有一個相對大的房間內有著數張航海圖供航海士工作。在中途島號剛開始服役時,導航技術還沒有那麼先進,所以航海士是以六分儀觀星來導航的。除了六分儀外,航海士還需要相當精準的時鐘,也因此當時海軍費盡心力研發出不受海浪影響的機械鐘,供航海士使用。可惜的是我們只能看到航海圖和六分儀,被石英鐘取代的機械鐘並沒有被拿出來展覽。

在太空時代來臨前,中途島號轉用加速規、陀螺儀、以及電腦來處理導航。太空時代來臨後,衛星以及GPS成了現今導航的不二選擇。不過,航海士還是會受訓使用舊式科技(包含使用六分儀來觀星!)。因為美國假定其假想敵有可能會攻擊美國的衛星,而美國軍艦必須在此假想情形下也有出任務的能力。導覽結束後我問老軍官mark,即使是最新的航母上軍官還是會被訓練使用六分儀嗎?答案居然是肯定的!

--

--

我其實相當有自覺,我並不是一個聰明的學生。大學課業普普,許多進階科目都學得零零落落。記憶力很差,偏向需要背誦的科目我都表現得很不好。數學我覺得也算是一個需要背誦的科目,至少在學習的階段,每個定義及定理的細節差異,都可能成為證明能不能想出來的關鍵。 正是因為有自覺,所以在學習時我更時常警惕自己,不要以為隨隨便便就能把東西學起來。我會相當積極的去尋找能幫助自己學習的方法。如果某些學習受挫,我會坦然接受(我就笨),然後反思自己如何在下一次學習中突破困境。 突破困境要訣一:找找看有沒有youtube上的教學資源。學習效果不好,除了自己腦袋轉不過去外,也有可能是學習資源就是不夠好。很多知識型youtuber提供的教學,遠勝於大學教育裡有限的教學資源。同樣是板書,觀看MIT的教學課程,真的能夠學到很多深深經營此領域最頂尖的人的觀點和知識。 突破困境要訣二:努力比較教科書。教科書該怎麼選,說真的還真沒有什麼好準則。就我自己來說,當下知識的深淺,對我教科書選擇的影響很大。知識尚淺時,我需要的是有答案的習題本。將解題思考模式烙印到腦中。稍微深入一些後,我覺得先找偏應用的書籍來看,附加價值比較高。畢竟學習一定會佔用到時間資源,如果不能將這些付出一定程度的轉成一些工作上的產出,學習的挫折會感到沒有回報。應用導向的書完成階段性任務,自己本業卻還是卡關時,我才會開始看更加理論的書。

關於變強這檔事(十)
關於變強這檔事(十)