在软件开发中,不同的编程语言往往会对特定类型的软件开发带来便利,本文以VB(VBA)、Python、C++、C#等几种常见的编程语言为例,介绍其特点和适用的范围。
个人兴趣和工作的原因,写过一些计算机辅助设计、数值计算的软件,有的软件层层传播,甚至有了可观的用户,一些无心插柳之作现在还会收到用户的感谢。以我的体会,现在的工程师熟悉一些程序开发的基础知识,用来解决实际遇到的问题,或是替代繁琐的重复工作,或是借助计算机来得到精确解,是很有益的。
编程并非一个优秀工程师必需的素质,但如能掌握,会让你拥有一个强有力的手段来实现你的构想,打开另一面天地。对于我个人来说,编程让我对工程的理解更加深刻,同时,看到我的软件改变他人的工作流程和习惯,那种喜悦和成就感是难以替代的。
初入工程软件开发的工程师往往会问,选哪种编程语言好?选一门语言重要吗?
其实编程语言和我们平时用的自然语言一样,从实用角度讲,只是表达思想的一个载体,只要熟练掌握一种编程语言,你几乎可以做任何事,就像用中文和英文都一样能表达喜怒哀乐嘛。讲个故事,有段时间我跟一个哥们儿经常讨论算法问题,用的是山东话和英文,也一样解决了很多问题。
有点需要了解的是,有些编程语言可能特别擅长做某种类型的软件开发,比如有的特别适合写界面,或者有的对做图软件的接口做的特别好。如果能结合所开发软件的类型选择编程语言,会有事半功倍的效果。
其中,VBA是内嵌在office中的,如果你想在现有的文档上加一个程序,利用VBA会很容易实现,简单几行代码就可以操作Word的文字或者Excel中的单元格,你甚至可以利用“录制宏”的功能,把鼠标、键盘的操作录制成代码。
同时,VB(VBA)可以很方便的调用AutoCAD的接口,在dwg文档中画图、从文档中读取图形修改、标注、导出数据都很方便,接口也很成熟,支持的操作多,稳定性好。
它的缺点有几个,首先,它是门相对落寞的语言,用的人越来越少,意味着如果遇到问题你可能很难搜到答案,其次,实现复杂的功能比较难。
还有一个我不赞同的缺点,有的人觉得VBA写的程序比较土,尤其是在一个Excel上加一个界面,不够高大上,我倒觉得在Excel上加一个VBA插件对大多数工程软件来说是很好的选择,因为Excel本身就提供了强大的功能,比如批量复制,写公式等,而且大多数工程师经常使用Excel,很容易使用。至于外观,毕竟不是我们的主要目的,功能更重要。
Python适用的范围很广,在工程领域,Python比较适合编写科学计算类的程序,如果你的程序中需要用到大量数值运算,如果你想做一些优化,更高端些来说,如果你要做机器学习,那么Python的一些工具包会给你强大的支持,常见的有Numpy、TensorFlow等,我曾经帮一位老先生推导动力学的一些公式,基于公式他又用Fortran做了些数值计算,当时我就想,用Python会更合适。
Python的缺点
第一,它对AutoCAD等一些工程软件支持并不好,有些开源的接口,往往是个人开发的,功能和稳定性有待验证,第二,工程师用的大多是Windows,需要的是exe文件,Python程序编译成exe的过程不那么方便,有时编译的文件很大,并且运行速度慢,如果你想把自己写的软件用exe的方式发给大家,它不是个很好的选择。
如果你想更好的理解计算机世界,感受编程之美,建议你学习C++,它简洁而高效,贴近于数学和逻辑的本身,很多其他的编程语言都植根于此;它用途广泛,从电饭煲到火箭都在使用C++代码。
在工程领域,C++适合编写计算规模大、对性能要求高的程序,我曾经用它写过一些计算类的软件,后台计算模块用C++编写,写来语义明确、逻辑清晰,计算效率高,界面用VB编写,代码量小,各取所长。
C++是我最喜欢的语言,我想,它的优点和缺点都是复杂和抽象吧,就像玩游戏,需要用到的键多了,操作起来自然就复杂了,但也更有乐趣,如果你想把某一类操作归结成一类,也就抽象啦。
C#是微软开发的,它的构想是成为一种简单、现代、通用,以及面向对象的程序设计语言,当然直接的原因还是与Java抗衡。
如果你想对AutoCAD进行二次开发,C#是首选的语言,它可以直接操作软件的图形数据库,执行效率高,同时,它建立在微软 .Net 框架之上,属于比较高级的开发语言,学习起来比较简单。
工程行业Windows系统依然是主流,而你能看到的桌面应用,看不到后台服务,可能是C#开发的,所以它也适用于其他桌面软件的开发。
说了那么多,我想会有两类不同类型的开发者。
如果你是拿来主义者,达到基本的解决问题即可,你可以选择VBA 和 Python,一个用来界面相关的软件,一个解决数值问题,足够工程软件开发所用。
如果你有更高的目标,建议你再学习C++,它会让你更懂计算机。