24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2447  |  回复: 22
当前主题已经存档。

yyqiao

金虫 (小有名气)

[交流] 【原创】科学软件编程:现在该学什么?

先介绍两本书。

第一本,是胡江堂主编的《我是一只IT小小鸟》
这本书其实是一群IT业的年轻人对自己求学和找工作的经历回顾与总结,对于在读的、刚毕业的大学生和研究生,都很有参考价值。虽然说作者都是IT业的,对其他行业其实也类似。真希望能有一本《我是一只化学小凤凰》问世。

第二本,是周伟明的《多任务下的数据结构与算法》
当前,国际形势是这个样子的:硬件迅速发展、软件纷繁复杂,湿件亟待开发。多核、多任务、多平台......云计算、云存储、云服务......云山雾罩。对计算机编程感兴趣的大学生,应该学些什么,才能跟上这个国际形势呢?

我的建议是:夯实C基础、紧跟多任务。

(1)夯实C基础
花里胡哨的编程语言种类实在太多了。不过,拐角遇到C,大家来排队。没有哪种语言能与C来抗衡。因此,C语言的基础是绝对重要的。注意,我说的是C语言,不是C++,不是C#,更不是Visual C++(这是开发环境,不是编程语言)。

(2)紧跟多任务
反正目前的硬件再高级,也逃不过老冯模式的瓶颈。因此,多核、多任务是你有生之年软件运行的主要方式,也是你编程技术的发展方向。关于这一点,可以看看韩宪平的博客(如“理解多内核、多进程和多处理”等)。

下面转载的,是韩宪平的《并行思考!并行编程!事关国力》一文。

Intel公司的大师James Reinders告诫程序员改变思维方式,转向并行思考,掌握并行编程技术,他在一次演讲中提到实现并行编程规则:

think parallel并行思考
program using abstraction使用抽象方法
program tasks,not threads使用多任务而不是多线程(韩宪平注:程序员比较熟悉多线程,多线程共享同一进程的资源更容易互相侵犯)
design with the option to turn off concurrency设计程序的时候关掉线程同步
avoid locks when possible尽可能避免使用锁机制
use tools and libraries designed to help with concurrency,use scalable memory使用任务同步的工具和函数库,使用灵活伸缩内存(?)
design to scale through increased workloads通过增加工作负载实现灵活性

我推测,跟摩尔定律(Moor Law)共轭的(conjugate)应该有一条“软件危机定律”,意思说:计算机硬件总是革命性的力量,而软件技术和行业总是落后的保守的力量。

一般来说,像Intel这样的芯片厂商技术主管的忠告是不能忽视的。Intel说,发布多核处理器已经有五个年头了,现在双核成了PC主流,milticore是四核、六核的也渐成大势,many-core就是八核以上今年或者明年就要发布,但是市场还只把多核当成时尚而远远没有实用,还是“银样蜡枪头中看不中用”,因为程序员多数还不会并行编程让多核的功能彻底地发挥出来,终端用户并不知道仍然是一个核心在工作还是所有的核心都在工作。

我做过一个实验,使用Python的并行编程技术写的一个科学计算小程序,显式地看到我的双核计算机上的两个核心在工作,指出每个核心各自完成了什么工作。

在美国军方和政府有“战略计算(Strategic Computing)”和“高级模拟计算(Advanced Simulation Computing)”范畴和规划,用在武器设计、临床基因组学、天气预报等方面,就是使用多核处理器、多核多处理器和多核处理器多计算机系统。

并行思考就是一种系统思维,所以我说:

并行思考!并行编程!事关国力!


[ Last edited by 余泽成 on 2010-1-8 at 15:16 ]
回复此楼
博客:blog.sina.com.cn/nkuqiao;应用化学:blog.sina.com.cn/nkapc;化学工程:blog.sina.com.cn/nkceg
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
老实说,有的时候确实很迷茫,不知道到底该学什么
努力学习!以正当途径!获得需要的知识!
2楼2009-11-10 09:41:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yyqiao

金虫 (小有名气)

C语言就是“根”。
博客:blog.sina.com.cn/nkuqiao;应用化学:blog.sina.com.cn/nkapc;化学工程:blog.sina.com.cn/nkceg
3楼2009-11-10 09:45:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhuhongaaa

金虫 (正式写手)


wangen994(金币+1,VIP+0):欢迎常来 11-10 16:25
确实是这样的。对于科学计算来说。需要的只是处理速度和容量,一切的花里胡哨的东西都是不需要的。现阶段的科学计算中,并行计算是解决问题的较为有利的途径。
分子模拟的主页http://varmilion.tk/
4楼2009-11-10 09:56:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
很期待有人把老冯干掉
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
5楼2009-11-10 15:36:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangen994

荣誉版主 (著名写手)

将军


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by magic7004 at 2009/11/10 15:36:
很期待有人把老冯干掉

兄弟好啊,欢迎常来啊
6楼2009-11-10 16:25:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yyqiao

金虫 (小有名气)

引用回帖:
Originally posted by magic7004 at 2009-11-10 15:36:
很期待有人把老冯干掉

老冯是早就挂了,可是老冯的脖子还卡着你呢
博客:blog.sina.com.cn/nkuqiao;应用化学:blog.sina.com.cn/nkapc;化学工程:blog.sina.com.cn/nkceg
7楼2009-11-10 17:06:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

Wave No Move

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+1,VIP+0):的确没看到双核的优势啊! 11-18 23:59
说得没错,现在能让双核处理器发挥最大性能的普通程序少得可怜。。。
端好自己的碗,吃好自己的饭。
8楼2009-11-15 13:03:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

我有一个梦想

金虫 (职业作家)

︿_︿简单即为美

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
senlia(金币+1,VIP+0):感谢回帖交流 12-31 23:45
我觉得把一门语言如C语言学熟练了就可以生巧了
9楼2009-12-31 21:02:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sxlion811

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1,VIP+0):砖家新年快乐!:D 1-1 15:41
这个原创不错,胡江堂最后去一个药厂程序员(SAS)去了,这人学习经历很复杂,哈哈。
并行计算早有听说,有些大型软件,可以设置做到多核运算了。
开心努力一辈子
10楼2010-01-01 12:42:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yyqiao 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见