如何学习VC与我为什么选择C/C++
发表于:2007-05-26来源:作者:点击数:
标签:
首先来讲我使用C/C++语言开发已经有六年多的时间了,在使用C以前我是用汇编语言的所以我转变到C时就很自然和顺利。但就目前的情况来讲大家都不再需要学习汇编语言了,所以在进入C语言的世界时就会遇到一些困难这主要表现在指针的使用上。由于没有亲身的经历
首先来讲我使用C/C++语言开发已经有六年多的时间了,在使用C以前我是用汇编语言的所以我转变到C时就很自然和顺利。但就目前的情况来讲大家都不再需要学习汇编语言了,所以在进入C语言的世界时就会遇到一些困难这主要表现在指针的使用上。由于没有亲身的经历所以我很难想象这个困难有多大,但我在这点上的建议就是开始时尽量避免使用指针,至于一些必须使用指针的C函数只要记住用法就可以了。当然这种情况不会持续太久,因为但你对语言的熟悉程度增加后自然也就会有使用指针进行开发的
需求,那时候如果对指针的用法还没有深刻的了解再学习也很容易,这就是主动学习与被动学习的区别。
其次很多朋友都问我如何学好VC,我想对于初学者首先应该掌握的是C/C++,VC只是C/C++的一种开发工具。如果是刚接触C/C++则最好不要使用VC做为开发工具,因为VC的各种特性会分散你的注意力。我建议使用Turbo C++或Boland C++集成平台做为开发工具,这两个平台虽然都是DOS下的但是对于初学者真是在适合不过了(当然MSC也可以)。
此外刚开始时开发一些字符界面的程序(也可以说是DOS程序,Console控制台程序)来加深对语言的熟悉。在掌握了C/C++语言后就可以开始利用VC编写基于
Windows的窗口程序了,这时候就是一个转折点,因为这时候
Windows系统是基于消息机制的,这和单流程的程序有些区别。所以这时候也不要急着去写学习开发和写代码而是应该先对Windows系统的消息机制做一些了解然后才开始学写程序。其实我的主张是一开始用基本的SDK形式(也就是用WinMain函数的那种,不用MFC功能)来开发几个程序做为入门,然后再使用MFC来开发程序。MFC开发的方式与SDK开发方式的最大区别就是MFC隐藏了很多细节,这是优点也是缺点对于初学者来讲我认为是一个缺点,所以我建议初学者先用WinMain的形式写程序,即使不亲手写也可以看几个基本的程序来加深认识。
上面这些话都是为了说明一个问题“磨刀不误砍柴工”,学习开发一定要打好基础,还有一点就是一定要想办法激发自己的学习积极性让自己进入一个主动学习的境界。
下面我再分析一下C/C++与其他
开发语言之间的差别,C/C++,(object)PASCAL,JAVA,PERL都是我认为比较通用而且是比较好的开发语言,但C的语法比PASCAL自由,PASCAL开发比其他结构化强,但这一点上C语言也能够做到。至于JAVA和C++非常类似而且能够跨平台这一点上是很大的优势,但JAVA开发的程序效率差。PERL也是一中我很喜欢的开发语言,虽然PERL没有
面向对象的特性(至少我认为它的面向对象很糟糕)但我喜欢PERL中自由的语法和各种时常让人感到惊奇的用法。
如果说到Windows下的可视化开发工具现在大家接触得最多的就是VC,
VB,DELPHI,BCB,一些可视化开发的JAVA。其实我觉得VC并不能完全算是一个可视化工具,这表现在VC中编写代码还是占了开发工作的大部分时间。而渌?目墒踊?ぞ咧卸荚诮缑嫔杓浦泻姆蚜舜罅康目?⑹奔洹N乙恢笔褂肰C的原因就是因为我能够一直将注意力集中在软件功能开发上而不是界面设计上。我认为这样能够在开发的过程中更加自由和有更多的控制权。而且这种情况下产生的代码维护性更强。举个简单的例子,在维护VB代码时如果没有一份详细的说明和流程就会使维护变得不可能,我想其他的基于界面开发的工具都会或多或少的产生这样的问题,因为在开发过程中开发工具将一个完整的流程分离成为多个部分,在开发完成后这些部分就很难统一起来。
选择什么样的工具的前提是你的开发目标,如果你希望开发一个很大的系统你就不应该选择面向基于界面开发的工具,但你可能会选择VB来开发前端的客户软件,而后台使用VC来实现。
对于一些并不是很复杂的软件来讲,界面和操作方式可能是非常重要的,所以选择VB,CBC都可以缩短开发时间。这时候选择VC就有些不智。
所以我认为使用VC开发的朋友应该将更多的注意力集中在实现软件功能的流程上,多从整体角度看问题。我想这一点来说其他的可视化开发工具是很难达到的,因为VB,CBC等开发的程序在很大程度上都是用各种控件“堆”出来的,这会在后期的维护升级过程中带来很多的不便,例如要替换掉一个控件就可能会对整个程序的结构产生非常大的影响。
最后我想说的是每种开发工具都有它的价值,也各有优缺点,更重要的是如何根据具体的任务选择合适的工具并利用这些工具来完成工作。
原文转自:http://www.ltesting.net