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

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

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

写作排版神器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

时间: 2024-10-24 13:11:47

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

听说这篇文章搜罗了编程界最牛的12位大神

简评:是的,你没有看错,本文中出现的每个人都是不折不扣的大神,每一个都战力爆表.他们是程序界的先驱,他们所做出的贡献或多或少地影响着我们的生活,被世人瞻仰.当然,这篇文章也不是纯粹的供人敬仰膜拜,小编则是希望这些大神能成为我们普通人学习的榜样,奋斗的目标.也许在20年后,不懈努力刻苦学习的你也能出现在这份榜单中,成为大神俱乐部中一员呢?谁知道呢? 在这篇文章里面,我们将会看到 12 位空前最伟大的程序员(排名不分先后),下面就开始吧! 1. Dennis Ritchie  Dennis MacA

编程界十二位祖师爷级别的 “大牛”

每位程序员或多或少都为这个社会贡献着什么东西,然而有些程序员的贡献却超过了一个普通人一辈子能奉献的力量,他们是先驱,是伟大的,值得我们致敬. 我们常常会把那些贡献者为使我们生活变得更便利而做出的贡献看作是理所当然的,与那些给我们带来帮助的人相比,上天似乎有一种方式使得它给那些为我们带来娱乐的人的奖励要比前者更多.不过这没关系,我们知道该如何向那些带领着我们程序员和技术爱好者前进的人们致敬. 在这篇文章里面,我们将会看到 12 位空前最伟大的程序员(排名不分先后),下面就开始吧! 1. Denni

如果编程界推行中文标准的话

    何曾几时CCTV5的NBA不叫NBA而叫美国职业男篮,后来又简短为美职篮,那WNBA叫啥呢?美女职篮吗?     如果在编程界推行中文标准:      为了保证完全的汉语纯洁性,从今天起我们使用完全中文编程(比如易语言),符号和空格必须保持全角,程序员需要在程序左下角加盖个人签章. 在谈到以下词汇时请使用纯洁汉语名称:  Linus Torvalds --林纳斯·脱袜子 Git--由林纳斯·脱袜子开发的一种分布式版本控制系统 VI 编辑器--看你看你一眼编辑器 Go语言--走你语言 Py

来自编程“老者”们的须时刻谨记的七大教训金典

在HBO电视剧集<硅谷>第一季第六集中,一家初创企业的创始人Richard陷入困境,并向一位看起来只有十三.四岁的男孩求助. 这位少年天才瞄了Richard一眼并说道:"我本以为你会更年轻些.你今年有多大了,25岁?" "26岁,"Richard如实回答. "我的妈呀." 没错,软件行业向来崇尚年轻化.如果大家已经拥有了自己的家庭,那么在编程领域已经算是个老年人了.而如果大家已经年过廿五甚至已过而立,那么各位未来的技术之路可能只会一路

网上学习编程的七大趋势

随着互联网技术的不断提高,网上学习已经越来越普及了.无论是目前,还是将来,它都将会成为一种流行的学习模式.谈及编程,在Glasssdoor最近发布的一份调查报告(top 25 lucrative, in-demand jobs)中,介绍了25份高薪工作.而在这些工作中,超过一半的工作岗位要求具有编程技术.世界正在飞速发展,世界各地对IT技术人才的需求正在不断上升.尤其是在美国,除了硅谷,在其它各洲,同样需要大量擅长编程和开发的技术人才.面对这种趋势,如果你也有兴趣成为一名程序员或开发者,那你应该

如何像NASA顶级程序员一样编程 —— 10条重要原则

引言: 你知道 NASA 顶级程序员如何编写关键任务代码么?为了确保代码更清楚.更安全.且更容易理解,NASA 的喷气推进实验室制定了 10 条编码规则. NASA 的开发者是编程界最有挑战性的工作之一.他们编写代码并将开发安全的关键任务应用程序作为其主要关注点. 在这种情形下,遵守一些严格的编码规则是重要的.这些规则覆盖软件开发的多个方面,例如软件应该如何编码.应该使用哪些语言特性等. 尽管很难就一个好的编码标准达成共识,NASA 的喷气推进实验室(JPL)遵守一个编码规则,其名为"十的次方:

高性能网络编程6&amp;#8211;reactor反应堆与定时器管理

作者:陶辉 反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础.定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内.本篇将介绍反应堆模型的特点和用法. 首先我们要谈谈,网络编程界为什么需要反应堆?有了IO复用,有了epoll,我们已经可以使服务器并发几十万连接的同时,维持高TPS了,难道这还不够吗? 我的答案是,技术层面足够了,但在软件工程层面却是不够的. 程序使用IO复用的难点在哪里呢?1个请求虽然由多次IO处理完成,但相比传统的单

分布式编程模型的设计与演化

分布式编程模型的背景 编程模型是指编程的方法而不是特指某一种编程语言,如面向对象的编程就是一种编程模型.编程模型大致分为两类:命令式编程和声明式编程.前者最典型的是面向过程的编程语言,如C语言:后者与前者差异较大,如常见的SQL语言就是一种典型的声明式语言.   上图是命令式和声明式语言统计文件(表)内行数的具体程序,可以看出两者存在明显的差距.在命令式编程中,会有很多细节,需要告诉程序每一步做什么,中间状态怎么维护以及如何得到最终结果:而声明式编程相对更加简洁,更加注重结果而不考虑过程.  

函数式思维和函数式编程

作为一个对Hashell语言[1]彻头彻尾的新手,当第一次看到一个用这种语言编写的快速排序算法的优雅例子时,我立即对这种语言发生了浓厚的兴趣.下面就是这个例子: quicksort :: Ord a => [a] -> [a] quicksort [] = [] quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = filter (< p) xs greater = filte