软件重用更像是器官移植,而不是折断乐高积木

2020-06-25 02:19:55

几十年来,人们一直将软件组件比作乐高积木。我们应该能够通过将模块化组件组合在一起来组装应用程序,就像乐高一样。已经取得了进展,但在很大程度上,我们还没有实现乐高风格的软件开发的承诺。

集成两个软件系统通常更像是进行心脏移植,而不是将乐高积木拼接在一起。这是可以做到的-如果有足够接近的匹配,而且做这件事的人有足够的技能-但这些片段不会简单地拼凑在一起。失败可能不会立即显现,可能需要一段时间才能看到被拒绝的迹象。

呵呵,…。就在昨天,我还在想一种普遍存在的观点,即DNA类似于生物体的代码或软件。

但我从来没有遇到过两个软件或代码,它们可以以某种方式结合在一起,以复制出可存活的后代。见鬼,在同一个软件中几乎是不可能的-要将开发分支合并到主干上需要非常仔细的努力,而不会出现编译器错误,更不用说可以工作的构建了:-)。

我想DNA更像是一个配置文件。这让我想知道-如果它是一个配置文件,那么“可执行文件”在哪里或者什么是“可执行文件”?

但我从来没有遇到过两个软件或代码,它们可以以某种方式结合在一起,以复制出可存活的后代。

嗯,还有遗传编程(PDF)。不过,可能不是您想要的:-)。

我过去曾沉思过,乐高风格的软件编写方式肯定不错,但遗憾的是,这与现实相去甚远。但是,如果IR以这种方式工作,就可以建造各种很酷的东西。

也许吧,但是像Git forking这样的功能促进了代码重用,消息传递/排队允许松散耦合的功能,像Jenkins这样的程序允许软件工厂从开发到部署,包括基础架构构建。

因此,乐高并不是很合适,因为它紧密耦合在一起,可能无论如何都不会有太大帮助,但以几年前没有想到的方式进行合成。

我喜欢这个比喻。人们经常假设集成的技术可能并不适合彼此。需要仔细考虑以确定重用是否真的会加快开发工作并解决预期的问题。

你认为这个比喻是否最好地描述了20世纪90年代末的屏幕抓取技术?

但是,我们现在设计、设计和构建我们的软件时,都明确考虑到了这一目的的层和接口。(十年来一直如此。)。

完全同意,即使所有代码都站在可重用代码之上,所以更公平的类比应该是俄罗斯方块而不是乐高…。

这就好像软件有一个免疫系统一样!我得到了软件组件的承诺,比如集成电路,这是一个更接近的类比,但很长一段时间(20世纪80年代)从未实现。软件库是最接近但还没有达到乐高比喻所暗示的可重用性的东西。

顺便说一句,自从这篇文章提到它以来,我已经用遗传编程(GP)系统做了相当多的研究,虽然我很喜欢构建某些结构,如无参数的统计模型,但很长时间没有像程序员那样编写代码,更不用说可重用的代码,尽管有自动定义的函数。

我和我的同事有几十年的咨询经验,帮助公司解决涉及数据隐私、数学、统计和计算的复杂问题。

让我们谈谈吧。我们也期待着探索机会来帮助贵公司。