"中文编程"知乎专栏原文. 作者为本人.

@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)
复位

2017-11-28 中文编程语言之Z语言初尝试: ZLOGO 4的更多相关文章

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

    原文: https://zhuanlan.zhihu.com/p/31505895. 作者为本人. @TKT2016 开发的Z语言(ZLOGO是它的一个部分)是本人至今看到的唯一一个仍活跃开发的开源且 ...

  2. Spring @Scheduled @Async联合实现调度任务(2017.11.28更新)

    定时任务之前一直用的是quartz之类,但是注意到Spring中其实也提供了一种简单的调度注释@Scheduled,也就想尝一下鲜.. 代码示意如下: @Component @EnableSchedu ...

  3. 2017.11.28 Enginering management:problem-solving ability

    Today,my colleague is on bussiness trip. going to customer factory in jiangxi. slove the color diffe ...

  4. TKT中文编程语言简介

    TKT中文编程语言简介 TKT语言是新型的类似自然语言的汉语编程语言. 它是基于新的语言设计思想创造的语言,和现存的易语言.习语言.O语言.汉编等中文编程语言没有关系. TKT语言特点一: 中文编程 ...

  5. 第十周 11.28 psp0

    课堂测试总结 学生:马小心                                              日期:2017.11.28 作业号 日期 过程 估计数据 实际数据 累计数据 时间 ...

  6. 中文编程语言Z语言开源正式开源!!!

    (Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为 ...

  7. jingchi.ai 2017.11.25-26 Onsite面试

    时间:2017.11.25 - 11.26 地点:安徽安庆 来回路费报销,住宿报销. day1: 大哥哥问了我一个实际中他们遇到的问题.有n个点,将点进行分块输出,输出各个块的均值点.具体就是100* ...

  8. 2017/11/5 Leetcode 日记

    2017/11/5 Leetcode 日记 476. Number Complement Given a positive integer, output its complement number. ...

  9. [BZOJ5109][LOJ #6252][P4061][CodePlus 2017 11月赛]大吉大利,今晚吃鸡!(最短路+拓扑排序+传递闭包+map+bitset(hash+压位))

    5109: [CodePlus 2017]大吉大利,晚上吃鸡! Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 107  Solved: 57[Sub ...

随机推荐

  1. Mybatis3.2不支持Ant通配符TypeAliasesPackage扫描的解决方案

    业务场景 业务场景:首先项目进行分布式拆分之后,按照模块再分为为api层和service层,web层. 其中订单业务的实体类放在com.muses.taoshop.item.entity,而用户相关的 ...

  2. Mysql基本查询、视图、索引、触发器

    基本查询 1.修改String sql="update smbms_user set userCode=?,userName=? where id=?"; 2.删除用户String ...

  3. 在 React、Vue项目中使用 SVG

    在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再 ...

  4. 你不可错过的Java学习资源清单(包含社区、大牛、专栏、书籍等)

    学习Java和其他技术的资源其实非常多,但是我们需要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学习资源清单. 一: ...

  5. pip install 安装出现问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position XX的解决办法

    pip install 安装出现问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position XX的解决办法 转自c ...

  6. SpringCloud学习5-如何创建一个服务提供者provider

    前几篇主要集中在注册中心eureka的使用上,接下来可以创建服务提供者provider来注册到eureka. demo源码见: https://github.com/Ryan-Miao/spring- ...

  7. Xpath 获取html文档的标签

    1.html page content: <div class="mnr-c _yE"> <div class="_kk _wI">In ...

  8. 第12章 Linux配置定时任务详解

    12.1 配置定时任务 首先需弄清的概念: (1).crond是一个daemon类程序,路径为/usr/sbin/crond.默认会以后台方式启动,service或systemd方式启动crond默认 ...

  9. 翻译:SELECT INTO语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:SELECT INTO的译文. 原文:https://mariadb.com/kb/en/selectinto/我提交到MariaDB官方手册的译文:https://ma ...

  10. 翻译:load data infile(已提交到MariaDB官方手册)

    本文为mariadb官方手册:LOAD DATA INFILE的译文. 原文:https://mariadb.com/kb/en/load-data-infile/ 我提交到MariaDB官方手册的译 ...