2017-12-01 中英文代码对比之ZLOGO 4 & LOGO
基于前文中文编程语言之Z语言初尝试: ZLOGO 4的一些评论, 此文尝试作一个非常简单的代码对比, 使讨论更加有实例根据. 下图是节选自前文最后的示例代码, 由于选取的对照LOGO版本 (alancsmith.co.uk/logo/, 2002年第一版) 不支持单行内多条语句, 特意将所有语句分行编写. 另外, ZLOGO暂不支持循环, 因此也不使用LOGO中的循环语法.
之前有评论中提到有的LOGO版本支持"FD 10", FD应该是Forward的缩写. 在现今的代码风格中, 一般将可读性放在追求代码简短之前, 而且在硬盘价格白菜价的今天, 一般只有几KB的源代码文件完全不需要考虑占用硬盘的问题. 选取的这个版本的LOGO的关键词更可读也更与ZLOGO接近.
下面是一些个人的观感:
- "色"和"度"的后缀使用, 使这些操作的语义更加一目了然.
- "SetPenColour 0"还需要额外记住0对应的是白色, 2是红色.
- 因为和"Foward 20"的结构相似性, "Left xx"给我这样的LOGO新手的第一感觉是"向左走xx(长度)", 转念才意识到这是"左转xx度"的意思.
- "前进"和"左转"这样长度相同的词语使得代码看上去相对于使用"Forward"和"Left"更加齐整.
- SetPenColour这样的Camel风格是为了使一个关键字能够包含多个单词而采用的一种风格, 也在很多主流编程语言中常用, 它比全大写更加可读. 但在英文自然语言中, 这种风格几乎已经不再使用. 另外, "Left xx"在英语自然语言中是"Turn Left xx degrees"的意思, 这里已经大大简写了. 相比之下, ZLOGO中的词法语法基本与中文自然语言一致.
- 还是SetPenColour, 由于这个版本是英国开发者编写的, 它使用了英式英语拼写"Colour", 而不少中国人学习的应该是美式英语, 这种微小的差别很容易导致误写.
- 在两者自带的几乎是纯文本编辑器的开发环境中编写代码的过程中, 代码输入的时间远小于测试/查错/调整算法的时间, 而且不少代码段是拷贝粘贴生成的. 个人感觉英文输入的笔误率大于中文的(本人的一个Forward写成了Foward).
写到这里, 发现这个版本还是支持简写的, 于是一并比较(右侧):
上面的#1和#3仍然适用. 另外, "FD/LT"相对于"前进/左转", 个人觉得后者更加对中文用户友好. 当然, 以少儿的优良记忆力, 这些一眼看去无意义的缩写也可以在不明白其原意的情况下在短期内记住.
但如果写了这个代码之后, 不碰LOGO语言, 半年后再看这段代码, 或者十年后再看呢? 恐怕又要重新查一遍用户手册. 当然可以说, 这只要供小学生学两个学期而已以后不可能再碰了, 但如果有一种无论放下多久再拿起时仍然一目了然的语法设计(甚至对于完全不懂LOGO的人), 又何乐而不为呢?
2017-12-01 中英文代码对比之ZLOGO 4 & LOGO的更多相关文章
- 中英文代码对比系列之Java一例
原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...
- 2017-11-09 中英文代码对比系列之Java一例
原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...
- 2017.12.21-JQuery
作业:密码加强验证 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...
- 2017.12.25 Mybatis物理分页插件PageHelper的使用(二)
参考来自: 官方文档的说明:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 上篇博客 ...
- java一周学习记录(2017/12/2)
姓名:Danny 日期:2017/12/2 周日 周一 周二 周三 周四 周五 周六 所花时间 120 150 190 150 180 28 ...
- 调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器
2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cook ...
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...
- 【2017.12.12】deepin安装U盘制作,支持 BIOS+UEFI,deepin_Recovery+Win PE
U盘要求为 FAT32,MBR分区表 如果需要放 4GB 大文件,可以分两个分区,第一分区FAT32格式,放启动相关文件,第二个分区用 NTFS 格式,放其它资料. 最新 Win10 支持显示 U盘 ...
- org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-
Jackson对于date的反序列化只支持几种,如果不符合默认格式则会报一下错误 org.codehaus.jackson.map.JsonMappingException: Can not cons ...
随机推荐
- poj1149构图题
引题解: 这道题目的大意是这样的:⦁ 有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪.⦁ 一开始所有猪圈都是关闭的.⦁ 依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定 ...
- Java中的代理机制
Java的三种代理模式 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能. 简言之,代理模 ...
- 火狐浏览器安装 Modify Headers 插件
一.火狐浏览器插件安装 这里以火狐浏览器的Modify Headers插件安装为例,展示火狐插件的安装: 1.打开火狐浏览器,右上角选择“附加组件” 2.搜索Modify Headers插件 3.安装 ...
- 你不知道的javascript读书笔记3
概述 这是我看<你不知道的JavaScript(中卷)>中关于类型检查的笔记,供以后开发时参考,相信对其他人也有用. typeof 我们知道js中有七种内置类型:undefined, nu ...
- LabVIEW(十三):同一个控件的输入和输出转换
1.实现功能:读取某些文件的数据并将这些数据显示在一个界面上,对界面上的数据进行修改后,将修改后的数据保存到源文件中. 2.显示功能: 程序框图右键>文件I/O>读取分隔符电子表格> ...
- log4j 详细使用教程【转载】
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log ...
- XStream进行xml和bean互转
加入pom <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>x ...
- vue moment库格式化处理后端传的日期
开篇 日期时间格式前端和后端都可以处理,我比较推荐前端来处理(定制化高),下面我就介绍下两种处理的方式 后端处理 django默认不经处理传给前端的日期格式为2018-08-26T19:53:36.5 ...
- python numpy安装
一.python下的numpy安装方法 第一步:安装python,这里不做介绍. 第二步:打开cmd看python是否安装成功. 第三步:输入 python -m pip install -U pip ...
- 比较List和ArrayList的性能及ArrayList和LinkedList优缺点
List和ArrayList的性能比较 在使用ArrayList这样的非泛型集合的过程中,要进行装箱和拆箱操作,会有比较大的性能损失,而使用泛型集合就没有这样的问题.List是泛型,而ArrayLis ...