鉴于新的Apple产品的发布,我决定告诉您有关VR编码领域的一个小型研究项目。我希望这篇文章能激发读者发展该领域!
什么开始了?
挖掘了长时间的8K行遗产代码,我逐渐开始发疯。当突然想到我构建通话图时。瞧,一切突然变得清晰!这是一个突破,其他团队多次使用了这一结果。然后我发现自己反思。我们经常谈论编写文档的重要性,有时我们会编写它,但是通常很快就会过时。通常这些是依赖图或序列图,这有助于理解复杂的过程。我认为如果可以根据代码构建这些图表,那将是很棒的。这就是我对创建一种名为Gravis的视觉编程语言感到兴奋的方式。
主要想法
重点是提出一种编程语言,该语言将使您能够使用VR在三维空间中舒适地创建程序。它将允许您实时观察应用程序的工作原理。我的意思是...在这里和那里发送消息并生成元代码。此外,该语言将使您能够很好地说明算法。不仅程序员将能够享受代码的美丽。这样的代码可以是主题设计的。吸引程序员很可能会很昂贵。这将使开发变得更加明亮,并有可能制作出色的代码演示文稿。试想一下,您的工作发生在星球大战宇宙中!这不仅是美丽的,而且还允许您通过制作具有不同对象和模因的模块来使用空间内存。
例子
已经有一种成功的视觉语言 - 虚幻引擎中的蓝图。但是和他一起工作并不容易。那里仍然有文件,它们之间的相互作用是不透明的。还有一些与图形分开生存的变量,这也使您无法快速理解代码。要创建块,您仍然必须写很多文本。此情况不适合VR。
发展
有必要选择一个计算模型。我想要一些简单的东西。该代码包括注释和它们之间的连接。每个连接都会传输控制和数据。就是这样!
我对Python的爱是无尽的!因此,我开始在上面写一个口译员。实施的基本原语 - 数字,算术,分支,递归。和一个探查器。
计算第四个fibonacci编号的示例(文章标题中介绍的代码)
括号中的数字是操作编号,以下是传输数据。箭头传输控制和数据。虚线箭头转移控制以搜索计算丢失数据的起点。节点:I-输入,O-输出,菱形 - 条件或算术,圆圈 - 数字常数,子空间 - 递归调用。
要描述程序,我以DOT语言为基础。现在有必要可视化它。选择落在团结上。由于该项目是开源的,因此它似乎会吸引更多的支持者。我设法绘制了图。
3D em> p>中的纤维
我很快意识到,我对团结的了解还不足以进一步切割一些东西。该过程被冻结了几年。然后我决定聘请开发人员。他们增加了很多。一个成熟的编辑器,现在您可以创建节点和链接。仍然可以实现最后的预释放功能 - 将节点分组到子空间中。这将允许递归工作。但事实证明这是一项不可能的任务。所以我在这里折叠了爪子。 Github project,突然有人会兴趣挖掘它。
困难