4/23:
阅读了coolshell.cn关于协程的文章,明白了C语言的switch(){case:}的另类用法,已经__LINE__,__DATE__等一些宏定义。以及对于python的field的用法,即为返回一个generator。由于文章还未读懂,明天要继续阅读。
4/24:
sicp中的嵌套映射以及写了生成(1~n)的质数映射三元组。和课后2习题,但是是在上课时写的。最后晚上的时候阅读了coolshell中关于元驱动的文章但是没搞懂啊,以及阮一峰关于函数尾调用&&尾递归的原理。
4/26-28
调整linux客户端的同步恢复代码,并学习了sicp,已经进行到了100页,由于个人懒惰问题忘记了编写日常
4/29
函数式编程的几个特性(coolshell):immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别人改你代码的时候,是很容易出bug的,在并行中这样的问题就更多了)
first class functions:这个技术可以让你的函数就像变量一样来使用。也就是说,你的函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是在函数中嵌套函数。
尾递归优化:我们知道递归的害处,那就是如果递归很深的话,stack受不了,并会导致性能大幅度下降。所以,我们使用尾递归优化技术——每次递归时都会重用stack,这样一来能够提升性能,当然,这需要语言或编译器的支持。Python就不支持。
还有函数式的一些好处:
parallelization 并行:所谓并行的意思就是在并行环境下,各个线程之间不需要同步或互斥。
lazy evaluation 惰性求值
determinism 确定性