陆陆续续的,花了一个多月的时间,在网易公开课上看完了编程范式这门斯坦福的公开课,收益匪浅。公开课地址:http://open.163.com/special/opencourse/paradigms.html
虽说翻译多多少少有些问题,甚至包括英文字幕,但是瑕不掩瑜,课程本身是极好的。
花了半数的时间,讲了C语言底层的事情,包括内存布局,C-Style“泛型”方法和结构体,类型强转,函数调用,预处理器,编译器,链接器等等,让我对计算机的底层理解又上了一个层次;
花了几节课讲了多线程编程范式,由于课程是很久之前的了,只涉及了传统的多线程模型,讲了信号量,互斥,临界区,死锁,同步,生产者-消费者模型,还有哲学家问题等等。好几年过去了,我对计算机的理解俨然比考研时增进了很多,加之这个老师解释的到位,手把手的写代码,很容易就理解了当时考研时不懂的问题,对多线程这块的理解加深的不是一心半点,好赞;
几节课时间讲了Scheme这门函数式语言,函数式编程在当今又有再创辉煌的迹象,因为数据的不可变性,对于多线程来说是个天然优势,课程通过写常用的函数,或者实现一些内置的函数,深入的讲解了递归思想,阐述了如何用递归思想去解决问题,而且,让我了解了另外一个编程世界(之前只是听说过函数式编程而没有实践过)。
最后,还简单的介绍了Python和Haskell,前者是动态语言,后者是后起的函数式语言,介绍了它们和其他语言的异同,有对比,才有直观的感受,更容易让人理解。
除了学习到计算机知识本身,通过课程,也让我明白世界一流高校和我国高校的差距,没能力上清华北大,准确地说,是斯坦福和北邮的对比。
先说说老师,会多门编程语言,实现各种库函数得心应手,我不知道我校有多少老师能做到这个,应该还是有的,只是不多罢了;
更重要的是,全程几乎都是黑板粉笔板书,这才是最容易让人接受、跟着老师思路学习的方式,而不是一页页PPT的翻过去而不管学生到底能吸收多少,在我大学期间,见过三个老师全程板书,高数老师胡细宝老师,力学老师朱洪波老师,电动力学田贵花老师,本人脑子笨,学艺不精,但还是能懂得多数内容的,而那种直接放PPT的,实在是非我所能及啊。
再来说说学生。通常来说,好老师和好学生是相互映衬的,特别是好学生更重要,谁成就了清华北大,是那些各个省的拔尖人才啊。斯坦福大学的学生,毋庸置疑,北美(可能还有中印人才)最好的学生了,从上课可以看出,有些人提的问题是很有想法的,当然,也有些问题或者想法挺简单幼稚的,不过我都研究生毕业又工作2年多了,人家才大学二年级。
从公开课页面可以下载相关的讲义和作业,作业不能说很困难,但是每一次作业都很费时费力,要写代码,要求严格,特别是Scheme讲完居然要学生实现简单的解释器,逆天啊,老师仅仅讲了下内存分布之类的原理性内容,就要求这么高,实打实的培养工程能力。再反观国内,很多人大四毕业,也写不出个像样的小程序。
最后简单说说课程设置。他们一学期几门课,我们十几门课,我们还没有人家累。一个学期十来门课程,还要上些马哲毛概之类的没什么卵用的课程,能有多少时间精力去搞真正专业的东西呢?听课中,感觉他们除了上课,还有专门的讨论时间,老师或者助教也会去参与,我上课期间,基本就是老师来了讲课,我们听着,下课做作业,一般也就期末前能有一次或者两次答疑,更关键的是,我们教师学生比小的可怜,几百人就指望着一个老师,各种维度考量下来,我们能分到的资源少的可怜,没有讨论,没有和老师的切磋,自己瞎折腾,进步势必要慢一些。
国外发展了数百年到了发达国家,我们不到百年,相对底子弱些,只能自己加倍努力了。说到努力,比起国外顶尖的人,我这智商不足就算了,努力程度也不及啊,真替自己捉急。
一步一个脚印,慢慢进步,会通向彼岸的。
最后的最后,感谢Jerry Cain带来的精彩课程!