如果你失明了,你怎么编程?

时间:2008-09-23 03:41:32

标签: workflow development-environment accessibility blind

视觉是大多数程序员认为理所当然的感官之一。大多数程序员会花几个小时看电脑显示器(特别是在他们在区域的时候),但我知道有盲人程序员(例如目前在谷歌工作的电视拉曼)。 p>

如果您是一个盲人(或者慢慢变得盲目),您将如何设置开发环境以帮助您进行编程?

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

24 个答案:

答案 0 :(得分:1018)

我是一名完全失明的大学生,有过几次编程实习,所以我的回答将基于这些。我使用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我不确定这是否可用作编程编辑器,因为它看起来有些反应迟钝但我还没有看过任何配置选项

答案 1 :(得分:401)

我是盲人,在Windows,Mac,Linux和DOS上使用C / C ++,Python,Java,C#和各种较小的语言编写了大约13年的编程。虽然最初的问题是围绕配置环境,但我认为最好通过查看盲人如何使用计算机来解答。

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

所以,我个人最近使用Visual Studio 2008,只需很少的修改即可运行它。因为我发现这会分散注意力,所以我会关闭某些功能,例如显示错误。在加入Microsoft之前,我的所有开发都是在标准的文本编辑器(如记事本)中完成的,因此再次没有自定义。

可以配置屏幕阅读器以宣布缩进。我个人不使用它,因为Visual Studio负责这一点,而C#使用大括号。但是在像Python这样的空白非常重要的语言中,这一点非常重要。最后,Emacspeak确实使用不同的声音/音高来表示语法的不同部分(关键词,注释,标识符等)。

答案 2 :(得分:107)

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

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

总的来说,我发现在团队合作的环境中,我可以发挥自己的优势。例如,虽然图表对于沟通/记录设计非常有用,但实际的设计过程涉及大量的思考和头脑风暴,当设计经过深思熟虑时,您的一位队友可以帮助您快速整理出一个整齐的画面。照片出来了。 人们错误地将上述错误解释为缺乏独立性或能力,而我认为这是纯粹的相互依赖 - 正如我确信团队伙伴本身永远无法在他/她自己和 - 如果我依赖他来记录设计,那就这样吧。 我面临的大多数障碍都是基于工具的不可访问性。例如,多年来所有oracle产品的可访问性逐渐下降(对它们感到羞耻),团队环境基本上允许我在屏幕阅读器和自定义脚本之上进行额外的防御。

答案 3 :(得分: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也无法拖放任务。我曾多次向苹果公司询问,但他们正在从事其他工作。我在App商店发布了3个应用程序(Accessible minesweeper,access fruitmachine和Programar a ciegas RSS),我不得不按代码设计所有界面。这是一项艰苦的工作,但我可以管理每个控件的所有功能。 Eclipse有一个可访问的代码编辑器,但其他开发工具如调试控制台,用于设计的插件或文档区域为盲人用户提供辅助工具的问题。

对于盲人开发者来说,文档也是一个问题。许多样本和演示使用图像来显示解释(尽可能在图片中设置环境设置)

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

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

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

答案 4 :(得分:47)

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

另外,还有BLinux:

http://leb.net/blinux/

Linux的盲人。已经很久了。我认为十多年了,而且非常成熟。

答案 5 :(得分:43)

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

编程也有一系列需求 - 有些人擅长编写大量代码,有些人更擅长查看大图和架构。我认为,鉴于屏幕界面带来的困难,失明可能会增强你获得全局的能力......

答案 6 :(得分:31)

答案 7 :(得分:31)

我为大底特律盲人协会工作了三年,为盲人访问量身定制了一个BBS,并与一些盲人用户合作,如何更好地满足他们的需求,并与新盲人用户一起使他们适应当时可用的可用硬件和软件产品。如果不出意外的话,我至少学会了阅读盲文作为对冲我遇到同样情况的案件的对冲工作!

大多数盲人计算机用户和程序员都使用某种屏幕阅读器。 Jaws特别受欢迎。幸运的是,如今大多数主要应用程序都提供某种形式的残疾人访问。您可能需要稍微调整您的环境以减少聊天,例如考虑在Visual Studio中禁用Intellisense。

Braille display不太常见,价格相对昂贵,可以显示40或80列文字,并且可以在精确定位/标点符号很重要时使用。虽然可以配置屏幕阅读器来摆脱标点符号,但很多人发现它会分散注意力,并且在许多情况下通过它感觉更容易。可以将钳口配置为驱动显示器,因此您不需要处理辅助功能应用程序。

此外,许多合法盲人用户仍然有一些视力留给他们。使用高对比度背景和放大功能可以帮助很多这些用户。

在Windows中使用ToggleKeys可以让你听到意外点击其中一个模式'大写锁定','num lock','滚动锁'等键。

我知道至少有一个Haskell程序员使用屏幕阅读器并且在没有使用Haskell的布局规则的情况下明确编程,而是选择使用相当非惯用的,但支持{;}代替,因为它是更容易/更少分散注意力让他让他的屏幕阅读器读取标点符号,而不是让他找出符合Haskell布局规则的精确缩进。在同样的说明中,我听到一些盲人程序员抱怨他们何时必须编写Python。

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

答案 8 :(得分:23)

我记不起源了,但我听说过/读过一种形式的可听语法“着色” - 所以不是将字符串赋值读作

  

foo等于引用这是一个字符串引用

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

答案 9 :(得分:14)

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

http://leb.net/blinux/

该项目描述了如何获得Emacspeak(带文本转语音的编辑器)并拥有许多其他资源。

我与一个睁眼的人一起工作,但却阻止他们使用显示器 - 他们使用屏幕阅读器软件做得很好,花了很多时间使用基于文本的应用程序和外壳。

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

答案 10 :(得分:14)

我是中国北京的研究生。我主修计算机科学,我的很多工作都是编程。 我出生时视力低下,我需要使用放大工具清楚地看到屏幕上的字体。我在windows上使用microsoft的mgnify工具,如果在linux上,则使用compiz的magnify插件。我通常将工具设置为放大为原始字体大小的三倍。 对我来说,maginify工具还可以,主要问题是速度,我必须移动鼠标以保持游标跟随我正在看的文本,microsoft的magnify提供了“自动跟随文本编辑点”的选项,这使我从编辑或编码时连续鼠标移动。但它并不总是有效,因为编辑软件或IDE可能不支持。 Linux上的放大工具很难使用。 KMag配备KDE有一个糟糕的刷新率让我的眼睛不舒服,我现在使用的compiz的放大插头是可以的,但没有自动对焦功能(焦点自动跟随)。 iOS为全屏放大提供了非常完美的解决方案,特别是在ipad的9.7英寸屏幕上。有自动对焦是没有必要的,因为我几乎不用它们来编码或做其他编辑的东西。 Android提供的辅助功能非常少,就像摇动反馈一样,这对我来说毫无用处。 Android上没有任何好的放大工具,更不用说iOS上的全屏放大等高级功能了。 我曾经研究Qt,想在linux上构建一个有用的放大工具,甚至在android上。但几乎没有取得一些进展。

答案 11 :(得分:13)

当我在读研究生时,我们的研究小组成员是盲人。他有点老了,也许是40多岁。他告诉我们他如何编程他的第一台计算机(在文本转语音很常见之前),以便在莫尔斯电码中输出屏幕内容。为了克服明显的鸡蛋问题,他不得不从头开始完全重写代码,直到它运作良好,让他回读给他。

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

他也非常擅长提供PowerPoint演示文稿,尽管他缺乏视力,但其格式与任何有视力的演示者一样好。

答案 12 :(得分:10)

此博客文章提供了一些有关Visual Studio团队如何使其产品可访问的信息:

Visual Studio Core Team's Accessibility Lab Tour Activity

许多程序员使用Emacspeak:

Emacspeak --The Complete Audio Desktop

答案 13 :(得分:8)

回到新西兰,我知道有人macular degeneration,所以有部分人看见了。他是一个非常有才华的程序员,并且使用Delphi,因为他可以通过识别单词形状来工作。使用类似Pascal的语法比使用C-ish波浪形支架更容易。他有一个网站,但似乎根本没有提到黄斑变性,所以我不会说出他的名字。

答案 14 :(得分:8)

我是盲人,有几个月我正在使用VINUX(基于Ubuntu的Linux发行版)和SODBEANS(一个带有名为SAPPY的插件的netbeans版本,增加了TTS支持)。 这个解决方案效果很好但有时我更喜欢启动Win XP和NVDA在FireFox上启动很多页面,因为当你尝试打开超过3个FireFox窗口时,Vinux工作得不好......

答案 15 :(得分:6)

正如许多人所指出的那样,emacspeak一直是许多老黑客的持久解决方案。由于它支持Linux和Mac开箱即用,它已成为我开发Windows不可知项目的首选方法。

对于通过听觉而不是视觉方式实际降低语法的问题,我发现如果不是在同一个游戏场上,存在各种技术来接近它。

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

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

听觉维度(音高,速率,音量,变形,丰富度,压力等)可以传达一个概念(关键词,类,变量,错误等)。例如,评论可以在单调的情况下阅读......如果我可以这样说,那就适合:)。

Emacs和其他编辑器到较小的范围(Visual Studio)允许编码人员在语义上仔细阅读程序(下一个块,折叠块,向下defun,跳转到def,走向解析树等)。您可以非常快速地获得整个项目结构的“大”图片;使用像Cedet这样的扩展,你可以在文本编辑器中获得VS / Eclipse / etc跨平台的优点。

可能会继续下去,但简而言之,这就是为什么我们中的一些人会在工业,地方病或我们的地下室里乱砍的原因:)。

答案 16 :(得分:5)

来自南伊利诺伊大学爱德华兹维尔和华盛顿州立大学的一群学生正致力于为盲人编写语言:

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

答案 17 :(得分:5)

harald van Breederode是着名的荷兰Oracle DBA专家,培训师和盲人主持人。他的博客包含一些针对视障人士的有用提示。

答案 18 :(得分:2)

我认为这在使用配对编程原理的极端编程中很有效。如果你正在为盲人制作软件,那么谁能更好地制作软件呢?那么就是那些真正接触业务需求的人,所以我认为这根本不是很遥远。

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

答案 19 :(得分:2)

NVDA是一款优秀的开源屏幕阅读器。

答案 20 :(得分:2)

盲文键盘甚至会是什么?

有盲文作家这样的东西,但你永远不会用作计算机的输入设备。

如果您只是在谈论带有盲文符号的键盘,那么这也是一个非常糟糕的主意。

,你在打字时会有更多的钥匙可供使用。

触摸输入 NOT 是一种视觉技能,盲人可以和视力正常的人一样。

答案 21 :(得分:1)

有各种各样的工具来帮助盲人或部分视力,包括语音反馈和braillie键盘。 http://www.rnib.org.uk/Pages/Home.aspx是一个很好的网站,可以提供有关这些问题的帮助和建议。

答案 22 :(得分:1)

如何发明插入USB端口的某种设备,基本上是一块“橡胶片”,它会修改自己以显示代码的大小,允许盲人阅读它而不是听到它?

答案 23 :(得分:1)

有一次我见过Sam Hartman,他自2000年以来就是着名的Debian开发人员,并且是盲目的。在this采访中,他谈到了Linux用户的可访问性。他使用Debian和gnome-orca作为屏幕阅读器,它与Gnome一起工作,并“在讲Iceweasel / Firefox和Libreoffice方面做得相当不错”。

具体谈到编程,他说:

  

虽然[gnome-orca]确实会说gnome-terminal,但它还不够好   说话我喜欢使用它的终端程序。所以,我跑了   Emacs与Emacspeak包。在那之内,我运行Emacs   终端模拟器,在那之内,我倾向于运行Screen。添加   好玩,我经常在内部运行额外的Emacs实例   屏幕。

相关问题