时效性
本篇撰写时间为2021.12.14,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
本篇前置:
- ExpRe[11] Docker[0] 基础使用,涉及GPU的使用,深度学习镜像deepo
https://www.cnblogs.com/minor-second/p/15566228.html - 注:如果没有linux,也可以在windows下安装emacs和使用Oz,或者在windows下使用docker
Emacs
打开Emacs
Emacs是一款争议极大的编辑器,功能强大,上手困难
在vscode能remote-ssh的今天,Emacs的优势已经并不特别大(本来在命令行环境编辑是Emacs的优势)
不过,其有成熟完善的生态,有许多社区贡献者参与开发插件。
org-mode,Mozart等Emacs专属的东西算是这个时代Emacs的一大意义了。
本文中采用MobaXterm
进行ssh连接。不同的ssh连接方式(或者直接本地终端使用)将导致快捷键的作用不同。具体和ASCII码到键盘的绑定有关。参见总结与问答练习
- 在linux服务器上
sudo docker pull wkusnierczyk/mozart-1.4.0
注:因为Mozart 1.4.0有一定年代了,我们直接使用docker镜像避免一些麻烦 sudo docker run -it wkusnierczyk/mozart-1.4.0 bash
emacs -nw
这里的C
是Ctrl
,M
是Alt
. 所以有人戏称用emacs得用钢琴踏板。
首先接触的6个命令(组合)
C-x C-c
关闭emacs
C-h t
打开教程(注意区分于C-h C-t
. 不过你按C-h C-t
也能起到C-h t
的效果)
C-v
(尝试按多次看效果)
M-v
(尝试按多次看效果)
C-l
(尝试按多次看效果)
刚刚的三个用于浏览教程
C-g
中止命令
记住了这6个命令组合,之后就可以看教程学习各种命令了(至少也知道怎么关掉emacs
了)
当然,还是google在手边最直接,要什么随时查
- 方向键或触控板也可以移动光标
- 在一开始打开
emacs
时,各种东西没有加载完全,这时按的键不会有效果。一定要等加载好(显示好)才开始按命令。 - 截至2021.12.14
- 如果用vscode做ssh,则
C-v
,M-v
等快捷键可能功能不正常 - 用
MobaXterm
做ssh,上述两个键是正常的,但退格键将变成C-h
,故导致新手极其容易误操作打开帮助界面。该界面可以用q
退出 - 如果想删除(且暂时不想动
emacs
配置)的话,可以先左移再用Delete
键或者C-d
命令。当然也有其它解决方法。
- 如果用vscode做ssh,则
Mozart(Oz)
背景介绍和文档
The Mozart Programming System combines ongoing research in programming language design and implementation, constraint logic programming, distributed computing, and human-computer interfaces. Mozart implements the Oz language and provides both expressive power and advanced functionality. (mozart2.org)
实际上,Mozart Programming System是用于程序设计教学目的的一个系统,其implement Oz语言。
其支持许多种paradigm(所以有人用它开发实验性质的玩意)。
其配套书籍是被称为继SICP后的“下一本圣经”:CTM
Concepts, Techniques and Models of Computer Programming
目前Mozart2暂不支持约束式等。所以我们本篇中选择的是Mozart 1.4.0的docker镜像
文档http://mozart2.org/mozart-v1/doc-1.4.0/
有趣的是,原书中提到
The Mozart system can be downloaded without charge from the Mozart Con-
sortium Web site http://www.mozart-oz.org. Releases exist for various flavors of
Windows and Unix and for Mac OS X
但是该网址在2021.12.14已暂时无法访问
Hello world
输入
我们直奔文档的http://mozart2.org/mozart-v1/doc-1.4.0/tutorial/node2.html#chapter.opi
This tutorial contains many code examples and you are highly encouraged to try them out interactively as you go. This can be done very comfortably by taking advantage of the Mozart system's interactive development environment. We normally call it the OPI, which stands for the Oz Programming Interface, and it is described extensively in ``The Oz Programming Interface''. In the present section, you will learn just enough about the OPI to allow you to start experimenting with our code examples.
Under Unix, the OPI is normally started by invoking the commandoz
at the shell prompt.
所以我们关掉刚刚打开的emacs
,直接oz
上面部分可以写小片段,然后下方展示compiler对你的小片段得到的结果("transcript")
我们输入{Show 'Hello World'}
(回忆:千万别按退格。想删除使用Delete
删除)
给compiler
文档中让我们在menubar中按一些键把代码给compiler。但是我们没有GUI. 所以按F10
,并把MobaXterm
窗口的高度调高,即可看到menubar对应了什么按键
从而我们知道按F10 O F
(区分大小写)可以把代码给compiler
注:在F10
出来的界面误操作请按C-g
中止
结果为
查看输出结果
文档中提到
If we select from the Oz menu Show/Hide -> Emulator, we now see: ...
所以我们F10 O h e
可以看到输出
总结和问答练习
- Q: 为什么
MobaXterm
按退格键会出现“帮助”界面?
A: UNIX的退格键和Ctrl + h
和ASCII码08有着密切联系。具体参见维基
^H. Pressing the backspace key on a computer terminal would generate the ASCII code 08, BS or Backspace, a control code which would delete the preceding character. That control code could also be accessed by pressing Control-H, as H is the eighth letter of the Latin alphabet. (Wikipedia)
你可以试试在MobaXterm
的终端(不是emacs
里)里敲几个字母,然后Ctrl + h
,发现效果就是删除一个字符
注:类似地Ctrl + c
其实是^C
. 每次Ctrl + c
停止时,可以看到上一行会显示^C
- Q:
M-C-x
(也就是Ctrl + Alt + x
)可以看到输出
但C-. C-l
没用
参考资料(Oz文档):
请用搜索引擎查找相关资料,试图解决此问题。
A:
这就看使用搜索引擎的灵性了
MobaXterm emacs control key
PuTTY emacs control key
terminal emulator emacs Keyboard shortcuts
在2021.12.14都能搜出相关结果
当你翻到这个
你就成功了