MSH口译员
我提请您注意
我对理想语言的看法。 在我以前的文章中,我已经阐述了我对
从MUMPS到MSH的理想语言的想法
以及MSH编程语言与MUMPS的区别 。
评论大多是负面的。 阅读评论后,我惊讶地发现编程语言世界中的所有事物都已经非常完美。 但是模糊的猜疑使我不安,这个世界上的一切都不那么好。 当然,已经有很多语言,但是没有观察到多种语言概念。
如果我们放弃语言的次要修饰,那么就有几个这样的概念。
- 对象编程
- 数据管理,打字。
- 将可变数量的参数传递给过程和函数。
- 管理执行过程。
通过解决这些问题,可以增加编程语言的属性。
对象编程
我认为这是一个重要的概念,必须以语言表达。 当然,即使该语言没有类和对象,也没有什么可以阻止您以对象样式来思考和编写程序,但是,这种机制的存在仍可以简化此任务。
数据管理,打字
我认为这部分是语言概念中最重要的部分。 我在哈布雷(Habré)上就此主题进行了很多讨论。 大多数人主张静态和动态类型。 在动态类型化中,优点被称为语言的灵活性,但是据认为缺点是语言的不可靠性和对开发环境的适应性差。 在静态类型中,一切都是相反的。 我认为关于使用静态类型的语言的最佳可靠性的争论是荒谬的,静态类型可能有助于编程工具的开发,但仅此而已。 我不是这两种方法的支持者。 我认为打字是现代编程语言的主要弊端。 尽管它存在于绝大多数编程语言中。 该语言应完全接管所有数据管理,包括了解其类型。 这是很真实的。 并且程序员必须处理程序的逻辑。 如果您需要检查数据,则键入将无济于事。 他们只需要检查内容。 我只能通过传统和思维的惰性来解释典型性的存在。
将可变数量的参数传递给过程和函数
这是一个小问题,但是大多数语言都很难解决。 尽管汇编器中存在一个很好的例子。 通过堆栈传递参数。 您只需要放弃形式参数的列表,并通过列表传递参数。 对于我来说,返回一个可变数量的函数值是什么以及如何使用它并不完全清楚。 无论如何,必须返回一个实体。
流程管理
我也认为本部分对于语言概念至关重要。 语言的控制结构几乎相同。 使用goto命令会产生细微差别。 我不明白他们为什么要如此疯狂地与这支球队作战。 一个非常方便的命令,尤其是可以计算此命令的参数时。 在并行计算的实现中,变体的变体主要是2。要么通过库来实现,要么可以将它们包含在语言本身中。 我是第二种方法的支持者。
语言缺少事件处理。 虽然被广泛使用。 为了构建GUI,实现事件处理,将启动主循环。 该解决方案并不优雅。 进入这样一个周期是另一个问题。 普通语言应具有事件处理功能。
我的想法当然是主观的,甚至可能是错误的。 但是它们基于我的个人经验。 现代操作系统是一堆未经调试的垃圾,这些垃圾永远不会被调试。 一堆API,各种错误从中流出来的库。 编程语言的数量已超出所有可能的限制。 而且,原则上它们彼此之间几乎没有区别。 通常,我不会谈论框架的数量。 即使是普通系统,也可能是来自各种可能兼容性较差的子系统的多层蛋糕,将永远不会对其进行完整的调试。 调试一个简单的C程序可能需要几个月的时间。 我认为所有这些都是通过输入编程语言生成的。
目前,没有任何一种语言符合我对正确编程语言的想法。 我认为最接近它的是MUMPS编程语言,但是没有实现这种语言作为编程语言。 在数据库实现中,使用该语言作为语言。 这种方法的局限性显而易见,这使我开发了一种新的MSH语言并将其实现编写为解释器。 目前,我要执行的所有操作尚未实现。 特别是没有开发环境,但是您可以了解该语言。
该实现是针对Linux x64进行的。
谁对我的工作感兴趣,写信给我,我将发送分配。PS。
MSH不仅是一种无类型的语言,而且是非声明性的。 原则上,其中没有变量描述。 在一般情况下,变量不仅具有类型,而且具有结构。 需要数组,列表,哈希,堆栈和声明来描述每个结构。 在MUMPS中,原则上没有这种声明语言;任何变量都是一棵树。 没有保留用于此类树的空间。 在将树节点写入数据时会创建一个树节点,并且仅存在进行记录的此类节点。 索引类型没有限制。 因此,将MUMPS与PHP,Java Script和其他语言进行比较是不正确的。 MUMPS是一个独立的世界,具有自己的问题和优势。 要理解它,您需要重建思维。 通过阅读虐待性评论无法理解MUMPS。 我们必须沉浸在其中。 阅读文档。 安装MUMPS系统。 努力吧。 他们在这里不了解我的事实很自然。 我们正在谈论不同的世界。 在MUMPS的世界中,我们没有在这里进行有关类型,结构的讨论。 很少有人对数据的存储方式和位置感兴趣。 MUMPS中的任何数据始终具有两种表示形式:数字和字符串。 并且根据操作,采用该表示形式。 我总是知道确切的结果,具体取决于我应用的操作。 MUMPS强制程序员按照树来工作。 树既可以位于外部媒体:全局变量(数据库的类似物)上,也可以位于内存中:语言环境(程序中的变量的类似物)中。 基本上,在设计信息系统时,我直接使用中间本地数据磁盘上的数据,这对我来说是最低限度的,并且它们不会给我造成任何问题。 因此,在MUMPS论坛上,您将找不到有关其本地化变量类型的讨论。 一种典型的设计方法是在周末设计输入树。 然后,根据需要编写程序以形成输入和输出树。 MUMPS中的数据是主要数据,程序是次要数据。 在我的文章中,我旨在向这个MUMPS的世界介绍尽可能多的程序员。 我认为这个世界更正确。 我很欣赏这些简单,强大而优雅的语言。 我很高兴在上面写。 令我深感遗憾的是,我几乎没有这样做。 我想创建一种可以在不超出该语言限制的情况下编写所有内容的语言。 编写服务器,编写桌面客户端,向浏览器添加语言。