一個物理本科生在畢業之前應該掌握哪些計算機知識?到什麼水平?
除了物理的學習外,還想了解有哪些計算機知識是以後必要的。
謝邀。
這個問題因人而異吧,即使計算機科學學生要學什麼知識,他們也說不準。而且這也取決於這人做什麼物理,他的導師是誰等等。
或者我說說我的情況。我本科時學過數門電腦語言,包括C、C++、Fortran和Mathematica,其中C++和Mathematica是自學的,因為在實習時要用。另外我修了一科數據結構,到了研究生都沒用上,但出來工作後就大派用場了。另外學了一科模擬(simulation),極重要的一門課。到了研究生時期,沒有正式讀過計算機的課,但在非線性物理的一門課中在作業大量編程;而論文的其中一部分大量用上Mathematica。
畢業後做大數據,在工作真正學會了Object-Oriented programming(和相關的design patterns)和Functional programming。這才體會到很多物理學生寫scientific computing的人都不會好好維罊自己的編碼,使後來用上或修改時極麻煩。我本科物理,研究生第一性原理計算,接觸計算機比較多,我來說說對於這個方向比較實用的吧。
- Linux。這個不算是編程語言,但是掌握Linux的基本概念,熟練使用shell,最好能編寫Bash腳本會對你十分有用。往後的話可以學一下Linux的編程,這對於Linux的認識以及C的認識都很有幫助。推薦書目:《Linux程序設計》。
- Fortran。數學計算主要使用它,性能好,不太追求性能的話可以用其他語言代替。推薦書目:《Fortran 95/2003 for Scientists and Engineers》
- C++。這個是必備語言。也是在學習Linux編程中必須掌握的語言。推薦書目:《C++ Primer 中文版(第 4 版)》
- Python,至少掌握一門靈巧的腳本語言,它能讓你大大提高工作效率,也能解決一些生活工作中很瑣碎的事情,掌握一些科學計算的庫的話可以簡單的代替一下matrix的部分功能。用來處理數據也非常犀利。推薦書目:python官方文檔。
- Latex,可有可無,當你的論文一直被導師糾正各種格式問題的時候,可以考慮它了。推薦書目:《一份不太簡短的Latex2e介紹》。
PS:物理學一門非常有趣的科目。但知乎是一個程序員的聚集地。大家聊一些非常酷的話題大多是圍繞程序之類的展開的。但是,物理學也非常酷,或者說更酷。只是在這裡大家聊得不多。如果你真的有大把時間的話。去仔細算算朗道十卷上的推導吧,去體會下相對論和量子力學帶來的震撼吧。不必去羨慕別人的熱鬧。熱鬧是他們的,我們有物理就夠了。
願。勿忘初心。
作為本科大四物理專業的,現在在信息工程所做畢業設計(計算機方向),還是稍微了解過物理實驗室的情況的。說一下個人感受吧。
如果你並不需要做計算機相關,而是藉助計算機去學習和工作的話。你不需要提前學習太多實際的內容,而是明確計算機能給你帶來什麼便利。等到你需要的時候再去使用,你用到的部分一般不會需要你提前去準備。
個人認為一般可以分為兩種計算機技能:第一是通用的技術,比如編程至少要有一個能臨時使用拿得出手的,比如c/java。如果數學計算方向,請在matlab和mathmetic中選擇一個,他們各有優點。然後日常論文等等,如果你word用的很熟也沒有必要使用latex等等看著高大上的。endnote等等插件也是看實驗室氛圍,大家都在用交流會方便一些,如果只有你自己用就選一個順手的。
總之這類的技術就是每個方面只需要要入門一個,沒有必要提前把時間投入到太廣的面,一切以你的實驗需求為準。比如你有了c基礎,沒必要去學習c++,java,和一些腳本語言。語言都是相通的,真正需要用了也不會花費你太多的時間。有了windows也不必非要去研究linux,等到你們實驗室的平台是在linux上運行的再去熟悉也可以。這些技術的材料很容易找到,臨時補充更節約精力。
第二是專業需要的技術,比如高能物理需要用root,光學可能需要用FDTD,模擬的XXXX(完了忘了叫什麼了。。。)這種你進入這個專業前就會有所耳聞,這就比較需要提前熟悉了。一是你以後要經常和這些玩意打交道,第二是這些軟體的材料不像上一類中,百度一下,你並不知道,需要你自己研究文檔和請教前輩。這些還是提前熟悉一些比較好。還有個叫做labview的小逗比,這玩意經常在實驗室的電子設備控制上用,不過你有了任意一門編程基礎也很容易上手,同樣沒必要提前學習。
額外的就是學習過計算物理,數據結構等等課程,對計算機的思想有所了解,能做什麼事情,不能做什麼事情。有個大概的概念,能夠發現一個數學上需要處理的問題,能了解計算機是否能幫上忙,通過什麼演算法,就大概能找到你想要的工具了。多了解演算法和數據結構,就是錦上添花,如果個人沒什麼興趣,就沒什麼必要去多看了。
哦對了,如果是想轉行就另當別論了。謝謝邀請。不過首先必須承認,我並不喜歡計算機,計算機能力挺差的,本領域也不需要特別厲害的編程能力。我一直是做理論的,所以不知道做實驗的處理數據需要的是否有所不同(比如說我一個做核物理實驗的同學說她們領域的某軟體必須在linux系統里裝,那麼她就得熟練使用linux系統)。主要還得看你想做什麼,你的領域具體有什麼要求。
本科的時候學校要求我們學C/C++的課程,所以這個應該是多數人都會。其他的並未做具體要求。
之前做的課題需要大數據量的模擬,C/C++上跑ODEs一般比matlab之類的要快,C/C++也有GSL庫之類的東西可以用,所以用C/C++是比較方便的。然而即便是看之前師兄寫的程序,也並沒有要求特別高,基本就是學好課程,能把問題實現出來就差不多了。
然而當時所在的組裡也有其他同學是研究如何用計算機處理拍攝到的蛋白質結構圖像,他們需要大量的編程,甚至可以認為主要是在研究演算法的。這樣的情況對編程能力的要求非常高,不光是要會完成一個功能,還要考慮到計算複雜度的優化,還要會並行計算,甚至是不同語言的混編。需要寫的代碼都不是按幾千行幾千行來計算的。如果你想要做這種方向的事情,就需要對自己的計算機水平要求高一些;如果自己不喜歡編程,就不要選擇這種方向。
後來開始做統計物理的研究,接觸的課題要麼是偏概念的,要麼是偏數學推導的,不用編程。但是這類研究中也可能涉及一點不過分複雜的模擬。量子裡面有虛數,有矩陣,那麼用C/C++就不如mathematica和matlab方便。因為你需要把實部虛部分別寫開,如果需要考慮的問題複雜起來,就會比較麻煩。估計類似的情況在其他理論物理領域也蠻普遍。
總的來說,我認為好的編程習慣(比如說學會做注釋啊,排版上的同一個括弧上下對其,不同的括弧錯開一些啊之類的)和編程思維的培養,比具體學會什麼語言重要。學一兩門你想做的領域經常用的語言,在學習中打基礎。但可能就算學完了課程,沒有實際做事也還是不夠的。其他的語言如果需要用的話,在使用中去學習效率更高。
哦對了,latex基本是理論物理領域通用的工具,雖然不怎麼算是需要專門學的東西。
以上。雖然本人已經基本對計算機棄療,不會選擇特別依賴大數據量模擬的課題了...物理系不能為了計算機而學計算機。學習演算法、編程語言不是為了去找實習。物理是一種思維方式,計算機也是一種思維方式。就我本人而言,出身物理,接觸過C/C++,三大專業數學軟體(3個M),硬體編程語言verilogHDL。而這些東西都是為了輔助物理的學習。很多人很浮躁,許多基本的數學物理概念都沒搞清楚,又想著轉行搞計算機。呵呵。
能多學就多學,說不定等找不到工作時,你就想起轉cs了
這個問題讓我想到了一個我經常跟室友吐槽的事情。我們本科的時候開過兩門跟計算機有關的必修課,一個是C語言,一個是計算物理。按說都是很重要的課,也是跟題主問的問題一樣,作為物理專業的學生對計算機該掌握到什麼程度。理論上說這兩門課要是學的好應該就足以應付研究生階段的繼續學習和簡單的研究工作了。但實際上由於物理專業的特性,這個課基本沒啥用。C語言:我其實一直沒有相通幹啥要教這個,理論上說是學好了C語言別的語言都很簡單,但問題是大部分我接觸到組和方向都木有直接用這個的,高性能計算要求高的都是FORTRAN,沒啥性能要求的都是Matlab+各自的模擬軟體,幹啥不直接學那個呢?計算物理:這個課其實內容很充實的,我記得在科技大的計算物理是個神課,我們好像因為老師比較年輕,就比較水了。但裡面教的東西如果不做理論方向的計算,貌似其實也用不到。--------------------------吐槽完畢----------------------------跟之前的答案一樣,也想說,物理這個涵蓋面太廣,每個細分專業都有自己的一套工具,而且你做模擬還是做理論計算都不一樣。計算機這個東西,一部分是理論,還有很大一部分是技巧,技巧就意味著是個不難學但得有人教你的東西。這個就意味在如果你不是轉專業的話,其實最重要的是學會你研究生階段所需要的技巧。這個問題得去問你心水的方向的師兄。如果是做計算,可以學一下FORTRAN,雖然知乎上不止一次的吐槽過FORTRAN,我個人也覺得這個完全是上個時代的東西,但沒辦法,有很多傳統但好用的程序,雖然很難維護和閱讀,但你重寫也不可能。實驗方向的話,就去問問師兄用啥模擬軟體咯,這個東西互相是學不來的。很多技巧也是小圈子裡面傳播的。
物理學在讀,反正我沒專門學計算機知識,選了一些計算機課程,但都學得比較水……
做過模型的,反饋方程手寫好了然後叫別人編程的……
感覺計算機知識比較重要,研究生學長們都自嘲是學計算機的……
既然這麼重要,為什麼還學的這麼水?因為我任性啊,就是不喜歡看,還不如多看幾本數學和物理……推薦閱讀:
※什麼是相對論?
※在空間軌道上運行的宇宙飛船中,漂浮著一個足夠大的水滴 用一根內壁乾淨、 外壁油污、兩段開口的玻璃毛細管接觸水滴時,將發生什麼?
※成龍將房祖名打得凌空飛 5 米可能嗎?
※地球物理博士改行做金融行業又何優勢,都有哪些選擇?
※一年學完物理系本科知識可能嗎?
TAG:計算機 | 物理學 | 普通高校本科層次大學本科 |