产业气象站|News热议:封装包那么多,程序员还用学习算法吗?,Hacker

在各种各样的算法实现、软件包开源可用的当下 , 算法对于程序员而言还重要吗?
产业气象站|News热议:封装包那么多,程序员还用学习算法吗?,Hacker
文章图片
如果你是几十年前的程序员 , 那你一定精通于算法 , 并经常需要自己编写算法 。 但在今天 , 算法已经变成了一种「商品」 , 从业者都在使用现成的软件包和购买的算法 。 甚至有人提出这种观点:「机器学习不需要数学 , 很多算法封装好了 , 调个包就行」 。
时代真的变了吗?近日 , 一篇相关主题的文章在HackerNews网站引发讨论 。
产业气象站|News热议:封装包那么多,程序员还用学习算法吗?,Hacker
文章图片
以下是文章的主要内容:
我刚开始做软件开发时 , 开发者必须自己实现大部分用到的算法 。 硬件供应商会提供一些库 , 但是当时整体的开发氛围就是自己编写算法(除了技术性较强且复杂的数学函数) 。
开发者大多都会阅读高德纳(DonaldKnuth)的《计算机程序设计艺术》 , 对于一步一步实现算法 , 这本书是很可靠的阅读资源 。 我还记得看到过一个库的副本 , 是用很小的字母手写了算法的更新 , 并将其粘贴到页面的上一页文本上 。
产业气象站|News热议:封装包那么多,程序员还用学习算法吗?,Hacker
文章图片
那个时候 , 算法非常重要 , 因为计算机的计算速度不够快 , 无法以可接受的速率解决常见问题 。 普通指令的执行时间和指令时间 , 以及给定CPU上可用的寄存器数量 , 是开发者经常讨论的话题 。 内存容量通常是以千字节为单位的 , 每个字节都算在内 。
那是算法的时代 。
随着内存容量从以兆字节为单位变成了以千兆字节为单位 , 开源商业化算法和计算机的存储速度提高了非常多 。
在算法的实现方面 , 现在的开发者拥有大量选择 。 有那么多其他问题需要解决 , 为什么要浪费时间来实现算法呢?
现在 , 算法就像一座桥上的螺栓 , 非常重要但无人问津 。 今天的开发者更愿意讨论故事点、功能、商业逻辑等等 。 给出一个定义明确的问题 , 许多开发者现在更倾向于查找已有的包 , 而不是从头开始编写代码 。
仍然会有新的算法被开发出来 , 研究人员持续对现有算法进行改进 。 但这是相对小众的 。
有些公司的算法不是商品 。 例如谷歌 , 以谷歌的规模 , 即使看似非常小的改进 , 也可以为公司节省数百万美元(这纯粹是因为巨额数字的一小部分也是很多的) 。 而对于有些公司 , 算法开发可能是其核心竞争力的一部分 , 算法的非商品性让这样的公司在竞争中占据优势 , 而在非核心竞争力中算法被看作商品 。
高德纳的《计算机程序设计艺术》在使算法变得普遍可用方面发挥了重要作用 。 尽管这本书经常被引用 , 但是我猜想现在很少有人会读它了 。
几年前 , 我突然发现自己正在看的软件工程书籍竟然没有专门的算法章节 。
今天 , 我们处在软件开发生态系统的时代 。
算法还没有完全走向默默无闻 , 它必须等到人们只需将需求告诉计算机 , 而不需要关心实现细节时(或遗传算法编程发展得更好时) , 才能真正退出历史舞台 。
开发者们怎么看?
「算法还重要吗?」这个问题由来已久 , 早已成为开发者讨论的焦点 , 大家对此的态度也各不相同 。
产业气象站|News热议:封装包那么多,程序员还用学习算法吗?,Hacker
文章图片
即使有一天 , 计算机能够通过语音转代码的形式来编译算法 , 那时程序员的工作可能就是为计算机朗读待实现的算法 。
产业气象站|News热议:封装包那么多,程序员还用学习算法吗?,Hacker
文章图片
如今与80年代相比 , 在绝对数量上 , 有更多的开发人员在从事算法编写工作 , 虽然 , 更高比例的开发人员从不编写任何算法 。 但如果有「算法时代」 , 我认为就是现在 。 今天我们所拥有的算法比以往任何时候都要多 。