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


685

视力是大多数程序员认为理所当然的感觉之一。大多数程序员会花数小时来看电脑显示器(尤其是在他们进入该区域时),但是我知道有盲人程序员(例如目前为Google工作的TV Raman)。

如果您是盲人(或逐渐成为盲人),您将如何设置开发环境来帮助您进行编程?

(请为每个答案提出一个建议。这个问题的目的是将好主意带到顶部。此外,屏幕阅读器可以更早地阅读好主意。)

Answers:


1017

我是一个完全盲的大学生,曾经有过几次编程实习,所以我的答案将基于这些。我使用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,我不确定这是否可以用作编程编辑器,因为它似乎反应迟钝,但是我没有看过任何配置选项然而。


275
真的很棒 。恭喜你!
潜伏

31
曾经有一个盲人父亲,他非常了解计算机,知道他经历了什么才能使Windows可以访问,您的设置让我感到震惊。恭喜!:)
geocoin

118
假设您也使用笔记本电脑:您是否关闭过显示器以延长电池寿命?因为那将带来很多胜利。
詹斯·罗兰

99
这是SO上的第一个答案让我大跌眼镜。
艾米(Amy)2010年

65
我不知道这是可能的。我再也不会忘记可访问性。
2010年

400

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

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

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

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


5
记事本,哇。您是否曾经使用物理记事本来编写代码(比如说使用盲文触控笔?)是否使用了IntelliSense?屏幕阅读器说话的速度有多快?
Kragen Javier Sitaker,2010年

6
嗨,萨奇布(Saqib),我很喜欢您在hanselminutes上的采访(假设您是同一个人:)。ctrl-shift-escape提示对我来说是新的!
2010年

5
UpTheCreek指的是:channel9.msdn.com/blogs/dan/...
idbrii

26
出于兴趣,您掌握了多少程序,工作时需要刷新多少?就像一个看见的人来回滚动。
托尔比约恩Ravn的安徒生

哇,Emacspeak使用音高和音调真的很有趣!
Hamish

107

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

我的环境主要是在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代码生成器。作为一名架构师,我经常被问到的一个特别有趣的问题是如何处理图表-UML和visio以及有理玫瑰等。Visio可能是其中最易于访问的图表工具。我能够编写下颌脚本来为我阅读合理的玫瑰图。我使用了一些德国大学开发的称为T-dub(盲人的技术图表理解)的工具来访问UML 2.0图表。已使用基于Java的丑陋工具(称为Magic draw)进行模型驱动的开发,并且是androMDA项目的提交者,并帮助从UML模型开发.Net代码生成器。作为一名架构师,我经常被问到的一个特别有趣的问题是如何处理图表-UML和visio以及有理玫瑰等。Visio可能是其中最易于访问的图表工具。我能够编写下颌脚本来为我阅读合理的玫瑰图。我使用了一些德国大学开发的称为T-dub(盲人的技术图表理解)的工具来访问UML 2.0图表。已使用基于Java的丑陋工具(称为Magic draw)进行模型驱动的开发,并且是androMDA项目的提交者,并帮助从UML模型开发.Net代码生成器。我能够编写下颌脚本来为我阅读合理的玫瑰图。我使用了一些德国大学开发的称为T-dub(盲人的技术图表理解)的工具来访问UML 2.0图表。已使用基于Java的丑陋工具(称为Magic draw)进行模型驱动的开发,并且是androMDA项目的提交者,并帮助从UML模型开发.Net代码生成器。我能够编写下颌脚本来为我阅读合理的玫瑰图。我使用了一些德国大学开发的称为T-dub(盲人的技术图表理解)的工具来访问UML 2.0图表。已使用基于Java的丑陋工具(称为Magic draw)进行模型驱动的开发,并且是androMDA项目的提交者,并帮助从UML模型开发.Net代码生成器。

总的来说,我发现我最擅长在团队环境中发挥自己的优势。例如,虽然图表对于传达/记录设计非常有用,但实际的设计过程涉及很多思考和脑力激荡,并且在构思出设计之后,您的团队伙伴之一可以帮助您快速将整齐的设计图图片出来。人们错误地将以上观点误解为缺乏独立性或能力,而我将其视为纯粹的相互依存-因为在我看来,仅队友永远不可能独自或独自提出这种设计。 -转,如果我依靠他来记录设计,就这样吧。我面临的大多数障碍都是基于工具的不可访问性。


6
您是印度人吗?您消失在哪里了?撰写完这篇文章后,您似乎不见了。
Mamta D

1
作为一名程序员,我感到非常抱歉,以至于我从未对可访问性给予足够的关注……非常抱歉……
无题2012年

53

我是一个盲人开发人员,我在Windows,GNU Linux和MacOS X下工作。每个平台针对盲人用户都有不同的工作流程。这取决于盲人开发人员使用的屏幕阅读器。盲人开发人员无法完全使用开发工具。我可以在所有IDE中键入代码并使用编译功能,但是如果我必须使用诸如Interface Builder,XGlade或其他设计工具来设计接口,则会遇到很多问题。在使用Borland Delphi进行开发时,我可以添加一个控件,例如一个Button,并且可以使用对象检查器窗口修改该控件的每个可视属性。许多IDE使用对象检查器窗口来修改视觉和非视觉属性,但盲开发人员的问题是添加新控件,因为添加新控件的方法包括将控件从调色板拖放到画布上。Visual Studio 200x使用替代方法来执行此操作,但是IDE的界面在每个新版本中都会发生变化,这是一个大问题,因为Windows的屏幕阅读器需要使用脚本来提供特殊支持以识别某些非标准应用程序的每个区域。盲人开发人员可以将Visual Studio 2008与他的屏幕阅读器一起使用,但是当此IDE的新版本出现时,他必须等待该IDE版本的新脚本。Xcode with Interface构建器尚无可替代的拖放任务。我多次问苹果公司,但是他们在做其他事情。我在App Store中发布了3个应用程序(可访问的扫雷器,可访问的水果机和对ciegas RSS编程),并且必须通过代码设计所有界面。这是一项艰苦的工作,但是我可以管理每个控件的所有功能。Eclipse具有可访问的代码编辑器,但其他开发工具(如调试控制台,用于设计的插件或文档区域)为盲人用户提供了辅助工具方面的问题。

对于盲人开发人员来说,文档编制也是一个问题。许多示例和演示都使用图像来显示说明(可以在图片中设置环境设置)

我认为问题不是盲目的。问题是公司和开发团队认为可访问性会影响最终软件,但不会影响开发软件。他们认为盲人用户应该是客户,但盲人用户不能成为开发伙伴。

盲人协会要求获得产品和服务的可访问性,但他们忘记了盲人开发者。盲人可以担任律师,新闻工作者,教师,但是盲人开发人员即使对于盲人来说也是一个奇怪的概念。很多时候我感到孤独,因为我的一些盲人朋友不理解我的工作。

您可以在西班牙语中的本文http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/中阅读我对这个问题的看法 网页中有翻译工具。抱歉,我没有翻译。


47

Emacs具有许多扩展,允许盲人用户操纵文本文件。您必须咨询该主题的专家,但是emacs具有文本转语音功能。可能还有更多。

此外,还有BLinux:

http://leb.net/blinux/

盲人使用Linux。住了很长时间。我认为已经十多年了,而且很成熟。


43

请记住,“盲人”是一系列条件,有些人在法律上是盲人,可以阅读非常大的监视器或在放大倍数的帮助下,还有一些根本没有视力的人。我记得大学的一个同学有一个特殊的设备可以放大书籍,还有一个可以用来放大屏幕一部分的特殊软件。她正在努力完成大学学习,因为她的视力越来越差,并且将完全消失。

编程也有各种各样的需求-有些人擅长编写大量代码,而有些人则更擅长于全局和架构。我可以想象,鉴于屏幕界面带来的困难,盲目性可能会增强您获得大图像的能力...



31

我在底特律大盲人协会工作了三年,专门为盲人访问量身定制了一个BBS,并与许多盲人用户一起探讨如何更好地满足他们的需求,并与新的盲人用户一起使他们适应可用的硬件和当时可用的软件产品。如果没有别的,我至少学会了将盲文作为对冲我的案例,因为我曾经遇到过同样的情况!

大多数盲人计算机用户和程序员都使用某种屏幕阅读器。尤其是大白鲨。幸运的是,如今大多数主要应用程序都提供了某种形式的残疾人通道。您可能需要微调您的环境以减少cut不休,例如考虑在Visual Studio中禁用Intellisense。

盲文显示器是不常见的且是相对昂贵得多并能显示文本的40个或80列,而当精确定位/标点符号是重要都可以使用。虽然可以将屏幕阅读器配置为消除标点符号,但许多人发现它会分散注意力,并且在许多情况下,您更容易感觉到标点符号。可以将下颌配置为驱动显示器,因此您无需摆弄辅助功能应用程序。

同样,许多合法盲人用户仍然有一些视线。使用高对比度的背景和放大功能可以帮助很多这些用户。

在Windows中使用ToggleKeys,当您不小心轻触模式“大写锁定”,“数字锁定”,“滚动锁定”等键之一时,也会让您听到声音。

我知道至少有一个Haskell程序员,他使用屏幕阅读器并且显式地编程而不使用Haskell的布局规则,而是选择使用相当惯用但受支持{;}的,因为这样会使他更容易/分神他的屏幕阅读器会读取标点符号,而不是让他找出符合Haskell布局规则的确切缩进。在同一点上,我听到一些盲人程序员抱怨何时编写Python。

最终,您将学会发挥自己的优势。


23

我记不清源代码,但是我已经听说过/听说过一种可听语法“着色”的形式-因此,不是将字符串分配读取为

foo等于引号,这是字符串引号

字符串部分将以不同的音高或声音来读取,以使元素的分隔更加清晰。


13
Emacspeak将做到这一点。
爱德华·KMETT

14

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

http://leb.net/blinux/

该项目描述了如何获取Emacspeak(具有文本转语音功能的编辑器),并具有许多其他资源。

我与一个视力都很好的人一起工作,但是阻止他们使用监视器-他们在Screen Reader软件上做得很好,并花了很多时间在基于文本的应用程序和外壳程序上。

Wikipedia的屏幕阅读器软件包列表是另一个起点:http//en.wikipedia.org/wiki/List_of_screen_readers


14

我是中国北京的研究生。我主修计算机科学,我的许多工作是编程。我天生视力低下,我需要使用放大工具才能清楚地看到屏幕上的字体。我在Windows上使用Microsoft的mgnify工具,并在Linux上使用compiz的magnify插件。我通常将工具设置为放大到原始字体大小的三倍。对我而言,maginify工具还可以,主要问题是速度,我必须移动鼠标以使光标保持在我要查看的文本后面,Microsoft的magnify提供了“自动跟随文本编辑点”选项,这使我从编辑或编码时连续鼠标移动。但是由于编辑软件或IDE可能不支持,所以它并不总是有效。Linux上的放大工具很难使用。随KDE一起提供的KMag具有极差的刷新率,这使我的眼睛无法辨认,我现在使用的compiz的放大插头还可以,但是没有自动聚焦(聚焦自动跟随)功能。iOS通过全屏放大为我提供了非常完美的解决方案,尤其是在ipad的9.7英寸屏幕上。自动对焦是没有必要的,因为我几乎不使用它们来编码或进行其他编辑工作。Android仅提供了很少的可访问性功能,就像震动反馈一样,这对我来说毫无用处。android上没有任何一种好的放大工具,更不用说iOS上的全屏放大等高级功能了。我曾经学习过Qt,想在linux甚至Android上构建有用的放大工具。但几乎没有任何进展。但没有自动对焦功能(对焦自动跟随)。iOS通过全屏放大为我提供了非常完美的解决方案,尤其是在ipad的9.7英寸屏幕上。自动对焦是没有必要的,因为我几乎不使用它们来编码或进行其他编辑工作。Android仅提供了很少的可访问性功能,就像震动反馈一样,这对我来说毫无用处。android上没有任何一种好的放大工具,更不用说iOS上的全屏放大等高级功能了。我曾经学习过Qt,想在linux甚至Android上构建有用的放大工具。但几乎没有任何进展。但没有自动对焦功能(对焦自动跟随)。iOS通过全屏放大为我提供了非常完美的解决方案,尤其是在ipad的9.7英寸屏幕上。自动对焦是没有必要的,因为我几乎不使用它们来编码或进行其他编辑工作。Android仅提供了很少的可访问性功能,就像震动反馈一样,这对我来说毫无用处。android上没有任何一种好的放大工具,更不用说iOS上的全屏放大等高级功能了。我曾经学习过Qt,想在linux甚至Android上构建有用的放大工具。但几乎没有任何进展。Android仅提供了很少的可访问性功能,就像震动反馈一样,这对我来说毫无用处。android上没有任何一种好的放大工具,更不用说iOS上的全屏放大等高级功能了。我曾经学习过Qt,想在linux甚至Android上构建有用的放大工具。但几乎没有任何进展。Android仅提供了很少的可访问性功能,就像震动反馈一样,这对我来说毫无用处。android上没有任何一种好的放大工具,更不用说iOS上的全屏放大等高级功能了。我曾经学习过Qt,想在linux甚至Android上构建有用的放大工具。但几乎没有任何进展。


13

当我在读研究生时,我们有一个盲人的研究小组成员。他年龄较大,可能在40多岁左右。他向我们介绍了如何对他的第一台计算机进行编程(这在文字转语音很普遍之前就已经完成了),以便以摩尔斯电码输出屏幕内容。为了克服明显的“鸡和蛋”问题,他每次必须从头开始完全重写代码,直到代码工作得足够好以至于可以将其读回。

现在,他使用了文本到语音转换功能,尽管他在实际编写任何代码之前都非常仔细地计划了代码,以最大程度地减少调试循环。

他还很擅长于PowerPoint演示文稿,尽管他视力不好,但格式几乎与任何有经验的演示者一样。



8

回到新西兰,我认识一个患有黄斑变性的人,因此部分被发现。他是一个非常有才华的程序员,并且精通Delphi,因为他可以通过识别单词形状来工作。使用类似Pascal的语法比使用C-ish弯弯的括号更容易做到。他有一个网站,但似乎根本没有提到黄斑变性,所以我不愿透露他的名字。


8

我是盲人,从几个月开始,我将VINUX(基于Ubuntu的Linux发行版)与SODBEANS(NetBeans版本,其插件名为SAPPY一起添加了TTS支持)一起使用。该解决方案效果很好,但有时我更喜欢启动Win XP和NVDA,以便在FireFox上启动许多页面,因为当您尝试打开3个以上的FireFox窗口时,Vinux不能很好地工作...


6

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

关于通过听觉而不是视觉来降低语法的问题,我发现存在多种技巧,即使不在同一个游戏环境中也可以使一种技巧接近。

对于一个例子,听觉图标可以代替语言描述符。您可以为线条缩进多远设置色调。音调越长,缩进越远。由于音调可以与文本到语音并行播放,因此信息是在相同的时间范围内传递的,因此不会序列化如此基本的信息。

盲文可以快速,准确地向用户解码行的确切语法。这对于在日常生活中使用盲文的人来说更有用。最大的优点是可以随意访问显示内容。可刷新单元通常在每个字符单元上方具有路由器键,可以将光标放置到该单元上。无需摆弄箭头键O(n)op与O(1)的访问权限。

听觉维度(音高,速率,音量,变形,丰富度,压力等)可以传达一个概念(关键字,类别,变量,错误等)。例如,如果我可以这样说,则注释可以单调变奏形式显示。

Emacs和其他编辑器(Visual Studio)在较小程度上允许编码器对称地阅读程序(下一个块,折叠块,向下defun,跳转到def,向上分析树等)。您可以非常快速地获得整个项目结构的“概况”。使用Cedet之类的扩展,您可以在文本编辑器中获得VS / Eclipse / etc跨平台的优点。

大概可以继续下去,但总而言之,这就是为什么我们中的一些人在工业,学术性贫血或我们的地下室中乱砍的基础:)。




2

盲文键盘到底是什么?

有盲文编写器之类的东西,但是您永远不会将其用作计算机的输入设备。

如果您只是在谈论带有盲文符号的键盘,这也是一个非常糟糕的主意。键入时,您将要碰到更多的键,但它仍然会比较慢。

触摸打字不是视觉技能,盲人和盲人都能做到。


3
盲文键盘有六个键,每个键代表组成盲文字符的六个点之一。大多数盲文键盘还具有用于空格,删除,前进,后退等功能的额外键。很多盲文键盘的图片都可以在Google图片中找到。
巴里·布朗

那就是盲文作者的控制权。你用它来产生盲文输出,你绝不会使用这样的设备作为输入设备,因为它是MUCH慢于普通键盘。
罗伦·佩希特尔

5
不需要盲文键盘,盲文编写者可以写盲文,而不是打印盲文。我的父亲是盲人,可以比大多数有视力的人更快地打字。存在盲文输出键盘,因为在某些情况下它比语音输出更容易。在这种情况下,您会想到复杂的标点符号
geocoin

我知道在BBS时代后期,有一些盲人用户曾经使用插入调制解调器中的“ Braille'n Speak”来访问公告板,但自1992年左右以来,我再也没有见过这些盲人中的一个,也没有一个人们是开发商。触摸打字更有效。
爱德华·KMETT

为什么甚至还没有盲文键盘?我可以不用看键盘就能打字...只需使用(f),(j)和(5)上的圆点对您有所帮助
ajax333221,2012年

2

我认为这在使用结对编程原理的极限编程中会很好。如果您要为盲人开发软件,那么谁最好还是要与真正符合业务需求的人合作,那么我认为这根本不是一件难事。

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


6
如果您编写网页,则可能是为盲人开发的!
Loofer

在1990年代初期,我在IBM的最后一个合作社中(间接地)与一个盲人程序员一起使用ScreenReader / 2(扩展程序以帮助盲人使用OS / 2)。可以完成,不需要配对编程。
M1EK

7
@John Millikin:虽然这很有趣,但与实际的盲人用户相比,您可能不太熟悉如何解释其屏幕阅读软件的提示以及构成直观的残疾人可访问界面的内容。在进行网页设计时,我确实尝试让盲人参与用户接受度测试。也就是说,盲目的开发人员可以做的不仅仅是UAT。
爱德华·KMETT

关于听觉反馈的有趣想法。也许不仅仅是阅读屏幕上的单词的系统会有所帮助。
Seamus Connor 2010年

@爱德华:从图形界面到音频界面实际上并不那么困难。尽管(显然)一个完全盲人将有更多与辅助技术互动的经验,但是“正常”人只要关闭显示器就可以做得很好。
John Millikin 2010年


1

发明一种插入USB端口的设备,该设备基本上是一块“橡胶板”,会对其进行自我修改以显示代码的外观,从而使盲人能够阅读而不是听到它,该怎么办?



1

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

具体说到编程,他说:

尽管[gnome-orca]确实讲了gnome-terminal,但说我喜欢的终端程序还不够好。因此,我使用Emacspeak软件包运行Emacs。在那儿,我运行Emacs终端仿真器,在那儿,我倾向于运行Screen。为了增加乐趣,我经常在内部屏幕中运行Emacs的其他实例。


1
Pff,听起来既复杂又迷人。人们在克服其计算机软件的弱点方面很有创造力。:-)
威廉姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.