如果你是盲人,你怎么能编程?

视力是大多数程序员认为理所当然的感觉之一。大多数程序员会花几个小时看着电脑显示器(尤其是在他们在区的时候),但我知道也有盲人程序员(比如目前在谷歌工作的T. V. Raman)。

如果你是一个盲人(或正在慢慢失明),你会如何设置你的开发环境来帮助你编程?

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

190610 次浏览

我认为这在使用结对编程原理的极限编程中效果很好。如果你正在为盲人制作软件,那么谁更适合制作它,而不是真正与业务需求保持联系的人,所以我认为这一点都不牵强。

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

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

此外,还有BLinux:

http://leb.net/blinux/

Linux给盲人的。已经有很长一段时间了。我想有十多年了,而且非常成熟。

这篇博客文章提供了一些关于Visual Studio团队如何使他们的产品可访问的信息:

Visual Studio核心团队的无障碍实验室参观活动

许多程序员使用EmacTalk:

EmacTalk-完整的音频桌面

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

http://leb.net/blinux/

该项目描述了如何获得EmacTalk(具有语音合成的编辑器),并且有很多其他资源。

我和一个视力不好的人一起工作,但他们无法使用显示器——他们在屏幕阅读器软件上做得很好,花了很多时间使用基于文本的应用程序和shell。

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

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

编程也有一系列的需求——有些人擅长编写大量的代码,有些人更擅长着眼于大局和架构。我想考虑到屏幕界面带来的困难,失明可能会增强你了解大局的能力…

盲文键盘在世界上会是什么??

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

如果你只是在谈论一个上面有盲文符号的键盘,这也是一个非常糟糕的主意。你在打字的时候会有更多的按键,而且它仍然会很慢。

触摸打字不是是一种视觉技能,盲人可以像盲人一样做到这一点。

我是一个完全失明的大学生,有过几次编程实习,所以我的答案将基于这些。我使用windows xp作为我的操作系统,大白鲨以合成语音读取屏幕上出现的内容。对于Java编程,我使用eclipse,因为它是一个功能齐全的IDE,可以访问。

根据我的经验,一般来说,使用SWT作为GUI工具包的java程序比使用Swing的程序更容易访问,这就是为什么我远离netbean。对于任何. net编程,我都使用Visual Studio 2005,因为它是我实习时使用的标准版本,并且使用Jaws和一组脚本非常容易访问,这些脚本是为了使表单设计器等东西更容易访问而开发的。

对于C和C++编程,我使用cygwin和gcc作为我的编译器,emacs或vim作为我的编辑器,这取决于我需要做什么。我的大部分实习都涉及Z/OS编程。我通过Cygwin使用rlog会话访问大型机上的USS子系统,并使用C3270作为我的3270模拟器访问大型机的ISPF部分。

我通常依靠合成语音,但确实有盲文显示。我发现我通常更快地处理语音,但在标点符号很重要并且变得复杂的情况下使用盲文显示。这方面的例子是如果语句有很多嵌套括号和JCL,其中标点符号非常重要。

更新

我在cygwinhttp://emacspeak.sourceforge.net下玩EmacTalk,我不确定这是否可以用作编程编辑器,因为它似乎有点无响应,但我还没有查看任何配置选项。

我不记得来源,但我听说过/读过一种可听语法“着色”的形式-这样就不会将字符串赋值读取为

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

弦乐部分将以不同的音高或声音朗读,以使元素的分离更清晰。

我是盲人,在Windows、Mac、Linux和DOS上编程了大约13年,使用的语言从C/C++、Python、Java、C#到各种较小的语言。虽然最初的问题是关于配置环境的,但我认为最好的答案是看看盲人会如何使用计算机。

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

所以,这些天我个人使用Visual Studio 2008,并且只做了很少的修改。我关闭了某些功能,例如在输入时显示错误,因为我觉得这会分散注意力。在加入微软之前,我所有的开发都是在像记事本这样的标准文本编辑器中完成的,所以再次没有定制。

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

我在大底特律盲人协会工作了三年,运营一个为盲人访问量身定制的BBS,并与许多盲人用户合作,研究如何更好地满足他们的需求,并与新盲人用户合作,让他们适应当时可用的硬件和软件产品。如果没有别的,我至少学会了阅读盲文,以避免我陷入同样的情况!

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

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

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

在Windows中使用切换键将让您在不小心点击其中一个模态“大写锁”、“数字锁”、“滚动锁”等键时听到。

我知道至少有一个Haskell程序员使用屏幕阅读器,并且明确地在不使用Haskell的布局规则的情况下进行编程,而是选择使用相当不地道的,但支持{;}的,因为对他来说,让屏幕阅读器读取标点符号比找出符合Haskell布局规则的确切缩进更容易/更少分心。同样,我听到一些盲人程序员抱怨他们什么时候必须编写Python。

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

当我还在读研究生的时候,我们的研究团队中有一位盲人。他年龄稍大一些,大概40多岁。他告诉我们他是如何编写他的第一台计算机(在语音合成普及之前),用摩尔斯电码输出屏幕内容的。为了克服明显的先有鸡还是先有蛋的问题,他每次都必须从头开始完全重写代码,直到代码运行良好,他可以把代码读给他听。

现在他使用语音合成,尽管他在实际编写任何代码之前都非常彻底地计划了代码,以尽量减少调试循环。

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

回到新西兰,我认识一个有黄斑变性的人,所以部分失明。他是一个非常有才华的程序员,最终使用了Delphi,因为他可以通过识别单词形状来工作。使用类似Pascal的语法比使用C语言的曲折括号更容易。他有一个网站,但似乎根本没有提到黄斑变性,所以我不会说出他的名字。

来自南伊利诺伊大学爱德华斯维尔分校和华盛顿州立大学的一群学生正在为盲人开发一种编程语言:

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

harald van breederode是荷兰著名的甲骨文DBA专家、培训师和讲师,他是盲人。他的博客包含一些对视障人士有用的提示。

发明一种插入usb端口的设备怎么样,它基本上是一张“橡皮片”,可以自我修改以显示您的代码,让盲人阅读它而不是听到它?

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

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

一般来说,我发现我最喜欢在一个可以发挥我优势的团队环境中成长。例如,虽然图表对于交流/记录设计非常有用,但实际的设计过程需要大量的思考和头脑风暴,当设计被想出来时,你的一个团队成员可以帮助你快速地从中绘制出一幅整齐的图画。

通常,我发现我最喜欢的是在团队环境中发挥自己的优势。虽然图表对于传达/记录设计非常有用,但实际的设计过程需要大量的思考和头脑风暴。 人们错误地将上述解释为缺乏独立性或能力,而我认为这是纯粹的相互依赖——就像我确信队友一个人永远不可能自己想出那个设计,反过来,如果我依赖他来记录设计,那就这样吧。 我面临的大多数障碍都是基于工具的不可访问性。例如,多年来,所有甲骨文产品的可访问性都在逐渐下降(为他们感到羞耻),团队环境基本上允许我在屏幕阅读器和自定义脚本之外对这些进行额外的防御。

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

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

NVDA是一个很好的开源屏幕阅读器。

我是盲人,从几个月开始,我使用VINUX(基于Ubuntu的linux发行版)和SODBEANS(带有名为SAPPY的插件的netbean版本,添加了TTS支持)。 这个解决方案工作得很好,但有时我更喜欢启动Win XP和NVDA来启动FireFox上的许多页面,因为当您尝试打开超过3个FireFox窗口时,Vinux无法很好地工作…

正如许多人所指出的,对于许多老一辈的黑客来说,emacTalk一直是持久的跨平台解决方案。由于它开箱即用地支持Linux和Mac,它已成为我开发Windows独立项目的首选手段。

对于通过听觉语法而不是视觉语法来实际获取语法的问题,我发现存在各种技术来接近一个,如果不是在同一个竞争环境中。

例如,听觉图标可以代替语言描述符。您可以使用音调来表示一行缩进的距离。音调越长,缩进的距离越远。由于音调可以与文本到语音并行播放,因此信息在相同的时间范围内传递,并且不会序列化如此基本的通信。

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

听觉维度(音高、速率、音量、拐点、丰富性、压力等)可以传达一个概念(关键字、类、变量、错误等)。例如,评论可以以单调的拐点阅读……适合,如果我可以这么说:)。

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

可能会继续下去,但简而言之,这就是为什么我们中的一些人在工业中黑客攻击的基础,adacdemia,或者在我们的地下室:)。

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

具体谈到编程,他说:

虽然[gnome-orca]确实会说gnome-终端,但它在 说终端程序,我很舒服地使用它。所以,我运行 Emacs与Emac说包。在其中,我运行Emacs 终端模拟器,在其中,我倾向于运行Screen。对于添加 有趣的是,我经常在内部运行其他Emacs实例 屏幕。

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

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

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

盲人协会要求产品和服务的无障碍性,但他们忘记了盲人开发人员。盲人可以做律师、记者、教师,但即使对盲人来说,盲人开发人员也是一个奇怪的概念。很多时候,我感到孤独,因为我的一些盲人朋友无法理解我的工作。

你可以在这篇文章中读到我对这个问题的看法,在西班牙语,在我的博客http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/ 网页里有翻译工具,不好意思没翻译出来