一个让所有刚接触计算机的人都感到困惑的问题是:
为什么键盘的排列是奇怪的QWERT...,而不是正常的ABCDE...?
这要追溯到打字机的发明,因为计算机键盘就是根据打字机键盘来的。这种排列“奇怪”的键盘有个名字,就叫QWERTY键盘,念/ˈkwɜːrti/。
打字机的主要发明人是美国发明家克里斯托弗·莱瑟姆·肖尔斯(Christopher Latham Sholes),他在1867年申请了打字机专利。
肖尔斯不仅发明了打字机的机械结构,而且非常重要的是他进一步改进了打字机的键盘排列。
实际上肖尔斯的第一版键盘确实是按ABCDE...顺序排列的,像钢琴一样的两排键,如下图所示:
然而,以当时的机械水平,最早的这款打字机,很容易卡壳。肖尔斯研究了这个问题,认为如果调整一下键盘次序,让高频字母不要相连,可以很好地解决卡壳这个问题,提高打字速度。
于是经过多次改版,在把专利卖给雷明顿公司(Remington's Mechanics)后,他于1873年把键盘最终改版成了这个样子:
从这里我们已经可以看到现代键盘的影子。这种设计不仅大幅度减少了卡壳现象,而且让手指不易僵化,大大提高了打字速率。
然而雷明顿公司不知出于什么原因,在后来正式推出的商用打字机上,对肖尔斯的设计还是做了不小的改动,最终键盘改成了这样子:
从那以后,键盘就基本定型了。直到现在,计算机键盘的核心部分也是这个排列顺序,顶多只是在外围有增加了一些功能性的键。
那么问题来了,肖尔斯的键盘和雷明顿的键盘,哪个更好呢?
我们用Python编程,统计了一些经典名著中的字母/符号的出现频率,并用图形展示来对比看一下。
以下是对《Pride and Prejudice》by Jane Austen一书的统计结果,先看肖尔斯键盘的:
明显的间隔有序。再看一下雷明顿键盘:
显然,就高频字母间隔分布这个设计目的而言,肖尔斯键盘的效果更明显。而雷明顿键盘不仅减弱了这个效果,还让左右手分布明显失衡。
由于雷明顿公司改版带来的这些问题,导致后来一直有质疑肖尔斯的声音,甚至认为肖尔斯的设计是一个骗局。肖尔斯真的很冤枉。
那么雷明顿为什么要这么改鞑靼牛排呢?不知道。也许是为了更加整齐好看吧,毕竟这样改了以后,标点符号不再跟字母混在一起了。
本文图表产生的源代码及说明见附录。这里是《简单又好玩的Python》,欢迎关注。
附录:源代码与思考题
import matplotlib.pyplot as pltplt.rcParams['fon乡镇公务员t.family'] = 'Heiti TC' # 允许显示中文字体# QWERTY键盘row = (('q', 'w', 一女多男np'e', 'r', 't', 'y', 'u', 'i', 湖北大学专升本39;o', 'p祁紫檀9;), ('a', &周延#39;s', 'd', 'f', '河北工业大学怎么样;g', 'h', 'j', 'k', 'l&普陀寺#39;, ';'), ('z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.关于爱情的电影39;, '?'))# 肖尔斯键盘'''row = (('q', 'w', 'e', '.', 't', 'y', 'i', 'u', 'o', 'p'), ('z', 's', 'd', 'f', 鼻梁增高器'g', 'h', 'j', 'k', 意大利国家队吧39;l'孕期检查;, 'm'), ('a', 'x&男穿丝袜#39;, '&', 'c', 'v', 'b', 'n', '?', ';', 'r'))'''stats = [{ch: 0 for ch in row[i]} for i in range(3)] # 初始化每个字母的计数为0f = open("data/Pride-and-Pr闪光ejudice-by-Jane-Austen.txt")while True: chars = f.read(4096) 受精 # 每次读取的字符数,可以调整优化 if chars == '': # 读到空字符表明文件已经读取完毕 break chars = chars.lower() for i in range(3): for ch in row[i]: stats[i][ch] += chars.count(ch)f.cloharrodsse()for i in range(3): plt.bar(stats[i].keys(), stats[i].values())plt.xlabel('字母/符号', fontdict = {'fontsize': 12}数学是什么)plt.ylabel('字母/符号出现次数', fontdict = {'fontsize': 12})plt.幼师资格证show()动手练习:
中国古曲在文末的代码库网址的data目录下面,可以找到其他书籍。请把书籍文件下载到你的本地程序目录下,保持同样的目录结构,然后修改上述代码,尝试其他书籍的统计结果。(友情提示:gitee网站上下载文件的操作更容易)请调节每次读取字符数的大小(原为4096),感受高伟光微博不同读取块大小的程序效率。思考题:如果要统计单词而不是字母的出现频率,应该怎么做?(提示:用文件的readline和字符串的split方法。)Python自然学习法全部源代码网址:
github/globien/easy-pythongitee/globien/easy-python本文发布于:2023-05-27 14:46:18,感谢您对本站的认可!
本文链接:http://www.ranqi119.com/ge/85/136842.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |