眼睛有问题或盲人是如何编程的?

先来看看一位盲人程序员 T.V. Raman 的故事:14 岁时因青光眼失去了视力,在志愿者的帮助下他完成了大学学业, 1989 年得到一台盲人用语音合成器和当时最先进的读屏软件,来到美国攻读博士学位,后来并成为了一名计算机科学家。Raman 目前在谷歌研究院工作,之前在 IBM 和 Adobe 工作,他可以在 23 秒内复原盲人魔方。他现在使用电脑没有任何障碍,他天天都上网浏览信息,他还可以使用特别的手机来看地图。

有位网友看过 Raman 的故事后,在 Quora 上问「有视觉障碍的程序员是怎样编程的?」本文摘译了 3 位网友的分享,其中 2 位就是盲人程序员。

1.Tommy MacWilliam ,Quora 工程经理,285 顶

你曾经参加过 Python 拼写比赛吗?想象一下如果你每天的生活都是如此该怎样。

我最好的朋友之一在高三时被确诊为 Leber 遗传性视神经病变,Leber 遗传性视神经病变会造成视力逐渐衰退。在刚入大学时,他就失去了双眼的视力。和我一样,他主修计算机科学;但不同的是,看他编程是我见过的最不可思议的事情。

在大学里,他曾经把屏幕放大器和文字转语音软件组装到一起。使用的放大器叫做 MAGic,MAGic 可以迅速放大屏幕上的某一点到只显示出几个字母。而显示器本身就是一个巨大的 30 英寸的投影机样式的东西,并专门为有视觉障碍的人进行了显示优化。至于文本转语音的软件,我记得他尝试了很多不同的产品,更喜欢使用 JAWS。我特别记得的是,他说现有的开源解决方案相较于他使用的昂贵大型设备(这完全得益于我们学校的支持)就是一个笑话。

他总是把屏幕阅读器的速度设置为最快,大概每分钟刷新 300 字,而有声书的文本通常以这个速度的一半来播放。在我听来这就像一种完全不同的语言,但他听起来却很顺畅。事实上,他更喜欢用一个版本非常古老的火狐浏览器(3.5 版本左右),因为这个版本能够很好地支持他的屏幕阅读器。他几乎完全使用键盘快捷键,这使他能够快速找到应用程序并在窗口之间迅速切换。也就是说,这个放大了 40 倍的屏幕几乎不可能跟上他操作的速度,但他却比我见过的许多其他程序员更有效率。

他的具体编程方法。他用的是 emacs 编辑器(我想这是因为他对键盘快捷键已经极其熟练了),当滚动翻页时,屏幕阅读器会读出代码。同样,屏幕阅读器会读出终端输出,因此任何会导致不能转换成文字或声音的问题都是不被允许的。如你所想,编程语言甚至比英文单词更难理解。没有大量使用语法符号的编程语言则更容易理解,像 Python,Ruby 等更像英语的友好语言更容易理解。并且,程序中使用缩进比使用花括号更难理解,因为你要听出每一行使用的 tab 键数。

为了更好的描述我的意思,我说一件发生在我们第二堂导论课上的事。这节课用 OCaml 语言教,这是一种语法独特的函数式语言。他不得不听着这样让人不着头脑的话:“let rec fib n equals return match n with return pipe one hyphen greater than… semicolon semicolon”等等。并一度在一个不能编译的代码库的上工作。他一遍遍听着大声朗读的荒谬的语法,但是一切听起来都那么正常。直到他在课上想尽办法,一个视力正常的助教才指出,由于这样或那样的原因,屏幕阅读器把数字 “0” 读成了字母 “o” (即“哦”的声音)。而这只是一个全新的,视力正常的程序员无需处理的bug。

值得一提的是,他也对 HTML 辅助规范充满了热情,尤其是 ARIA。而互联网上的大多数网站完全忽略了这件事,尽管要实现它是多么的微不足道。对他而言,网站有与没有 ARIA 功能就像白天与黑夜的区别。

现在,他是一名全职软件工程师。

2. Parham Doustdar,1200+ 顶

我是一名盲人 PHP 开发者。我编程的方式不同于其他答案下提到的那些方法。在继续之前,让我告诉你一些我自己的事。

我生来就是失明的。我眼睛的状况其实并不重要,重点是,我从未有过“失去视力”的问题,因为它不可能发生。这就使很多事情变得简单了。

我个人使用的开发工具是 IDE 。而很多盲人朋友并不使用 IDE,最可能是因为 IDE 的界面对于我们的屏幕阅读器来说并不是完全的无障碍。我们的同行有一个问题就是太忙了以致于只照顾到了大多数人而忽视了少数人的声音。举个例子,Jetbrains IDE 的整个系列都不是无障碍的。而版本 IDEA-111425 才是为盲人和有视觉障碍的人准备的无障碍开发工具。

我个人使用的是 Zend Studio,这是一款基于 Eclipse 的 IDE,大部分人可能都知道或者用过。Eclipse 是那些使你愉悦的产品之一,它的无障碍功能实现的非常好。虽然并没有完全实现无障碍,但是实现 80% 就已经够我使用了。作为盲人,你要学会使用你能够获得的来生活。

因此,这就使得我不必记忆方法签名,文档和其他所有的事情,从而使我的大脑可以更高效地去思考其他的事情–就像遗留代码库为什么会这么难理解。

我没有使用布莱叶盲文键盘。布莱叶键盘只有 6 个键,输入每一个字符都必须同时按住 6 个键,这就要比有很多键可以一个个快速按下的键盘慢很多。我也没有使用盲文显示器,我只是把屏幕阅读器的速度设为 420 个字每分钟,这要比用盲文显示器阅读要快得多。

我认为最重要的是,你必须要领先于你的同行。作为盲人,你先天就要很遭遇很多困难,因为你没有大多数人都有的视觉感官。这不会是个大问题,除非是我之前提过的多数人与少数人的对比。既然你是少数人,你就必须设法做到周围很多人认为是理所当然的事。 在这一点上,我相信力量是建立在你被禁用的能力之上的:由此你学习去提升自己,去前进,去打破不可能,而不是每天担心失业。

3. Lucas Radaelli,Google工程师,17900+ 顶

我完全双目失明。我在 Google 工作,编写代码来更改排名算法。就我个人经验而言,我认为许多盲人程序员的编程方式,和视力正常的同事们并无太大差别。大多数时候,我都会用 Emacs 编辑器(Emacs 有个朗读扩展叫 Emacspeak),还有浏览器来查阅谷歌内部页面。

(Lucas Radaelli 和他的导盲犬)

主要差别是,我们要么听屏幕上的内容,要么通过盲文显示器来阅读。我不能对使用盲文显示器发表评论,因为我还没有买过这样的显示器(太昂贵了),但我可以聊聊程序员是如何通过听力来写代码的。

仅通过听力来编程的最大挑战在于,你必须能记住很多东西。一行一行地听代码。也可以逐字或按字符来听代码,问题来了,在规定的时间内要听完屏幕内的代码。听完后,你还不能动手编程,要查找函数定义,了解传参的变量名。然后记住它。如果想再次查找函数定义,我会设置一个标记。大家会发现,这样做或许会耗费一些宝贵时间。所以提高记忆力非常有用。

我喜欢通过 Emacspeak 编程,比如说,在写 C++ 代码时,它能提供了许多非常酷的东西。在朗读变量、函数和其他编程语言元素时,Emacspeak 会使用不同的语调。所以很容易区分,你也可以把这个看成是声音版的代码高亮工具吧。

最后补充回应大家的好奇心:盲人程序员不用缩进代码。我们通常是写完代码后,再对缩进代码。我们在这方面没有优势。

或许你会问,那遇到 Python 代码又如何?我挺喜欢 Python 的,即便在缩进这点上……但我发明了一些技巧,比如在每个缩进块的结尾跳一行,这样我可以很快知道代码块何时结束了。当我阅读其他人的代码时,我会先在屏幕阅读器上设置一个选项,告诉我缩进级别。但我发现这样有点烦,因为我读的每一行代码,屏幕阅读器都会读出该行代码中的 space 数量。

本文文字及图片出自 伯乐在线

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注