CAE编程高手之路:从软件开源代码使用及改造说起
责任编辑:哆啦俊俊2     时间:2021-09-28     来源:转载于:转载于CSDN
责任编辑:哆啦俊俊2
时间:2021-09-28  来源:转载于:转载于CSDN
分类: 观点评述
浏览量: 388

       导读:屈指数一数,我从事cae程序工作十几年了,没有什么成绩,只有教训和眼泪。十几年间几乎没有周末和假日,没有娱乐和休闲,也没有了爱好。我希望能把自己的一些经验写下来,对充满活力的年轻人有一丝助力和借鉴。让他们成长之路更短,略微更平坦一些……

一、写在前面4月26日

       工信部信息技术发展司副司长王建伟表示,2021年将着力突破CAD、CAE等工业软件,推进操作系统与芯片、数据库、中间件及各类应用软件的集成、适配、优化,引导企业提升产品化发展能力。现如今,无论国家和民间,都在把工业软件作为一个重要的发展方向,提出了各种目标和口号。CAE软件作为工业软件的重要组成部分,更是得到了十足的重视。

 

二、为什么CAE程序会感觉很困难

       首先这个问题, 是确定的,是的,真的很难, 学习成本极高。

1、综合性强

       也就是跨学科了吧,只拿做计算的来说吧,学好本专业已经不容易了,还要学好计算机程序编写。至于计算机程序的编制, 需要学习的还有数值方法,矩阵论,甚至图论等……, 几乎所有的数学都要学差不多,不一定要会证明和很深,但是大多数都要理解,才能写出精巧的程序。这个问题,我想以后慢慢做一些框图来解释。给写不同程序的人,不同的建议,要准备什么书,储备什么知识等。其实,看过太多的开源的很多的程序,可以看出,都是学力学的人写的,虽然写的整齐漂亮,但是还是很多不符合计算机原理的,我们不能拿着当做圣经。也有很多程序,可以看出是计算机的按照学力学的要求去写的,写的啰里啰嗦,整理规整,似乎增一分则肥,减一分则瘦,实则编排乱七八糟,这些程序不应作为学习的目标。别人的程序,看的多了,自然都会有深刻的理解,都会看的出来,但是改成自己的,却需要更深入的理解,仍然是非常痛苦的事情。

2、1+1<=2, 两块砖头的结合需要砂浆

       我这里指的是团队建设,一加一等于二,没有问题的,那仅仅是个理想的相加,现实中,要筑起一道墙,一块一块的砖头叠加一起,是没有意义的,需要砂浆来粘合,需要时间来凝固,需要浇水来养护。很多时候,我们要求一个学力学的,和一个学计算机的去合作完成一个程序,大多数时候都是失败,我不知道老外这种事情的管理是如何的。我知道的,中国人在这种的合作上,大多是失败的。我想老外也差不多。成功的少数案例,就是学力学的会写程序了,学计算机的也懂力学了,而且懂的程度很深。并没有一条很好的途径,使得两者在互相了解对方知识很少的情况下完成这件事情。但是最后的结果,仅仅是完成,还是有问题的,起码在代码上,可以轻易的看出,是学力学的模仿计算机写的,还是计算机的不懂装懂的按照学力学的说的写的。

3、被忽视的二级算法

       CAE专业和计算机代码之间,是需要二级算法的。所谓的二级算法,大多衍生于数值方法那门课的内容,也有更多的需要完整的学一门新课。大多数有兴趣有动力来做CAE程序的人,基本都把自己的专业部分学的很好了,理解的很透,但是一旦上手开始写,又觉得无所适从。其实,这中间还差很多很多东西,二级算法书上不会讲,基本都是要自己悟的,基本,大多数人选择从开源的程序学习进入。以后我想专门的来讨论开源软件的读改问题。在计算机专业和cae专业之间,人员的磨合,代码的精进,都是基于二级算法的建立和改进的。这也就是经验的集合吧。论文上的东西都差不多的其实,大部分是公开的,我们和成熟商软的距离,就差这个其实。

三、 成长之路之计算机语言

       这是一个大项。作者仅仅熟悉c++和fortran语言,所以仅仅能从这两门语言的角度进行。

1、语言是不相同的 

        程序在本质上是相同的。那是编程二进制之后的事情了。所以有一种说法, 所以用哪种语言都一样。学好了,都能写出好的程序,这是对的。这里的不同,说的是,其实每一门语言,都有自己独特的地方和优势,你用那门语言去写,就要利用好那门语言的优势,才能写出好的程序。才能感到那门语言的魅力。

        在结构化程序上,大多数语言是可以互相调用的,基本是相同的。

       很多书也如是说。但是,还要精心的考虑,很多事情,并不是相通的。C++的行存储和fortran的列存储,就会给互相调用带来很多的困扰空间。C++的指针和fortran指针并不是一个概念。Fortran的“class”和C++的也完全不是一个东西,有了“class”的fortran程序是不能供C++使用的。你要fortran面对对象到底,还是以后要和C++混用,要一开始就想清楚。这仅仅是一个例子,每种语言学到深处,都是有它自己的精妙所在的。而一旦你用了它精妙的部分,大概率的和其他程序不会相同。这也是很多人争论用哪种原因好的原因。

2、关于c++和fortran

       真的很希望计算机就一种语言,起码不用那么纠结,我想做计算的大多数用这两种语言,已经足够纠结,现在出现了更多的,python,perl等。纠结更加纠结。我和大多数的人一样,很多时间花在了纠结上。纠结用哪一种语言。

       现在呢,我还在纠结偶尔,还是没彻底解决。两种语言,我都算精通了,不是语言的事情了。但是在做某件事情的时候,往往希望基于某个东西去做,那个既有东西的功能的好坏,也包含了语言的选择,成为了一个纠结的选项。在语言的单独选项上,我更偏向于c++语言。以后的程序都是趋向于大型化,利用C++更好管理,这是学C++的人的借口。其实新的fortran也能很容易的大型代码的管理,单独做计算的,无论程序多大,我想fortan已经足够。我偏向c++,是因为同时在做前后处理。

 


来源:转载于:转载于CSDN

点赞人: 哆啦俊俊2  王王木木 

回复:

Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved. 湘ICP备20015126号-2
联系我们