主题:我经历的三次工业革命 -- 冷口关
用的还是当时的最新版本FORTRAN 77。
之后学的是Pascal,在学校计算中心的Honeywell小型机调程序,进去时还要换上白大褂和拖鞋,好像也是我第一次进空调房。
印象深刻的是Pascal之父沃斯的一句名言:算法+数据结构=程序。
还记得有一个作业是从系统里调出一个加密文件,然后解密显示。
程序调通后我发现在终端上逐行显示的是Bridge over troubled water的歌词。当然,知道Simon和Garfunkel是更晚的事情了。
哦,应该还有一次作业是用递归法解决河内塔问题。
各种看到过的计算机语言,BASIC,FORTRAN,C,ADA,COBOL……不过除了BASIC学了几节课以外一个都不会,哈哈。还有什么编译语言、汇编语言、机器语言的区别。
93年上大学,我们学的用的就是fortran
网上关于娘娘的神话,一个是老美自己都无法重开生产线;另外一个就是飞控用ada写的,会的人,现在好像都已经是老眼昏花的真 大爷。
不知道是不是真的。
家里厨房煮个蛋什么的,那玩意还是挺方便。
娃娃小的时候,也用过。拧到说好时间那,铃一响,就可以不写字了。娃娃挺喜欢
都是干这个的,工程上的东西,越是祖传的,神秘的,越是没啥了不起的,只要你给钱我就一定能给你复制出来的。反倒是当前的,新的,从论文上刚扒下来的,没那么容易,需要点智力体力。 那些老程序,都是离汇编不远的东西,学计算机的必须得会,我这二把刀都会,有啥难的,现学也用不了一个月。反倒是python那些东西,我是真的会。但是新东西层出不穷,我都不敢说我精通,只能说常用的我还是会的。
老项目,为啥要开?那不是反复打所有人的脸吗?就算退一万步说,就是需要。那可以把35拉皮啊。这样大家面子多过得去,钱还多。所以你要说重开,那肯定是难度大;你要说35升级,保证没问题。
当年看到最早的苹果机惊为天人,世界观都变了,后来看到286里的fortran更是感觉NB的平方,但是很快又觉得这玩意没用,因为学习电脑知识最大的动力是修改游戏,fortran好像没卵用。
新程序基本都是C++,比如最新的风电有限元程序NALU。还有个趋势是用常用语言把要解的方程写好,然后到底调用什么库来解方程用户就不用关心了,最后读取答案就行,比如用Python的Fenics,这个概念出现很早,但当年安装各种乱七八糟的不同语言的库仍然是个极为头疼的问题,直到近些年出现Anaconda,一句conda install全搞定了。。。
打孔带倒不是啥大问题,对齐了就行,python也得对齐啊。Fortran最2B的是某些版本读入文件时要求文件的最后一行为空行,否则报错,用户一遍又一遍的检查输入文件,却发现什么错都没有,这时你及时出现,装逼的打开vi,在文件末尾敲了一下回车后存盘退出,然后就可以在小姑娘心中封神了。因为受过Fortran的荼毒,如今俺不管写啥玩意在最后一定多加几个回车,不加难受,都成强迫症了。。。
F35的一大亮点就是用C++重写飞控,据说F22的代码80%是ADA,而台风战斗机据说是纯ADA。。。
一堆上古遗存,比如IJKLMN开头的变量默认为是整型数,公用区谁都可以调用,goto来goto去,甚至可以用打印语句改变字符串的内容,读七八十年代写的代码想追踪变量到底在哪变了,都会骂娘的。。。
这破玩意能活到现在主要就是因为,一些古老软件懒得重写而已。另起炉灶全新重写的程序就没见过用Fortran的。。。
另外最好的Fortran编译器是英特尔的,在英特尔CPU上能比别的编译器快不少。
最早出来的那批据说软件都升不了级,干脆转去当教练机了,嚯嚯
俺以前在公司维护一个恐龙级算法模块,计算内核是用Fortran在二十多年前写的,宛如王婆婆的裹脚布——又臭又长。一个函数,常常能有几十个参数,几百行的长度,还时不时来个“goto”。让早已习惯使用C++的我,是苦不堪言。有时候,真恨不得推翻所有代码,重新写一个。
其实,原始代码的编写者,我也认识,这是一位老研究人员,专业水平,那是没得说,但编程水平,惨不忍睹,贻害无穷。
无奈,这是工作,不得不认真阅读代码,颇是耗费了不少脑细胞。光简单的动态分配和释放内存,源代码中基本没有,对于小程序而言,无所谓,可对于俺们这种动则几十、上百T的计算量,会导致许多严重问题。另外,还得加入并行计算的代码,充分利用硬件的多CPU特性,以及充沛的计算机集群资源,而这在二、三十年前,是普通编程者不可想象的。
在完成基本改造之后,该模块的计算速度呈几何级数提高,而我也记录了一厚本笔记。不过,由于是在原代码上改动,在该模块上,即使是添加一个新参数,也至少需要改动二十多处。
离开公司的时候,我想,如果再有人去动这个程序,他/她可能否胜任?