亲液程序设计


15

我最近遇到了Jaron Lanier提出的一个名为“现象学编程”的想法。

这个想法是在计算机程序中使用“表面”接口而不是单点接口,利用统计信息来找出较小的错误,这些错误通常会导致“经典”程序崩溃。

两行描述在这里:

根据Jaron的说法,“当前软件思想(协议遵循性)与(他正在讨论的)思想(模式识别)之间的真正区别与我们正在创建的错误类型有关”,如果“我们不知道, “找不到思考和创建软件的不同方法,无论我们的处理器有多快,我们都不会写出超过一千万行代码的程序。”

稍长的解释在这里。甚至更长的解释在这里

因此,这个问题回过头来,人们往往会挑出明显的机器人主导的涵义,那么人们将如何实际设计和编写“交互程序”呢?


1
没有冒犯,但您链接的文章非常模糊且幼稚。您能更精确地了解您的理解phenotropic program吗?
西蒙·贝格

通读更长的篇幅。详细描述了它。
2014年

4
我认为回答这个问题的唯一方法是定义什么是“交互程序”。在这种情况下,答案将成为基于意见的。因此,在询问如何编写“ phenotropic程序”之前,请先询问什么是“ phenotropic程序”。
欣快2014年

1
@Simon:这个问题基本上是在问同样的事情,所以我不知道您的请求是否可以由OP亲自回答这个问题来解决。
罗伯特·哈维2014年

1
相关主题(请考虑本文的作者):mail-archive.com/fonc@vpri.org/msg03808.html
Thiago Silva

Answers:


23

拉尼尔(Lanier)发明了一个50美分的单词,目的是在一组特定的想法周围投射网,这些想法描述了用于创建具有某些可识别特征的计算机程序的计算模型。

这个词的意思是:

一种组件交互机制,该机制使用模式识别或人工认知代替功能调用或消息传递。

这个想法主要来自生物学。您的眼睛不是通过像的功能See(byte[] coneData)而是通过称为视网膜的表面与世界交互的。这不是微不足道的区别。计算机必须coneData一一扫描所有字节,而您的大脑会同时处理所有这些输入。

在此处输入图片说明

Lanier声称,后者的接口具有更高的容错能力(单个接口coneData可能会破坏整个系统)。他声称,它可以实现模式匹配以及许多其他通常对于计算机来说是困难的功能。

计算机系统中最典型的“变质”机制将是人工神经网络(ANN)。它以“表面”作为输入,而不是定义的接口。还有其他一些技术可以实现某种模式识别的方法,但是神经网络是与生物学关系最为紧密的一种。制作人工神经网络很容易;使其执行可靠地执行的任务很困难,原因有很多:

  1. 输入和输出“表面”是什么样的?它们是稳定的,还是随时间变化的大小?
  2. 您如何正确设置网络结构?
  3. 您如何训练网络?
  4. 您如何获得足够的性能特征?

如果您愿意放弃生物学,则可以省去生物学模型(尝试模拟实际生物学神经元的运行),并建立一个与数字计算机系统的实际“神经元”紧密联系的网络。盖茨)。这些网络称为自适应逻辑网络(ALN)。它们的工作方式是创建一系列近似曲线的线性函数。该过程如下所示:

在此处输入图片说明

...,其中X轴表示ALN的某些输入,而Y轴表示某些输出。现在想象线性函数的数量根据需要扩展以提高精度,并想象该过程在n个任意维上发生,完全由AND和OR逻辑门实现,并且您对ALN的外观有所了解。

ALN具有某些非常有趣的特征:

  1. 它们相当容易训练,
  2. 它们非常可预测,即输入的微小变化不会在输出中产生剧烈的波动,
  3. 它们快如闪电,因为它们以逻辑树的形式构建,并且运行起来非常类似于二进制搜索。
  4. 通过培训,他们的内部架构自然发展

因此,变态程序看起来像这样;它具有输入的“表面”,可预测的体系结构和行为,并且可以容忍嘈杂的输入。

进一步阅读Alan Kay撰写的“
自适应逻辑网络简介及其在审计风险评估中的应用
”,面向对象”与“面向消息”


1
如果我错了,请纠正我,但是“表面”输入听起来像是一个独立的(或大多是独立的)组件的集合。在眼睛的例子中,它可能看起来像这样See(List<Cone> cones)(其中每个彼此Cone独立),是吗?
FrustratedWithFormsDesigner 2014年

1
@Frustrated您显然可以用字节数组模拟表面,但是可以回到Lanier的定义,该定义将消息传递和函数调用替换为认知和模式识别。它与此处描述的可伸缩性问题有关。容错性也是方程式的一部分。考虑“更智能的界面”。
罗伯特·哈维

3
回复:“更多的容错能力”。拉尼尔有没有见过错觉?他是否曾经研究过大脑的心理学。大脑总是会试图根据输入的内容来弄清楚它的含义,而不必担心这些结论。大脑的工作方式极为错误。因此,只要程序是否像通常的人一样经常出现故障无关紧要,那么我认为所引用的模型就可以了。但是,大多数时候人们希望计算机是正确的。出售大多数时间避免事故的计算机驱动汽车将很难。
Dunk 2014年

2
@Dunk:...但是为人类驾驶员制造和销售汽车仍然是合法的,因为大多数时间设法避免发生事故。
布朗

2
@Dunk的重点不是存在错误-否则我们将采用经典的数学路线来证明一切。关键是1:失败影响的范围(如果我将兔子误认为是大猩猩,宇宙不会崩溃-实际上,在那之后我仍然是人类,我的大脑也是如此),2 :房间中的物理/生物实体必须恢复,提供反馈并探查“使事情进展下去的方法,即使不是最理想的方式”;和3:这些特征正迫使我们在人造系统中使用它们的想法
Thiago Silva,2014年

1

我认为我们正处在迈向这一目标的第一步之初,即以可以分析的格式收集大量数据。互联网,谷歌搜索,Fitbit(您迈出的每一步,每走一步,我都会看着你。),FourSquare,智能手机地理位置,Facebook帖子和问题数据都已被收集。我们距离普通人在一生中收集的感觉数据量还差得远,但我们正在接近。

开始对数百万种鸟类的图片进行分类,并从人们那里得到反馈,告诉您这不是鸟类,您可以开始创建算法。从那里可以创建一个模糊的印象(我将其称为模型,但这对于我们尝试编写的代码来说太精确了。)

class Birdish

宠物狗如何对主人如此了解?因为它看着她很多。狗听了汽车驶入车道的声音,并将其与所有者打开前门联系起来,从狗的角度看来,狗可以通过声音识别汽车。我们也可以这样做,但我们认为没有理由参加。这就是当前软件的问题所在,它没有关注用户的操作。它只是在等待用户执行IT期望用户执行的操作。

只需对我当前的习惯进行一点观察/分析,就可以简单地设置闹钟。在技​​术被数字技术取代之前,我们放弃设置VCR计时器。如果我们可以将电视指南与VCR连接起来,那会发生得这么快吗?我已经连续四个星期观看同一电视节目,但是第五次我什至没有打开电视。显然我要记录下来。您难道不知道我写这篇文章要熬夜吗,我通常的上下班时间不能及时到家吗?您已经有了数据,进行数学计算。

收集越来越多的数据,然后您可以提出更好的方法来分析,识别和隐秘数据。我们已经超越了电话摄像头和即将推出的眼镜眼镜摄像头只能通过键盘输入的范围。这仅仅是个开始。



-1

我最近有一个想法:

如果您使用了诸如Haskell的Maybe Monad之类的高级想法来将远程过程调用包装到其他系统。您将请求发送到服务器。但是什么也没回来(服务器坏了)。或者Promise回来了(服务器正忙),并且您的程序继续使用这些None或Promised值工作。这有点像Lanier正在寻找的容错能力。

也许有封装其他可能的方法。例如,通过某种后台协商,随着时间的流逝,远程呼叫的近似值会逐渐提高。即。回来的事情就像是一个Promise,而不仅仅是“继续坚持并继续工作,不久就会出现一个适当的值”,而是“继续坚持并继续工作,不久就会出现一个更好的近似值”。(一遍又一遍)。就像网络协议向编程人员隐藏了许多低级网络故障一样,这将能够向编程人员隐藏许多故障。


这如何回答所提问题?
蚊蚋

如果我理解正确的话,各向异性编程是一种对大型(通常是多计算机)健壮的系统进行编程的方法。问题是,所有生物学上的隐喻使它变得模糊且难以翻译成实用的编程术语。在这里,我建议某些不模糊的编程结构(例如Monads,Promises等)可能是使Lanier具体而实用的一些想法成为可能的方法。)
interstar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.