算法现在是商品

2020-07-07 18:14:52

当我第一次开始编写软件时,开发人员必须实现他们使用的大多数算法;是的,硬件供应商提供了库,但文化是自力更生的(除了数学函数,它们是技术性的和复杂的)。

开发人员阅读唐纳德·努斯的“计算机编程的艺术”,它是逐步算法的可靠来源。我清楚地记得看到过一卷书的图书馆副本,里面有人用非常小的字母仔细地手写了一种算法的更新,并将其粘在页面上,覆盖了之前的文本。

算法很重要,因为计算机还不够快,不能以可接受的速度解决常见问题;开发人员知道执行通用指令和指令定时所花费的时间是开发人员之间社交闲聊的话题(以及给定CPU上可用的寄存器数量)。内存容量通常以千字节为单位测量,每个字节都被计算在内。

开放源码的商品化算法,计算机使用以兆字节为单位的内存,然后是以千兆字节为单位的内存,速度要快得多。

当谈到算法实现时,开发人员现在有很多选择;当有许多其他问题等待实现时,为什么还要浪费时间实现“低”级别的东西呢?

算法现在就像桥上的螺栓:非常重要,但没有人谈论它们。今天,开发人员谈论故事点、功能、业务逻辑等。给定一个定义明确的问题,许多人现在可能会搜索现有的包,而不是从头开始编写代码(我当然是这样工作的)。

新的算法仍在发明中,研究人员继续寻找对现有算法的改进。这是一项利基活动。

有些公司的算法不是商品。谷歌的运营规模在其他人看来是微小的改进,可以为公司节省数百万美元(纯粹是因为巨大金额中的一小部分可能是很大的)。一些公司的核心能力可能包括算法部分(其非商品性质使公司在竞争中具有优势),而非核心能力将算法视为一种商品。

Knuth的“计算机编程的艺术”(The Art Of Computer Programming)在使可行的算法变得普遍可用方面发挥了重要作用;虽然这些卷经常被引用,但我怀疑它们很少被阅读(我已经多年没有从书架上拿出三卷书中的任何一卷去读了)。

几年前,我突然意识到,我正在写一本关于软件工程的书,这本书不仅没有算法一章,而且算法这个词的103个用法都将其称为一个概念。

算法还没有完成他们的默默无闻之旅,这必须等到人们可以告诉计算机他们想要什么,而不是关心实现细节(或者遗传算法编程变得更好)。