怎樣學VC與我為何選擇C/C++
我每天都要收到很多朋友的來信,有很大一部分朋友都詢問學習VC的方法和途徑,還有相當一些朋友對C/C++語言的前途感到擔心,總覺得學習C語言在開發效率上沒有趕上其他的開發工具,今天我就談談我的一些淺見。 首先來講我使用C/C++語言開發已經有六年多的時間
我每天都要收到很多朋友的來信,有很大一部分朋友都詢問學習VC的方法和途徑,還有相當一些朋友對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中編寫代碼還是占了開發工作的大部分時間。而其他的可視化工具中都在界面設計中耗費了大量的開發時間。我一直使用VC的原因就是因為我能夠一直將注意力集中在軟件功能開發上而不是界面設計上。我認為這樣能夠在開發的過程中更加自由和有更多的控制權。而且這種情況下產生的代碼維護性更強。舉個簡單的例子,在維護VB代碼時如果沒有一份詳細的說明和流程就會使維護變得不可能,我想其他的基于界面開發的工具都會或多或少的產生這樣的問題,因為在開發過程中開發工具將一個完整的流程分離成為多個部分,在開發完成后這些部分就很難統一起來。
選擇什么樣的工具的前提是你的開發目標,如果你希望開發一個很大的系統你就不應該選擇面向基于界面開發的工具,但你可能會選擇VB來開發前端的客戶軟件,而后臺使用VC來實現。
對于一些并不是很復雜的軟件來講,界面和操作方式可能是非常重要的,所以選擇VB,CBC都可以縮短開發時間。這時候選擇VC就有些不智。
所以我認為使用VC開發的朋友應該將更多的注意力集中在實現軟件功能的流程上,多從整體角度看問題。我想這一點來說其他的可視化開發工具是很難達到的,因為VB,CBC等開發的程序在很大程度上都是用各種控件“堆”出來的,這會在后期的維護升級過程中帶來很多的不便,例如要替換掉一個控件就可能會對整個程序的結構產生非常大的影響。
最后我想說的是每種開發工具都有它的價值,也各有優缺點,更重要的是如何根據具體的任務選擇合適的工具并利用這些工具來完成工作。