*以下内容整理自2010年10月09日晚9点与朋友们的探讨。
**摆脱枯燥乏味的****C/C++****学习,从****VB6.0****开始找点乐子吧!******
前言:
网络上各种各样的关于程序学习方法呀,初学者解困的资料层出不穷,但真正适合自己的方法确并不多也不具体;看着黑洞洞的命令行窗口上的输出,经常在迷惘中徘徊,学了C/C++语言我到底可以做什么;平时听到的什么网络工程师呀系统分析师呀测试工程师呀等等,我今后可以成为哪一类...
一,初期:从VB6.0开始
- 仿造Windows计算器,自编一个计算器程序。
当初我们开始学习VB6.0时,老师让我们做的第一个“大”作业,就是这个,给了我们1个月的时间。不要以为很简单,大家一做就明白了。这其中包括界面设计,涉及到了一些算法(学过结构与算法朋友可能会在这里有一些领悟),并且平时学习C/C++的一些“经验”就可以派上用场,反过来也可以促进对C/C++的重新认识与解先前之惑。开发这个小程序时,大家使用得比较多的一个函数应该就是Math相关的。
- 自编游戏程序。
自编一个接龙游戏。因为我平时玩游戏少,所以当初我没有做;不过很多一起学习的同学们都做了,其中有几个做得很不错;或者大家也可以自编俄罗斯方块,这些小游戏都是大家非常熟悉的,所以对于初学者来说,编程时理解起来就比较容易,这样可以让大家在娱乐中学习编写程序。看似简单,但很考脑子的。
- 日常生活收支管理系统。
接下来开发一个比较有意义的“项目”吧。大家可以把自己每天的收支详细记录下来(不过对于学生来说估计一般都是支---有出无进吧):三餐的消费,三餐之外日常用品呀衣物学习用具呀什么的。这些记录要通过Excel的形式保存下来,这时,在Excel中就要做些规范的事,比如怎样写才能让自己一目了然,怎样写可以让程序“读懂”;接着,要用到Office的Access(这是最初级的一个数据库软件),把Excel的数据导入到Access,这里千万不要手工复制粘贴哦,需要用到数据的“导入/导出”操作,这是今后大家接触其它数据库软件时都必须掌握的概念,大家以后还可以使用MSSQLServer(官方网站有免费的Express版本),在这时大家就可以开始理解数据库的概念了,对于已经学过数据库理论相关课程的朋友来说,这也是一个不错的实践机会;之后就是设计界面,编写程序,做成一个可以在WinXP上运行的小桌面软件(现在大家至少都是用的WinXP吧)。还可以把自己做好的程序上传到各网站上给大家“显显”,甚至如果可能的话,今后完善好了还可以实行部分收费,能做到这里话,大家也就可以一定程度上理解 “盗版”所带来的危害了。在开发这个小项目的过程中,有兴趣有进一步需要的朋友们,还可以理解组件的概念。
另外,如果群中有朋友是班干部角色,那么也可以开发一个相对复杂的班务信息管理系统(毕竟班上那么多人嘛),进一步提高自己的开发能力。
还有,开发上面的小软件时,我只是给大家提了一个思路,大家会在开发的过程中发现很多已知或未知的问题,需要一个个查阅资料求解攻破。
虽然用VC++也可以做上面这事些,但是很痛苦的。
二,进阶:逐渐步入当前社会中实际工作的视野
- 掌握当前应用广泛的语言(C#/JAVA等)。
有了C/C++的基础,再加上从VB6.0中找到了一定的自信,扩展到C#/Java语言就相对容易(当然,大家还可以使用VB.NET)。当前社会上一般就出现了两个派系:.NET系与JAVA系,谁最好谁最优没有定论,但从应用范围来看,Java更多一些。不过,我是.NET系的。
- 项目类型(网站/桌面/移动设备等)。
C/C++及VB6.0甚至包括C#/Java,大家开始学习的都算是桌面类型的程序,接下来可以扩展到网站程序(一般也称Web程序)。5,6年以前,与VB6.0同样流行的网络编程技术就算是ASP技术了(使用VBScript及Dreamweaver),这其中就包含了广泛应用直到现在的Javascript与HTML。之后大家就可以学习最新潮但还未成熟的HTML5+CSS3。网络程序的学习中,还可以接触到Web服务,这是目前应用很广泛的一种思想,形式多种多样,在这时,学网络工程方向的朋友就可以更加体会到网络安全所起的作用了。还有Ajax,Flex,Sliverlight等富客户端技术都可以在这里接触到了。再之后,就可以进入正在成长阶段的移动互联网呀虚拟化与云计算了等等。这时,大家心目中就不会有语言的存在了,只有“服务”这种概念了。
-
软件工程的理解与实践。
需求分析,系统设计,软件测试,这些大家平时听到的看到的词汇就在这个阶段与大家正式同行了。在这里,Office的一套软件可成了掌中宝。想往软件测试工程发展的朋友们,也就可以在这里找到方向了。这个阶段,参与到正式的项目开发中,不管是自已创业还是进入各软件公司,之前学过的知识技术就真正成为自己的经验,都是不可或缺的。三层结构,MVC等设计模式相关的概念也可加以运用。
三,专题总结
上面的内容与步骤,是我个人的经验,但平时与网上同行交流时也大同小异,应该算是进入软件开发这个行业社会上比较通用的一种模式,但并不是金科玉律。大家需要循序渐进,尽量避免好高骛远,一步步踏实地走(当然个别基础好理解能力较强的朋友可以多向前一步)。我们当时就是因为没有人给做指导,所以走了不少弯路,浪费了不少时间,因此上述内容可以帮助大家更快更好地进入IT这个大群体。
群中各位,大多是大一二的在校生,如果有意毕业之后从事软件开发这个行业,按照这个步骤认真执行下去的话,到毕业之前应该也算是胜人一筹了。大三大四的朋友们就应该比其他人付出更多的努力,时间不多了。
题外话
对于大家平时说要把C/C++学到多好多精,这种观念现在并不被社会认可。我只在一个LINUX的项目中真正使用过三个月的C++;目前社会上的这方面的工作并不是很多,最多可能只占了软件开发工作的30%。
所以,大家不要一味地说要学好C/C++,除非今后多做相关项目(但根据目前与今后的市场情况来看,大家很可能不会接触多少)或者读研读博深入研究,否则实际上大多数人无法真正学好;而更适合的方式,还是要通过不断地理解C/C++的思想去使用.NET或Java等上层程序语言做好市场上的信息行业应用。
答疑:
Q:学C/C++用什么书最好?
A:首先,没有最好,只有适合自己学的。我们当初学习时,大家都推荐谭浩强的两本书,比较适合初学者,现在也推荐也各位。
大三时,班上有几个同学去考了微软的什么专家证书,后来班主任问我,他们都成了“专家”么?我听后哭笑不得。
真正的专家,是需要10年20年甚至更多的时间和工作磨炼成的,哪有半年一年就能炼成了啊?!