绝想首页

关于编程的几点体会......

李新田 [苦涩] 2013-03-15 18:38:21 星期五 晴天 查看:230 回复:1 发消息给作者

很久就想写一些对编程的体会,但一直没时间。现在在这里稍稍整理一下,谈一些我个人的看法,但此仅表我个人拙见,所言并非一定正确,只供参考。

 

一、几种编程语言的特点

 

计算机发展到今天,已经和早期的计算机有了天壤之别。而编程语言也更是有了非速的发展,从早期的PASCAL,C等到现在的C++,C#,Jave, VB,FORTRAN,MATLAB等等各种各样的编程语言,并逐渐向着界面化,通用化,多样化等方向发展。对一个非计算机系刚接触编程,并且想用编程作为一种工具的人来说,有点不知道学什么好。因为我也不是学计算机的,只是对编程有一定的了解,所以在这里只能说说对这些语言一些简单的认识。

我刚开始接触的是C,我想对于大多数的人也是如此。C是一门很有历史并且很经典的系统开发语言,很通用,并且和很多其它程序的接口都比较全面,对编程初学者来说是一个不错的选择。有的人反映C很难,VB简单。我想主要原因是因为C里有指针,用户可以直接访问内存地址,这样指针在内存地址间移来移去,最后就不知道指到哪里去了。其实任何事情都是两面的,指针就像是一把双刃剑,用不好,可能使你的程序一片混,但如果用好了就可以很简单地实现一些其它程序所不能实现的功能。

很多人都学过VB,但我接触得很少,他们说用VB编窗口很简单,但我觉得用MFC编起来也很方便,并且觉得VB能做到的,C++也能做到,觉得没什么用就没学了。相反,倒是学过很多人没有接触过的FORTRAN。我想对于搞数值计算的人来说,多少对它有一些了解,不过现在这门语言好像更新发展不是很快,学的人也越来越少了。它有一个特点,就是简单易学,并且数值计算能力又非常强大。它自带有一个IMSL库,集中了很多的数值算法,调用起来十分方便。早期的MATALAB就是用FORTRAN编写的。我大三时做过一个火箭发动机的热力计算,用到的一些从NASA上弄下来的数据,存储格式就是供FORTRAN读入的,并且很多关于数值计算的书集,比如计算传热,计算流体等,里面也附有FORTRAN的程序,可见这门语言在数值计算领域里还是有一定地位的。

后来自学了一些MATLAB。如果用两个字来概括它的特点的话,就是“方便”。可以说,在各种语言里,MATLAB能用最少的代码,实现最复杂的功能。它有仅数值计算能力非常强大,而且图形处理能力,人机交互性也非常强。另外它还有很多的工具箱,设及到各个领域,当然我对那些不怎么了解。我开始喜欢上它就是从这点开始的。去年我们一门课做了一个小作业,有人用FORTRAN写的,写了好几页,可是用MATLAB,不到半页就可以搞定。它甚至不用定义变量,要用时可以随时“拿来”,这样为编程人员提供了很大的方便。当然,这也在一定程度上限制了它的运行速度。MATLAB的全称是“矩阵实验室”,主要是以向量化运算为主,所以当设及到循环时,运行速度就会变得很慢,效率很低。但是只要我们编程时注意尽量避免循环,也不会有太大问题,另外随着计算机速度的提升,速度将不再成为瓶颈。

再来说说C++。C++的发展很有历史,从早期的的C,到很精典的VC++6.0,再到现在的VC2005,从结构上都有了很大变化,但无论是哪个版本,它都尽可能地保持了继承性。比如从ISO标准C++到CLI托管C++,程序底端就有了很大的变化,ISO的C++指针是建立在栈上,而托管C++指针是建立在托管堆上,它所存储的是整个对像的句柄,并且它引进了垃圾收集器,可以自行管理,而不像标准C++那样new与delete必须一一对应。建立动态二维数组也有十分方便。但是为了保持很好的继承性,它不能打破原有的语法规则,所以很多语法都是和标准C++对应起来。所以他不像C#那样,整个语言看起来十分漂亮,因为C#是新起的语言,不必要考虑所谓的继承性问题,你可以根据自己的喜好定义规则。但如果你和标准C++语法对比的话,就会发现托管C++的语法十分完美。

前面听过一些微软程序设计的讲座,我觉得他里面一句话讲得很对:对于一个程序设计者,有三点你必须十分清楚,那就是时间、地点、人物。就是说语句的执行是在编译时还是在运行时,对象是建立在栈上还是在托管堆上,操作是自己的代码还是程序语言设计者在背后的操作。比如FORTRAN中的data语句赋值,托管指针和标准C+指针的差别等,如果你清楚了时间,地点,人物我三项,你就会清楚你为什么会得到很多意想不到的结果的原因。

其实,无论是何种语言,其程序结构无外忽顺序,选择,循环,很多东西都是相通的,学会了一种语言,其它相应的语言也会很快上手。然而我们学习程序不应只是简单地学习一些语法规则,而是要了解它们在时间,地点,人物上的差别,以及一些底层的东西,这样才能真正了解一门语言的精华。

 

二、关于动态库的调用

 

当我们要用到一些外部设备自已内部的函数或是调用其他人给我们事先写好的一些算法函数时,往往要调用动态链接库。下面说一下在VC++6.0里调用dll动态链接库的方法:

1、新建工程文件,将所要用到的dll文件,头文件,lib文件拷贝到工程文件根目录下,或选择“工具->选项->目录”,在路径下添加这些文件所在的目录,但推荐用第一种方法;

 

1.bmp

 

 2、选择“工程->设置->连接->对象/库模块”,添加所用的lib文件;

另外,也可用语句的方法实现:#pragma comment(lib,"aaa.lib")

 

 2.bmp

 

3、将所需的头文件添加至工程中;

然后就可以使用动态库中的函数了。

 

三、 MATLAB与C++的混合编程

 

MATLAB和C++可谓各有所长,C++里循环计算效率比较高,而MATLAB数值计算能力较强,作图方便,如果能把MATLAB与C++各自的长处。上学期上CFD,做了个大作业,因为里面每个点所对应的参数比较多,用类比较容易管理,所以当时算法是用C++编写的,但在C里面作图却十分麻,没有MATLAB用起来那么得心应手。其实二者可以很好地结合起来,在C++里调用MATLAB引擎就可以轻搞定,图书馆也有很多这方面的书籍。下面是在C++底下运行调用MATLAB作图的结果:

 

 3.bmp

 

4.bmp

 

5.bmp

 

程序第一次运行时比较快,因为它需要在后台启动MATLAB,另外还会出现一个MATLAB Commond Window,在里面可以输入MATLAB命令:

 

6).bmp

 

此外也可以在MATLAB里调用C,用来实现各种循环计算。

 

四、 C++与MATCOM混合编程

 

另外,也可在C++里调用MATCOM实现各种数值计算和作图功能。MATCOM包含了大部分的MATLAB算法,作图也挺方便。但MATCOM出到4.5版本后就没有更新版本了,现在已经被合并。因为很难找到介绍它的书籍,所以对它了解很少,只是当时因为要用,写过一个很简单的程序,用来动态输出从采集卡上采集到的电压,作出U-t曲线:

 

 7.bmp

 

 

五、VC2005 Windows Form窗口编程

 

相比起MFC,.NET底下的Windows Form窗口编程可谓更人性化,简单易学。下面是以前作业的一个简单例子:

 

8.bmp

 

但由于它是托管C++编译,运行机器需装有Framework2.0,而一般没有装VS2005的机器并没有Framework2.0环境,所以用得也少。

 

六、MATLAB的GUI界面编程

 

其实MATLAB界面编程也十分方便,比较新的MATLAB版本,界面编程能力已经非常强大。由于它里面有很多现成的算法,所以程序显得很简洁,在C里需要几千条语句的程序,在MATLAB下不到一千条就可以实现。当然如果你以后搞数值计算的话还是得对各种算法有所了解,数学系有数值分析的课程,可以去听一听。虽然以后研究生阶段会开课,但不一定有讲得那么全面,建议有兴趣且有时间的同学去听一听。下面是一个火箭发动机热力计算的程序:

 

 9.bmp

 

简单写了这些,在这里和大家分享一下,希望我们能一起学习、进步……

 

顶一下(33 写日记 1220007 230740
上一篇:爱与孤独下一篇:嘻嘻
分享排行

 

 

留住已经逝去的峥嵘岁月 记住曾经绽现的万种风情 在记忆即将淡漠的时候 来把这些重新回味

Copyright (C) 2008-2014 www.juexiang.com, All Rights Reserved.

京ICP备2023001011号-3   京公网安备11010802011908号

客服QQ 1017160561 违法和不良信息举报电话 13148464312 邮箱 1017160561@qq.com