中文编程语言之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)
复位
中文编程语言之Z语言初尝试: ZLOGO 4的更多相关文章
- 2017-11-28 中文编程语言之Z语言初尝试: ZLOGO 4
"中文编程"知乎专栏原文. 作者为本人. @TKT2016 开发的Z语言(ZLOGO是它的一个部分)是本人至今看到的唯一一个仍活跃开发的开源且比较完整的中文编程语言项目. 它的源码 ...
- TKT中文编程语言简介
TKT中文编程语言简介 TKT语言是新型的类似自然语言的汉语编程语言. 它是基于新的语言设计思想创造的语言,和现存的易语言.习语言.O语言.汉编等中文编程语言没有关系. TKT语言特点一: 中文编程 ...
- 中文编程语言Z语言开源正式开源!!!
(Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为 ...
- R语言爬虫初尝试-基于RVEST包学习
注意:这文章是2月份写的,拉勾网早改版了,代码已经失效了,大家意思意思就好,主要看代码的使用方法吧.. 最近一直在用且有维护的另一个爬虫是KINDLE 特价书爬虫,blog地址见此: http://w ...
- dotnet 用 SourceGenerator 源代码生成技术实现中文编程语言
相信有很多伙伴都很喜欢自己造编程语言,在有现代的很多工具链的帮助下,实现一门编程语言,似乎已不是一件十分困难的事情.我利用 SourceGenerator 源代码生成技术实现了一个简易的中文编程语言, ...
- 2017-12-24 手机编程环境初尝试-用AIDE开发Android应用
前不久才接触到纯粹用手机进行编程的开发者, 当时颇有孤陋寡闻之感, 因为之前听说过手机编程还是一些在线编程学习网站开发的学习环境, 没有想过真的有用它做实际开发的. 此文用AIDE免费版在自己的手机上 ...
- 开心一下-实现基于Java一个中文编程语言
https://mp.weixin.qq.com/s/TsTiLVF5D07-wbDMk9bsyQ 这不是认真的,不是真的要去实现一个中文编程语言. 多年以前,有位同学把Java代码发给我说帮 ...
- 开心一下-实现一个基于Java的中文编程语言2
https://mp.weixin.qq.com/s/VmCTvh0c7X9DjIgIMycdlw 上一篇所提到的只是使用中文写Java,而不能算作一门新的语言.作为一门中文语言,需要语言提供的关 ...
- SQLSERVER2012里的扩展事件初尝试(下)
SQLSERVER2012里的扩展事件初尝试(下) SQLSERVER2012里的扩展事件初尝试(上) 我们继续文章扩展事件在Denali CTP3里的新UI(二)里的这个实验 脚本文件下载:http ...
随机推荐
- 2017年最受欢迎的UI框架
前端领域最近几年发展的特别迅速,可以说是百家争鸣.在底层的前端框架领域中,最早是jquery称霸互联网,近两年MVVM类型的框架慢慢成为主流,Vue.React和Angular三大框架并驾齐驱.可以说 ...
- LeetCode 476. Number Complement (数的补数)
Given a positive integer, output its complement number. The complement strategy is to flip the bits ...
- 点击下拉,其余不动的jquery事件(转)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [Scikit-learn] 2.1 Clustering - Variational Bayesian Gaussian Mixture
最重要的一点是:Bayesian GMM为什么拟合的更好? PRML 这段文字做了解释: Ref: http://freemind.pluskid.org/machine-learning/decid ...
- 本地存储之localStorage
localStorage 本地存储 .对象.存数据 .取数据 存储的数据量在20M左右 localStorage 是window下面的属性,用的时候可以省略window 数据只能存储字符串类型的 lo ...
- Ionic3 组件懒加载
使用懒加载能够减少程序启动时间,减少打包后的体积,而且可以很方便的使用路由的功能. 使用懒加载: 右侧红色区域可以省略掉(引用.声明也删掉) 若使用ionic命令新建page,则无需进行下面的操作,否 ...
- Android 开发笔记___初级控件之实战__计算器
功能简单,实现并不难,对于初学者可以总和了解初级控件的基本使用. 用到的知识点如下: 线性布局 LinearLayout:整体界面是从上往下的,因此需要垂直方向的linearlayout:下面每行四个 ...
- 小米Java程序员第二轮面试10个问题,你是否会被刷掉?
近日,开发者头条上分享了一篇"小米java第二轮面经",有很多的java程序员表示非常有兴趣. 下面l就和各位分享小米java第二轮面经(华为java工程师笔试面试题可以看文章某尾 ...
- Java的DAO设计模式
用java的DAO模式实现对一个学生实体的增加,查询操作. 1.建立一个学生实体类 Student.java public class Student { private String sid; pr ...
- 微信小程序入门(前言)
最近接到一个开发微信小程序的任务,由于没有开发过小程序,所以只能查看官方文档.查找相关博文.资料来开发. 微信小程序一开始出现就受到热烈的追捧,因为其"无需安装.用完即走"的理念确 ...