再见代码库,你好世界编译器
再见代码库,你好世界编译器
原文:https://medium.com/hackernoon/goodbye-codebase-hello-world-compiler-4d0d42179910
有争议的介绍:在一个完美的世界里,所有的软件都将使用领域特定语言(DSL)来表达。
一半的开发者可能会嗤之以鼻。另一半可能做了一个象征性的握拳动作,或者明智的点头。
“那么为什么 不 我们用 DSL 开发所有的软件?”
简而言之,DSL 似乎有一个不幸的(也是不可避免的)缺点:设计、实现和维护 DSL 以及将该语言翻译成可执行代码所需的工具并不容易,也不便宜,特别是因为你做的领域越具体目标市场就越小。
我们似乎面临着一个困境:我们如何(容易且廉价地,记住)从 DSL(人类可以容易地传达的需求)到二进制(机器理解并可以执行的代码)?
这个疯狂的想法怎么样?让我们创造一个语言和编译器 合而为一 的世界,而不是把语言和编译器分开。
“太好了。所以你重新发明了宏。”
不完全是。宏仍然最终要求并“与”编译器对话(即提供指令)。我们建议将传统的编译器完全移除。
一直都是‘宏’,我的朋友。
那么,宏现在与谁/什么“交谈”呢?
彼此。
我们称这些“宏”代理为“T19”,它们共同组成了世界编译器,一个全球分布式系统,接收需求(在任何抽象层次给出)并返回本地代码。这些代理中的每一个都具有特殊的编译时元编程能力,允许它 编译即服务 。

World Compiler
在运行时,成千上万的代理将聚集在一起形成一个 ' hive 编译器 ' (世界编译器中代理的一个特定实例),根据需要跨越许多抽象层,一直到 CPU 指令。
每个代理*通过承包 其他 编译为服务代理,承包 其他 代理,以此类推。契约的每一次迭代都会导致( n +1)级需求到( n )级需求的协作翻译,有效地将编译器进一步扩展。*
当处于最精细抽象尺度的代理(“字节代理”)被收缩时,配置单元编译器就完全形成了。然后,这些字节代理放置一些二进制 CPU 指令,并将它们返回给它们的客户机。这些客户端组合这些字节(通过简单的字符串连接)并将它们返回给它们的客户端,等等。
随着蜂巢逐渐消失,二进制逐渐成形。最终,一长串字节——二进制文件本身——回到根客户机。任务完成。
新词够多了,直截了当地告诉我吧
如果你去浏览这个网络,你可能会发现代理提供的服务听起来类似于图书馆的功能;比如 decode::as-ascii-integer 。然而,当您“收缩”这个decoder::as-ascii-integer时,您并没有导入一些库函数。相反,您将decode::as-ascii-integer代理承包给 design 和 return 一个定制的二进制代码片段,这个片段将与您承包的任何其他代理返回的其他片段无缝互锁。
例如,通过收缩: (1)contribute::program-core (2)read::byte sequence (3)decode::as-ascii-integer和 (4)write::integer …yyou 就确保了这些代理返回的四个编译后的片段在交付时会连接在一起。本质上, you 是那个特定 hive 编译器中的根节点。
谁构建构建软件的代理?
这个世界上的每个代理编译器都是由世界上某个地方的软件开发者 创建和拥有的 。
每个代理每次签约 加入一个新的 hive 编译器都会得到 的报酬。例如,[一个已经构建了decoder::as-ascii-integer代理](https://marketplace.codevalley.com/valley#data::decode::as-asciiinteger::default::x64::pchandle)的开发人员,现在每当另一个开发人员与他们的代理签订合同来交付编译后的代码片段时,他就会收到大约 4 美分。
代理越好(相对于其竞争对手),它将赢得越多的合同,它将加入越多的蜂巢,它将为其所有者收取越多的付款。
“好,太好了。但是谁会想站在另一边呢?谁要 按编译 付费?”
现在,您可能通过研究、审查、然后将现有的库粘合在一起来执行您的日常编程任务。由于财政上的限制,这些库被“连线”以一种适合尽可能多的方式工作;这种方式与您想在项目中使用的其他库并不完全匹配。
但是,世界编译器中的代理人被那种疯狂的观念所激励,即 的收入让你的生活更轻松 。如果存在代理变体的市场,那么这种变体将不可避免地出现,因为每个代理的背后都是一个有进取心的开发者。
作为根客户,您不再需要将宝贵的时间(以及金钱)花费在繁琐的集成工作上,以及寻找将源代码编译成可执行代码的工具上(这些工具有自己的依赖项)。取而代之的是,你付钱给代理来执行(或者完全消除!)那种胶合,那种编译,而付出的代价 比你宝贵时间的代价 要少几个数量级。
暗示有争议的结局:现在源代码 也是它自己的编译器 ,世界编译器变得“抽象可伸缩”它的 hive 编译器可以超越传统的抽象层次——超越 hll 和库——发展到任何一个层次,在这个层次上,你可以很容易地表达你的程序需求。而且不会牺牲运行时性能。
不久的将来,任何最终用户都可以使用这个系统来构建定制的大规模应用程序。他们将简单地从相关应用领域中选择几个特定的代理,用一些容易理解的’语言’满足他们的需求,然后点击构建。不久之后,这些代理将各自返回自己的编译代码片段。任务完成。
你可以带着世界编译器在这里兜一圈。您可以在此请求邀请成为其中一员。



