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

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

如果你是一个盲人(或慢慢失明),你将如何build立你的开发环境来协助你编程?

(每个答案都有一个build议,这个问题的目的是把好的想法带到最前面,另外,屏幕阅读者可以早点阅读好的想法。)

我是一个完全盲目的大学生,有几个编程实习,所以我的答案将基于这些。 我使用Windows XP作为我的操作系统, Jaws在合成语音中阅读屏幕上显示的内容。 对于java编程,我使用eclipse,因为它是一个function齐全的IDE,可以访问。

根据我的经验,使用SWT作为GUI工具箱的Java程序更容易访问,那么使用Swing的程序就是为什么我远离NetBeans。 对于任何.net编程,我都使用visual studio 2005,因为它是我实习时使用的标准版本,并且使用Jaws和一组脚本可以很方便地访问它,这些脚本是为了使表单devise器更容易访问而devise的。

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

我通常依靠合成语言,但是有盲文显示。 我发现通常我的工作速度比较快,但在标点符号和复杂情况下使用盲文显示。 这样的例子是如果有大量的嵌套括号和JCL标点符号是非常重要的。

更新

我在cygwin下玩Emacspeak http://emacspeak.sourceforge.net我不确定这是否会作为编程编辑器使用,因为它似乎有点没有反应,但我没有看过任何configuration选项然而。;

我是盲人,在Windows,Mac,Linux和DOS上用C / C ++,Python,Java,C#和各种小型语言编写语言已经有13年了。 虽然原来的问题是围绕环境进行configuration,但我认为最好的方法是看一个盲人如何使用电脑。

有些人使用其他答案中提到的电视拉曼和Emacspeak环境等谈话环境。 目前较为常见的解决scheme是在屏幕阅读器中运行监控操作系统的活动,并通过合成语音或物理盲文显示(通常每次显示20到80个字符)提醒用户。 这意味着盲人可以使用任何可访问的应用程序。

所以,我个人目前使用Visual Studio 2008,只需要很less的修改就可以运行它。 我closures某些function,如显示错误,因为我发现这种分心。 在join微软之前,我所有的开发都是在记事本这样的标准文本编辑器中完成的,所以再次没有定制。

可以configuration屏幕阅读器来通告缩进。 我个人不使用这个,因为Visual Studio照顾这个,而C#使用大括号。 但是这对于像Python这样的空白非常重要的语言来说是非常重要的。 最后,Emacspeak确实利用不同的声音/音调来表示语法的不同部分(关键字,注释,标识符等)。

我是盲人,过去12年来一直是程序员。 目前,我是一名高级架构师,并与Sapient Corporation(一家build立基于Web和基于厚客户端的企业解决scheme的基于剑桥的咨询公司)合作。 我使用几个屏幕阅读器,但大多坚持与大白鲨的Windows和NVDA。

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

一般来说,我发现我在团队环境中发挥最大作用,在那里我可以发挥自己的优势。 例如,虽然图表对交stream/loggingdevise非常有用,但是实际的devise过程需要大量的思考和头脑风暴,当devise出现以后,你的一个队友可以帮助你快速地整理一个整齐的图片出来了。 人们错误地认为上述是缺乏独立性或能力,而我认为这是纯粹的相互依赖 – 因为我相信单靠队友本身不可能独自拿出那个devise,如果我依靠他来loggingdevise,就这样吧。 我面临的大多数障碍是基于工具的无法访问。 例如,所有的Oracle产品多年来在可访问性方面一直在不断下降(他们感到羞耻),团队环境基本上允许我在屏幕阅读器和自定义脚本之上进行额外的防御。

我是一名盲人开发人员,在Windows,GNU Linux和MacOS X下工作。每个平台对于盲人用户都有不同的工作stream程。 这取决于盲人开发者使用的屏幕阅读器。 开发工具对于盲人开发者来说是不完全可用的 我可以在所有IDE中键入代码并使用编译函数,但是如果必须使用devise工具(如Interface Builder,XGlade或其他)来devise接口,则会出现很多问题。 当我用Borland Delphi进行开发时,我可以添加一个控件,例如一个Button,我可以使用对象检查器窗口修改控件的每个可视属性。 许多IDE使用对象检查器窗口来修改视觉和非视觉属性,但盲人开发人员的问题是添加新的控件,因为添加新控件的方法包括从调色板拖放控件到canvas。 Visual Studio 200x使用替代方法来做到这一点,但IDE的界面在每个新版本中都会发生变化,这是一个很大的问题,因为Windows的屏幕阅读器需要使用脚本来特别支持某些非标准应用程序的每个区域。 盲人开发者可以使用Visual Studio 2008和他的屏幕阅读器,但是当这个IDE的新版本出现时,他必须等待这个版本的IDE的新版本的脚本。 带有界面构build器的Xcode除了拖放任务之外别无select。 我多次问苹果,但是他们正在做其他的事情。 我在应用程序商店(无障碍扫雷,无障碍水果机和Programar一个Ciegas RSS)上发布了3个应用程序,我不得不通过代码devise所有的界面。 这是一个艰苦的工作,但我可以pipe理每个控件的所有function。 Eclipse有一个可访问的代码编辑器,但其他开发工具,如debugging控制台,devise插件或文档区域,为盲人用户提供辅助工具的问题。

文档也是盲人开发者的一个问题。 许多示例和演示使用图像来显示说明(在图片中设置环境设置)

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

盲人协会问产品和服务的可及性,但他们忘了盲目的开发者。 盲人可以担任律师,记者,教师,但盲人开发者即使是盲人也是一个奇怪的概念。 很多时候,我感到孤单,因为我的一些盲人朋友不能理解我的工作。

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

Emacs有一些扩展,允许盲人用户操纵文本文件。 您必须咨询有关该主题的专家,但emacs具有文本到语音转换function。 也许更多。

另外还有BLinux:

http://leb.net/blinux/

Linux为盲人。 已经在很长一段时间了。 十多年来我觉得,很成熟。

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

编程也有一系列需求 – 有些人擅长编写大量的代码,有些人则更擅长于大局和架构。 我可以想象,鉴于屏幕界面所带来的困难,失明可能会增强您获得大局的能力。

Hanselman 最近与一位盲人开发者进行了非常有趣的播客 。

我曾在底特律盲人盲人协会工作了三年,为盲人使用量身定制了一个BBS,并与一些盲人用户合作,如何更好地满足他们的需求,以及最新的盲人用户如何使他们适应可用的硬件和当时可用的软件产品。 如果没有其他的事情,我至less学会了将盲文朗读为对付我在同样情况下结束的案例。

大多数盲人电脑用户和程序员使用某种屏幕阅读器。 大白鲨尤其受欢迎。 幸运的是,目前大多数主要应用程序都提供了某种forms的残疾访问。 您可能需要微调您的环境,以减less颤音,例如考虑在Visual Studio中禁用智能感知。

盲文显示不太常见,相对昂贵,可以显示40或80列的文本,并且在精确的定位/标点符号很重要时可以使用。 尽pipe可以configuration屏幕阅读器来标记标点符号,但很多人会发现它会让人分心,而且在许多情况下,通过屏幕阅读器可以更轻松地进行操作。 大白鲨可以configuration为驱动显示器,所以你不是杂耍无障碍应用程序。

另外,很多合法的盲人用户还有一些微不足道的痕迹。 使用高对比度背景和放大function可以帮助很多这些用户。

在Windows中使用ToggleKeys可以让你听到你不小心点击模式“大写locking”,“数字locking”,“滚动locking”等键之一。

我知道至less有一个Haskell程序员使用屏幕阅读器,并且不使用Haskell的布局规则进行明确的编程,而是select使用非惯用但支持的{;}来代替,因为它更容易/更less分散注意力他让他的屏幕阅读器读取标点符号,而不是找出符合Haskell布局规则的确切缩进。 在同样的说明中,我听到一些盲人程序员抱怨他们什么时候需要编写Python。

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

我不记得的来源,但我已经听到/读了一个可听的语法“着色”的forms – 这样,而不是一个string分配被读为

foo等于报价这是一个string报价

string部分将以不同的音调或声音读出,以使元素的分离更清楚。

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

http://leb.net/blinux/

该项目描述了如何获得Emacspeak(编辑器与文本到语音),并有很多其他资源。

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

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

我是中国北京的研究生。 我主修计算机科学,我的很多工作是编程。 我天生就是低视力的,我需要用放大的工具来清楚地看到屏幕上的字体。 我在windows上使用微软的mgnify工具,如果在linux上使用compiz的magnify插件。 我通常设置的工具放大为原来的字体大小的三倍。 对于我来说,maginify工具是好的,主要问题是速度,我必须移动鼠标以保持游标跟随我正在看的文本,微软的magnify提供了一个选项“自动跟随文本编辑点”,这使我从编辑或编码时不断鼠标移动。 但是由于编辑软件或者IDE可能不支持,它并不总是有效的。 Linux上的放大工具很难使用。 KDE带着KDE有一个可怕的刷新率,使我的眼睛不舒服compiz的,我现在使用的放大插头是好的,但没有自动对焦function(焦点自动跟踪)。 iOS为全屏放大提供了非常完美的解决scheme,特别是在iPad的9.7英寸屏幕上。 有没有必要自动对焦,因为我几乎不用它们来编码或做其他编辑的东西。 Android提供了非常less的辅助function,只有摇动反馈,这对我来说是无用的。 在Android上没有任何一种好的放大工具,更不用提iOS等全屏放大function了。 我曾经学习过Qt,想在linux上构build一个有用的放大工具,甚至在android上。 但几乎没有一些进展。

当我在读研究生时,我们有一个盲人研究小组的成员。 他有点老,可能是40多岁。 他告诉我们他如何编程他的第一台电脑(这在文本到语音转换之前很常见),以莫尔斯电码输出屏幕的内容。 为了克服这个明显的鸡与鸡的问题,他必须从头开始彻底地重写代码,直到工作完好,才能让它读回来。

现在他使用文本到语音,尽pipe在实际编写任何代码之前他会非常彻底地编写代码,以尽量减lessdebugging循环。

他还很擅长给出PowerPoint演示文稿,尽pipe他看不见,但是和任何有远见的主持人一样格式化。

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

Visual Studio核心团队的辅助function实验室巡视活动

许多程序员使用Emacspeak:

Emacspeak – 完整的audio桌面

回到新西兰,我知道一个有黄斑变性的人 ,所以是半视力的。 他是一个非常有才华的程序员,用Delphi来解决问题,因为他可以通过识别字形来工作。这比使用类似于Pascal的语法更容易。 他有一个网站,但似乎没有提到黄斑变性,所以我不会说出他的名字。

我是盲目的,几个月以来,我使用SODBEANS(一个名为SAPPY插件的NetBeans版本,添加了TTS支持)使用VINUX(基于Ubuntu的Linux发行版)。 此解决scheme工作得很好,但有时我更喜欢启动Win XP和NVDA在FireFox上启动多个页面,因为当您尝试打开3个以上的FireFox窗口时,Vinux不能正常工作。

正如很多人所指出的,emacspeak已经成为许多老年黑客的持久解决scheme。 由于它支持开箱即用的Linux和Mac,因此它已成为开发Windows不可测项目的首选方式。

对于通过听觉语言而不是视觉语言来实际降低语法的问题,我发现存在各种各样的技巧,即使不在同一个游戏场上,也能够接近语言。

举例来说,听觉图标可以代替口头描述符。 你可以把一行代码缩进多less。 音调越长,缩进越大。 由于音调可以与文本到语音同时播放,因此信息在相同的时间段内传递,并且不会将基本的内容进行序列化。

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

听觉维度(音调,比率,音量,变形,丰富度,压力等)可以传达一个概念(关键词,类,variables,错误等)。 例如,如果我可以这么说,评论可以在单调的活动中读取。

Emacs和其他编辑程序(Visual Studio)允许编码人员在语义上细读一个程序(下一个块,折叠块,向下defun,跳转到def,遍历分析树等等)。 你可以很快得到整个项目结构的“大”图像, 像Cedet这样的扩展,你可以通过文本编辑器获得VS / Eclipse / etc跨平台的优点。

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

南伊利诺伊大学Edwardsville和华盛顿州立大学的一群学生正在为盲人编程语言:

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

harald van Breederode是荷兰着名的Oracle DBA专家,教练兼主持人,他是盲人。 他的博客包含一些视障人士有用的提示。

什么在世界上将盲文键盘甚至是?

有盲文作者这样的东西,但你永远不会使用一个作为一台计算机的input设备。

如果你只是在谈论带有盲文符号的键盘,这也是一个非常糟糕的主意。 打字的时候你会得到更多的关键字,而且速度还会更慢。

触摸打字不是一种视觉技能,一个盲人可以像一个有视力的人一样做。

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

我认为这将在使用结对编程原理的极限编程中运行良好。 如果你为盲人制作软件,那么谁能更好地完成这项工作呢,那么一个真正能够接触到业务需求的人呢,我觉得这根本不算什么。

至于编写代码,除非有某种反馈,否则我认为一个人可能会为语法而苦恼。 audio反馈虽然可能有帮助。

关于发明某种设备,你插入一个USB端口,这基本上是一个“橡胶片”,将自己修改显示你的代码的盲肠,让盲人阅读而不是听到它?

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

有一次,我遇到了Sam Hartman,自2000年以来他是一位着名的Debian开发者,并且是盲目的。 在这次采访中,他谈到了Linux用户的可访问性。 他使用Debian和gnome-orca作为屏幕阅读器,它和Gnome一起工作,“在Iceweasel / Firefox和Libreoffice上做相当好的工作”。

具体讲节目他说:

虽然[gnome-orca]确实会说gnome-terminal,但在使用它的terminal程序方面还不够好。 所以,我用Emacspeak包运行Emacs。 在那里,我运行Emacsterminal仿真器,在那里,我倾向于运行屏幕。 为了增加乐趣,我经常在内部屏幕上运行额外的Emacs实例。