0%

《代码之髓》

通过介绍不同语言对同一问题的不同处理方法,让人加深对该问题的理解,同时 欣赏 到语言层面的巧妙设计。

1. 成对操作放在一起比较好理解

C++用析构函数,java用finally,python用with,D语言有scope语句,在作用域结束时自动调用提前设定好的程序。

2. 错误优先思想

发生错误应该停止操作,立即报告。python就是这样设计的。

3. 为什么要起变量名

没有变量名之前,使用地址编号来表示这个位置上的内容,比如2345位置上的数字1,使用变量名更方便。这跟IP地址不好记,用域名取代一样。

4. 进程线程

加快处理速度——>用交替执行的并发——>两种交替方式:1. 协调式多任务,2. 抢占式多任务(大家都表示这个很好用)——>抢占式会出现竞态,原因:a.两个处理任务共享变量,b.至少一个处理任务会修改变量,c.一个处理任务未完成前另一个可能会介入进来——>解决a: 没有共享,就使用进程(没有共享也有些问题无法解决(内存等),出现了线程),actor模型(使用消息,异步)。解决b:不修改,const,val,Immutable。解决c: 方法1:不介入,协调线程,corutine, green thread, 比如python的generator, yield。方法二:表示不介入的标志,锁,mutex,semaphore,锁有无法解决的问题:死锁、无法组合,出现了事务内存

5. 归集变量与函数而建立模型的方法

a.模块(module),Perl:package,hash。b.把函数和变量放入hash,JavaScript。c。闭包(closure),使用函数执行时的命名空间来归集变量,主要在函数式语言中使用

6. 最重要的是理解了闭包,为了解决代码复用,只使用简单的作用域来管理free variable。

7. 总的来说,相当流畅的一本书,读起来又知道了些新知识,喜欢这样的。


西尾泰和