全部学习汇总:​​GitHub - GreyZhang/g_SICP: learn SICP and hack lisp.​

1140_SICP学习笔记_使用牛顿的方法求解平方根_职场和发展

    这里首先给出了一个中国学生至少都很容易理解的平方根的定义,写了一个lisp的伪代码。其实,总伪代码的描述来看这个也仅仅是描述了什么是平方根,但是并没有给出方法如何去求解平方根。

1140_SICP学习笔记_使用牛顿的方法求解平方根_sicp_02

    看到这里多少联想到了这一门课程的继承者,MIT的python课程公开课。教授在课程中也提到过这个概念,知识其实可以分成两类:一类关注点在于弄清楚是什么;而另一类则关注如如何是做某一件事情。看起来,两门课程之间的确是有一定的继承关系,哪怕编程语言有了变化思维的模式还是存在。

1140_SICP学习笔记_使用牛顿的方法求解平方根_lisp_03

1140_SICP学习笔记_使用牛顿的方法求解平方根_sicp_04

    这部分主要是一个程序的实现,但是从这个地方我们可以看到一种软件设计的思路。这种设计模式其实是从整体到局部的,先画一个主干然后再开始血肉的描绘。这种方法的确是有很好的快速设计响应优势。回顾我之前的软件设计的经验,其实也有这样的思维模式存在,但是明显没有这么清晰的方法性习惯。自然,简单思考的话,这样虽然可以满足快速的软件设计实施,但是或许很容易引入比较影响软件设计效率的地方。

1140_SICP学习笔记_使用牛顿的方法求解平方根_职场和发展_05

1140_SICP学习笔记_使用牛顿的方法求解平方根_职场和发展_06

    关于这个问题,我找了一个参考答案。说起来,我自己的软件设计中似乎也的确没有追求百分百的精度表达能力。而这里给出的方式其实类似于自动控制原理中的反馈调节,而这个调节最终都是收敛到一条恒定线的。那么,其。实问题也来了。是不是所有的计算都会收敛呢?是否有在一个数值上下不断波动的情况呢?其实,这个很大程度上还是在于改进函数的实现

    小结:求解平方根,这是一个很经典的问题,之前学习MIT的python教程的时候也是从这个问题的研究开始的,的确是很有代表性。这个问题的解决过程中,可以看出人类的逻辑思维与计算机的执行模式之间的差异。