他是现代计算机科学的鼻祖,编程界的上帝

简介:

他是历史上最年轻的图灵奖获得者

经典巨著《计算机程序设计的艺术》的作者

写作排版神器TEX软件的创造者

现代计算机科学的鼻祖

他就是计算机领域的艺术大师——

唐纳德·克努特


他在8岁的时候

为了帮自己班级

在一个拼写单词活动夺得冠军

装病待家里两周背单词

最后比赛时写出了4500多个单词

比裁判所准备的还要多出2000个

然后他笑着说:我还能写出更多~

从此他在班里的人气就一直居高不下


其实他高一的时候

更喜欢听音乐与作曲

甚至还一度考虑过报考音乐专业

真正使得他和计算机结缘

则是在他大一暑假留校打工的时候

当时他工作的隔壁房(学校的机房)

放了一台IBM650计算机

他在学校机房里研究了好几天

大二结束后他选了数学专业

后来还设计了一个数学模型

根据球员在每场比赛中的多项表现的统计数据

对球员进行综合评估

(评估计算则通过程序交给了计算机)

球队教练根据他的程序挑选和使用球员

最后让学院赢得了联赛冠军

他还曾在《美国数学月刊》

发表一篇名为卫生纸问题 的论文

研究如何合理使用厕纸的算法

小节标题中使用了大量的粪便学词汇

编辑警告他过度调侃的文风是危险的

唐稍微替换了几个小标题的粪词

表示不想改也无需再改了

编辑无奈之下只好表示:

你的厕纸被接受了!

1964年,他被约稿创作一本

关于编译器和程序设计方面的书

结果拖了4年都还没有动静

编辑终于忍不住问他书写咋样了

他回答:才只写了3000页

都还没进入主题

编辑拉长了下巴,目呆口滞

也只能帮他出多卷本了

于是就有了

《计算机程序设计艺术》系列丛书

这一套书是编程史上最伟大的书之一


第一卷的书名叫做《基本算法》

讲述编程时要用到的基本数学知识

和处理不同问题要用到的算法

后来第二卷、第三卷也相继出版

1973年系列丛书销量已经突破百万

这套包罗万象的计算机丛书

受到了图灵奖评委会的关注

按照唐纳德的计划

该系列丛书一共有7卷

这才出到第3本

图灵奖的评委们已经忍不住

把奖杯送给他了...

从此他家就多了一个水果盘......

那年,他只有36岁

他也成为了图灵奖至今年龄最小的获奖者


图:碗状的图灵奖杯


本来他应该继续写系列丛书的

但作为一个完美主义强迫症

他实在无法忍受如此低劣的排版技术

居然把他的艺术品印的这么难看

他在采访中说:

我忍了很久了,当今的文字排版技术太烂了,破坏了我著作的美感,我要去开发更先进的排版技术,更优美的字体,让我的书看起来更漂亮!

笔耕一辍就是十年

在这十年之间

唐纳德发布了三个响亮的成果:

METAFONT字体设计系统、

文学化编程(Literate Programming)、

以及著名的TEX排版系统

如果大家用word写过复杂的数学公式

或者在公众号排版放过几个公式

都会知道放出来预览一看

那种传统排版所带来的咬牙切齿的感觉

编辑时还可能会有什么行间距段前距段后距

字体字号字距粗细等细节问题

影响美观

而TEX系统则完全解决了这些问题

简直是强迫者自我满足的终极神器

它大大加快了学术论文的编写速度

直至如今TEX还是全球学术排版的不二之选


TEX的版本号不是自然数列

而是从3开始

不断地逼近圆周率

目前最新版本是3.1415926

意思就是在说

我的系统已经无限接近于完美了

没有什么要改的地方了...

此外他还为TEX系统设立了奖金

第一个发现系统漏洞的人

可获得2.56美金

第二个人可获得5.12美金

依此类推

……

从版本推算,现在送出的支票

已经去到了327.68美金

但收到支票的人都几乎没去银行兑换

只是把支票当做自己的纪念收藏品

凭借他的这些成果

他获得了美国总统卡特亲自颁发的

美国国家科学奖奖章


有了漂亮的排版和优美的字体

高德纳重启了系列丛书的写作

但由于计算机领域发展迅速

至今只写到第四卷第一部分(4A)


这套丛书如今早已成为

程序员界的圣经

唐纳德也因此成为了编程界的上帝


唐纳德:我尝试尽我所能的去熟悉电脑科学里的一些领域,然后把这些知识摘要成大家比较容易了解的方式,让没有那么多时间做这种学习的人也能够吸收它们。


唐纳德认为编程是一门艺术而不是一门科学

因为艺术是人创造的,科学不是。

艺术是可以无止境提高的,而科学不行。


按照这个逻辑

全世界的各位码农

其实都是殷勤的艺术家

 原文发布时间为:2016-09-25

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
存储 API Python
FastAPI(24)- 详解 File,上传文件
FastAPI(24)- 详解 File,上传文件
1368 0
FastAPI(24)- 详解 File,上传文件
|
7月前
|
数据采集 JavaScript 前端开发
浏览器自动化检测对抗:修改navigator.webdriver属性的底层实现
本文介绍了如何构建一个反检测爬虫以爬取Amazon商品信息。通过使用`undetected-chromedriver`规避自动化检测,修改`navigator.webdriver`属性隐藏痕迹,并结合代理、Cookie和User-Agent技术,实现稳定的数据采集。代码包含浏览器配置、无痕设置、关键词搜索及数据提取等功能,同时提供常见问题解决方法,助你高效应对反爬策略。
612 1
|
存储 SQL 缓存
阿里华为等大厂的本地缓存、分布式缓存解决方案详解(中)
阿里华为等大厂的本地缓存、分布式缓存解决方案详解
507 0
|
算法 开发者 内存技术
PCM 与预测编码(下)| 学习笔记
快速学习 PCM 与预测编码(下),介绍了 PCM 与预测编码(下)系统机制, 以及在实际应用过程中如何使用。
PCM 与预测编码(下)| 学习笔记
单片机原理及其应用——单片机控制8只发光二极管交替闪烁
单片机原理及其应用——单片机控制8只发光二极管交替闪烁
单片机原理及其应用——单片机控制8只发光二极管交替闪烁
|
计算机视觉
【方便的Opencv】实现图片合成视频+附带图片生成gif
【方便的Opencv】实现图片合成视频+附带图片生成gif
【方便的Opencv】实现图片合成视频+附带图片生成gif
|
前端开发 小程序 Java
微信Java开发工具包的使用
之前我在《Java调用微信登录以及eclipse远程调试》一文中说到了Java程序怎么调用微信登录,不过那篇文章中使用的是手工方式,本文将介绍如何使用第三方SDK(binarywang)进行微信网页授权以及获取微信用户信息。
微信Java开发工具包的使用
|
关系型数据库 MySQL Linux
17.10 Linux ncurses安装
ncurses 提供字符终端处理库,包括面板和菜单。它提供了一套控制光标、建立窗口、改变前景/背景颜色及处理鼠标操作的函数,使用户在字符终端编写应用程序时绕过了那些恼人的底层机制。简而言之,它是一个可以使应用程序直接控制终端屏幕显示的函数库。
438 0
17.10 Linux ncurses安装
|
Unix Java Linux
超级详细|Linux系统下从0到1的玩法大全
Linux是一个开源、免费的操作系统,其稳定性、安全性、处理并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。Linux可以安装在各种计算机硬件设备中...
745 0
|
开发者 知识图谱
【Offer 5000】独家福利!《阿里云技术面试红宝书》免费送
有了此书,你无需漫无目的地花大把时间在题海战术准备上,而是在精准回顾知识点的同时,间接地与技术大牛们做了直观的沟通,了解他们的出题思路与考察要点,用上举一反三的技能即可。
13951 0
【Offer 5000】独家福利!《阿里云技术面试红宝书》免费送