开口与前辈

来了英国之后都是闭着门学习计算机,有时候悟出了许多有意思的东西,也找不到人去交谈,去分享。只能默默地藏在心中。要好的也没有几个对计算机技术感兴趣。于是,心中的水有点深了。
第一件事,前天机缘巧合,和一个在CMU的学长聊了好久。本来就是给他拍马屁,但是聊着聊着,聊到了CMU的一门神课,15213。于是,进而我们又聊到了里面的一个lab,自己写一个malloc函数。当时很兴奋,因为真的很享受这么一种经历,和一个远比你强的人去聊技术。让你可以顺着他的思路,看到更远的地方。然后我就说,我真的很热爱敲代码。他一开始以为我装逼呢。后来他问我,为什么喜欢敲代码。我说,写代码的时候,到最后,总是自己负责写一个模块。这个时候,你只需要一台电脑,然后可以在家里床上,可以在咖啡馆,可以在图书馆,可以在教室,写代码。接着,写代码的过程中,对的就是对的,错的就是错的,你不用看任何人的脸色,也不用受任何人的约束。你所需要的,就是用编程语言,去实现你心中的想法,逻辑。我总感觉编译器就是一个乐谱播放器,我把代码写好,扫描进去,然后他就把音乐放出来。优雅的。
可能真的要与CMU无缘了,遗憾。但是康奈尔的计算机也是可以学到许多东西的。
第二件事,好吧,就是今天。这学期我选了一门课,叫做,C/C++。这门课我想是伯明翰的一门好课,而且今年是他第一次开。这门课不仅讲C,讲C++,还讲JAVA,还不断对比这三种语言。每次上课,我都提前半小时到教室,然后发现老师已经在那里了。他应该每次都提前半小时过去备课。很负责。以前的话,我都是过去就趴桌子上睡觉,然后等到他说上课我在起来听课。最近这几周的课已经基本听不懂了,讲到了C++的外部迭代器,内部迭代器,然后讲到了C++11新特性的lambda expression,讲到了C++11的函数编程特性。好吧。我真的听不懂了,虽然拼了命去听。然后申请在焦急地等待,所以回来也没有很好的学习。落下了很多。今天过去,又是只有我们两个人。我突然想和他聊聊,因为看他也没什么事干。
但是我也有点怂,毕竟是英国人,我对英国人的印象一直不是很好。而且我的口语。。。好吧。但是后来我还是去了,因为我当时真的想和一个人交流下。于是我就过去了。我竟然和他聊了半个小时,纯英文。首先我是觉得我的听力好像真的不成问题了。然后我想说,当听力不成问题的时候,口语再差其实也可以开始沟通了。因为你说的,对方一般都能理解。。。我和他谈了第一个我比较困惑的问题,写Java程序时,什么样的错误会在compile时被发现,什么样的错误会在run时被发现。他和我说这是一个很大的问题,不好说。接着我又问他,我有没有必要学习一些linker方面的知识,他说完全没有必要,链接器就交给专门负责链接器设计的人去学习,我们只需要了解一个梗概。然后我又弄明白了malloc这样的函数,所谓的动态分配内存,动态到底是什么意思。其实程序中所有的内存都是运行时才申请的,编译阶段不分配内存。而malloc之所以是动态的,因为我们可以控制申请内存的大小,通过我们自己的输入。而数组这样的,程序一运行,申请的内存就是固定的(fixed),不可能通过我们的输入而改变。这就是所谓的动态。然后我就把我的笔记本给他看。他感到挺惊讶,问我这些东西都是哪里看来的,是不是中国教的。我很兴奋,因为突然我觉得,自己过去那么努力,从来没有人知道,没有人赏识,今天终于有人看到了,有人称赞了。我和他说,这不是中国课本教的,这是我看美国人写的书,自学的。我感觉他挺赞赏的(自恋ing。。。)。然后问我过来念大几。我说我在中国念了三年,过来念这边的大三。他很好奇我为什么可以选这门课。我说我当时是签了协议才能选这门课的,就是挂科了自己负责。他说也是,他课上基本没有讲过什么Java。我说我在网上上了一些课程,补习了许多Java知识。然后我就自我介绍了,说申请了美国研究生,就想学习这个。然后说了句, I am really interested on computer programming. 这句话是真心的发自于一个小白嘴中。然后我们又聊了聊C++,我说这门语言好复杂,好严谨,想管的东西太多了。他说是的,C++是这个世界上最复杂的语言。我觉得他应该也挺惊讶的,自己班上居然能有这么一个人物(自恋ing。。。)
这两次经历,我都有种,敞开心扉,碰到伯乐的感觉。因为他们真的懂我。或者说,他们配得上我的倾诉。
想想,自己对于编程技术的理解,真的是从英国这一年开始的,而且很奇葩。上学期选了一门课,叫做 操作系统。我真的很庆幸庆幸,自己当时是选了这门课,而不是选择旁听。如果旁听的话,那么难的作业,可能自己就真的不会再逼自己去做了。然后我相当于是通过C语言入的门,而不是Java。直接上手就开始用链表。然后Linux内核编程,虽然都很小白,但对于当时的我,真的学会了很多。然后看了一本书,计算机系统概论。我觉得这是一本很好很好的入门书籍,真的,良心推荐,而且他的中文版也翻译的很好。我通过这本书开始了解计算机构造,开始了解一个程序在内存中的构造,一个函数在栈中的构造。这本书我看得真的很快,而且没有觉得枯燥。真的,很可能也因为,本科前三年写过一些代码,但从来没有系统的学习过这些原理,所以看这本书的时候,以前的那些经验和回忆都出来了,一些问题就迎刃而解了。然后我开始看操作系统方面的书籍,了解了内存管理和文件系统方面的很基本的知识。接下来又是一个转折点,我选择了上普林斯顿的算法课,在coursera上。我每周跟着上,跟着交作业,真的很累,一般需要15个小时去消化一周的东西。但真的很有用,也同时把Java给学了下。当时,学习Java速度比较快也是因为我刚来英国的第一个月没事干,看了一点C++,所以看Java的面向对象,一开始还是很顺畅的。然后这学期开始,我又上了C/C++,于是我又通过Java的理解来跟着上C++,反正我的学习经历真的很奇葩,很乱,但是亲身经历一遍后,也觉得很不错。有段时间,我一边写C,一边写C++,一边写Java,还要写计算机组成原理的汇编。真的很爽很爽。但是我自认为帮助是很大的。
哎,不知不觉就说了这么多。与我一贯追求的,简洁相矛盾了。赶紧结尾吧。拿什么结尾呢?
一句话, I am really interested on computer programming and I am lucky that I know this thing and have the chance to learn this thing. Thanks, God.

你可能感兴趣的:(开口与前辈)