MIT 6.001.x学习笔记-1A

来源:互联网 发布:nicelabel 数据库 编辑:程序博客网 时间:2024/06/06 01:23

update04.24

万万没想到这个笔记也要update一下(。)

想了想,如果按我的理解的话,这节课基本就说了两个东西。一个是lisp的基本语法,然后举例子;另一个就是介绍了下黑箱子理论(中文是啥真不知道),编程就是搞出一个黑箱子,外界只看到了一个箱子(里面是啥不知道也不关心)跟一个出口一个入口,入口是输入,经过箱子(也就是我们编写的程序)的处理之后再从出口输出。怎么做这个黑箱子呢,原来那块已经说了就不再重复了(喂)。一开始的时候直接开宗明义地说明了,CS是控制复杂度的科技(是这么翻译吧?),可以想到算法跟数据结构在整个CS的学习中将有着怎样重要的地位了。



第一节课,一上来说computer science这玩意儿跟science无关跟computer无关,简单来说就是techniques of controlling complexity啦。也就是CS的终极是算法的意思吗

这门课把LISP作为教课的语言,举了black-box abstracion的一个例子,来旁证他举的一个流程:由primitive objects组成combination,抽象一下成abstraction,最后capturing common patterns,简单来说就是用基本元素组成比较复杂的东西,进行一下抽象,最后变成一个可调用的函数之类的玩意儿。按老师的说法就是要establish conventional interfaces啦。我觉得就是实现一个库

举的这个例子呢,是怎么搞个大新闻求x的平方根。作为一个之前学过一丢丢C的新手,第一反应是弄个while循环出来然后二分法走起,当然啦这个也是差不多的,毕竟算法都一样,就是实现的语言不同而已。LISP的做法可以说颇有些麻烦,不过想想它的primitive objects就那么几个也难怪了hhhhhh

LISP跟我之前稍许接触过的所有语言都不一样,它的操作符是放在左边的。举个例子,3*5在LISP是这么干的:(* 3 5).也没有像分号这种标志着语句结束的东西,这一点python倒是比较像它了。由于primitive objects太少,所以导致要define一大堆东西,比如说最后老师举的那个求平方根的例子,最后完成的程序看起来跟伪代码似的。

这个try guess,他称之为block structure。反正这个block structure也是有点儿黑箱子风范,用户管你这个东西里面怎么实现的,直接调用函数——输入数值——里面代码咣哧咣哧跑的样子不用表现出来——输出结果,over啦。

0 0
原创粉丝点击