第四个实现,可以与金字塔一起传递程序作为URL
fourlth的Python项目详细描述
fourlth表示forth中的url。forth是第三代编程语言 1970年代早期由查尔斯·摩尔在IBM 1130上创建。他认为这更像是第四代 如果不是1130上的文件名只能是 当时长五个字。因此,forth。
forth使用堆栈来维护执行状态,这会造成很大的工作量,而且或多或少会显式地使用堆栈。因为它 面向堆栈,rpn(反向波兰符号)自然地用于编写程序。
此模块在pythonpyramid环境中工作,使用遍历将url解码为forth程序。 而实际的forth程序将两个数字相乘,然后将它们平方,可能看起来像这样:
12 27 * dup *
等效的fourlth“程序”看起来就像一个url:http://fourlth.com/12/27/*/dup/*
与棱锥体的交互作用
fourlth解释器类的设计工作方式类似于金字塔遍历resource,因此 有一个__getitem__方法,以及一旦“程序”有了 已解码并准备运行。
默认视图只返回一个json对象,该对象包含与 不管在执行结束时堆栈的顶部是什么。如果堆栈为空,则该值为null。 为了演示和调试的目的,还包括另外两个视图可调用项。
金字塔遍历算法他将扫描这个url的PATH_INFO部分,调用 资源的__getitem__方法查找每个元素。但是,不是返回结果 查找时,元素被合并到被伪编译的“程序”和资源本身中 又回来了。
在定义新词的地方,返回的资源实际上是一个新的fourlth解释器实例 这将嵌入到当前版本中。或多或少相同的方案用于if-else-then和 循环结构。
为什么要麻烦?
我们的想法是想出一种方法来创建高度定制的服务器端功能,安全地,可以 在web应用程序中快速设计和部署。具体来说,我想有一个简单的查询 能够访问基因表达数据(微阵列或RNA序列)和元数据的引擎,这些数据是一个更大的, 基于web的应用程序。例如,我们的想法是能够通过符号来搜索基因,然后找出 如果有的话,数据集有这些基因的表达信息。这样的查询可能如下所示:
http://fourlth.net/Gata5/Myb/genesearch/ANY/datasetsearch/metadata
可能会返回:
{ 'genes': ['Gata5', 'Muyb'], 'datasets': ['hiltonlab' { 'celltypes:' [...] }, ...] }
然后,客户端逻辑可以使用这个json对象动态地填充web。
除了构建查询功能之外,我还构建了几个分析工具。 理论上,还可以通过rpy2模块合并r解释器,但是 这必然会增大应用程序服务器端部分的大小。要小心 做这个的时候。
致谢
这些站点可作为此实现中包含的功能的参考: