协慌网

登录 贡献 社区

如果您是盲人,该如何编程?

视力是大多数程序员认为理所当然的感觉之一。大多数程序员会花数小时来查看计算机显示器(尤其是在他们进入该区域时),但是我知道有盲人的程序员(例如目前为 Google 工作的 TV 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 部分。

我通常会使用合成语音,但会显示盲文。我发现我通常使用语音的速度更快,但在标点符号很重要且变得复杂的情况下使用盲文显示器。例如带多个嵌套括号和 JCL 的 if 语句,其中标点符号非常重要。

更新

我正在 cygwin 的 Emacspeak 上玩游戏http://emacspeak.sourceforge.net我不确定这是否可以用作编程编辑器,因为它似乎反应迟钝,但是我没有看过任何配置选项然而。

我是盲人,在 Windows,Mac,Linux 和 DOS 上使用 C / C ++,Python,Java,C#和各种较小语言编写的语言已经进行了大约 13 年的编程。尽管最初的问题与配置环境有关,但我认为最好的方法是看盲人如何使用计算机。

有些人使用谈话环境,例如其他答案中提到的拉曼电视和 Emacspeak 环境。到目前为止,最常见的解决方案是在后台监视 OS 活动时运行屏幕阅读器,并通过合成语音或物理盲文显示器(通常一次显示 20 到 80 个字符)来警告用户。这意味着盲人可以使用任何可访问的应用程序。

因此,这些天我个人使用 Visual Studio 2008,并且只需很少的修改即可运行它。由于发现这种分散注意力的功能,因此我关闭了某些功能,例如在键入时显示错误。在加入 Microsoft 之前,我的所有开发工作都是在标准文本编辑器(如记事本)中完成的,因此再次无需进行任何自定义。

可以将屏幕阅读器配置为宣布缩进。我个人不使用它,因为 Visual Studio 会处理此问题,而 C#使用花括号。但这对于像空白这样重要的 Python 语言来说非常重要。最后,Emacspeak 确实使用不同的声音 / 音调来指示语法的不同部分(关键字,注释,标识符等)。

我是盲人,过去十二年来一直是程序员。目前是一名高级架构师,并与 Sapient Corporation(一家基于剑桥的咨询公司,同时创建基于 Web 和基于胖客户端的企业解决方案)合作。我使用了几种屏幕阅读器,但大多数情况下都坚持使用 Windows 和 NVDA 的 Jaws。

我的环境主要是在 Microsoft 平台和 Visual Studio 上工作。我还使用 MS Sql 企业工作室等工具进行数据库访问,网络监视等。我试图花一些时间在 emacspeak 上,但是由于我的工作主要是基于 MS 平台,因此从来没有真正花费很多时间。我也花了几年的时间在 Linux 上使用 C ++ 进行开发 - 在 Windows 上大多数使用记事本或 Visual Studio 进行所有编码,然后使用 Samba 与 Linux 环境共享文件。还使用了 borland C 做一些实验性的东西。最近一直在使用 python,正如上面其他人所指出的那样,对于盲人用户特别不友好,因为它是使用缩进作为嵌套机制编写的。话虽这么说,最流行的开源屏幕阅读器 NVDA 是完全使用 python 编写的,并且该项目中的某些提交者本身是盲目的。作为一名架构师,我经常被问到的一个特别有趣的问题是如何处理图表 - UML 和 visio 以及有理玫瑰等。Visio 可能是其中最易于使用的图表工具。我能够编写下颌脚本来为我阅读合理的玫瑰图。我使用了一些德国大学开发的称为 T-dub(盲人的技术图表理解)的工具来访问 UML 2.0 图表。已使用基于 Java 的丑陋工具(称为 Magic draw)进行模型驱动的开发,并且是 androMDA 项目的提交者,并帮助从 UML 模型开发. Net 代码生成器。

总的来说,我发现我在能够发挥自己优势的团队环境中 most 壮成长。例如,虽然图表对于传达 / 记录设计非常有用,但实际的设计过程涉及很多思考和脑力激荡,并且在构思出设计之后,您的团队伙伴之一可以帮助您快速将整齐的设计图整理在一起图片出来。人们错误地将以上观点误解为缺乏独立性或能力,而我将其视为纯粹的相互依存 - 因为在我看来,仅队友永远不可能独自或独自提出这种设计。 - 转,如果我依靠他来记录设计,就这样吧。我面临的大多数障碍都是基于工具的不可访问性。例如,多年来,所有 oracle 产品的可访问性都在不断下降(对它们感到羞耻),而团队环境基本上使我在屏幕阅读器和自定义脚本之外,还可以对这些产品进行额外的防御。