加入 M 革命——获取你的工具

还没有人喜欢这个。
MUMPS, M and R programming languages

Opensource.com

M 编程语言也称为 MUMPS。 代表 *麻萨诸塞州综合医院实用多程序设计系统*。 阅读我之前的文章,其中介绍了用于操作和控制大型数据库的多用户、强命令式语言。 然后按照本教程开始使用它。

目前有两种主要的软件环境可用于 M 编程

您可以下载 Intersystems Caché 的评估版本,但由于 FIS GT.M 是免费和开源的,我们将在此处使用它作为本教程的参考系统。

M 语言有一套明确的标准

“每一个工具都是一种武器——如果你正确地握住它。”

- Ani DiFranco

我们将在本教程的练习中坚持 M 标准,因此源代码示例应该在 GT.M 和 Caché 环境中都能工作。

现在让我们专注于安装 GT.M 并使其在您最喜欢的 Linux 安装中工作。

步骤 1:下载并安装 GT.M

下载并安装 GT.M

$ wget http://download.sourceforge.net/project/fis-gtm/GT.M%20Installer/v0.11/gtminstall 
$ chmod +x gtminstall
$ sudo  ./gtminstall --utf8 default

下载免费电子书正在进行为 GT.M 创建 Debian 软件包的工作 (debian-med fis-gtm),它们应该很快可用。 同时,以上说明是在 Linux 环境中安装 GT.M 的最直接方法。 请注意,此安装将使用简单的默认设置。 这样的环境非常适合试用 GT.M 和运行本教程的练习,但可能不足以满足生产系统的需求。 将此安装视为学习 M 的安全沙箱。

默认情况下,安装的可执行文件将转到以下目录之一(具体取决于您是 32 位还是 64 位架构)

/usr/lib/fis-gtm/V5.5-000_x86/
/usr/lib/fis-gtm/V5.5-000_x86_64/

现在,我们通过执行 gtmprofile 文件来设置 GT.M 的环境变量。

从您的 shell 中,执行以下操作

$ source /usr/lib/fis-gtm/V5.5-000_x86/gtmprofile

您将看到类似于以下的输出

%GDE-I-GDUSEDEFS, Using defaults for Global Directory 
    /home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.gld

GDE>
%GDE-I-EXECOM, Executing command file /usr/lib/fis-gtm/V5.5-000_x86_64/gdedefaults

GDE>
%GDE-I-VERIFY, Verification OK

%GDE-I-GDCREATE, Creating Global Directory file
    /home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.gld
Created file /home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.dat
%GTM-I-JNLCREATE, Journal file /home/ibanez/.fis-gtm/V5.5-000_x86_64/g/gtm.mjl created for region DEFAULT with BEFORE_IMAGES
%GTM-I-JNLSTATE, Journaling state for region DEFAULT is now ON

从长远来看,最好从您喜欢的 shell 的初始化文件中执行此操作。 例如,在 bash 中,将以下行添加到您的 $HOME/.bashrc 文件中

# Set up GT.M environment.
source /usr/lib/fis-gtm/V5.5-000_x86/gtmprofile

这会将一组与 GT.M 相关的变量添加到您的环境中,并将 GT.M 可执行文件添加到您的 PATH 中。 如果您好奇,您可能想通过在 bash shell 的提示符中执行以下操作来查看这些更改

$ env | grep gtm

现在,您可以通过简单地在 shell 提示符下键入 gtm 来首次运行 GT.M。

$ gtm

这应该会打开 GT.M 提示符

GTM>

此时,您可以键入几个验证命令。 例如

GTM>write $zversion 
GT.M V5.5-000 Linux x86
GTM>halt

“内在特殊变量”$zversion 返回已安装的 M 环境的版本。halt 命令停止 gtm 解释器并将控制权返回给操作系统,因此您将返回到 shell 的提示符。

初始化过程会在您的主目录下创建一个本地安装

$HOME/.fis-gtm

带有子目录

$HOME/.fis-gtm/r
$HOME/.fis-gtm/V5.5-000_x86       (if in a 32bits architecture)
$HOME/.fis-gtm/V5.5-000_x86_64    (if in a 64bits architecture)

当我们编写代码示例时,这些是代码将转到的目录。

这里需要注意的是,M/MUMPS 是编程语言和数据库的组合(正如我们之前帖子的第一批评论者之一指出的那样)。 在我们提及语言与提及数据库时,我们将尝试更加明确。

步骤 2:测试安装

我们现在可以编写一个“hello world”程序。

首先,在 shell 的“EDITOR”环境变量中设置您喜欢的编辑器的路径。 例如在 bash 中

EDITOR=/usr/bin/emacs

EDITOR=/usr/bin/gvim

然后从同一个 shell 中,调用 gtm,并在提示符下,请求编辑“Hello.m”文件

GTM>ZEDIT “Hello.m”

这应该会打开您刚刚在 EDITOR 环境变量中设置的编辑器程序,现在您可以在其中键入以下 M 代码

MYLABEL ; This is a comment
 WRITE !,”Hello World”
 QUIT

请注意,后两行在第一列中留一个空格,而第一行(包含标签)从第一列开始。

然后保存文件并退出编辑器。 返回 gtm 提示符后,键入

GTM>ZLINK “Hello”

并使用 DO 命令执行该程序

GTM>DO MYLABEL^Hello 
Hello World

现在让我们通过键入再次编辑程序

GTM>ZEDIT “Hello.m”

并在编辑器中,让我们插入另一行

MYLABEL ; This is a comment
 WRITE !,”Hello World”
 WRITE !,$HOROLOG
 QUIT

然后保存文件并使用命令再次链接它

GTM>ZLINK “Hello”

每次修改源代码时都调用 ZLINK 非常重要,因为它会重新编译它并将当前环境中的先前代码替换掉。 现在你可以用以下命令执行新版本

GTM>DO MYLABEL^Hello
Hello World
62520,56765

$HOROLOG 特殊变量返回日期和时间,作为自 1840 年 12 月 31 日以来的天数和自当天午夜以来的秒数的字符串值。(阅读为什么选择该日期。)

步骤 3:查看内部结构

您可能会发现查看源代码和已编译版本的例程的去向很有趣。 查看目录

$HOME/.fis-gtm/V5.5-000_x86_64/r/
$HOME/.fis-gtm/V5.5-000_x86_64/o/

您将在其中找到文件

$HOME/.fis-gtm/V5.5-000_x86_64/r/Hello.m
$HOME/.fis-gtm/V5.5-000_x86_64/o/Hello.o

致谢
非常感谢 K.S. Bhaskar(Fidelity National Information Services, Inc. 的开发总监)对 fis-gtm 的指导以及提供本教程中呈现的大部分材料。 当然,上面可能出现的任何错误都由我独自承担。

参考资料
M 语言的完整参考资料可在以下网址获得
http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/index.html

MUMPS 袖珍指南可在以下网址获得
http://www.vistaexpertise.net/docs/pocket_guide.pdf

标签
User profile image.
Luis Ibáñez 在芝加哥 Google Inc. 担任高级软件工程师。

1 条评论

M/MUMPS 教程

Creative Commons License本作品采用知识共享署名-相同方式共享 3.0 未移植许可协议进行许可。
© . All rights reserved.