中文编程
首发于中文编程

中文编程语言之Z语言初尝试: ZLOGO 4

@TKT2016 开发的Z语言(ZLOGO是它的一个部分)是本人至今看到的唯一一个仍活跃开发的开源且比较完整的中文编程语言项目. 它的源码在TKT2016/ZLanguage3.

此文从用户角度尝试一下ZLOGO的功能, 并记录一些过程中的发现.

首先上一个看完教程后自己写的螺旋方块演示. 源码附在最后.

以下是官网的说明:

LOGO语言创始于1968年,是美国国家科学基金会所资助的一项专案研究,在麻省理工学院(MIT)的人工智能研究室完成。

ZLOGO是基于Z语言实现LOGO语言功能的编程软件,用了中文易懂的语句代替原先LOGO语言难于记忆的命令,更方便学习者掌握。

官网上下载了ZLOGO4, 按照说明, 解压后就可运行.

按照ZLOGO4教程, 逐步实验.

第一个LOGO程序中, 有"左转60度". 推测默认方向是朝上, 测试了一下"左转0度", 的确如此. 推测"前进200"中的200指的是像素数. 觉得教程中最好说明这些基本的默认要素(包括画线的颜色, 粗细, 海龟行走速度等等).

在运行窗口打开的情况下, 再次"运行"会打开一个新的运行窗口.

代码缩进好像是不严格的. 即使每行开头没有缩进, 也照样运行(后补: 经进一步测试, 过程的第一行允许开头没有空白, 但之后的行不允许). 当然它可以使代码更可读.

在第二个"显示隐藏"程序中, 逗号用来分割两个语句:

	前进50,隐藏

尝试把它分成两行:

	前进50
        隐藏

运行效果相同, 但发现两个问题:

  • IDE里的Tab不等同于多个空格(5-6个空格之间)
  • 如果"隐藏"之前没有空格, 就会弹出"编译信息"窗口并报错:
第4行,第3列错误:
不正确,应该是:

另外, 如果海龟越出了窗口, 比如"前进"太多, 好像运行窗口不能滚动, 或者最大化.

计算功能初步尝试一些合法表达式没有问题. 不过狠了一把试了"前进(2/0)", 好像就不显示了, 也没有报错.

最后的过程部分, 才看到"过程体每一行程序必须以空格开头,使程序的开始列必须大于过程名的列号。"这就解释了上面的报错. 建议将这个警示提到文档开头, 而且反馈信息最好明确一些.

学完教程之后, 试着参照p5js的一个演示程序, 写了个简单的方块螺旋效果图, 当然ZLOGO和p5js不是同类工具, 这里只是参考算法而已.

最大的感触当然是过程没有参数的痛苦, 原本螺旋演示里只要定义一个过程就可以了. 暂时没有在教程中看到这一功能. 如果已经支持, 期待原作者指正.

小结:

虽然距离实用尚有一点距离(本身也是测试版), 但瑕不掩瑜, 已有雏形. 除了过程参数之外, LOGO的经典功能已经具备. 非常期待改进版~~


附上"螺旋.zlogo"源码:

说明:画螺旋

开始绘图:
	画正方形5
	画正方形4
	画正方形3
	画正方形2
	画正方形1

画正方形1:
	设置画笔颜色为白色
	左转(20/2),前进(20/2),左转90
	设置画笔颜色为红色
	前进(20/2),左转90
	前进20,左转90
	前进20,左转90
	前进20,左转90
	前进(20/2)
	复位

画正方形2:
	设置画笔颜色为白色
	左转(20*2/2),前进(20*2/2),左转90
	设置画笔颜色为红色
	前进(20*2/2),左转90
	前进(20*2),左转90
	前进(20*2),左转90
	前进(20*2),左转90
	前进(20*2/2)
	复位

画正方形3:
	设置画笔颜色为白色
	左转(20*3/2),前进(20*3/2),左转90
	设置画笔颜色为红色
	前进(20*3/2),左转90
	前进(20*3),左转90
	前进(20*3),左转90
	前进(20*3),左转90
	前进(20*3/2)
	复位

画正方形4:
	设置画笔颜色为白色
	左转(20*4/2),前进(20*4/2),左转90
	设置画笔颜色为红色
	前进(20*4/2),左转90
	前进(20*4),左转90
	前进(20*4),左转90
	前进(20*4),左转90
	前进(20*4/2)
	复位

画正方形5:
	设置画笔颜色为白色
	左转(20*5/2),前进(20*5/2),左转90
	设置画笔颜色为红色
	前进(20*5/2),左转90
	前进(20*5),左转90
	前进(20*5),左转90
	前进(20*5),左转90
	前进(20*5/2)
	复位


后续: ZLOGO 4与LOGO代码对比实验

编辑于 2017-12-02

文章被以下专栏收录

    在所有编程语言和领域中尝试编写中文代码,开发相关工具,总结经验,一致代码风格。包括中文命名,汉化现有语言,创造中文语法的编程语言等等。作为最熟悉的母语,用来编写代码会让代码更容易被自己和母语相同的其他开发者理解。基于英文的编程语言和框架中,使用中文命名有时有技术问题。希望这里为后人趟雷,填坑。多数现有API是英文的,这里也会对其中一些常用的进行汉化。当然,这里也会对基于中文的编程语言进行探讨。包括汉化基于英文的编程语言,以及创造新的编程语言。