视觉是大多数程序员经常忽略的感官之一。大多数程序员会花费数小时盯着电脑显示器(尤其是在他们处于“状态”时),但我知道有些盲人程序员(例如目前在谷歌工作的T.V. Raman)。
如果你是一个盲人(或者正在逐渐失明),你会如何设置开发环境来辅助编程?
(请每个答案提出一个建议。这个问题的目的是将好的想法排在前面。此外,屏幕阅读器可以更早地读取好的想法。)
建议:使用语音识别软件进行编程。
视觉是大多数程序员经常忽略的感官之一。大多数程序员会花费数小时盯着电脑显示器(尤其是在他们处于“状态”时),但我知道有些盲人程序员(例如目前在谷歌工作的T.V. Raman)。
如果你是一个盲人(或者正在逐渐失明),你会如何设置开发环境来辅助编程?
(请每个答案提出一个建议。这个问题的目的是将好的想法排在前面。此外,屏幕阅读器可以更早地读取好的想法。)
我是一名完全失明的大学生,有过几次编程实习经历,所以我的答案将基于这些经验。我使用Windows XP操作系统和Jaws,通过合成语音读取屏幕上的内容。对于Java编程,我使用eclipse,因为它是一个功能齐全且易于访问的IDE。
根据我的经验,通常情况下,使用SWT作为GUI工具包的Java程序比使用Swing更易于访问,这就是为什么我避免使用netbeans的原因。对于任何.NET编程,我使用Visual Studio 2005,因为它是我实习期间使用的标准版本,并且使用Jaws和一组脚本非常容易访问,例如表单设计器等。
对于C和C++编程,我使用cygwin作为编译器,gcc作为编译器,根据需要使用emacs或vim作为编辑器。我的很多实习都涉及为Z/OS编程。我使用通过Cygwin的rlogin会话访问主机上的USS子系统,使用C3270作为我的3270仿真器来访问主机的ISPF部分。
我通常依赖合成语音,但确实有一个点字显示器。我发现,通常情况下,使用语音工作更快,但在标点符号很重要且变得复杂的情况下,我会使用点字显示器。例如,拥有许多嵌套括号的if语句和标点符号非常重要的JCL。
我正在使用cygwin下的Emacspeak http://emacspeak.sourceforge.net 进行尝试。我不确定它能否用作编程编辑器,因为它似乎有点反应迟钝,但我还没有查看任何配置选项。
我是一名盲人程序员,已经在Windows、Mac、Linux和DOS上使用了大约13年的C/C++、Python、Java、C#和其他一些小语言。虽然最初的问题围绕着配置环境,但我认为最好的答案是看一个盲人如何使用计算机。
有些人使用语音环境,例如T. V. Raman和其他答案中提到的Emacspeak环境。到目前为止,远远最常见的解决方案是拥有一个屏幕阅读器,它在后台监控操作系统活动,并通过合成语音或物理点字显示(通常一次显示20到80个字符)提醒用户。这意味着盲人可以使用任何可访问的应用程序。
所以,我个人现在使用Visual Studio 2008,并且几乎没有做任何修改。我关闭某些功能,比如实时显示错误,因为我觉得这会分散注意力。在加入Microsoft之前,我所有的开发都是在像记事本这样的标准文本编辑器中完成的,所以再次没有进行任何自定义。
可以配置屏幕阅读器来宣布缩进。我个人不使用这个功能,因为Visual Studio会处理这个问题,而且C#使用花括号。但是在像Python这样需要考虑空格的语言中,这一点非常重要。最后,Emacspeak确实使用不同的声音/音高来指示语法的不同部分(关键字、注释、标识符等)。
我是一名盲人程序员,已经从事编程工作12年左右。目前是Sapient Corporation(一家总部位于剑桥的咨询公司,创建基于Web和厚客户端的企业解决方案)的高级架构师。
我使用几种屏幕阅读器,但主要使用Windows上的Jaws和NVDA。
我大多数时间都在微软平台上工作,使用Visual Studio作为我的开发环境。我还使用MS Sql企业工作室和其他工具进行数据库访问、网络监控等。
我尝试花一些时间学习Emacspeak,但由于我的工作大多基于微软平台,所以从未真正在那里花费过多的时间。
我也在Linux上用C++工作了几年——大多数情况下我会在Windows上使用记事本或Visual Studio编写所有的代码,然后使用Samba与Linux环境共享文件。我还使用过Borland C进行一些实验性工作。最近一直在尝试使用Python,正如其他人所指出的,对于盲人用户来说它特别不友好,因为它使用缩进作为嵌套机制。话虽如此,最流行的开源屏幕阅读器NVDA就是完全使用Python编写的,并且该项目的一些提交者本身也是盲人。
作为一名架构师,我经常被问到一个特别有趣的问题,那就是我如何处理图表——UML、Visio和Rational Rose等。Visio可能是最易用的绘图工具了。我编写了JAWS脚本来读取Rational Rose图表。我使用过一种叫做T-dub(面向盲人的技术图形理解)的工具,这是由德国一所大学开发的,用于访问UML 2.0图表。我曾经使用基于Java的丑陋工具MagicDraw进行模型驱动开发,并成为AndroMDA项目的提交者之一,帮助从UML模型中开发.NET代码生成器。
总的来说,我发现在一个团队环境中我最能充分发挥自己的优势。例如,虽然图表对于沟通/记录设计非常有用,但实际的设计过程涉及到大量思考和头脑风暴,当设计思路已经确定后,你的团队成员可以帮助你快速将其整理成一个整洁的图片。
人们错误地将以上解释为缺乏独立性或能力,而我认为这是一种纯粹的相互依赖 - 如果只有团队成员自己想出那个设计,那么我相信他/她永远不可能完成它,反过来,如果我依赖他来记录设计,那就这样做吧。 我面临的大部分障碍都是基于工具无法访问。例如,所有的Oracle产品在这些年里逐渐减少了可访问性(真是羞耻),而团队环境基本上使我在屏幕阅读器和自定义脚本之外拥有额外的防御层。Emacs有很多扩展,允许盲人用户处理文本文件。您需要咨询该领域的专家,但emacs具有语音合成功能,可能还有其他功能。
此外,还有BLinux:
致力于为盲人提供Linux操作系统。已经存在很长时间,我认为至少有十年,并且非常成熟。
我曾在大底特律盲人协会工作三年时间,管理一个专为盲人定制的BBS,并与许多盲人用户合作,以更好地满足他们的需求,并帮助新失明者适应当时可用的硬件和软件。如果没有其他东西,至少我学会了读取盲文,以防万一我遇到同样的情况!
大多数盲人计算机用户和程序员使用某种屏幕阅读器,Jaws尤其受欢迎。幸运的是,现在大多数主要应用程序都提供某种形式的残障人士访问。您可能需要微调环境以减少杂音,例如考虑在Visual Studio中禁用Intellisense。
点字显示器不太常见,价格相对较高,可以显示40或80列文本,并且在需要精确定位/标点符号时可以使用。虽然屏幕阅读器可以配置为快速朗读标点符号,但许多人发现这很分散注意力,在许多情况下感觉通过触摸点字更容易。 Jaws可以配置为驱动显示器,因此您无需使用辅助功能应用程序。
此外,许多合法盲人用户仍然有一些视力。使用高对比度背景和放大功能可以帮助这些用户。
在Windows中使用ToggleKeys将使您在意外轻敲模态“大写锁定”、“数字锁定”、“滚动锁定”等键时听到提示音。
我知道至少有一个Haskell程序员使用屏幕阅读器,明确地在不使用Haskell布局规则的情况下进行编程,而是选择使用相当非成语化但受支持的{;}
,因为对于他来说,让屏幕阅读器朗读标点符号要比找出符合Haskell布局规则的精确缩进更容易/不分心。关于同样的问题,我听到一些盲人程序员抱怨他们必须编写Python时的困难。
最终,你要学会利用自己的优势。
Hanselman最近与一名盲人开发者进行了非常有趣的播客访谈,具体内容请点击此处了解。
我无法回忆起来源,但我曾经听说/读过一种称为"颜色编码"的可听语法形式 - 因此,与其将字符串分配读作
foo等于引用这是一个字符串引用
字符串部分将以不同的音高或声音进行朗读,以使元素之间的分离更清晰。
一个开始的地方是Blinux项目:
该项目介绍了如何获取Emacspeak(具有文本到语音功能的编辑器)以及许多其他资源。
我曾与一位视力非常差的人合作,他们无法使用显示器 - 他们使用屏幕阅读器软件,并花了很多时间使用基于文本的应用程序和shell。
维基百科上的屏幕阅读器软件列表也是另一个起点:http://en.wikipedia.org/wiki/List_of_screen_readers