悲催的科学匠人 - 冷水's blog
ExStream/ExChimera进展
ExStream:
- Wang X.同学搞定了Gammar-Reynolds转捩模型,高升力模型的计算结果改进很是明显
- 我自己搞定了ILU(0)预处理的GMRES,基于PETSC,效果还行,但是不如传说中的那么NB(除非简单翼型),好歹目前可以比较稳定的运行
- IO迁移到CGNS
- Shu H.M实现了1-N对接面,初步可run
ExChimera:
- 终于可以针对壁面距离进行重叠区域最小化了;
- 运动物体组装初步可run
转一个网文:C++的反思
转一个网文:C++的反思
http://www.skywind.me/blog/archives/1398
----------------------------- 节选 ---------------------------------
关于 C++的笑话数都数不清:
笑话:C++是一门不吉祥的语言,据说波音公司之前用ADA为飞机硬件编程,一直用的好好的,后来招聘了一伙大学生,学生们说我靠还在用这么落后的语言,然后换成C++重构后飞机就坠毁了。
笑话:什么是C++程序员呢?就是本来10行写得完的程序,他非要用30行来完成,并自称“封装”,但每每到第二个项目的时候却将80%打破重写,并美其名曰 “重构”。
笑话:C容易擦枪走火打到自己的脚,用C++虽然不容易,但一旦走火,就会把你整条腿给炸飞了。
笑话:同时学习两年 Java的程序员在一起讨论的是面向对象和设计模式,而同时学习两年 C++的程序员,在一起讨论的是 template和各种语言规范到底怎么回事情。
笑话:教别人学 C++的人都挣大钱了,而很多真正用 C++的人,都死的很惨。
笑话:C++有太多地方可以让一个人表现自己“很聪明”,所以使用C++越久的人,约觉得自己“很聪明”结果步入陷阱都不知道,掉坑里了还觉得估计是自己没学好 C++。
笑话:好多写了十多年 C++程序的人,至今说不清楚 C++到底有多少规范,至今仍然时不时的落入某些坑中。
笑话:很多认为 C++方便跨平台的人,实际编写跨平台代码时,都会发现自己难找到两个支持相同标准的 C++编译器。
----------------------------- 节选 ---------------------------------
其中,作者提到“其实C++的矛盾在于一方面承认作为系统级语言内存管理应该交给用户决定,一方面自己却又定义很多不受用户控制的内存操作行为”。确实,看c++书籍的时候,对于其中编译器背后干的一些复杂的事情,感觉真是“你tmd还背着我干了啥?”
c++确实强大,但是好的c++程序员很少,科学计算领域的好c++程序员更少。我刚工作时,在一个小公司主管一个项目,技术方案上我说了算,因此我推c++开发。结果是组里5个人,能用c++的也就一个半(包括我自己),于是大多数c++编程的活都是我干了。所以后来管一个更大的cfd项目,果断用fortran 9x/2003。
后来碰到有人鄙视fortran,吹捧c++,我就心里“呵呵”了。
我被硬特fortran编译器坑的事迹
最早先,gfortran下没有问题的代码在硬特编译后出现segment fault。结果发现数组整体赋值出了问题,比如
w=w1
只要数组w和w1特别大,就fault了。只好遇到比较大的数组,就把用循环。
DO k=0,kb w(:,:,:,k)=w1(:,:,:,k) ENDDO
最近又被坑了一次,而且完全与上面这个经验相反。
id=1 DO n=1,num ! get i,j,k ... DO l=ivs,ivt buff(id)=w(l,i,j,k) id = id +1 ENDDO ENDDO
这个片段是将w中的元素按照给定的顺序填充到一维数组buff中。
按照debug模式编译没有问题。但是优化编译后出错。最后改为
id=1 ncmp = ivt-ivs+1 DO n=1,num ! get i,j,k ... buff(id:id+ncmp-1)=w1(ivs:ivt,i,j,k) id = id + ncmp ENDDO
关于Git的学习思路: 关键在于分支
关于Git的学习思路
去年试图学过一次,但是居然没法接受,也许是使用svn太久脑子没法转过来。
这次因为工作需要,决定转到git。找了几本书看过,发现对于一个svn老人来说,掌握git的关键还在于思路转换。
转换思路的关键在于分支,只要理解了分支,理解了git中各个分支如同锁链一样将各个commit连接在一起,知道分支之间的切换、merge和rebase等操作的概念,其它的就好说了。
如果一开始就着眼于一些琐碎的add commit checout 之类的命令,就无法有全局观念。
BTW,我觉得开源的 Git Go Pro 和 Git 的官方文档是不错的资料。蒋鑫的书,内容丰富,是本不错的书,但是内容的安排顺序却缺乏全局观,可能不适合svn老人入门。