Stanford Program Methodlogy
在看Stanford讲编程方法的时候感觉真的是对计算机编程有了全新的认识,怎么说呢以前一直是看国内的书籍或者教师讲的,讲的东西都不是真正程序员理解的程序,当然我不否定肯定有好的讲师(教师)。Stanford看到的虽然在学计算机编程,其实学习的还是一种普遍的知识,讲法是深入浅出,初学的人也很容易学明白,而且这些知识也是通往高级编程的必经之路。如果连基础的东西都没有搞清楚,编程语言有可能成为绊脚石,而且在进入高级的时候就根本无法找到突破口。所谓万丈高楼平地起,讲的就是要打好根基。
Variable
首先对Variable的理解,国内的教育强调命名方式,给你来讲错误的命名,设置出特别蹩脚的命名方式,这些实际上入门的人引入了歧途,认为这么难学编程啊。
variable是一个Box,你可以放一些内容,这就是程序中的Varible。
人家的解释多么深入浅出。
不想国内的讲一个Varible去讲什么命名规则,去讲什么堆栈结构,这对入门的人来说是无疑是增加了学习编程的难度,而且难于把握其精髓的。
所以在这种思维的灌输下,在写程序的时候感觉要转换自己的思维,拼命的想我有没有违反Variable规则啊。
另外关于命名规则,人家只讲一句
Varible begin with letter, can contains letter, number and “_”
就这么简单,至于怎么给Varible命名的唯一要求或者说规则就是要根据具体的实际需要来起一个有意义的名字,这个就像给新生儿起名字一样要有实际的意义。
另外既然是一个box一个篮子,我总可以放东西吧.
Method
Method定义简直五花八门,但是都没有能针对所有编程语言的统一理解,在入门的讲一个C的Method的实例或者其他语言的实例。虽然给大家直观的理解,但是不能讲出Method的本质形式是什么。
以前我也认为不同的编程语言有一定的Method定义方式,各种语言都不同并且没有统一的规范。其实这个观点是看了Stanford的课程后才理解,所有的编程语言都有统一的Method定义,只不过具体的表现形式不一样而已。而且给我们统一的按照人的思维的定义跟能把握要点。
Stanford Method的统一定义
visibility type name(parameter)
vis: private or public or protected or else
type: 就是返回的类型,一般程序没有返回值的返回void(补充,动态语言可能返回对象本身)
parameter:这个国内最搞(特别是先学C的人,可能更有体会),来个形参、实参区分。其实我觉得根本没有形参和实参的区分,一个讲的是在定义时候的叫Parameter,在程序运行的时候程序传给我的就是另外一个Varible。
Parameter
国内的教育varaible理解成实参,把parameter理解成形参简直是浪费精神,本来有本质的不同而且很好理解的概念被弄得一滩糊涂,当然这里可能是当时编程传入的时候,都是普通的翻译不懂编程,在加上有的人故意想显示编程语言的执行时的后台解释,说有时候传递实际的值,有时候传递地址。我现在的理解是不管是传值还是传址都是一个传递进来一个执行的时候就是Varible而在定义的时候就是Parameter参数的概念。
Iteration
国内教育对Iteration没有认识到Iteration的广义含义,认为Iteration就是循环,那么循环就是可以用for,while来表示。这样的教育就会导致到底什么场景下用for,什么场景下用while啊,而且把while和for用得不好。而事实上什么样的循环形式比这些for,whie更加重要。
stanford把iteration这里还是循环的翻译,但是人家是从人类思维的角度来理解Iteration,而不是一上来就像Iteration就是for,while。
试想想现在C#语言提供了foreach循环,那么按照国内的解释,这个到底算不算循环呢。当然大家有C#语背景或Java背景的都知道这个肯定是一个循环。然后国内的人又开始吵起来来了,foreach是一种语法糖,效率太低,应该从语言层面把它丢掉,或者认为有这些类型的特性的时候就不是好的编程语言,非得认为只有for,while才是循环,实际上这种观点的产生本身已经受国内的教育毒害而导致的。
Code编程代码
以前一直认为编程代码是学习计算机编程的人看的,或者是给专门的人看的,仿佛不是高手肯定写不出好的代码。所以便产生一种观点,好的代码是高手的,好的代码是高手才能看懂的。这个简直是谬论。
stanford教授的观点
编程代码是给自己或者说给人读的,不是给计算机读的
只有有这种思维的写的代码就而且代码通俗易懂就是好的代码,这个才是好代码的判断标准。
从上面的几个简单的方面看到人家讲的是一些人应该按这样理解编程语言的思维,以及如何编码。现在市面上有很多的书,什么美,什么好的概念,实际上你把一些基础的东西搞明白并且编程代码的应该站在什么角度的问题搞清楚,你也能写出好的代码、大家称颂的代码。
当然上面的一些观点都是自己对国内的计算机教育的观点,观点可能有失偏颇,至少我是怎么走过来的。