如果我们是盲人,该如何编程?
视力是大多数程序员认为理所当然的感觉之一。大多数程序员会花数小时来查看计算机显示器(尤其是在他们进入该区域时),但是我知道有盲人程序员(例如T.V. Raman目前在Google工作)。
如果我们是盲人(或者逐渐变得盲人),我们将如何设置开发环境来进行编程?
(请给每个答案一个建议。这个问题的目的是将好的想法带到顶部。此外,屏幕阅读器可以更早地阅读好的想法。)
解决方案
我认为这在使用结对编程原理的极限编程中会很好地工作。如果我们要为盲人开发软件,那么最好是谁做,然后才是真正符合业务需求的人,所以我认为这根本不是一件难事。
至于编写代码,除非有某种反馈,否则我认为一个人可能会在语法上遇到困难。音频反馈可能会有所帮助。
Emacs具有许多扩展,允许盲人用户操纵文本文件。我们必须咨询该主题的专家,但是emacs具有文本转语音功能。可能还有更多。
另外,还有BLinux:
http://leb.net/blinux/
盲人使用Linux。住了很长时间。我认为已经十多年了,而且很成熟。
此博客文章包含有关Visual Studio团队如何使其产品可访问性的一些信息:
Visual Studio核心团队的辅助功能实验室参观活动
许多程序员使用Emacspeak:
Emacspeak-完整的音频桌面
一个开始的地方是Blinux项目:
http://leb.net/blinux/
该项目描述了如何获取Emacspeak(具有文本转语音功能的编辑器)以及许多其他资源。
我与一个视力都很好的人一起工作,但是阻止他们使用在Screen Reader软件上表现出色的显示器,并花费了大量时间使用基于文本的应用程序和外壳程序。
Wikipedia的屏幕阅读器软件包列表是另一个起点:http://en.wikipedia.org/wiki/List_of_screen_readers
Hanselman最近与一位盲人开发人员进行了非常有趣的播客。
请记住,"盲人"条件范围很广,有些人在法律上是盲人,可以阅读非常大的显示器或者在放大帮助下,然后还有一些根本没有视力的人。我记得一个大学同学,他有一个特殊的设备可以放大书籍,还可以使用特殊的软件来放大屏幕的一部分。她正在努力完成大学学业,因为她的视力越来越差,即将完全消失。
编程也有一系列需求,有些人擅长编写大量代码,有些人更擅长于全局和架构。我可以想象,鉴于屏幕界面带来的困难,盲目性可能会增强我们获得大图像的能力...
盲文键盘到底是什么?
有盲文编写器之类的东西,但是我们永远不会将其用作计算机的输入设备。
如果我们只是在谈论带有盲文符号的键盘,这也是一个非常糟糕的主意。键入时,我们将需要触及更多的键,但它仍然会比较慢。
触摸打字不是视觉技能,盲人和盲人都能做到。
我是一个完全盲的大学生,曾经有过几次编程实习,所以我的答案将基于这些。我使用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我不确定它是否可以用作编程编辑器,因为它似乎反应迟钝,但是我没有研究任何配置选项然而。
我记不清源代码了,但是我已经听说过/听说过一种可听语法"着色"的形式,以便将字符串分配读为
foo equals quote this is a string quote
字符串部分将以不同的音高或者声音来读取,以使元素的分隔更加清晰。
我是盲人,在Windows,Mac,Linux和DOS上使用C / C ++,Python,Java和Cand等各种较小语言编写的语言已经进行了大约13年的编程。尽管最初的问题与配置环境有关,但我认为最好的方法是看盲人如何使用计算机。
有些人使用谈话环境,例如其他答案中提到的T. V. Raman和Emacspeak环境。到目前为止,最常见的解决方案是在后台监视OS活动时运行屏幕阅读器,并通过合成语音或者物理盲文显示器(通常一次显示20到80个字符)来警告用户。这意味着盲人可以使用任何可访问的应用程序。
因此,这些天我个人使用Visual Studio 2008,并且只需很少的修改即可运行它。由于发现这种分散注意力的功能,因此我关闭了某些功能,例如在键入时显示错误。在加入Microsoft之前,我的所有开发工作都是在标准文本编辑器(如记事本)中完成的,因此再次无需进行任何自定义。
可以将屏幕阅读器配置为宣布缩进。我个人不使用此功能,因为Visual Studio会处理此问题,并且Cuses括号。但这对于像空白这样重要的Python语言来说非常重要。最后,Emacspeak确实使用不同的声音/音调来指示语法的不同部分(关键字,注释,标识符等)。
我在底特律大盲人协会工作了三年,为盲人访问量身定制了一个BBS,并与许多盲人用户一起探讨如何更好地满足他们的需求,并与新盲人一起使他们适应可用的硬件和当时可用的软件产品。如果没有别的,我至少学会了将盲文作为对冲我的案例,因为我曾经遇到过同样的情况!
大多数盲人计算机用户和程序员都使用某种屏幕阅读器。尤其是下巴很受欢迎。幸运的是,如今,大多数主要应用程序都提供了某种形式的残疾人通道。我们可能需要微调环境以减少the不休,例如考虑在Visual Studio中禁用Intellisense。
盲文显示器不那么常见,而且价格相对昂贵得多,可以显示40列或者80列文本,可以在精确的定位/标点很重要的情况下使用。尽管可以将屏幕阅读器配置为消除标点符号,但许多人发现它会分散注意力,并且在许多情况下,我们更容易感觉到标点符号。可以将下颌配置为驱动显示器,因此我们无需摆弄辅助功能应用程序。
同样,许多合法盲人用户仍然有一些视线。使用高对比度的背景和放大功能可以帮助很多这些用户。
在Windows中使用ToggleKeys,当我们不小心轻触模式"大写锁定","数字锁定","滚动锁定"等键之一时,也会让我们听到声音。
我知道至少有一个Haskell程序员使用屏幕阅读器,并且显式地编程而不使用Haskell的布局规则,而是选择使用非惯用但受支持的{;}`,因为它更容易/更少分散精力让他的屏幕阅读器读取标点符号,而不是让他找出符合Haskell布局规则的确切缩进。在同一点上,我听到一些盲人程序员关于何时必须编写Python的抱怨。
最终,我们将学会发挥自己的优势。
当我在读研究生时,我们有一个盲人的研究小组成员。他年龄较大,可能在40多岁左右。他向我们介绍了如何对他的第一台计算机进行编程(这早于文本到语音转换的普遍时间),以便以摩尔斯电码输出屏幕内容。为了克服明显的"鸡与蛋"问题,他每次必须从头开始完全重写代码,直到代码工作得足够好以至于可以将其读回。
现在,他使用文本到语音转换,尽管他在实际编写任何代码之前都非常仔细地计划了代码,以最大程度地减少调试循环。
他还很擅长于PowerPoint演示文稿,尽管他视力不好,但格式几乎与任何有经验的演示者一样。
回到新西兰,我认识到患有黄斑变性的人,因此部分被发现。他是一个非常有才华的程序员,并且精通Delphi,因为他可以通过识别单词形状来工作。使用类似Pascal的语法比使用C-ish弯曲的括号更容易做到。他有一个网站,但似乎根本没有提到黄斑变性,所以我不愿透露他的名字。
来自南伊利诺伊大学爱德华兹维尔分校和华盛顿州立大学的一群学生正在为盲人编写一种编程语言:
http://www.youtube.com/watch?v=lC1mOSdmzFc
harald van Breederode是一位著名的荷兰Oracle DBA专家,培训师和演示者,她是盲人。他的博客包含一些对视障人士有用的提示。
发明一种插入USB端口的设备,该设备基本上是一块"橡胶板",会对其进行自我修改以显示代码的外观,让盲人阅读而不是听到它,该怎么办?