今天很突然地发现裘宗燕老师还翻译了一本《编程原本》,英文名是”Elements of Programming”,是C++的STL库之父Alexander Stepanov,简单地说就是“一个大牛”。而看到这个书名的时候,就是一惊:撞衫撞脸撞书名,我那本《程序原本》的英文名原本也是打算用”Elements of Programming”的呀。

这两本书的介绍在这里:

  • 《编程原本》https://book.douban.com/subject/7564093/

  • 《程序原本》http://blog.csdn.net/aimingoo/article/details/75506782

Alex这本书是2009年出的,中文版则等到了2012年。所以我写《大道至易》的时候并不知道这本书,这很正常。到2012年《大道至易》发行的时候,我在“程序原本”这一篇上用的标题是“程序源流”,是再到后来把这一部分独立成书并打算出电子版的时候,才用回到更早拟的名字,也就是《程序原本》。

于是现在就有了两个“原本”:《编程原本》和《程序原本》。

我仔细读了读Alex的《编程原本》,感叹于裘宗燕老师精准的翻译——是的,没错,这本书确实应该叫“编程(Programming)原本”。Alex在讲的,根本就不是“程序是怎么一回事”,而是“怎么写出好程序”——编程源于数学,因而可以从一个数学系统的构建和演进来理解编程的精髓,并“(或许就是)希望基于这种思维方法和开发技术,为范围广泛的软件系统建立起坚实基础”。由于这样的观念,Alex的《编程原本》中的数学系统既不是严格学术上的数学,也不是一般含义上的计算机系统。

在书中,Alex用于定义/构建数学系统的篇幅很小,也就是第一章(“基础”,14页)。而在这14页中,用于讨论“数/数据”的篇幅更少,大概只有3~4个小节。在全书接下来的篇幅中,Alex就基于这样的数学系统开始设计和分析算法,并以之解决实际问题了。

这与我在《程序原本》中讲述的内容与方法完全不同,并且存在着根本观念上的不同。在《程序原本》的第一个小节中,我就通过一个断言“算是程序之表,数是程序之本”,将整本书定调在了对“数”的讨论之中。由数的结构化延伸到算的结构化,以及后面的应用和系统的结构化,其本质上是在讨论:如今在“程序”中出现的种种元素,无非是大家在“结构化”这一个求解方向上的所得。因此我才在《我的架构思想》中提出了我对这所有观察作出的结论:程序是可被组织的元素。并由此提出进一步的观点:结构化——只是“程序是什么”的一个解,而绝非唯一解。

所以,我其实是在讨论“程序(Program)的原本”,而Alex在讨论的是“编程(Programming)的原本”。正是因此,《程序原本》中看到的就是数据,或者结构化视角下的可组织元素;《编程原本》中看到的就是数学系统,以及由此构建的算法与实现。

算法 + 数据结构 = 程序这个经典的描述中,我讨论的是“数据结构”的问题,并进一步的讨论了“对数据、算法和程序的结构化”的问题,而Alex讨论的是算法问题。源于这种分析问题的剖面不同,Alex的《编程原本》要求读者有较高的数学基础,而《程序原本》则几乎对此没有什么要求——所以你看我在致谢中就只感谢了“我的小学数学老师”。^^.

不过《程序原本》要求你有很好的抽象思维能力,你可以把整本书看成一个完整的抽象思维与论证的训练过程——如何拿着最基础、简单的“数”的概念与原则,构建出对整个的系统描述。这本书回顾了你所有见到过的“程序”的样子,以及这些“样子”背后的逻辑,但是却并不教你写一行有效的代码、一个有用的算法,或者一个看起来有明确运行逻辑的系统。

算是程序之表,数是程序之本。

又:

我最终觉得我在这本书的英文译名上还是犯了“严重且不可饶恕的错误”,所以只好悻悻然地将所有已经用过英文名的地方(例如github上)都进行了修改。我的《程序原本》这本书,今后就只用“Elements of Program”这个英文的书名吧。

好象更确切的译法是“Elements of Programs”?比如“算法 + 数据结构 = 程序”原书名就是“Algorithms + Data Structures = Programs”。算了,就这样吧!我的英文还没有好到可以较真这个东西的地步……

怎么会有两个“原本”相关推荐

  1. 怎么将两个datatable 合并_视频音频合并大师免费版-视频音频合并大师2020版下载(附使用方法) v2020.02.08...

    视频音频合并大师免费版 是一款好用的视频合并软件,包括视频合并和音频合并,可以一次性将多个视频格式文件或音频文件合并成一个单独的视频文件,进行转换合并成你想要的视频,并且有多种自适应屏幕尺寸可以选择, ...

  2. 搭建一个专属于两个人的爱情网站,记录生活中的点点滴滴

    搭建一个专属于两个人的爱情网站,记录生活中的点点滴滴 爱情是世界上最为令人着迷的情感,它可以让两个原本毫无关系的人变成最密不可分的伴侣.它可以是山盟海誓也可以是柴米油盐,有些人恋爱喜欢拍照,吃了什么, ...

  3. 车企反向造手机,两个生态的裂痕能否弥合?

    撰文 / 张贺飞 编辑 / 沈洁 简单几则"不确定"的报道,就在手机市场搅起了新的风云. 继吉利收购魅族的疑云后,蔚来下场造手机的传闻似乎确凿了许多,不仅传出了原美图手机总裁尹水军 ...

  4. AI人工智能天机芯芯片

    AI人工智能天机芯芯片 描述 2019年刊出的<自然>封面文章,展示了清华大学类脑计算研究中心团队研发的新型人工智能芯片"天机芯(Tianjic)".这是世界首款异构融 ...

  5. [转载]Linux 线程实现机制分析

    自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性.效率.本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads ...

  6. 技术图文:03 结构型设计模式(上)

    结构型设计模式(上) 本教程主要介绍一系列用于如何将现有类或对象组合在一起形成更加强大结构的经验总结. 知识结构: 享元模式 – 实现对象的复用 Sunny 软件公司欲开发一个围棋软件,其界面效果如下 ...

  7. 微软资深算法工程师为AI初学者量身打造的机器学习入门书上市啦!

    随着人工智能技术的发展,机器学习已成为软件 / 互联网行业的常用技能,并开始向更多行业渗透.对越来越多的 IT 技术人员及数据分析从业者而言,机器学习正在成为必备技能之一. 今天我们就来聊聊机器学习的 ...

  8. 令人拍案叫绝的Wasserstein GAN

    雷锋网按:本文作者郑华滨,原载于知乎.雷锋网已获转载授权. 在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wassertein GAN>却在Reddit的 ...

  9. 三星教父逝世!李健熙缔造的商业传奇和争议人生

    作者丨赵家云.尹子璇 来源丨猎云网(ID:ilieyun) "政商抱合"的背景,一度让李健熙被韩国人追捧为"经济总统". 据韩联社消息,韩国三星会长李健熙去世, ...

最新文章

  1. Gartner:2019年十大数据与分析技术趋势
  2. JQuery中2个等号与3个等号的区别
  3. Python Module — asyncio 协程并发
  4. 迎接“云”时代的全面到来
  5. centos 安装 图像识别工具 tesseract-ocr 流程
  6. 电脑开机动画_领克的开机画面,你修改了?
  7. http.ListenAndServe()到底做了什么?
  8. 从零到破万节点!支撑618大促背后的蚂蚁金服Kubernetes集群
  9. 移动云亮相 2021 IDC 年度盛典 共话变革与赋能
  10. 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数(Java)
  11. 游戏理论研究四:RPG游戏
  12. pku 3683 Priest John's Busiest Day 2-sat判断有误解+输出可行解
  13. mysql数据库连接数瓶颈_MySQL数据库性能优化之硬件瓶颈分析
  14. ASP.NET的页面生存周期 [转]
  15. 更改ESXi主机root用户密码
  16. delegate(转)
  17. 代码评审系统 ReviewBoard 和 Gerrit
  18. pdf文件过大如何缩小?
  19. window.open打开txt文件
  20. 《第一堂棒球课》:王牌左外野·棒球7号位

热门文章

  1. 高考测试分数软件,2021根据分数测我能上的大学的软件
  2. 【Spark】广播变量和累加器
  3. Node.js 的微任务处理(基于Node.js V17)
  4. 如何利用电容谐振改善PDN阻抗-电源完整性
  5. 从0单排:学风侏儒——小样本学习11-18年
  6. Mac使用技巧:快捷键也可清理Safari浏览数据!
  7. 深入分析集群安全机制
  8. 【阅读】当我遇见一个人
  9. 数据的封装与解封装过程
  10. ReID:常用损失函数总结