视觉是大多数程序员认为理所当然的感官之一。大多数程序员会花几个小时盯着电脑显示器(尤其是在他们全神贯注的时候),但我知道有些程序员是盲人(比如目前在谷歌工作的T.V. Raman)。

如果您是一个盲人(或逐渐失明),您将如何设置您的开发环境来帮助您编程?

(每个回答一个建议。这个问题的目的是把好的想法带到最高层。此外,屏幕阅读器可以更早地阅读到好的想法。)


当前回答

一个开始的地方是linux项目:

http://leb.net/blinux/

该项目描述了如何获得Emacspeak(文本到语音的编辑器),并提供了许多其他资源。

我曾经和一个人一起工作,他的视力几乎阻止了他们使用显示器——他们用屏幕阅读器软件做得很好,花了很多时间使用基于文本的应用程序和shell。

维基百科的屏幕阅读器包列表是另一个开始的地方:http://en.wikipedia.org/wiki/List_of_screen_readers

其他回答

来自南伊利诺伊大学爱德华维尔分校和华盛顿州立大学的一组学生正在为盲人开发一种编程语言:

http://www.youtube.com/watch?v=lC1mOSdmzFc

有一次我遇到了Sam Hartman,他是一个著名的Debian开发人员,从2000年开始,他是盲人。在这次采访中,他谈到了Linux用户的可访问性。他使用Debian和Gnome -orca作为屏幕阅读器,它与Gnome一起工作,并且“在Iceweasel/Firefox和Libreoffice方面做得相对不错”。

在谈到编程时,他说:

虽然[地精-虎鲸]会说地精终端,但它真的不够好 说终端程序,我很舒服地使用它。所以,我跑了 Emacspeak包。在其中,我运行Emacs 在终端模拟器中,我倾向于运行Screen。为了增加 有趣的是,我经常在内部运行额外的Emacs实例 屏幕。

我认为这在使用结对编程原理的极限编程中会很有效。如果你是为盲人开发软件,那么谁会比那些真正了解业务需求的人更适合做这个软件呢,所以我认为这一点都不牵强。

至于写代码,除非有某种反馈,否则我认为一个人可能会在语法上挣扎。音频反馈可能会有所帮助。

正如许多人指出的那样,emacspeak是许多老黑客的跨平台持久解决方案。由于它支持Linux和Mac开箱即用,它已经成为我开发Windows无关项目的首选方法。

关于通过听觉而不是视觉来真正理解语法的问题,我发现存在各种各样的技术来接近语法,即使不是在同一个领域。

例如,听觉图标可以代替口头描述符。你可以用音调表示一行缩进的程度。音调越长,缩进越远。由于音调可以与文本和语音并行播放,信息在相同的时间框架内传递,而不会序列化如此基本的交流。

盲文能够快速而精确地解码出一行文字的确切语法。这对于日常生活中使用盲文的人来说更有用;最大的优点是可以随机访问显示的内容。可刷新单元通常在每个字符单元上方有路由器键,可以将光标指向该单元。不要摆弄方向键O(n) op vs O(1)访问。

听觉维度(音调、速率、音量、变化、丰富度、重音等)可以传达一个概念(关键字、类别、变量、错误等)。例如,注释可以用单调变化来读……正合适,如果我可以这么说的话:)。

Emacs和其他较小程度的编辑器(Visual Studio)允许编码器严格地阅读程序(下一个块、折叠块、向下defun、跳转到def、向上解析树等)。这样做,你可以很快得到整个项目结构的“大”图景;通过像Cedet这样的扩展,你可以在文本编辑器中跨平台地使用VS/Eclipse/etc的优点。

可能还有很多,但简而言之,这就是为什么我们中的一些人在工业、学术界或地下室里不停地工作的基础:)。

在我读研究生的时候,我们的研究团队中有一个盲人。他年纪大一点,大概四十五岁左右。他向我们讲述了他如何编写自己的第一台计算机(那时候文本语音转换还不普及),以莫尔斯电码输出屏幕上的内容。为了克服这个明显的“先有鸡还是先有蛋”的问题,他每次都必须从头开始重写代码,直到代码能够正常工作,可以重新读给他听为止。

现在他使用文本转语音,尽管他在实际编写任何代码之前都非常彻底地计划了代码,以最小化调试循环。

他还非常擅长做ppt演讲,尽管他视力不好,但格式和其他视力正常的演讲者一样好。