像我这种读研的人儿还不怎么觉得周末的可贵,因为家和学校在同一个城市,所以可以随时回家,自然也不会太留恋。有时候回家会成为一种烦恼,因为学校的事情总是没有做完就只好扔在那儿。回家干什么呢?上网越发无聊,天天都在线上,又没有什么可以看的。恐怕有时候上网会成为一种强迫,不管怎么都要打开一个网页,没日没夜的在这个网站上看看,那个网站上瞧瞧,最无聊的话到MOP看乱七八糟的帖子,时间就这样磨过去了。不喜欢这样的生活,回来也不想再写程序了。还好,最近买了几本书,回来读书啦!

像我这种从BASIC转到C#又转到C++的程序员,总是对C++的“麻烦”而感到恐惧。总是害怕delete的东西又要使用,总是担心new了东西忘了delete。前段时间设计一些小东东总是在这里那里的苦恼,用了指针什么时候删除,很让人头疼。还有一些感觉莫名奇妙的地方,头文件要怎么写才好呢?太多的疑问了。恐怕有些人会偷偷的嘲笑我正在看《C++ Primer》这本C++初级读物,以为我什么都懂,还用得着看这种初学者才看的书籍么?

当然,以前我可能要在有些人面前炫耀我做了如何多的东东,曾经做了些什么项目。但做的东西越多,就越来越觉得自己的肤浅。理解const的意义么?这玩意儿就和“回”字有几种写法一样的麻烦;理解头文件里面写成员函数的定义带来的后果么?;理解为什么在头文件里面不会用using namespace么?太多的疑问,以前简单的看了看C++的书籍,但大多都是了解了解,真正用于开发还是从上个月开始。但幸运的是,这本初级读物拯救了我。曾经在C#上面的一些编程经验也最好忘的干干净净。确实最近用C#写点东西也觉得语法上有些混乱了。想以前转移到VB.NET上面写东西的时候把VB6的知识通通忘了,很好,才能让我在VB.NET上有一个全新的起点。学C++也是这样,忘了C#。

当然,这是在学习一样东西,做工程的话我并不希望使用C++。有一个例外,我的虚拟手术的项目非得用C++。原因很简单,我的最基本的要求就是跨平台。所以在做跨平台软件的开发同时,也再次重新学习标准C++的知识。为了我学习的方便,也为了能够在实验室的笔记本能够稳定的连接到我的台式机,我选择了linux操作系统,发行版是ubuntu。因为学校有ubuntu的源,所以更新基本不是问题。设置好路由,教育网和ADSL就可以同时使用了。

刚开始用linux系统还很不适应,很多东西没有,qq还要用wine模拟,qq for linux又是那么的鸡肋,还有很多很多的不适。但我相信,每天用它,自然会适应的。果然如此,一个月下来,将eclipse开发环境配置好了,vnc远程连接配置好了,稳定的平台就这样搭建起来了。不敢想象远程连接在windows平台是怎样的不稳。因为涉及远程调试OpenGL Shader程序,windows的远程连接没法使用显卡资源,如果用专用的vnc软件,当我写shader出现了问题的时候,我只有回寝室去重启了。例如一个shader程序写一句while(1){}就可以把windows搞死机而又没有任何方法能够远程重启。天啊,这完全不可接受。经测试,在linux下不存在这个问题,刚开始gui会死锁,然后几秒钟以后x server就重启了。然后远程连接又可以用了。大不了,ssh用命令行重启即可复位。一切尽在掌握之中。

呵呵,一说就激动了,从读书说到了做东西去了。拉回来,拉回来~~《C++Primer》确实让我重新审视了C++的细节,虽然还没有读完,但还是受益匪浅。计划这个月内看完。

另外一本书是昨天刚到的——BOB大叔的《敏捷软件开发:原则,模式与实践》。这书写的实在是太棒了,以至于我一天就读了100多页,接近1/4了。看此书犹如BOB大叔手把手的在你旁边指导,非常棒!反思我做过的东东,因为大部分都是给自己做的东东,或者是一些研究性性质的东东,所以基本都没有文档的,有也是很少的注释。如果半年之后我还能改这个东东,还能理解得到,那就算好的。事实证明早期的东西都是乱七八糟的,弯管机仿真的程序写的还基本合格,但有些细节方面的东西很令人头痛。

现在越开发东西越觉得心虚,反思,到底怎么做才是比较好的做法,到底在软件实践中应该注意什么?书到用时方恨少。我常常审视自己的做法是否优秀,是否真正能够提高,继续做任何项目只会提高数量,而无法提高质量,看来现在该是悬崖勒马的时候了,是停下手头的项目的时候了,认真的看看书了。我是属于“实践派”的人,往往看了点点的书就忙于实现一些东西,这样虽然兴趣很浓厚,但做了一段时间后才会发现原来总在低级阶段。停,然后补充,审视,就得到了提高。

希望这些天的看书能够真正的提高自己啦!