冰雪之道
本文仿照 Zen of Python 一文,用简洁精炼的语言概括冰雪拼音系列方案设计中的指导原则。
音码优于形码。
语言是第一性存在,文字是第二性存在。语言和文字都能用于表达,但文字的冗余比语言多。因此在同等元素数量和复杂度的情况下,字音元素的离散力通常优于字形元素。因此,输入方案应该尽可能充分地利用音码,尽可能少用形码。
变长优于定长。
在语言中,常用的词占少数,不常用的词占多数。与传统的定长方案相比,变长方案(包括顶功方案和非定长前缀码方案)能在给高频词安排短编码的情况下,低频词使用更长的编码来增加空间,在码长-重码率的权衡中占得先机。
有序优于乱序。
安排字音和字形元素时,尽可能找到一定的规律,来减少记忆难度、避免遗忘。为了性能考虑而无法做到全盘有序时,应该考虑怎样乱序最有性价比。根据二八定律,少数元素贡献了多数频率,因此少量乱序相比全盘乱序的性价比更高。
一种规则优于多种规则,
全码应该是唯一的,不要加很多容错。简码的设置最好是单一路径,不要搞多种不同的规则简码。这同样适用于元素的安排,能用一种规则来安排键位就不要用多种。
多种规则优于没有规则。
如果实在要搞多种规则简码,那也比无理码好。这同样适用于元素的安排,能用多种规则来安排键位就不要全乱序。
首先要有目标,
输入方案已经汗牛充栋,我的方案超越前人的地方在哪里?没有想好目标,就不要动手做。
然后多个目标之间要有轻重缓急。
多个目标里面,哪个权重高,哪个权重低?两个目标之间的边际替代率是多少(你愿意用多少 x 来换多少 y)?
易学性也应该是目标之一,
简化、简化、再简化。在重要目标的实现之外就不要增加其他导致难度上升的设计。因为每增加一点难度,就会损失一批潜在的用户。
但是易学性不能以折损更重要的目标为代价。
脱离目标来谈易学就没有意义了,因为全拼最易学。
永远追求帕累托改进。
一个方案能不能既易学又高性能?能不能既码长低又重码少?改变我的设计,挑战我的极限,在两个或多个维度同时提升。
永远保持开放,永远探索输入方案的边界。
敢于质疑现有方案的合理性,不断尝试新的结构、规则、取码、布局方式。不在小数点后几位卷性能,而是创造全新的输入体验。