最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

程序原本(七):像大师们一样思考

  • 2020-02-16
  • 本文字数:1566 字

    阅读完需:约 5 分钟

程序原本(七):像大师们一样思考

编者按:本文节选自周爱民著《程序原本》一书中的部分章节。


算盘用了几千年,谁问过“算盘为什么能算东西”?算珠、进位、栏,这些东西是不是基本的存储结构?用算盘的“我们”,是不是计算单元?珠算表是不是运算规则?那些珠子表达出来的“0~9”的排列,是不是输入输出的界面?


“我们+算盘”就是一个完整的计算系统。这样的计算系统的完整性,图灵用了一个假想加以说明。图灵不过是用一个假想描述了一个事实,而这个事实“看起来”能被机器实现。于是,我们的计算机时代就开始了。


图灵是否证明过“大笨象吃意大利面条为什么是一个完备的计算机系统”呢?不,最初等的问题,往往最难于证明。往往,他的证明过程,或应用过程,只是触发了一个想象。


对计算机根本问题的思考,许多会追溯到哲学思想层面。IOPD 和 PDIO 的问题、“算法 + 数据结构 = 程序”的问题等,就属于这一类。还有一些会追溯到人类行为学、语言学等层面,例如语言、语法、语义,以及像有没有语用这样的问题。大多数时候,真正推动计算机发展的,不是对具体问题的推理求解,而是对问题本身的抽象。在 Dijkstra 的叙述中,抽象更像是终极武器。按照 Brooks 的观点:


数据的表现形式(数据结构,抽象的结果之一)是编程的根本。


而按照 Dijkstra 的引述:


引用未解释过的名词阐述公理或定理和作用于未解析过的操作数的(命了名的)运算两者之间有着某种平行的相似性。


无论如何,我们“做一个计算机”,原始的目的不外两个:其一是“让它计算数学”,其二是“让它像人一样思考”。请注意,我的确是说“计算数学(即算数)”。数学是人类的理论学科,“怎么算”以及算的内容等,都是由我们自己设定的。而计算机的能力,只是计算“数学”这个它未知的对象而已。事实上,我们现在讲的“命令式”、“函数式”或“说明式”,只是我们为计算机设定的“最基础的运算方式”。在这个“运算系统”中,“数学”并不是最初设定的。


命令式如何计算,函数式如何计算……诸如此类的问题了解清楚了,我们对这类语言也就了解了。至于什么高阶函数(higher-order function)、克里化(Currying)、延续(Continuation)或发生-迭代器(Generator-Iterator)之类,那已经是具体语言的表象,而非“这一类语言”的本质。举例来说,JavaScript 1.5 还没有实现过“生成器对象”(Generator Object),但并没有人否认它是函数式语言。反过来说,“Generator Object”原本就不是函数式语言的必备要素。


LISP 表达了函数式语言的全部“必备要素”,然而 LISP 七个原子运算也只是针对 LIST 这个结构抽象来说的。对于一个“(顺序的)表”,这七个原子运算是必需的,而对于另一个“(关系的)表”就未必如此了。所以某些原子运算,也不必放在函数式的必备要素中。像 LUA 这样的函数式语言实现方法的出现,也证明了这一点。1


1 LISP 的基础数据结构是索引数组(表,LIST),而 LUA 的基础数据结构是关联数组(表,MAP)。


那么函数式还剩什么?


要真正理解函数式的秘密,是要一个语言一个语言地学习下去吗?是要一种运算法一种运算法地学习下去吗?我们听完人家说“延续”,于是就开始了解延续,而没有去追问延续为什么出现在函数式里面,或它是不是函数式的必备要素,又或是函数式运算系统的自身的“问题”。我们正是迷失于种种语言和概念的表象,而最终没能像大师一样去思考“计算机不过是大笨象吃意大利面条”这样的抽象层面的问题。


我们要改变的是思想,我们要增强的是能力。大多数人只是增强能力,而不改变思想。这就是我们大多数人不是大师的原因。


图书简介https://www.ituring.com.cn/book/2429



相关阅读


程序原本(一):应用开发基础


程序原本(二):应用开发技术


程序原本(三):开发视角下的工程问题


程序原本(四):系统的基础部件


程序原本(五):海量数据运算中公开的秘术


程序原本(六):继承与混合,略谈系 统的构建方式


2020-02-16 14:001683

评论

发布
暂无评论
发现更多内容

人工智能与软件开发的未来

这我可不懂

人工智能 软件开发

干货分享|可证明安全的隐私计算

隐语SecretFlow

大数据 AI 安全 隐私保护 隐私计算

区块链上地址与银行账户有什么区别?

BSN研习社

华为云数智新消费创新峰会2023,我们在这里!

云智慧AIOps社区

人工智能 运维 大模型 GPT

如何维护大型 Next.js 应用程序

汽车之家客户端前端团队

next

OpenHarmony 分布式硬件关键技术

OpenHarmony开发者

OpenHarmony

GPU荒漠,算力短缺背后的时间竞赛与解决方案|TE解读

TE智库

人工智能 AI gpu 算力

亚信科技AntDB数据库通过GB 18030-2022最高实现级别认证,荣膺首批通过该认证的产品之列

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

让大数据平台数据安全可见-行云管家

行云管家

大数据 数字化 数据安全 大数据平台

站在源码的角度看多人语音厅房间系统

山东布谷网络科技

直播源码

波卡链质押挖矿模式系统技术开发合约源代码示例

V\TG【ch3nguang】

区块链技术应用开发 质押挖矿 奖励分红

揭秘YouTube 的环境模式发光效果

汽车之家客户端前端团队

CSS youtube

万字详解云计算中的云网络技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

企业网络安全守护神-行云管家堡垒机!

行云管家

运维 网络安全 数字化 堡垒机

智慧仓储 | 你所忽略的系统安全性问题,可能很 “致命”……

网安云

系统安全 智慧仓储 中小企业

合约交易所系统软件开发详情(源码搭建示例)

V\TG【ch3nguang】

交易所开发 交易所搭建

超越界限:大模型应用领域扩展,探索文本分类、文本匹配、信息抽取和性格测试等多领域应用

汀丶人工智能

信息抽取 自然语言模型 大语言模型 ChatGLM-6B 文本匹配

如何优雅的给柯里化函数添加类型标注

汽车之家客户端前端团队

函数柯里化

SUI 将通过 SUI Foundation 资助 Footprint Analytics 解析其公链数据,为生态系统提供支持

Footprint Analytics

区块链 公链

隐私计算技术|私有信息检索(PIR)及其应用场景

隐语SecretFlow

大数据 AI 隐私计算 开源社区 私有信息检索

大型集团企业数据治理方案,以“应用驱动”的数据治理策略 | 行业方案

袋鼠云数栈

大数据 数字化转型

支付宝小程序云效能:四大基于小程序生态的解决方案

TRaaS

Kurator,你的分布式云原生解决方案

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

开箱即用!教你如何正确使用华为云CodeArts PerfTest!

华为云PaaS服务小智

云计算 软件开发 性能测试 华为云

NFT铸造平台模式系统开发详情介绍[源码搭建]

V\TG【ch3nguang】

NFT 数字藏品开发

程序原本(七):像大师们一样思考_文化 & 方法_周爱民_InfoQ精选文章