程序设计思维

作者: Sheepy | 来源:发表于2015-07-18 21:24 被阅读580次

这个题目很大,而我只想谈谈自己对于《SICP》的一点思考。

《SICP》的全名是《Structure and Interpretation of Computer Programs》,中文译名《计算机程序的构造与解释》。这是MIT的一本经典教材,一本编程世界几乎人尽皆知的魔法书。我看了很久,还没有看完。。。但是每次看都感觉有收获,掩卷而思都会有点心潮澎湃,今天尤甚,在火车站等车的时候看得入神差点没赶上车,囧。

我今天就不介绍这本书的内容了,这些等我读完了再来做个全面的介绍,这次我只想把今天看书的收获记录下来。

《SICP》里有很多示例代码,我一开始老看着别扭,今天我对这个别扭的原因进行了深入的思考。在给出代码前,它会先对这个程序要解决的问题以及解决的方法进行适当的描述,然后就是代码,这个时候你会感觉这段代码几乎就是对上面解决问题的方法的一种Scheme(本书采用的语言,Lisp的一种方言,具有很好的函数式特性)风格的描述,但是里面用的这些子函数到底是在哪里定义的啊,怎么就突然拿来用了呢?正当百思不得其解的时候,继续往下看,它就会对这些子函数的实现进行描述,然后给出代码。

我之所以觉得别扭,是因为我平常写程序的时候都是想着怎么才能一步步实现这个功能,然后开始编码,如果之后在写别的代码的时候发现跟之前写的代码有一些可以共用的部分,就把共用的部分提取出来进行封装,向外提供调用接口。这种方式我想应该是大部分人的思维方式。但是在《SICP》中并非如此,由于Scheme支持函数式编程,抽象粒度更细(以函数为单位,而不是对象或者类),所以作者是站在一个很高的抽象层面上看待问题,理清问题的脉络,很快地给出一个原型,这个原型已经解决了问题,但是它还不能运行,因为其中还有许多没有定义的函数。接着再使用同样的方法,把这些子程序看做一个个单独的问题,像之前一样分别理清思路,定义好这些子原型,这些子原型中可能还会用到一些没有定义的函数,再重复上述过程,一直到所有代码都能被Scheme解释器理解执行。这种思维可以看做是一种递归式的思维,自上而下去看待问题,所以说函数式编程中递归真是无处不在啊。运用这种思维写出来的代码具有很好的模块性,分层清晰,可读性高又易于扩展,很多子模块将来都可能用到,就感觉,明明是为了写应用,一不小心写了一堆库。

《SICP》的精髓在于合理的抽象和管理复杂度,我觉得这也是编程和软件工程的精髓。

相关文章

  • Python程序设计思维

    -计算思维和程序设计-计算生态与Python语言-用户体验与软件产品-基本的程序设计模式 -逻辑思维:推理和演绎,...

  • 000 架构的核心

    架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。

  • 8.4 模块7:os库的使用

    八、程序设计方法学 8.1 实例13:体育竞技分析 8.2 Python程序设计思维 8.3 Python第三方库...

  • 程序设计思维

    模块化设计-通过函数或对象封装将程序划分为模块和模块间的表达-具体包括:主程序,子程序和子程序间关系-分而治之: ...

  • 程序设计思维

    这个题目很大,而我只想谈谈自己对于《SICP》的一点思考。 《SICP》的全名是《Structure and In...

  • 【Java核心技术1】第4章 对象和类

    [Java核心技术1] 第4章 对象和类 面向对象程序设计(OOP)与面向过程的程序设计在思维方式上有很大的差别...

  • 创作101第一季丨第3天丨学习笔记

    Python语言程序设计_第8章_8.5 想要有逻辑思维,请学好数学;想要有实证思维,请学好物理;想要有计算思维,...

  • 程序设计的逻辑思维-猜数字游戏

    猜数字游戏 程序设计的逻辑思维 #include #include #include void Guess(con...

  • Python 程序设计思维

    自顶向下 和 自底向上自顶向下(设计)解决复杂问题的有效方法将一个总问题表达为若干个小问题组成的形式使用同样方法进...

  • 从0开始学架构

    一.开篇词 架构为什么有难度 1. 架构设计的思维和程序设计的思维差异很大。 架构设计的关键思维是判断和取舍,程序...

网友评论

    本文标题:程序设计思维

    本文链接:https://www.haomeiwen.com/subject/pedpqttx.html