日更128天 - (翻译) 编程是否需要数学(下)

我不擅长数学,所以我尝试用我的直觉、常识、流程图,更多其他类型的图表来解决我作为一个程序员每天面临的问题。这种情况持续了几年,我总结出了一些规则和想法,并在此基础上建立了一个解决问题的模型。建立这个模型的目的只有一个:非常清楚、非常简要地说明问题是什么,解决方案又是什么。我创建了一个模型,将把问题作为输入,输出是包含英语、流程图和许多其他类型图表的解决方案。这个模型有一定的假设、规则和条件,这些都是非常清楚的。清晰性和简单性是重点。这是一种通用的、抽象机制,可以应用于各种问题的解决方案。几个月前,在我读完所有前面提到的所有数学文章后,我又看到了 Evan Miller的一篇文章,题目是《Don’t Kill Math 》,这篇文章实际上是为了回应Bret Victor的《Kill Math》。

这两篇文章对我冲击很大。首先,Bret Victor试图做我几年来一直在尝试的事情,当然他比我更成功。我从来没有搭建出可以被所有人使用的稳定模型,而Bret已经做到了。我很高兴,因为我找到了我一直想要的,社准备跟随Bret的脚步,但我最终并没有这样做。为什么?

有一个原因,我永远无法搞出一个稳定的模型。我总是认为它缺乏一些东西。不管我做了什么,做了多少工作,我总觉得缺少一些非常基本的东西。每当我研究薛定谔方程、麦克斯韦方程、牛顿定律、开普勒定律、不确定性原理或Shulba-Sutras时,我总是觉得所有这些方程都是完整的,但我的模型却不是。《Kill Math》和《Dont' Kill Math》这两篇文章让我意识到什么是完备性。它就是《Dont' Kill Math》中提到的数学特性。Evan在这篇文章中提出的问题,以及他用非常简单和基本的细节进行解释的方式,为我寻找一个稳定模型的过程画上了句号。数学是一种简明扼要的方法,用来解决问题和理解各种现象。这些直接清楚的特点是数学所固有的,就像灵魂是每个生命所固有的一样。有了数学,你可以用更短、更好的方式来解决问题,而非其他方法了。

这让我想到一个非常基本的问题。为什么我讨厌数学?这是因为在学校和大学里教我数学的方式。我被教导的是死记硬背的数学,而不是真正的数学。这是学校的错,是我们教育系统的错,不是学生的错。回到我们是否需要数学来成为一个伟大的程序员这个主要问题上,这就是世界最初是如何解决问题的:



然后出现了数学,这就是大多数数学家所做的事情:



而这也是几乎所有的计算机程序员/软件工程师/开发人员所做的:

Evan Miller说,你可以不用太多的数学知识就能成为一流的黑客,我认为他是对的,这个观点与所有其他作者也是一致的。他强调的一点是数学在解决这个世界的问题中的作用,数学在解决现实世界的问题中是非常有效的。作为程序员,我们要解决问题,但如果我们用数学来解决问题,然后将编程方案应用到解决方案的数学模型中,那么我们就可以有一些巧妙漂亮的方法来提供更好的解决方案,这将使我们作为程序员的生活更轻松(作为一个彩头)


最后总结下:

  • 你不需要数学来也能成为一个一流的程序员,因为我们并不用直接使用很多数学知识。如果你想成为程序员,那就学习编程。计算机编程与数学有很大的不同,作为一个计算机程序员,你必须更多地关注如何写出更好的程序,如何在一个特定的范式(如函数式、OO式、通用式、程序式、逻辑式、声明式等)中思考,找到更好的方法来创建软件,你需要了解设计模式,更不用说学习和使用各种语言几年后会给你的思维增加新的维度。所有这些都与数学没有任何关系。你需要先学习这些,你需要花几年的时间才能掌握它们,然后如果你想学数学,你就可以学。阅读Roberrt J. Chassell写的《使用Emacs Lisp编程入门》,了解如何解决创建一个可定制的、自我记录的、不断扩展的实时显示文本编辑器的问题。阅读GNU Make手册,了解它为什么需要M4和Autoconf。
  • 数学是理解这个世界的本质和解决问题的最广泛使用的载体。通过学习数学方法,我们可以学到更多解决问题的方法。我自己已经开始学习概率,因为就像Steve Yegge说的那样,一旦你理解了数学,那么你就可以看看这个问题,看看它是一个概率问题、微积分问题还是统计问题等等。数学与问题的本质有关,而不是软件的本质,软件有自己解决问题的方法和工具,记住这一点。

简单一句话:两个层面问题,做程序员不会数学完全是可以的; 学了数学能提高解决问题的能力,这不仅仅是局限写程序的范畴了。


日更127天 - (翻译) 编程是否需要数学 (上)
日更126天 - 知识付费是士力架还是人参果
日更125天 - 整理下自己的手机,别让它碎片化了我们的生活
日更124天 - 打造自己小环境
日更123天 - 杠杆
日更122天 - 收入的四个象限
日更121天 - 时光穿梭,回顾和展望
前日更120天索引

你可能感兴趣的:(日更128天 - (翻译) 编程是否需要数学(下))