之前把英文版的笔记上传上去了,有兴趣的小伙伴可以看一下,里面有些单词的解释我已经标记好了,网址是:https://www.jianshu.com/p/2a48ac5f801d
说一下我所学到的东西吧,课上老师对比了几何学与计算机科学的相似性。的确,当你要对一个物体的体积,面积来进行测量的时候,需要使用测量工具,如果你要写出来一个软件,一样需要计算机来帮助你实现,而这些只是一小部分,计算机科学是一个帮助你更加规范化的思考问题的学科,在这里面,计算机并不重要,它只是协助你思考的一部分,让你考虑的问题抽象化程度更高,而一些简单繁重的计算交给计算机来实现,所以我认为,科学这个词更加重要,首先你要能想出来这个问题,然后才能用计算机来实现它。既然你的工具是计算机,那就需要了解它是如何来实现那些基本的操作,这样才能把你所思考问题更加准确的转交给计算机来完成。
其次减少计算机在运行过程中的工作量,也是一个很重要的问题,还有操纵计算机来实现基本操作的“咒语”,也就是最最底层的语言使用方法也要很清楚的了解。减少计算机的工作量这是一个通俗的说法,用专业的说法,这叫减低系统的复杂度。根据我的理解举个例子:如果你去吃饭,你可以选择直接从寝室到食堂,还可以选择先出寝室,然后去趟厕所,然后再去食堂。当然这两种方式你都能实现从寝室到食堂这个任务。不过第二个选择中你要做的事情要比第一个选择多了个上厕所,换算到计算机中,同样的道理,算的越少越好,中间环节越少越好。在课上,老师讲了三种减少复杂度的方法:
1: black-box abstraction(黑盒抽象)
就是把一些基本的操作封装起来,当你去考虑一个问题的时候,直接用,不用管它是如何实现的,减少思考的量,解决问题更加方便
2:conventional interfaces(实现相应的接口)
假设:两个元素相加,如果能实现两个任何元素的相加,例如两个数字,多项式,电信号。。。 我们需要实现它,这个很像Java里的方法重写,不过这里所说的是底层的东西,解决方法是:来实现相应的接口,用以实现不同元素的相加,这样的话如果某一天又出现了新的两个不同元素,我只需要重写这个两个元素的加法那个方法就行了(哈哈,原谅我,我就是这么理解的),也就是说再去实现一个新的相应的接口,很有条理的往里面加东西,不至于输入的是数字的时候,计算机用电信号相加的解决方法来计算,这种方式会减少系统的复杂度。
3:making new language(创建新的语言)
创建一门新的语言,当一门语言实现某种功能很复杂的时候,如果你够牛的话,可以创建一门新的语言来实现,不过这里我觉得需要对计算机的底层功能了解的很透彻之后才能创建出一门优秀的语言,下学期有一门编译原理课,我觉得我想尝试一下,多了不说,少了不唠,这节课我理解的就这些东西,下次课继续。
第一次课的总结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...