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 ...
随机推荐
- 背水一战 Windows 10 (88) - 文件系统: 操作文件夹和文件
[源码下载] 背水一战 Windows 10 (88) - 文件系统: 操作文件夹和文件 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 创建文件夹,重命名文件夹,删除文件夹, ...
- Lerning Entity Framework 6 ------ Complex types
Complex types are classes that map to a subset of columns of a table.They don't contains key. They a ...
- three.js 一幅图片多个精灵
https://blog.csdn.net/zhulx_sz/article/details/79105359 核心代码 // 把一幅外部图片中包含的5种精灵存入一个精灵材质数组 var sprite ...
- Python队列及在微信机器人中的应用
本文来源于i春秋学院,未经允许严禁转载. 最近打算更新微信机器人,发现机器人的作者将代码改进了很多,但去掉了sqlite数据库,需要自己根据需求设计数据库,跟作者沟通得到的建议是为了防止消息并发导致数 ...
- OC学习2——C语言特性之函数
1.OC是在C语言的基础上进行扩展的,在OC中直接用C语言进行coding也是可以通过编译的.因此,函数定义的语法格式如下: 函数返回值类型 函数名(形参列表) { //由零条或多条可执行性语句组成的 ...
- Jenkins 集成Sonar代码质量扫描
Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...
- EF code first,set composite primary key 复合key问题
环境: EF core 2.0 Net core 2.0 错误: 因实体定义了多个key,打开数据库时程序报以下错误 An unhandled exception occurred while pro ...
- Jenkins配置AD域认证
Jenkins配置AD域认证 #检测域控地址ping youad.com指向的IP #如果不是实际域控ip地址,则修改hosts vi /etc/hosts #192.168.100.100替换为实际 ...
- Shell脚本 | 健壮性测试之空指针检查
通过 "adb shell am start" 遍历安卓应用所有的 Activity,可以检查是否存在空指针的情况. 以下为梳理后的测试流程: 通过 apktool 反编译 apk ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十一):服务网关(Zuul)
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡 ...