Perl帮助残疾人

作为Mark-Jason Dominus在2001年O'Reilly开源大会上的闪电演讲的一部分,Jon Bjornstad讲述了他为一位不能说话的截瘫朋友Sue Simpson编写的Perl/Tk程序,帮助她说话和更好地使用电脑。Jon的演讲受到了热烈的欢迎,不仅因为他对Perl的巧妙使用,还因为他无私地应用了自己的技能。

问:你是谁?你在做什么?

答:我是一个Perl程序员,目前在Santa Cruz附近Scotts Valley的一家名为Sesame Technology的小型咨询公司工作。我51岁,所以我已经有些资历了。我的第一语言是Fortran IV。我曾在UNIX上用C编程,做过很多UNIX上的FoxPro,以及各种数据库应用,还编写了几个大型Perl应用程序。

问:是什么让你开始使用Perl的?

答:大约五年前,我参与的一个社区项目想要创建一个网上商店。我找到的完成这项工作的产品是用Perl编写的,所以我决定最好学习这门语言。我出去买了“学习Perl”(当时的第一版)。这本书正好符合我的兴趣。我两天内就消化了这本书,并清楚地知道那就是我想去的地方。这听起来非常有道理,而且过渡得非常顺利。自从那时起,我就没有再写过C程序了!

Sue at home

问:你的闪电演讲是关于为你的一位朋友编写的程序。告诉我们关于这位朋友的事。

答:我在1986年通过一个邮件列表上的请求认识了Sue。发件人正在寻求帮助安装一些软件,为一位被描述为不能说话的截瘫女性。这个请求引起了我的兴趣,并导致了我们之间长期的友谊。多年来,我帮助她配置和编程一个名为Express 3的设备,这是一个带有光笔的LED矩形阵列,她可以用它指向她眼镜上。这个系统现在已经过时了,目前她家庭的资金无法支持购买新的设备,而且真正符合她需求的其他选择实在不多。

问:告诉我们你为她编写的程序。

Screenshot of Word Prediction Software
Word Prediction Software在运行
 
Screenshot of Keyboard Software
键盘界面

答:有一些商业程序允许用户在屏幕键盘上指向字母,拼写短语等。起初,出于兴趣,我开始用Perl/Tk为Sue编写一个具有类似功能的程序。随着时间的推移,这个程序已经发展成为一个更全面的环境,而不仅仅是键盘和鼠标。

基本功能包括一个屏幕键盘,让她可以通过指向来选择字母、单词和短语。通过使用单词预测,我让她之前使用过的单词和短语以列表形式显示,这样她就可以在选择单词时不必完全输入。她可以输入前缀并从匹配的单词列表中选择,或者使用缩写,这些缩写会扩展成单词。

由于她不能点击鼠标按钮,因此选择字母和单词时不能要求任何点击。我通过一个定时器实现了这一点,当指针停留在该元素上时,定时器会触发按钮或单词。

我添加了一个来自Microsoft的文本到语音合成器,它是免费下载的,并且与Perl配合得很好。我们从古腾堡计划中下载了一些公共领域的完整教科书,并创建了一个读者界面,她可以通过它选择章节和部分。她可以标记位置并在以后返回。

苏也想能够查看照片,所以我添加了一个相册。她可以存放自己和家人的照片,并在空闲时浏览。我还允许她将文本输入重定向到文件(例如Unix中的“tee”)。她甚至可以自定义所有显示颜色。

问题:程序中最困难的部分是什么?

Screenshot of Dictionary
使用词典查找单词
 
Screenshot of the Reader
阅读器显示屏

答案:我包含了一个与阅读文本相关的词典。她可以在文本中悬停在任何单词上,并在词典中查找该单词,从而快速获取定义。难点在于通过悬停选择单词,并确定文本中的该单词是什么。南希·沃什可能不知道人们会实际使用她书中的一些这类细节,“学习Perl/Tk”。我知道!Tk是一件了不起的事情。

问题:基础功能花了您多长时间?

答案:大约一周。词典本身又花费了一周左右。我必须将词典整理成DBM文件,以便更快地访问,而我描述的悬停选择也花费了一些时间。然后还有那些通常无尽的调整和润色,历时数月!

问题:您为什么选择Perl编写程序?

答案:这是一个自然的选择。我最熟悉Perl,Perl的优势与需求完美匹配:广泛支持文本处理、快速创建Tk界面等。程序创建的快速性证明我的选择是正确的。

我还注意到一个正在进行中的项目,名为霍金通信器。他们正在为史蒂芬·霍金创建一个包含一些类似功能的程序。当然,他们假设用户能够右键或左键点击。显然,史蒂芬·霍金只有点击的能力——他只能控制两个手指。他不能像苏一样在两个维度上控制鼠标。他使用一种称为“开关扫描”的技术。

还有许多与我类似的其他程序。它们都不完美适用于每个人,因此仍有空间进行类似我启动的项目这样的有趣项目。

问题:您还在添加程序功能吗?

答案:这是一个持续的项目。我想添加的一项功能是让苏能够通过类似于Misterhouse软件的X10接口控制她的灯光和电视。这可能不会太难,因为有了X10模块。

如果她有一种整理东西的方法那就更好了:清理文件、从单词预测列表中删除单词和短语,以及控制整个环境的更多方面。苏是一位非常敏锐的女性,对秩序、标点符号等方面有很高的标准。

问题:您打算公开这个程序吗?

答案:当然。我很快就会从我的网站提供下载,并附上一些详细的安装说明。我一直希望其他人也能从程序中受益。

问题:许多与会者发现您的演讲令人鼓舞。您认为Perl社区和其他程序员如何利用他们的能力为他人谋福利?

答案:我参与了许多志愿者项目。我附近有一个名为圣母玛利亚中心的避难所,我为他们编写了帮助组织活动和注册等程序的软件。那里还有一个私人学校,我为它编写了一个完整的学校管理程序。

我认为人们只需要意识到他人的需求。编写一个直接造福他人的程序是非常有意义的。但是,到处都需要志愿者。大多数组织都需要计算机专家,即使不是编程专家。仅仅作为一个拥有这些技能的人在场也是有帮助的。

问:在你五分钟的演讲之后,观众爆发出热烈的掌声。很多人还在谈论它是他们最喜欢的会议演讲之一。这让你感到惊讶吗?

答:有很多演讲比我花费了更多的努力。这个演讲可能触动了我们所有人内心的人类情感。程序员通常被认为是刻板的书呆子,只与他们的电脑打交道。但我们也是人类!有一个项目能够将我们都理解的黑客魅力与满足人类需求的机会相结合,这真是太好了!

问:最后一个问题,关于Perl的最好和最坏的事情是什么?

答:另一位闪电演讲者是一位重新被编程吸引回来的经理。他对Perl社区的评价很高,这个社区以分享和乐于助人的态度著称。这种态度非常具有传染性,我很自豪能成为其中的一员。那就是最好的事情。那位经理说,Perl更像是家而不是酒店。这对我来说听起来非常正确!

Perl最坏的事情可能是它的灵活性。由于过于灵活,Perl赢得了黑客语言的声誉。写好Perl需要一定的纪律,因为风格和严格性都没有被强制执行。

问:最后还有什么要说的吗?

答:这就结束了,但我将继续努力让这个网站更容易访问和更完整。

标签

反馈

这篇文章有什么问题吗?请通过在GitHub上打开一个问题或拉取请求来帮助我们。