文章目录

  • Emacs
    • 打开Emacs
    • 首先接触的6个命令(组合)
  • Mozart(Oz)
    • 背景介绍和文档
    • `Hello world`
      • 输入
      • 给compiler
      • 查看输出结果
  • 总结和问答练习

时效性
本篇撰写时间为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

    这里的CCtrlMAlt. 所以有人戏称用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-vM-v等快捷键可能功能不正常
    • MobaXterm做ssh,上述两个键是正常的,但退格键将变成C-h,故导致新手极其容易误操作打开帮助界面。该界面可以用q退出
    • 如果想删除(且暂时不想动emacs配置)的话,可以先左移再用Delete键或者C-d命令。当然也有其它解决方法。

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 command oz at the shell prompt.

所以我们关掉刚刚打开的emacs,直接oz
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PBeARARJ-1640149426738)(https://img2020.cnblogs.com/blog/2546121/202112/2546121-20211214180518871-461555871.png)]
上面部分可以写小片段,然后下方展示compiler对你的小片段得到的结果(“transcript”)
我们输入{Show 'Hello World'}(回忆:千万别按退格。想删除使用Delete删除)

给compiler

文档中让我们在menubar中按一些键把代码给compiler。但是我们没有GUI. 所以按F10,并把MobaXterm窗口的高度调高,即可看到menubar对应了什么按键
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lt6vaxiF-1640149426740)(https://img2020.cnblogs.com/blog/2546121/202112/2546121-20211214185118320-1436987464.png)]
从而我们知道按F10 O F(区分大小写)可以把代码给compiler
注:在F10出来的界面误操作请按C-g中止
结果为

查看输出结果

文档中提到

If we select from the Oz menu Show/Hide -> Emulator, we now see: …

所以我们F10 O h e可以看到输出

总结和问答练习

  1. 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

  1. 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都能搜出相关结果
    当你翻到这个

    你就成功了

ExpRe[23] Oz[0] emacs初步,Hello world相关推荐

  1. ExpRe[24] Oz[1] 变量,组合,函数

    文章目录 变量 示例 `record`和`tuple` 函数 总结和问答练习 时效性 本篇撰写时间为2021.12.14,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得 ...

  2. 当前版本与卡刷包android_Z2 Android 6.0.1卡刷包 23.5.0.486发布,快刷起来!(来自XDA)...

    本帖最后由 我是谈胖佬 于 2016-5-29 13:57 编辑 正式版固件23.5.A.0.575也已经发布了,大家不要刷这个测试版本了,我看回复问题还是比较多的,大家找最新正式版固件强刷吧,梦想好 ...

  3. android xmlpullparser 编译出错,将Android支持库更新为23.2.0导致错误:XmlPullParserException...

    我尝试将支持库更新到23.2.0并遇到此错误: Exception while inflating org.xmlpull.v1.XmlPullParserException: Binary XML ...

  4. Kibana自定义插件引入Elastic UI@23.3.0组件库

    Kibana自定义插件引入eui23.3.0 npm install @elastic/eui@23.3.0 npm install typescript@^3.7.2 npm install @el ...

  5. emacs初步了解贴,emacs是什么,为什么用emacs,emacs与vim和Eclipse之间的应用不同,怎么选择这些编辑器和平台做最有效率的开发。...

    首先声明:个人认为 1:不同的开发需求,必定有不同的最优选择,一个项目中有多个需求,那么多个分模块的解决方案就是必然的最优解.多个项目更是如此. 2:不同的开发工具有其不同的优点.取长补短就可以了.不 ...

  6. 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...

    关注"留学壹周刊",回复专业名称,如"金融",可以自由查询相关资料介绍 本篇微信主要包括如下内容: 1.2020Fall英国工业工程与运筹学专业授课类硕士(共2 ...

  7. 23.从0学ARM-网卡DM9000及uboot协议栈详解

    第二十三章 一.网卡 1. 概念 网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件.由于其拥有MAC地址,因此属于OSI模型的第2层.它使得用户可以通过电缆或无线相互连接. 每一个网卡 ...

  8. php-4.3+mysql-3.23+apache-2.0+vbb-2.32论坛的架设方法

    声明:转帖时必须加注来源于 http://www.linuxsir.org 以及作者在LinuxSir 的ID:以及保留此声明: 虽然本人深知这篇文章是小儿科,但LinuxSir的弟兄写大多数文章,被 ...

  9. CDH5.16+Flink1.11.0+zepplien初步踩坑

    白斩鸡的博客:https://me.csdn.net/weixin_47482194 ========================================================= ...

最新文章

  1. Nginx使用http_accesskey_module防盗链,告别referer,告别伪装
  2. ArcGIS.Server.9.3和ArcGIS API for Flex的GeometryService和buffer分析(十)
  3. 红歌合唱之团结就是力量
  4. Python的time模块和datatime模块
  5. 有字符csv文件导入matlab_Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件...
  6. java comparator_一个Java程序员的成长历程(012)天
  7. 2019,国产手机生死存亡的一年
  8. ping IP简单应用,查找故障
  9. 现代处理器设计——超标量处理器基础1-4
  10. Android R系统Fingerprint指纹流程归纳
  11. linux怎么进入系统安装界面,Linux图形化界面安装全过程
  12. Java与Android配合开发ICQ、2018-8-4
  13. Centos7安装uwsgi出现关于SSL错误的问题
  14. [转]SpringMVC常见面试题总结
  15. tortoise-orm连接多个数据库
  16. 【关于2022年卡塔尔世界杯】
  17. 第三届蓝桥杯B组 C/C++取球游戏
  18. 以太网,令牌网,FDDI,ATM到底是什么?有什么区别?
  19. break语句的题目
  20. 【Keepass】配置好keepassnatmsg插件、keepassxc-browser扩展后,出现Failed to save to the specified file未将对象引用设置到对象

热门文章

  1. python获取安卓手机的屏幕_[Python]从安卓手机获取屏幕截图
  2. ZYNQ——FPGA工程之VGA彩条显示
  3. Emacs Gnus 新闻组 入门使用
  4. 瑞士抵押银行Hypi Lenzburg与加密资产管理公司TokenSuisse建立合作
  5. 解决同时安装搜狗输入法和谷歌输入法后fcitx无法使用
  6. deepin设置固定IP地址
  7. Docker——容器虚拟化技术
  8. 路由虚拟化之梦--准备
  9. uniapp 实现图片预览 单图预览和多图预览
  10. Word如何实现一级标题汉字,二级标题数字