Re: [問題] 計算物理和量子電腦/量子計算
趁你才大二,還有救,給你一些不負責任的,一些過來人的建議. 聽聽就好.
我的建議值不值得聽,答案你應該自己花時間去尋找.切莫輕信! 盲信的人
是笨蛋!
如果你是的對電腦跟程式有興趣的物理系學生:
1.請你認真的學"寫程式"!
我做的領域遇過很多人都自稱自己會寫程式,寫的多好多好云云.資料夾一打
開幾百個程式檔案通通自己寫的.但其實你真把他的程式打開來看,簡直慘不
忍睹,你聽過hard coding嗎? 就是那樣. 沒錯,它們確實對某一套語言的語法
很熟悉,但也就只是那樣.它們在做的事情只是很憋腳的把一堆數學公式寫成
程式而已,既沒有效率,也沒有規劃,這頂多只是coding,不能叫做programming.
很多人完全不懂物件導向,又或者他的程式裡面確實用到了很多class,但是這
些class完全就只是把一堆不相關的函數做堆砌,既無法作為基礎類別,也無法
作為被繼承的對象.可是它們也都覺得自己很會寫程式,一講起某某語言就高
談闊論,但其實Leetcode上的題目連easy都解不了.如果你以後遇到這樣的人,
請一定要收起你的誤解,因為它們的無知會害了你! (我以前就是那種半調子
還以為自己懂程式的人,多年後回想才覺得自己是笑話,先為那些被我害過的人
道歉了).對一個大二的學生來說,要你花時間去做一些高深的物理是作不出什
麼的,但是好好的把程式的觀念學好,把一些很基本的演算法弄懂,半年一年很
夠了,這些東西會是你一輩子的寶藏.它的影響不只是你的程式能力比別人強,
更重要的是你擁有了另一種不同於物理的思考邏輯,一種模組化的,物件化,流
程化的思考邏輯.我認為這本質上不同於物理學家圖像化的,故事化,直覺化的
思考方式.
2. 請你學習正確的語言:
其實這是一個很偏頗的建議,因為大多數寫程式的人都會告訴你,程式背後的邏
輯跟觀念才是重要的,語言只是一個實作的平台. 我覺得這基本上沒錯,但一套
語言要學到精不容易,若非有特殊需求,你也實在沒道理去學些用不到的語言!
那什麼語言是用不到的呢? Fortran! 好了,我知道這個答案馬上有一堆人要跳
出來噴我了,請噴吧! 我不在乎.
記住這句話,在你未來的生涯中,如果有人告訴你要去學fortran,請絕對忽視他
,因為這百分之一百是一個在害你的建議. 我不否認fortran裡面有些特性很好,
但是這絕對是一個過時的,不符合現代化標準的,而且很難用,也不普及的語言,
最重要的是它幾乎不支持現代化的物件導向(我知道03後有支援,但何苦浪費自
己的時間?),他的存在單純只是因為歷史發展的緣故,這個語言若不是因為各種
基於lapack的應用還普遍存在,它早該從地球上消失了(我寫過不少fortran,所
以說這話不是瞎扯). 但不知為何,fortran就像是一個幽靈一樣的,在物理的圈
子裡揮之不去,上至退休教授,下至剛讀研究所的小朋友,幾乎一抓一把fortran
使用者.但我可以很肯定的跟你說,離開這圈子,fortran幾乎不會幫你找到任何
工作. 請謹慎考慮.
你至少該學會的是C++(我不喜歡C/C++這種用法,因為在我看來,C跟C++是兩種
完全不同邏輯的語言,縱然C++兼容C的語法,但你C++很熟的人,遇到C會幾乎不
知道該怎麼寫,反之亦然),C++大概是現在任何電腦領域你都必須要學會的語言,
如果你需要用C++做數值跟矩陣運算,又對Matlab很熟,我建議你,可以用Armadillo
這套函式庫,這裡面定義了一系列的基礎類別,可以讓你用跟matlab非常相似的
語法完成絕大多數的計算,初學者幾天就可上手. 如果你希望在不同的平台,例
如linux,Mac,win上都輕鬆寫程式,不想忍受跨平台的干擾,我建議你用eigen這
套函式庫,這套函式庫連編譯都不用,你下載下來,你只要在C++的程式裡直接引
進標頭檔,就可以輕鬆定義矩陣跟處理絕大多數數值運算的問題了. 我想不到有
任何理由你應該使用fortran.
另外我還建議你至少要再學習一個script language來處理絕大多數的小程式,
當然我首推的就是Python了,原因無他,因為目前除了Python之外,我找不到在數
值計算領域有更方便的script language(不要學Matlab,拜託,它又貴,又缺乏
完善的物件導向,而且Matlab能做的Python都能做,但是Python能做的Matlab很
多都不能做!).當然最重要的是,Python有龐大的開源社群,提供了數以萬計的模
組,學會Python你等於擁有了另一個世界,好東西,不學嗎?
3. 請你試著加入專案,你的實驗室在全世界:
作為一個物理系的大二生,你既沒學過比較高深的物理,也缺乏實作的經驗,把你
這種人丟去一個實驗室做專題,很多時候你就只是打雜的而已,但是其實你能做的
比你想像中多非常多.加入開源社群,讓自己貢獻一個專案就是一件很有價值的事
情,這不僅對你未來推甄研究所有幫助,對你以後找工作也非常有幫助.在Github
上就有數不清的物理開源專案,以我自己的凝態計算領域來說,我自己注意到的就
有好幾個,有些是在開發GUI界面幫助使用者更方便的建立跑DFT的input file,
有些是在開發新的pseudopotential,有些是在開發一些處理特定數值計算的模
組作為DFT code的插件,有些是在開發一些物理教學的互動遊戲,幫助學生看到電
磁波的現象或是熱的現象,另外就我所知天文跟高能領域的開源專案也非常多,你
應該多去網路上的開源社群看看,我自己有在開發的是DFT結果的postprocess跟
一些Wannier tight-binding的東西,不過寫寫停停,進展龜速就是.畢竟本業不在
此,只當興趣.但我要強調的是,透過參加這些開源專案,你不僅有機會跟全世界
的物理學家一起合作,最重要的是,你可以學習到很多物件導向的實際應用.我常跟
別人聊,如果你的code只寫給你自己一個人用,那你寫的多亂都無所謂你爽就好,但
如果你要跟別人合作,那就非用物件導向不可,只有透過大量的繼承,重載,封裝,合
作才變得可能.現在是個網路的時代,你不該把自己侷限在學校所能提供的資源上.
它們能給你的,撐不起你的夢想!
4. 請你多看看最新的進展:
也許講到這你還意猶未竟,難道作為一個程式愛好者,能做的就只有這些? 有沒有
一些真正的物理可以碰? 當然有! 不過不是你的老師所提的量子計算領域 (事實上
我根本搞不懂量子計算領域跟寫程式有啥關係? ok,你當然可以說做這個領域的人
會需要做些數值計算,但是做理論的,哪個不用做數值?).
要我推薦,我會建議你可以研究一下現下最火的machine learning.最近一陣子有個
領域我覺得挺有意思的,你可以google "renormalization group machine learning".
這件事情是這樣的,在凝態物理裡面有個小領域叫做重整化群,它主要是被用來處理
一些物質相變的問題,他的基礎原理就是透過不斷的對一個物理系統進行尺度
變換,來試圖掌握不同尺度的量子漲落,最終得出相變的參數.這是很老的理論了,幾十
年前就已經拿了諾貝爾獎了.最近很多物理學家發現,現下最紅的machine learning,
透過一層一層的mapping來找尋最佳解的過程,本質上就是物理裡面重整化的過程.
所以原本統計跟多體物理的問題,透過這層聯繫,很多有意思的東西就跑出來了.
今年二月份一篇Science就發表了第一個(至少就我所知)應用實例.它們透過machine
learing的方式來求解了一系列interacting spin model(1D Ising, 1D Heisenberg,
2D Heisenberg)的問題.結果發現在描述這些模型的物理上,效果奇佳!
http://science.sciencemag.org/content/355/6325/602
這當然不是近代電腦科學滲透進物理學的唯一實例,很多其他的東西,你要自己去找.
5. 請你試著找屬於自己的答案:
最後我要說的是,你才大二,人生還大有可為,很多事情還允許你試錯,你的疑惑,你
的徬徨,我老實說,無論是你學校的老師,或是這個板上那些比你資深很多的前輩(例
如我)其實都是回答不了你的.他們給你的答案(包括這篇文章)不是沒有價值.只是
他們給出的答案都充滿了上個世代的影子,盡是撲鼻而來的陳腐味,放在你所處的時
代,早已經不是最佳解了!(就如同上一輩的人看待22K問題,常常會得出草莓族的結
論一樣),比起急就章的想找個老師學東西,我更建議你的是多去看看不同的東西,不
要一股腦的把時間花在遠超過你現在能力的事情上.這個世界上最前端的知識,絕不
是掌握在那些已經在同一個領域做了30年的老教授手上,最有意思的想法也絕不是在
你眼中的那些高高在上的前輩身上.這些東西在哪,你得自己去找.它們可能在google
scholar最近發表的一篇文章上,也許在facebook一些社群上,也許在一堆年輕人組
成的論壇上,也許在Github的一個專案上,也許是coursera的一門免費的課程上,也許
在你身邊那些跟你閒聊打屁的朋友身上.
你所處的時代很可悲,一個萬物通膨,一切都不值錢,一切技能都不實用,一個努力跟
收穫常常不成正比的時代.但你所處的時代也很幸運,無數的人敲敲鍵盤就能幹出一
番大事,只有你有好的創意,全世界都會一起來幫你.人與人的協作如此緊密,人與人
的關係又如此疏遠,要在這個時代自處,不容易,過去成功的model不適用,新的model
又未成形.但我想喜歡寫程式是個還不錯的立足點,不過要記住,這種潮出水的熱情千
萬別從那些win 7再戰十年的人身上找答案,你會溺水的!
--
★人生中最溫暖的夏天是在紐約的冬天★
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 169.237.42.114
※ 文章網址: https://www.ptt.cc/bbs/Physics/M.1502139121.A.4C9.html
※ 編輯: pipidog (169.237.42.114), 08/08/2017 07:49:02
推
08/08 07:58, , 1F
08/08 07:58, 1F
推
08/08 08:20, , 2F
08/08 08:20, 2F
推
08/08 08:37, , 3F
08/08 08:37, 3F
推
08/08 10:41, , 4F
08/08 10:41, 4F
推
08/08 11:08, , 5F
08/08 11:08, 5F
推
08/08 11:18, , 6F
08/08 11:18, 6F
推
08/08 11:43, , 7F
08/08 11:43, 7F
推
08/08 11:49, , 8F
08/08 11:49, 8F
推
08/08 12:31, , 9F
08/08 12:31, 9F
推
08/08 12:34, , 10F
08/08 12:34, 10F
推
08/08 12:52, , 11F
08/08 12:52, 11F
推
08/08 13:16, , 12F
08/08 13:16, 12F
→
08/08 13:16, , 13F
08/08 13:16, 13F
→
08/08 13:17, , 14F
08/08 13:17, 14F
→
08/08 13:36, , 15F
08/08 13:36, 15F
→
08/08 13:37, , 16F
08/08 13:37, 16F
→
08/08 13:37, , 17F
08/08 13:37, 17F
→
08/08 13:37, , 18F
08/08 13:37, 18F
推
08/08 14:24, , 19F
08/08 14:24, 19F
推
08/08 15:01, , 20F
08/08 15:01, 20F
推
08/08 16:41, , 21F
08/08 16:41, 21F
推
08/08 18:24, , 22F
08/08 18:24, 22F
推
08/08 18:45, , 23F
08/08 18:45, 23F
→
08/08 18:46, , 24F
08/08 18:46, 24F
推
08/08 19:37, , 25F
08/08 19:37, 25F
→
08/08 19:38, , 26F
08/08 19:38, 26F
→
08/08 19:38, , 27F
08/08 19:38, 27F
→
08/08 19:39, , 28F
08/08 19:39, 28F
推
08/08 19:41, , 29F
08/08 19:41, 29F
→
08/08 19:47, , 30F
08/08 19:47, 30F
→
08/08 19:47, , 31F
08/08 19:47, 31F
推
08/08 20:16, , 32F
08/08 20:16, 32F
→
08/08 20:16, , 33F
08/08 20:16, 33F
推
08/08 20:52, , 34F
08/08 20:52, 34F
→
08/08 20:54, , 35F
08/08 20:54, 35F
推
08/09 01:51, , 36F
08/09 01:51, 36F
→
08/09 01:52, , 37F
08/09 01:52, 37F
→
08/09 01:53, , 38F
08/09 01:53, 38F
→
08/09 01:54, , 39F
08/09 01:54, 39F
還有 56 則推文
→
08/12 13:23, , 96F
08/12 13:23, 96F
推
08/12 19:30, , 97F
08/12 19:30, 97F
推
08/13 22:56, , 98F
08/13 22:56, 98F
推
08/15 20:44, , 99F
08/15 20:44, 99F
→
08/16 00:13, , 100F
08/16 00:13, 100F
推
08/18 15:23, , 101F
08/18 15:23, 101F
→
08/18 15:28, , 102F
08/18 15:28, 102F
→
08/18 15:30, , 103F
08/18 15:30, 103F
→
08/18 15:35, , 104F
08/18 15:35, 104F
→
08/18 15:36, , 105F
08/18 15:36, 105F
→
08/18 15:37, , 106F
08/18 15:37, 106F
推
08/18 15:42, , 107F
08/18 15:42, 107F
推
08/18 21:10, , 108F
08/18 21:10, 108F
→
08/18 21:10, , 109F
08/18 21:10, 109F
→
08/18 21:14, , 110F
08/18 21:14, 110F
→
08/18 21:16, , 111F
08/18 21:16, 111F
→
08/18 21:17, , 112F
08/18 21:17, 112F
→
08/18 21:19, , 113F
08/18 21:19, 113F
推
08/19 07:36, , 114F
08/19 07:36, 114F
→
08/19 07:39, , 115F
08/19 07:39, 115F
→
08/19 07:40, , 116F
08/19 07:40, 116F
→
08/19 07:42, , 117F
08/19 07:42, 117F
推
08/19 08:18, , 118F
08/19 08:18, 118F
→
08/19 08:21, , 119F
08/19 08:21, 119F
→
08/19 08:23, , 120F
08/19 08:23, 120F
→
08/19 08:24, , 121F
08/19 08:24, 121F
→
08/19 11:35, , 122F
08/19 11:35, 122F
→
08/19 15:13, , 123F
08/19 15:13, 123F
推
08/20 05:43, , 124F
08/20 05:43, 124F
→
08/20 13:42, , 125F
08/20 13:42, 125F
→
08/20 13:46, , 126F
08/20 13:46, 126F
推
08/20 17:41, , 127F
08/20 17:41, 127F
推
08/20 22:00, , 128F
08/20 22:00, 128F
→
08/21 22:30, , 129F
08/21 22:30, 129F
→
08/21 22:39, , 130F
08/21 22:39, 130F
推
08/22 23:28, , 131F
08/22 23:28, 131F
→
08/25 14:28, , 132F
08/25 14:28, 132F
→
08/25 14:29, , 133F
08/25 14:29, 133F
推
08/31 00:11, , 134F
08/31 00:11, 134F
→
08/31 00:12, , 135F
08/31 00:12, 135F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 2 之 4 篇):