不会开机的男孩

又是一年过去了

| Comments

又是一年过去了。转眼已经大四。活了这么多年,终于要开始走向社会了。也不得不面对人生n个第一次。 第一次一个人做火车。第一次一个人出远门。第一次和别人合租。第一次正经工作……

  看了一眼,发现自己的第一篇博客是2010-01-10 11:54。完成的。不知不觉在园子里面也混了将近一年了。看这这些文章,不禁又想总结这一年来的得与失。

  我一直以来有一个很坏的习惯。不喜欢去那笔记录一下自己。但是当我看到这篇文章之后,永远改变了我的看法。http://mindhacks.cn/2009/02/15/why-you-should-start-blogging-now。的确。写这一年的博客,真的让我收获颇丰,是的,如果没有写博客,那么就从现在开始吧。

第一篇博客,WPF设计简单游戏初探。   是我第一次看到深蓝大哥的博客之后,有感而写的。是WPF下的一个简易《弹弹堂》的实现。当第一次看到深蓝的博客之后,一股做游戏的冲动就无法遏制。的确。WPF/SL的强大的动画能力。给了想我这样的小白一个非常好的机会。一个月。从0到这个小游戏。真的。除了WPF/SL,世上真的没有其他能够比这个再快了,而且界面效率也在可接受范围之内。当然。这些的背后,必然是游戏的粗糙。但这不是最重要的。最重要的则是,自己完全对程序执行流程没有把握。我在完全不知道的情况下,都能写一个demo,说明了MS的强大和自己的无知,愚昧。.net的机制的完全陌生。使得我在这一个月看了大量的有关.net的资料。其中收获最大的就是http://www.cnblogs.com/anytao/。《你必须知道的.net》。可以说是深刻的点醒了我对.net的兴趣。后面的一个月也沉浸在这里学习。但是越学越迷茫。越来越多的东西,使我把c# 和c++彻底混乱了(当时也不懂c++)。最终,由于个人兴趣爱好,我放弃的C#(或是C# 放弃了我)。但是.net所给我带来的冲击直到现在也没有退去。真的,我从没有感觉到一个完全无知的coder。可以将一个程序跑成那样。

  虽然结果不很让人满意。但是再深蓝大哥的鼓励下。我发布了个人第一篇博客。这里万分感谢,万事开头难。

每一个
从小在游戏中长大的孩子
都有一个梦


希望
有天能玩到自己的游戏
但是
面对OpenGL、D3D
面对动辄上万的代码
有的只是无尽的
遗憾!


当第一次遇到WPF/SL时
梦想的大门似乎再次打开
一个个不眠之夜
体会到了理想与现实是如此的
接近!


理想与现实总是和残酷对等
想到丑陋的代码
想到运行性能的低下
想到GC,IL,CLR
。。。


面对自己
笑!



谨以此勉励自己最近一个月的努力

第二篇博客,第三篇博客,缩略图设计初探, 缩略图设计初探二   这个可以说是我程序人生的第一次转折吧。这里感谢王克伟,Jake Li等大牛。能够加入itoday。应该是我真正开始接触编程吧。从一开始的写一个简单的写日志程序,到最后研究暴雪的MPQ文件格式,.net framework Dictionary。开始真正的体会到编程的乐趣。整个程序,现在看来也没有什么亮点。只是又重新复习了一遍hash table的相关知识。只是现在看来终于明白了为什么暴雪处理冲突的时候没有采用分离链表法,而是仅仅是很简单的线性再散列。分离链表法带来的空间的节省。但是带来了硬盘的多次seek。在面对600M的文件来说。真是不得不考虑的问题。同样,也是为什么像SQLite的文件型数据库,删除数据,文件也不会变小的原因之一。没有考虑seek,是我当时设计的最大缺憾。只是我的文件数据量小。问题不突出。

2010-04-16 多线程程序设计笔记一 ,多线程程序设计笔记二   开始学习几本windows 开发的核心书籍,《windows 核心编程》,《win32多线程程序设计》,《windows 程序设计》。写的一篇总结。同大部分初学者一样。对windows 的消息事件模型很不明白,在加上当时的对.net更糊涂。随之也冒出了各种各样的疑惑,现在看来真是小儿科的问题。但是多线程问题,可以说是又复杂又简单的问题。需要深入的理解判断。《win32多线程程序设计》当时就没有看明白。我还是需要从最基Critical Section开始理解,当时没有能力深入的理解Critical Section的机制。这次不能再错过了。

2010-06-07 C++虚继承初探, 再谈C++虚继承   2个月,第一次看到这本书《inside c++ object model》。这本书可以说是最最经典的c++书籍。其内容之深,内容之广,对我来说真是有如一个板砖拍在自己头上。读完这本书后,我的第一个感受就是,我恨死我在学校的c++老师了。她虽然交的东西很少,但是她连构造函数都教错我了,无语。也让我意识到了,学校学的那点c++,基本就是负的。还不如啥也没学,知道错的还不如不知道。了解C++虚函数,才能了解二进制复用,而这又是理解COM的基础基础,理解COM同样是理解.net的基础。想了解虚函数,必须通过了解类的构成,以及为什么这样构成。真的。在没有写过这门语言的编译器之前,真的没有资格对这门语言评头论足。天啊,我还是想说,C++,你太难了,太复杂了。

  有趣的是,我现在对c++的理解也仅仅在那个程度上。 在我眼里,c++ 就是一个加了函数指针的c(这个是一个很不恰当的比喻,但是请原谅我实在没有想出其他恰当比喻)。模板,构造函数,析构函数。以及泛型一无所知。

2010-10-06 PE文件初探一, PE文件初探二   之前的学习,让我完全迷茫了。真是学啥啥不会,问啥啥不会。这会终于清醒了。因为我终于找到了,我到底该怎么学。MSJ,绝对是最适合我的资料。under the hood 这一系列绝对是经典中的经典。如何了解编程。从了解程序是如何保存在计算机开始是最好不过的。《csapp》同样也是和《inside c++ object model》,给人一种板砖拍的感觉,同样也是这样的顺序。从机器的角度理解程序的编译,链接,以及中间的符号等等问题。将是学习编程最好的开始。PE文件,同样是一个非常古老的东东,虽然至少也有20年了。但是依然值得学,即使在.net平台开发。真的了解.net的程序是如何执行的么?先搞定win32程序的启动过程吧。这里面的遗憾,是没有总结资源类型数据。的确。一下次都搞定,真的需要毅力和强大的知识储备。

  我相信有很多和我一样的同学同样会遇到这样的问题。知道要学习的知识非常多,但是却无法下手。真的,有时候真想从95甚至dos开始理解OS,理解从无到有,才能理解nt存在的原因。但是这个真是不是一般人可以做到的,强大的知识储备是在是太必要了。而对像我这样的小白,真的无法想象。但是《csapp》+ under the hood 绝对能够给你指出学习的路径。一开始的确十分枯燥,就像练功的基本功,无聊,重复,看不到希望,需要放下浮躁、急功近利的心态,慢慢积累。好的基础,越学到最后,学习效率越快。就像动态规划,这些基础就是那张表,用来降低日后运算的复杂度。同样的智商,你才能学的更深,学的更快。当然,你也会遇到风险。谁能保证那张表的所有内容都会在日后的计算中用到?谁能保证你还没把表算完,便已经程序溢出了?而《csapp》+ under the hood就是那张表,在我的角度看。

2010-12-15 SEH学习笔记一,SEH 学习笔记二   SEH 给我们提供了一个如此出色的异常处理,但我们却对这个知之甚少。这2篇理解了SEH的编译器级的很基础的实现。我觉得真的非常值得一看。同样SEH背后的,安全漏洞,包括MS提供的各种安全机制保证OS安全。以及背后的有关编译器OS之前的“互动”。的确是非常的有意思,里面的水也不浅。如果你也对代码安全感兴趣,SEH的基本知识,不能只停留在几个key word上。

  回头看来,发现,自己学的太杂了。而且真是觉得太快了,很多东西都没有经过时间的沉淀变已经成为了一种习惯。如果一开始就是错的,那么该怎么办?

  最近由于项目实践,不得不看一些STL代码。挑战自己对模板的恐惧。但是,我真的后悔了。在STL面前,我之前的所有认识,都是shit。我连一个简单的快排,甚至一个简单的资源分配,释放都不会。真的,我还没有关闭盒子的情况下又打开了另一个盒子,我怕我的好奇心会驱使我陷入茫茫的细节而忽视了对知识的整体把握。真的。也许我离再次迷茫,已经不远了。

Comments