一个物理学家需要学多少编程知识?

不同视角、不同观点、深度探讨,禁止人品和道德攻击
回复
houxp
帖子: 18
注册时间: 2010-11-27 16:48

Re: 一个物理学家需要学多少编程知识?

#46

帖子 houxp » 2010-11-27 17:56

首先想明确一个基本的认识:编程不是计算机专业或者软件专业人员的专利,甚至在某些时候,也不是计算机专业或者软件专业人员的专长!(先不要急着反驳我,先天听我说完。)
要理解这句话的前半部分不难,我举个例子。有这么一个任务,要求解XOY坐标系中一条封闭曲线的面积。通过编程计算来解决,这个任务并不难,只要学过一元微积分的基本知识,很快就能编出来。至于计算的精度、速度、存储空间需求,我们先不谈,单纯从“计算出结果”这个高度来要求,不管是否计算机专业的,都不难。
但要是换成这么一个任务:气体向上流经一个充满颗粒状固体的容器,要求计算气体流经前后的压降和容器各个高度上被气体带上来的颗粒的浓度。这个问题就是计算机专业或者软件专业的人难以胜任的了。问题的难点不在于如何设计软件的结构,如何画流程图,如何编码,这些都是次要问题。即使借助于专业的Fluent软件,难点也不在于如何确定那十来个偏微分方程的离散格式、边界条件确定和区域网格的划分,这在计算流体力学专业而言也是小菜。真正的困难在于如何确定气相和颗粒之间的作用力模型。这需要更细化专业的知识。

我举的是比较专业的例子,有人可能不太理解。这么总结一下吧:要完成这个任务,必修具备三方面的功力:1--编程技能,2--数值计算方法,3--相关专业的科学知识。
一个纯计算机或软件专业的人,熟练掌握1,个别高手有所涉猎2,但很难进入3。他的长项在于通用、基础软件的开发。
一个行业背景的工作者,深刻理解3,牢固掌握2,基本掌握1。从编程的角度考虑,他的长处是专用软件的开发。
对于非计算机专业人员来讲,1和2都是工具,利用1和2这些工具,不断完善、补充、修正3——这是科学研究的终极目标:增加新的知识、产生新的技术!
还有一片天地——那就是计算机和软件专业的人与相关行业的人分工合作完成一项任务。要说一个人或少数几个人能否三个方面通吃,比较难,也没有必要。楼主的问题中提到了Matlab,是一个庞大的科学计算和工程分析工具,请问是谁开发的Matlab?纯粹的系统分析师?纯粹的编程人员?纯粹的数学家或者科学家?都不可能象当年单打独斗时代的求伯君一样完成这个事情。那是一群来自各个专业的行家里手合作出来的。
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 一个物理学家需要学多少编程知识?

#47

帖子 delectate » 2010-11-27 17:58

只会hello wrold低头路过

我有话想说说:
1.我想转到pk区,lz是来pk的
2.这是个团队的问题,lz是条独狼?独狼都是死的很惨的
3.超算你就牛x啦?赶紧洗洗睡吧
rediscover
帖子: 3173
注册时间: 2010-01-13 23:26

Re: 一个物理学家需要学多少编程知识?

#48

帖子 rediscover » 2010-11-27 18:08

某些时候,用超算是因为算法实现得不好,普通机器才跑不了。 :em06
Here I am.
Ubuntu 桌面培训 - 全中文官方文档,含汉化截图,提供PDF
houxp
帖子: 18
注册时间: 2010-11-27 16:48

Re: 一个物理学家需要学多少编程知识?

#49

帖子 houxp » 2010-11-27 18:26

关于楼主的问题,我的一些浅见:
1. 要不要学习C语言或者其他高级语言?FORTRAN本身就是一种高级语言,直接学FORTRAN不就行了吗?
程序设计语言,和我们说话的语言,从功能上是一致的:表达你的思想。一句话,我们可以用汉语说,也可以用英语、法语、阿拉伯语甚至满语说。说“hello”、“allo”和“嗨”表达同一种语意:问候,打招呼。
一个计算任务,可以用Fortran、C、C++、Java甚至Basic实现它。各种编程语言规定了不同的词汇和语法(关键字、数据类型等),但我们使用它编一段程序,要表达的是语意——数据结构和算法。
但更深入的追究起来,唐诗宋词翻译成外语,以及莎士比亚的戏剧翻译成汉语,都很难表达原著的韵味。计算机语言也有各自的适用范围,否则早就统一了。教科书上说“学习C语言非常有助于学习其他编程语言”多数是从“理解计算机程序是如何工作的”这个角度出发(或许也夹杂着推销他这本C编程的书的目的)。各种编程语言各有千秋,甚至一种语言的不同编译器,执行效果也不一定完全相同。
啰嗦了这么多,任何一种高级语言都有其存在的必然性,学习编程语言,不在于了解它的语法,而在于用它实现你的计算。就是一个工具,没有哪个语言是另一种语言的基础。Fortran、C、C++、Java,完全可以从零起步学其中任何一个。说白了,没有听说过学英语之前必须学汉语的。

2. 学习这些东西要不要深入研究UNIX的Shell?
可能Unix确实在桌面计算领域里比较少见,但是Linux在编程接口上与其相“类”,两者的差别只有特殊的程序才会注意。至于Shell,好像也没有必要深究,浅尝即可,除非你要频繁的用到shell。很多人把shell看作一种高级语言而已。
houxp
帖子: 18
注册时间: 2010-11-27 16:48

Re: 一个物理学家需要学多少编程知识?

#50

帖子 houxp » 2010-11-27 18:39

hawk1918 写了:楼主的签名档~ :em20

真正搞研究的话不需要自己折腾linux吧?
不理解您说的“折腾Linux”是指的什么。可否理解成:熟悉了Windows的人转在Linux下编程?

搞研究的大体分为两类:做实验的和编程模拟的。
前者在Windows下游刃有余就可以了。
后者往往需要在Linux环境下编程。除了大型机编程的需要外,很多专业软件的PC版都是从Unix主机上移植到X86的。在Windows上运行这些东东,可能不如在类Unix环境下效率高,或者适用于Windows环境的版本还没有问世。
头像
百草谷居士
帖子: 4023
注册时间: 2006-02-10 16:36
系统: debian12/xubuntu2404

Re: 一个物理学家需要学多少编程知识?

#51

帖子 百草谷居士 » 2010-11-27 19:18

想不到讨论的很热烈。
我的苦恼正如我的签名?
不过楼主如果需要的只是数值计算应该很好处理的。随便什么编程语言掌握一个就可以了。
Mint 22 / Xubuntu 24.04

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
wmpotato
帖子: 264
注册时间: 2009-11-06 19:48

Re: 一个物理学家需要学多少编程知识?

#52

帖子 wmpotato » 2010-11-27 19:34

百草谷居士 写了:想不到讨论的很热烈。
我的苦恼正如我的签名?
不过如果需要的只是数值计算应该很好处理的。随便什么编程语言掌握一个就可以了。
不是专程找楼上PK的,但是觉得它的签名有问题,windows的搭积木出来的软件和Linux 的解天书出来的软件会是一个级别吗?

还有楼上找不到软件,这个要怪只能怪Linux木有Win普及,开发软件的人要注意成本,有的时候不会顾及到小众用户罢了,楼上问“Ubuntu能干什么?",我认为拥有LInux内核的Ubuntu可以干所有Windows能干的事情,但会不会有人看中Linux的能力为它开发软件,就是另外的事了。
http://hi.baidu.com/wmpotato

Debian~Debian~Debian~~~
科学爱好者
帖子: 38
注册时间: 2010-11-26 14:34

Re: 一个物理学家需要学多少编程知识?

#53

帖子 科学爱好者 » 2010-11-27 21:47

uestczhb 写了:书上说得没错,学习C语言确实对编程很有帮助,至少对于大多数编程语言来说,学好C之后可以快速入门并应用。
但对于Lz所言的几个编程工具而言,没有C基础也是没问题的,其实都是几个简单的常用命令,在科学研究上最困难的其实还是理论上的突破,对于这些编程而言,在下以为都是极为简单的东西,我们的编程跟软件编程还是有比较大的区别,最主要的就是对理论的掌握和算法的设计。那些比较恼火的理论都搞定,这些编程还是问题么?
我觉得对于像你这个领域的人而言,就同上面某人说的一样,编程就如同英语,都是最基本的素质,而至于选择什么操作系统,这倒不是个很大的问题。

不过,我确实发现,类Unix系统在运算上稍微快于Windows系统。我在计算电磁场的时候,用的MATLAB,Windows下经常有死机的情况,Linux运行得还行,实在不行了,也就只有用大型机计算。绘图也是这样。

写文档用的Lyx/LaTeX,插图用Gle画.

MATLAB很贵,不想花钱,除了盗版可以用SciLab/Octave,Mathematics在Linux也有符号运算的软件……
非常好!我要把你的回复打印出来贴在书桌旁。我想得到你的Email地址,咱们可以深入交流。请uestczhb老兄通过站内短信跟我联系。多谢了!
安装Linux是为了科学计算和编程,思想和思考才是Linux的强项。多媒体娱乐请用Windows.
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 一个物理学家需要学多少编程知识?

#54

帖子 delectate » 2010-11-27 21:57

整个一愤青
科学爱好者
帖子: 38
注册时间: 2010-11-26 14:34

Re: 一个物理学家需要学多少编程知识?

#55

帖子 科学爱好者 » 2010-11-27 22:31

delectate 写了:只会hello wrold低头路过

我有话想说说:
1.我想转到pk区,lz是来pk的
2.这是个团队的问题,lz是条独狼?独狼都是死的很惨的
3.超算你就牛x啦?赶紧洗洗睡吧
回复delectate,我不是来PK的,我是来讨论问题的,只是这个过程中有些人发表了一些无聊愚蠢的观点,我回复纠正一下而已。很多人都回复支持了我的某些观点,比如提到计算流体力学那位,还有提到CERN那位。他们都指出:编程不是计算机专业的专利,其他理工科也需要学习编程。
什么叫做“一条独狼”?请你放尊重点。每个人都是有人格尊严的,我是人!!!不是动物!
是Shinery先谈到超级计算机,我才谈谈超级电脑的。我对于超级计算机的知识来自国家天文台的何勃亮发给我的Email,勃亮兄告诉我“超级计算机不是什么神秘的东西,每座天文台都有。上海超算中心的一大客户就是上海天文台。”所以不是我瞎编的,我是就事论事,我看不懂delectate写的“超算你就牛x啦?赶紧洗洗睡吧”是什么意思。我谈论超级计算机跟“牛x”有什么关系?
请不要发表脏话。
虽然在网上大家都不知道对方的真实姓名,但是请尊重他人,不要出口就恶语伤人。
此外我感谢很多热心肠专业人士的帮助,特别是那几位亲自用MATLAB(和其他高级语言)搞过科学计算的前辈,感谢你们贡献出自己宝贵的经验。以后我还需要向你们多多请教。
安装Linux是为了科学计算和编程,思想和思考才是Linux的强项。多媒体娱乐请用Windows.
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 一个物理学家需要学多少编程知识?

#56

帖子 delectate » 2010-11-27 22:34

我已经说的很清楚啦 ,我会写hello wrold都是吹出来的,我什么都不会。

我什么都不知道,您别跟我这种市侩一般见识啦。要不您高抬贵手,放我一马?感激不尽
rediscover
帖子: 3173
注册时间: 2010-01-13 23:26

Re: 一个物理学家需要学多少编程知识?

#57

帖子 rediscover » 2010-11-27 22:40

delectate 写了:我已经说的很清楚啦 ,我会写hello wrold都是吹出来的,我什么都不会。

我什么都不知道,您别跟我这种市侩一般见识啦。要不您高抬贵手,放我一马?感激不尽
要提前给千帖待遇不?
Here I am.
Ubuntu 桌面培训 - 全中文官方文档,含汉化截图,提供PDF
科学爱好者
帖子: 38
注册时间: 2010-11-26 14:34

Re: 一个物理学家需要学多少编程知识?

#58

帖子 科学爱好者 » 2010-11-27 22:50

刚刚看了一下新回复,发现了很多高手啊!以后我需要通过站内短信向各位高手请教了!我已经把那些武林前辈的ID记下来了,以后请他们多多指教。尤其是houxp和uestczhb,还有讨论计算流体力学那位,以后请多指教。
安装Linux是为了科学计算和编程,思想和思考才是Linux的强项。多媒体娱乐请用Windows.
头像
Destine
论坛版主
帖子: 568
注册时间: 2009-05-05 20:45

Re: 一个物理学家需要学多少编程知识?

#59

帖子 Destine » 2010-11-27 22:52

科学爱好者 写了:
delectate 写了:只会hello wrold低头路过

我有话想说说:
1.我想转到pk区,lz是来pk的
2.这是个团队的问题,lz是条独狼?独狼都是死的很惨的
3.超算你就牛x啦?赶紧洗洗睡吧
回复delectate,我不是来PK的,我是来讨论问题的,只是这个过程中有些人发表了一些无聊愚蠢的观点,我回复纠正一下而已。很多人都回复支持了我的某些观点,比如提到计算流体力学那位,还有提到CERN那位。他们都指出:编程不是计算机专业的专利,其他理工科也需要学习编程。
什么叫做“一条独狼”?请你放尊重点。每个人都是有人格尊严的,我是人!!!不是动物!
是Shinery先谈到超级计算机,我才谈谈超级电脑的。我对于超级计算机的知识来自国家天文台的何勃亮发给我的Email,勃亮兄告诉我“超级计算机不是什么神秘的东西,每座天文台都有。上海超算中心的一大客户就是上海天文台。”所以不是我瞎编的,我是就事论事,我看不懂delectate写的“超算你就牛x啦?赶紧洗洗睡吧”是什么意思。我谈论超级计算机跟“牛x”有什么关系?
请不要发表脏话。
虽然在网上大家都不知道对方的真实姓名,但是请尊重他人,不要出口就恶语伤人。
此外我感谢很多热心肠专业人士的帮助,特别是那几位亲自用MATLAB(和其他高级语言)搞过科学计算的前辈,感谢你们贡献出自己宝贵的经验。以后我还需要向你们多多请教。
不要觉得人家的观点都是无聊愚蠢的,你以为你是谁?很多人都回复支持你的观点能证明你是正确的么?你是不是逻辑有问题?何况也没看见有人说支持你,大家各说各的罢了,感觉不要太良好了。
哦,你是人,不是动物,原来人不是动物。你是不是真的逻辑有问题?要是这话都不懂,你真的还是回家洗洗睡吧。
至于你在论坛上随意公布人家名字电子邮件地址,我就不说什么了,修养这个事情也不是一天两天就能有的。
The world never lacks miracles.
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: 一个物理学家需要学多少编程知识?

#60

帖子 wzssyqa » 2010-11-27 23:38

我不说别的,lz,你能先找本《数值分析》或者《计算方法》之类的书,看上一个星期再来聊

好吗?
回复