把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

Linux 之父:编程之美

  • 2021-05-07
  • 本文字数:2158 字

    阅读完需:约 7 分钟

Linux之父:编程之美

我不知道该如何清楚地描述我对编程的痴迷。对编程的人来说,这是世界上最有趣的事情。这是一个比国际象棋更复杂的游戏,在这个游戏中,你可以制定自己的规则,并基于这些规则得到最终的结果。


然而,从表面上看,它似乎是地球上最无聊的东西。


编程最初令人感到兴奋的地方在于,当你告诉计算机要做什么,它就会按照你的意思去做,分毫不差,马不停蹄,毫无怨言。


这本身就很有趣。


但是,尽管最初令人着迷,单靠盲目顺从显然并不能让编程成为讨人喜欢的伴侣。让编程变得如此吸引人的是:你可以让计算机按照你的意思执行任务,但你必须先弄清楚如何执行。


我个人认为,计算机科学与物理学有很多共同之处。两者都是关于世界是如何在一个基本层面上运作。当然,它们的不同之处在于,在物理学里,你要弄清楚世界是如何构成的,而在计算机科学里,你要创造世界。在计算机世界里,你是创造者,你最终将控制发生的一切。如果足够优秀,你可以成为某个领域的上帝。


我这么说可能冒犯了地球上大约一半的人。


但真的是这样。你要创造自己的世界,唯一能限制你的是机器的能力和你自己的能力


想象一下你要建造一个实用的树屋,它有一个活板门,而且很稳固。但是,每个人都知道简单稳固的树屋和漂亮树屋之间的区别是什么。它是艺术和工程的结合。这就是为什么编程可以如此迷人的一个原因。与有趣、漂亮和令人惊艳相比,功能就变得次要了。


这是一种创造性的活动。


最初吸引我接触编程的是我想要弄清楚计算机的工作原理,其中最大的一个乐趣是知道了计算机就像数学一样:你可以用自己的规则来构建自己的世界。在物理学里,你会受到已有规则的约束。但在数学和编程领域,不管是什么,只要它是自洽(self-consistent)的就行。数学不必受任何外部逻辑的约束,只要它本身具有逻辑性。数学家们都知道,你可以定义一组数学方程式,让 3 加 3 等于 2。你可以做任何你想做的事,只是在不断增加复杂性的同时,要小心不要创造出与你所创造的世界不协调的东西。一个美丽的世界,不能包含任何瑕疵,而编程就是这样的。


人们之所以如此迷恋计算机,其中一个原因是计算机能让你体验你所创造的世界,并了解一切可能的东西。在数学里,你需要通过大脑进行想象。例如,当大多数人想到几何时,他们想到的是欧几里得几何。但是,计算机可以帮助人们可视化不同的几何图形,甚至是那些非欧几里得图形。有了计算机,你就可以看到这些虚构的世界是什么样子的。还记得曼德尔布罗特集合的分形几何图形吗?这些都是纯粹数学世界的视觉表现,在计算机出现之前是无法被可视化的。曼德尔布罗特只是制定了这些关于一个不存在的世界的规则,这些规则与现实毫无关联,但事实证明,它们创造了迷人的图案。有了计算机和编程,你就可以创造新世界。有时候,这些图案真的很漂亮。




曼德尔布罗特集合


大多数时候你并不是在创造世界,你只是通过写程序来完成某个特定的任务。这个时候,你不是在创造新世界,而是在解决计算机世界里的某个问题。你通过思考来解决问题。只有某一种类型的人能坐在那里盯着电脑屏幕思考问题,比如像我这样的书呆子。


操作系统是计算机的基础,而开发操作系统是一个终极挑战。开发操作系统就是在创造一个世界,所有的程序都在这个世界里运行,规则由你来制定,比如什么是可接受的、什么可以做、什么不能做。每个程序都遵循这些规则,而操作系统是基础。操作系统就像是你所创造的世界的宪法,其他程序则是普通法律。


有时候,法律本身没有意义,意义本身才是你要追求的东西。你希望用正确的方法得到正确的答案。


还记得学校里总能得到正确答案的那个人吗?那个人之所以比其他人更快得到答案,是因为他(她)并没有尝试去得到答案。那个人不知道该如何解决这个问题,但他(她)会用正确的方式思考问题。


计算机也是如此。你可以用蛮力或愚蠢的方式尝试寻找答案,或者你找到了正确的方法,问题就迎刃而解了。如果从另一个角度看问题,你就会顿悟:问题之所以是问题,是因为你看问题的方式不对。


也许,这方面最好的例子不是来自计算机界,而是来自数学界。有这样一个故事:伟大的德国数学家卡尔·弗里德里希·高在学校的时候,他的老师讲课索然无味,为了让学生们全神贯注,他要学生们把 1 到 100 之间所有的数字加起来。老师希望这些年轻人花一整天时间来算出这些数字的和。但是五分钟之后,这位崭露头角的数学家就给出了正确答案:5050。他的解决办法不是把所有数字加起来,因为那样做太愚蠢了。他发现 1 加 100 等于 101,2 加 99 等于 101,3 加 98 等于 101,最后是 50 和 51 等于 101。很快,他得出总共是 50 个 101,所以答案是 5050。


也许这个故事是虚构的,但其寓意很明显:一个伟大的数学家不会用漫长而无聊的方法来解决问题,因为他会看到隐藏在问题背后的模式,然后应用这些模式找到答案。在计算机科学领域也是如此。当然,你也可以编写一个程序来计算数字的和。要在现在的计算机上完成这个任务是件非常容易的事。但是,一个伟大的程序员,只要他想一想就知道答案是什么。他也知道如何写出一个漂亮的程序,用一种新的并且是正确的方法来解决问题。


当你不知道该如何以更好、更漂亮的方式解决问题,冥思苦想了三天三夜。我们很难解释为什么这个过程会让人着迷,但一旦你找到了正确的方法,那种感觉将是无与伦比的。


原文链接:


https://www.brynmawr.edu/cs/resources/beauty-of-programming?fileGuid=kxiSzjaRxbcskaHI

2021-05-07 16:5312440
用户头像

发布了 114 篇内容, 共 52.5 次阅读, 收获喜欢 315 次。

关注

评论 10 条评论

发布
用户头像
不过对比原文,翻译还补充了“曼德尔布罗特集合”图,态度还是有的。
2021-05-17 10:41
回复
但是这个“曼德尔布罗特集合”还是翻译不准确
2021-05-20 08:14
回复
用户头像
虽然 Linus Torvalds 你是我心中的神,但是这篇文章对于阅读者来说没有什么帮助,至少我是这样觉得的。感觉但凡是有点本事的大神,都喜欢聊些虚无缥缈的内容,也许这就是高处不胜寒吧。
2021-05-10 16:09
回复
你觉得没用其实只是你没到那个高度罢了,Linus很明确的说出了计算机的本质是什么。技术这个东西一旦上升到一定的程度一定会哲学化,你会去探寻本质的东西
2021-05-22 11:43
回复
扯淡吧,牛顿后半生研究神学去了,神存在吗?走火入魔了吧我怕
2021-05-26 09:04
回复
别装B了,自己都不知道自己在说什么吧?
2021-06-30 15:54
回复
用户头像
该评论已删除
2021-05-10 14:04
回复
自洽才是合适的,大部分人一看就理解这是指逻辑上能互相印证,没有矛盾。“一致性”是什么玩意,百度,google的翻译都是“自洽”,deepl是“自相吻合”,都是和自洽一个意思。只有一个台湾那边的文档管这个叫“自相一致性”。
2021-05-22 11:50
回复
用户头像
翻译得不怎么样,其中“卡尔・弗里德里希・高”译为“高斯”就可以了,他这则故事家户喻晓,“高斯”这个名字人人都知道,却硬要翻译成“卡尔・弗里德里希・高”(况且这个译名还没有复制全,全名是:约翰・卡尔 · 弗里德里希 · 高斯)
2021-05-10 13:37
回复
深有同感。
2021-05-11 16:54
回复
是的,高斯才是通用的名字,就算大学高数没学好,也能知道这个名字会让你挂科
2021-05-17 11:55
回复
没有更多了
发现更多内容

如何使用CSS Grid 居中 div

南城FE

CSS 前端 布局

人脸识别技术的历史发展及未来趋势

数据堂

当金融风控遇上人工智能,众安金融的实时特征平台实践

NebulaGraph

人工智能 风险控制 金融风控

2023-06-28:你想要用小写字母组成一个目标字符串 target。 开始的时候,序列由 target.length 个 ‘?‘ 记号组成 而你有一个小写字母印章 stamp。 在每个回合,你可

福大大架构师每日一题

Go rust 算法、 福大大架构师每日一题

亚马逊实践 | 构建可持续发展的架构模型

亚马逊云科技 (Amazon Web Services)

DevOps

亚马逊云科技中国峰会探访笔记 | 周边收集达人

IT蜗壳-Tango

为什么不应该给用户提示错误码

光毅

前端‘’

基于STM32设计的炉温温度检测仪

DS小龙哥

6 月 优质更文活动

“多云“和”私有化“,企业级刚需推动 DataBricks 和 MosaicML的13亿美金 AI 交易

B Impact

共识算法揭秘:理解分布式系统的关键

Steven

C++实现工资管理中的随机教师信息生成功能

芯动大师

一文详解:大数据分析工具有哪些?

夜雨微澜

语音合成技术与语音合成数据:赋予声音新的可能性

数据堂

微服务架构:探索微服务架构的核心概念

2756

#微服务

【开发者福利】教你3步薅到免费GPU算力!

阿里云大数据AI技术

人工智能

【AI 充电】KServe + Fluid 加速大模型推理

阿里巴巴云原生

阿里云 Kubernetes 云原生

人脸识别技术的优缺点及实际应用

数据堂

数据湖系列之三 | 打造高性能云原生数据湖,层级 namespace 对象存储加速大数据计算

Baidu AICLOUD

数据湖 对象存储 层级namespace

代码随想录训练营Day01- 数组(上)

jjn0703

算法 LeetCode 力扣

方言语音识别技术:赋予方言更大的声音

数据堂

Health Kit 新版本功能解析,给你丰富运动体验!

HarmonyOS SDK

HMS Core

强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 ppo算法

清微智能TX5368A与飞桨完成Ⅱ级兼容性测试,助力全行业智能化升级

飞桨PaddlePaddle

人工智能 百度 paddle

介绍 9 个研发质量度量指标

LigaAI

质量指标 研发效能度量 MTTR 研发效能管理 企业号 6 月 PK 榜

广州|阿里云 Serverless 技术实战营邀你来玩!

Serverless Devs

云计算 Serverless 托管服务

Linux之父:编程之美_语言 & 开发_Linus Torvalds_InfoQ精选文章