物理吧 关注:1,396,719贴子:5,300,498

关于物理科研,我一直有一个疑问

只看楼主收藏回复

如题,我一直有一个疑问。
不管是老师还是学长还是一些网上看到的硕士博士,无一不在强调搞物理的一定要学好代码。我自己只能说是会一点Python吧,但是那也仅仅局限于一些简单的编程,学了数值计算也只算是会了解线性方程、拟合、积分的一些算法。再之后就不懂学代码要学什么了,我是真的不懂物理人一直强调的会代码到底要会什么。
前段时间在复现一篇文章的过程中觉得算的实在太慢了,就跑去问了曾经教我数值计算的老师,他告诉我说去看一本陈国良老师写的《并行计算》的这样一本书,当时想着这么麻烦还是算了,现在想要认真学一学代码了,请问一下这算不算物理人必修的东西?
然后就是在网上看到的,人家说学代码就去找一个project然后对着谷歌硬啃就行了,可是我连去哪找一个合适的所谓的project我都不懂,我该如何开始学习代码呢?
我又去看知乎,找到了两本推荐的书,分别是《Python物理建模初学者指南》和《Python物理学高效计算》,我今天粗略看了一下这两本书,感觉似乎还可以,请问我学习代码从这两本书开始足够了么?
最后总结一下我的疑问。如何学习代码?有什么书推荐?《并行计算》这种看起来似乎很cs的东西是物理人需要学的么?
本人物理大三本科生,真心求教,希望有大神解答


IP属地:安徽来自Android客户端1楼2023-07-02 06:28回复
    可以找找计算物理的教材,本科学的感觉差不多就是导数,积分,解方程,本征值,傅里叶变换,常微分偏微分,蒙特卡罗法这些,其中傅里叶变换相关的可以多学点


    IP属地:福建来自Android客户端2楼2023-07-02 07:18
    收起回复
      2025-12-13 01:09:25
      广告
      不感兴趣
      开通SVIP免广告
      程序跑得慢情况有很多种,python不用库天然比c或者Fortran慢一两个数量级,另外还有代码优化的问题,反正程序这东西需要的时候再学也没问题


      IP属地:安徽来自Android客户端3楼2023-07-02 09:25
      收起回复
        代码肯定是要学的吧,大家都在数学雕花,另外做计算还是用c好一点,有时候python的O(nlogn)比c的O(n^2)还慢


        IP属地:英国来自iPhone客户端4楼2023-07-02 09:34
        收起回复
          遇到问题现学


          IP属地:浙江来自Android客户端5楼2023-07-02 13:11
          回复
            我自己是软件工程师,我哥是物理博士,大概对你的问题两方面都了解一些。
            首先,是的,现代物理学研究肯定离不开编写代码,数值模拟或者处理试验数据都少不了计算机的帮助。
            这年头,Python应该是不错的。你导师推荐的改进方向(多线程)也是你必须掌握的(实际工作中,有可能多线程都不够,需要多机集群)。
            在软件专业人员看来,Python是一种非常好的粘合剂——易学易用,可以作为非计算机专业人员与计算机打交道的工具,同时也很适合作为不同的计算工具与数据库之间的中介。但Python本身的性能太差了,不适合直接作为计算工具。
            所以,你还需要熟悉了解各种可供Python调用的工具库,充分利用它们,而不是直接用Python执行计算,这可能比学习并行计算更重要。因为许多优秀的运算库本身就内置并行计算能力,有些甚至可以使用GPU优化。
            如果你需要极(变)致(态)的性能优化,那么还是需要学习C语言或C++。不过这个学习门坎太高了,我并不推荐非计算机专业人员在这上面浪费精力。看样子你对编程不是那么感兴趣,那就别尝试了。不过,稍稍看一下C语言的入门知识,知道计算机操作系统、内存和指令的关系,对你真正理解Python会非常有帮助。因为Python被设计出来的一个主要用途就是对接C语言。


            IP属地:上海来自Android客户端6楼2023-07-02 15:03
            收起回复
              主要是看你深造到什么程度。比如读硕读博,分析数据基本是要自己弄代码分析的。但不是需要你非常精通,一般课题组会有前人留下的工具能用的。比如我们以前用的是Igor,在进组前我都不知道这是个啥……一边做项目,一边解决问题,一边就会用了。然后就是技多不压身,如果后面不搞物理了去搞金融,比如量化,这种写代码都是基本技能。python这类使用很广的语言在后面这条有优势


              IP属地:福建来自Android客户端7楼2023-07-02 15:14
              收起回复
                其实学计算机的人反而用并行计算不多。
                科学计算(包括物理)用平行多些。


                IP属地:中国台湾8楼2023-07-02 16:37
                收起回复
                  2025-12-13 01:03:25
                  广告
                  不感兴趣
                  开通SVIP免广告
                  看得到都被研究差不多,现在研究的都是没法直接观测到,计算机仿真模拟应该也是很重要的一种手段,提出一种假设,用计算机去模拟,最终数据再和宏观数据去对比。


                  IP属地:江苏来自Android客户端9楼2023-07-02 16:55
                  回复
                    open ai


                    IP属地:上海来自Android客户端10楼2023-07-02 17:01
                    收起回复
                      理工科把编程学好始终是不吃亏的


                      IP属地:广东来自Android客户端11楼2023-07-02 18:10
                      回复
                        物理程序需要效率,C++才是王道。


                        IP属地:美国来自iPhone客户端12楼2023-07-03 00:17
                        回复
                          Python也就近几年机器学习用得多,那那不算严肃的物理。如果只能专攻一个语言,那必须是C++。


                          IP属地:美国来自iPhone客户端13楼2023-07-03 00:19
                          收起回复
                            你猜我是干啥的?
                            你学的这些东西可能完全没有作用,你唯一需要学习的就是C/C++,因为基本上全部专业软件都是C类似,哪怕他不是用的C/C++,你在学习时候学到的思路和算法还有代码风格都能让你在这些专业软件里面不至于抓瞎,总能看到哦~的东西,学那么多软件是没有用的,你后面搞科研的时候用的软件都是非常冷门甚至需要你自己动手写的,在不清楚你未来的导师和课题的当下只有C/C++才对你有帮助,别的除了数学基本都可以丢了


                            IP属地:山东来自Android客户端14楼2023-07-03 00:31
                            收起回复
                              2025-12-13 00:57:25
                              广告
                              不感兴趣
                              开通SVIP免广告
                              你是赶上好时候了,现在没人逼你学Fortran了。不过你学编程的时候没一起学个数值分析?科学计算笼统说就是数值分析+编程


                              IP属地:北京来自iPhone客户端15楼2023-07-03 01:18
                              收起回复