夏娃:为人类设计的编程(2016)

2021-06-06 06:41:30

eve是一种编程语言和IDE,基于建立人类第一编程平台的多年研究。从嵌入文档中的代码到没有订单的语言,它会介绍一个编程的替代方案 - 一个专注于我们而不是机器的编程。这是夏娃:

自从编程早期以来,我们颁发了巨大的进步,但现代形式仍然迫使我们进入位移位机器的作用。编程一直是为了我们 - 人类在键盘上攻丝。计算机不在乎我们使用的语法或语义或错误消息是如何删除的。那些适合你和我。这就是我们如何对待自己......

专注于机器并忽略软件工程的人类因素导致我们陷入困境。从不可批评的错误消息到需要多年学习的语义,我们降落在一个节目版本上,这是对我们创建可用和强大的软件的目标是积极对抗的。让事情变得更糟,我们'重新编程好像我们仍然拥有我们的工具的1970年和#39;我们的工具是为此开发的。不出所料,我们正在挣扎。很多。

没有理由我们必须留在沉没的基础之上。如果我们回到第一个原则并首先把人类放回呢?这看起来像什么?

在过去的几年里,我们一直在探索替代的未来可能看起来像,并蒸馏进入我们呼叫夏娃的平台。为了出现品味,让'在夏娃的某人节目的生活中看一下:

第一个区别你' ll注意到程序看起来更像是文档而不是代码文件。 eve是为&#34设计的;汉语编程" - 代替嵌入在代码中的注释,代码嵌入在文档中。

这为我们提供了根据我们实际思考的方式组织我们的程序的自由,而不是如何编译代码。我们可以基于功能,相似性,所有者或我们所思考的其他任何内容进行分组块。

更重要的是,它使我们能够编织叙述不仅仅是程序所做的,而且为什么它为什么。您可以编写一个规范,然后嵌入使其工作的代码块。项目新的有人可以看看目录,以了解' s的发生感,然后挖到一个部分添加一些东西。我们每次修复一个错误时都可以将叙述倒在一起,而不是不断尝试将叙述倒在一起,而是可以首先使其成为编程的文物。

在此上下文中我们想要的环境更加关于叙事创建而不是类层次结构。我们想要一个*阅读*和*编写*环境,让我们有意义地铺设并探索我们的计划。第一步迈出,迈出的内容表提供了概要和方便的导航形式。

但只是因为我们有程序的线性表示,那么' t意味着我们可以像其他方式一样轻松地查看它。我们没有一个标签和复杂的导航功能,我们有一个文档以无论我们需要的形状排列。尽可能地,一切都被放置在上下文中,使叙述保持前沿和中心。

eve基于单一统一原理:一切都是记录 - 与ID关联的一组属性/值对。通过这种均匀性,eve仅需要少数若要查询和操作记录的操作。想发送电子邮件吗?您创建了一份电子邮件记录。想看看发送令人遗憾的消息?您查询Slack数据库中的消息记录。想要制作一个todo应用程序?查询浏览器数据库中的TODOS并创建div记录。

块在夏娃中是反应性的;他们声明了解和#34;当我看到这些模式时,请做这些事情。"您不需要指定它们的更新方式,或者它们如何'重新缓存,或者它们如何存储,或者存储,或者......如果您添加新TODOS,则会自动出现新的div。

只有九次操作让我们从Flappy Bird Clone写一切到Eve' S代码分析仪。

因为字面意思是一切都是一个记录,我们对我们的系统有一个完全透明的视图。让'我们表示我们想知道现在打开了多少HTTP请求。在JavaScript应用程序中,除非我们明确捕获该信息,否则无法知道。在夏娃中,我们只是问:

记忆如何?就像夏娃中的任何东西一样,我们搜索我们想要的,然后使用语言的全部力量对其作出反应。如果此机器上的可用内存低于200MB,请发送'如果此机器上的备用内存低于200MB,请发送一个松弛的消息。

想想这对我们理解程序的能力做了什么 - 我们可以在我们的系统中琐碎和反应。希望看到用户注册的实时可视化?写一个块来做到这一点:

可视化只是故事的一部分,有时我们需要只是挖掘并调查什么'当某事物' t工作时,你按下检查按钮,eve会帮助您弄清楚为什么。

检查员是只能用传统语言完成的东西的例子。它需要了解事物来自哪里以及您的节目如何合适。我们的绝大多数努力调试只是试图弄清楚甚至错误的地方,但夏娃可以让我们对此。甚至更好,它就指导了为什么它朝着侧面地走向。这就像给汽车修理工一样,一个握住巨型红色箭头的设备,说"交流发电机在这里松动!"

鉴于我们花费大部分时间狩猎和修复错误,有这个按钮的含义很清楚:我们' ve有更多的空闲时间。

正如我们所发达的夏娃,我们了解到这些看似简单的选择对旨在程序意味着什么显着影响。让'看看他们中的一些人。

代码ISN' t一个资产,它'责任。每一行都会增加潜在虫子的表面积,也可以理解和维护的堆。只要我们竞争'要滥用意图,我们的目标应该有更少的代码。夏娃计划往往非常小,但更重要的是,单个块仍然是短暂的单一目的。由于识字编程焦点,块也适合叙述,有助于提供上下文。代码以小的可消化件呈现,内置解释和较大图片中的一个地方。这在维护,导航和协作中的影响可以' t被夸大。

记录的公共接口意味着eve块默认构成,因为没有固有的排序,我们&#39没有固有的顺序;我们想要组织它们。 EVE计划在有机上增长,而不是不断重新架构要处理更改,或建立复杂的基础设施来处理变更,而是构建复杂的基础设施,而且eve程序种植。功能,修复,甚至可视化都可以在不改变现有代码的情况下添加,并且缺乏订单允许我们将它们放在任何最有意义的地方。

在我们的代码中而不是在整个代码中传播NULL检查和断言,因此可以通过产生错误记录来全局强制强制执行不变性。通过普通EVE块执行此操作为我们提供了语言的全部功率,以表达任意复杂的不变性。

限制可以通过块组合物全局表示的事实具有几个有趣的含义。首先是正确的正确性。我们不必在我们真正了解我们&#39之前铺设一堆类型或模式;重新尝试建立。我们可以在不变的方面上工作,因为它似乎是合适的。

其次是,这些完整性约束绝不会允许我们的记录进入坏州。因此,它的安全性与我们安全地思考我们'重新努力。无需检查不变性的每一行或担心添加代码,为每个人提供十个工资。我们有全球执法的当地推理。

最好的部分是与其他一切一样,错误是记录。错误处理只是另一个街区。

"放大和增强"是科幻小说的普通轨迹,但是如何防止我们实际拥有它?在图像的情况下,我们真的缺少数据,但是有软件在那里'我们刚刚扔掉的令人难以置信的信息。如果我们没有什么' t?

我们现在所拥有的最接近的东西是浏览器中的Web检查员,但它仍然缺少大量信息。 eve捕获它可以的一切,这允许我们以非常有用的方式连接点。

我们的系统应该通过我们在他们跳起来时理解它们的能力来衡量。为什么可以'我们问"计算机,为什么这种故障?"就像他们在星际跋涉一样?

检查员就像在美国24/7旁边有另一个程序员。当我们陷入困境时,我们击中了一个按钮,夏娃在寻找和修复任何' s错误 - "计算机,为什么这么慢?"

我们可以编程的最大变化之一是让自己赋予问题的能力。不仅仅是为什么这个工作,或者为什么这么慢,但是用户点击这个按钮的平均次数或者我们本周支付多少人? eve'整个模型是基于允许我们提出我们提出的任何问题。它从&#34解放我们;未定义的undefined"让我们在我们的系统内部深入了解美国的同伴。

不幸的是,简单的解决方案比复杂的解决方案更难以找到。它需要刻意并质疑我们作为固有的真理的许多事情。最后,Eve的设计源于完全关注简单性。而不是Eclipse,让'在更像笔和纸上做我们的工作。而不是复杂的语义,让' s让一切都是一个记录。而不是成千上万的调试器选项,让' s有一个魔法工具,你点击' s出错的东西。夏娃是关于让人们解决问题的事情更简单:我们。

从我们认为eve如何将编程的铃声曲线转移到我们如何快速使这种疯狂的语言更快地转换到我们的钟声曲线。然而,这只是我们路线图上的三个里程碑中的第一个:

第一步是建立一个简单,以人为本的编程形式。我们'在这里显示的是什么' t只是一个演示,它' s一个真实的,虽然早期,软件。你可以在这里玩它。

下一步是展示eve如何让我们摆脱1970年的计算机的概念,并拥抱分布式世界。一路上,也许我们可以得到摩尔和#39;法律背面的东西,没有强迫人们了解paxos。

最后一步是展示所有这一切如何为更强大的最终用户计算版本奠定了基础。虽然不是每个人都想写*软件*,但我们都有一些事情要完成,并且电脑可以帮助我们做到这一点。

通过我们的所有研究,我们开始将未来扮演的未来追求 - 从人道工具和机器的不同概念,让每个人都在星球上超级大国。在那里'无论你是否相信夏娃,它都是,它'我们达到我们所有人的现实。未能这样做,也不只是把行业拿回。它拖累所有等待被更好的计算所驱动的人类努力。计算机可以说是有史以来最强大的工具。 '我们真正挥杆的时候了。

我们可以展示的兴趣越多,我们将继续执行这项工作,更容易。帮助的最佳方式是传播这个词并与我们携带。不幸的是,我们现在荣获招聘,但我们希望在不太遥远的未来改变这一点。

在我们下面'在接下来的几周内完成了一些后续页面,我们' ll增加一组深潜水。如果您'重新对夏娃的兴趣,研究它' s的研究或一些更深层次的含义,检查它们: