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 ...
随机推荐
- MFS 服务扫描与爆破
MSF 服务发现 常用来发现局域网内,的常见服务,比如HTTP,FTP,TELNET等. MSF模块搜索: [root@localhost ~]# msfconsole msf5 > searc ...
- redis复习
一起学习...
- MongoDB 数据库
数据库: 关系型数据库 mysql 收费 速度快 字段类型 非关系型数据库 MongoDB 不收费 速度慢一些 存储数据都是字符串 ...
- AndroidStudio项目制作倒计时模块
前言 大家好,给大家带来AndroidStudio项目制作倒计时模块的概述,希望你们喜欢 项目难度 AndroidStudio项目制作倒计时模块的难度,不是很大,就是主要用了Timer和TimerTa ...
- java后端导入excel模板和导入excel文件去读数据
模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...
- linux下把动态链接库加入环境变量的几种方式
一. 将网络SDK各动态库路径加入到LD_LIBRARY_PATH环境变量 1.在终端输入:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/XXX 只在当前终端起作用 ...
- C++Primer笔记之复制控制
复制控制这一节需要注意的地方不多,主要有以下几点: 1.定义自己的复制构造函数 什么时候需要定义自己的复制构造函数,而不用系统提供的,主要遵循以下的经验说明: 某些类必须对复制对象时发生的事情加以控制 ...
- 【LeetCode】1. 两数之和
题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样 ...
- 微服务开发有道之把项目迁移到Kubernetes上的5个小技巧
我们将在本文中提供5个诀窍帮你将项目迁移到Kubernetes上,这些诀窍来源于过去12个月中OpenFaas社区的经验.下文的内容与Kubernetes 1.8兼容,并且已经应用于OpenFaaS ...
- web自动化测试(java)---环境搭建
java的测试环境搭建相较于python还简单些,只要把相关的jar包导入即可了 1.安装java 从官网下载最新的java安装程序,双击安装(java1.8) 2.下载java版的selenium的 ...