视觉是大多数程序员认为理所当然的感官之一。大多数程序员会花几个小时盯着电脑显示器(尤其是在他们全神贯注的时候),但我知道有些程序员是盲人(比如目前在谷歌工作的T.V. Raman)。
如果您是一个盲人(或逐渐失明),您将如何设置您的开发环境来帮助您编程?
(每个回答一个建议。这个问题的目的是把好的想法带到最高层。此外,屏幕阅读器可以更早地阅读到好的想法。)
视觉是大多数程序员认为理所当然的感官之一。大多数程序员会花几个小时盯着电脑显示器(尤其是在他们全神贯注的时候),但我知道有些程序员是盲人(比如目前在谷歌工作的T.V. Raman)。
如果您是一个盲人(或逐渐失明),您将如何设置您的开发环境来帮助您编程?
(每个回答一个建议。这个问题的目的是把好的想法带到最高层。此外,屏幕阅读器可以更早地阅读到好的想法。)
当前回答
我是个盲人,在过去的12年里一直是一名程序员。目前,我是一名高级架构师,在Sapient公司(一家总部位于剑桥的咨询公司,创建基于web和基于厚客户端的企业解决方案)工作。 我使用了几个屏幕阅读器,但大多数情况下都坚持使用Jaws用于窗口和NVDA。
I have mostly worked on the Microsoft platform and visual studio as my environment. I also use tools like the MS Sql enterprise studio and others for DB access, network monitoring etc. I tried to spend some time with emacspeak but since my work was mostly based on the MS platform, never really spent a lot of time there. I have also spent a couple of years working on C++ on linux - mostly used notepad or visual studio on windows for all the coding and then samba to share files with the linux environment. Also used borland C for some experimental stuff. Have recently been playing around with python, which as other people have noted above is particularly unfriendly for a blind user because it is written using indentation as the nesting mechanism. Having said that, NVDA, the most popular open source screen reader is written completely using python and some of the commiters on that project are themself blind. A particularly interesting question I get frequently asked as an architect is how do I deal with diagrams - UML and visio and rational rose etc. Visio is probably the most accessible diagraming tool out there. I was able to write jaws scripts to read rational rose diagrams for me. I've used a tool called T-dub (technical diagram understanding for the blind) developed by some german university for accessing UML 2.0 diagrams. Have used a java-based ugly tool called magic draw for doing model-driven development and was a commiter on the androMDA project and helped develop the .Net code generator from a UML model.
In general, I find that I thrive most in a team environment where I can work on my strengths. For example, while a diagram is extremely useful to communicate/document a design, the actual design process involves a lot of thinking and brainstorming and when the design has been thought out, one of your team mates can help you quickly put together a neatly drawn picture out of it. People incorrectly mis-construe the above to be lack of independence or ability while I see this as pure inter-dependence -- as in I am sure that the team mate alone could never have come up with that design on his/her own and in-turn, if I depend on him to document the design, so be it. Most hurdles I face are tool-based inaccessibility. For example all oracle products have been progressively declining in accessibility over the years (shame on them) and a team environment basically allows me an extra layer of defense against these over and above my screen readers and custom scripts.
其他回答
这篇博文有一些关于Visual Studio团队如何使他们的产品易于访问的信息:
Visual Studio核心团队的无障碍实验室参观活动
许多程序员使用Emacspeak:
Emacspeak—完整的音频桌面
我是一个完全失明的大学生,有过几次编程实习,所以我的答案将基于这些。我使用windows xp作为我的操作系统,“大白鲨”用合成语音来阅读屏幕上出现的内容。对于java编程,我使用eclipse,因为它是一个可访问的功能齐全的IDE。
根据我的经验,使用SWT作为GUI工具包的java程序比使用Swing的程序更容易访问,这就是为什么我远离netbeans的原因。对于任何。net编程,我都使用visual studio 2005,因为它是我实习时使用的标准版本,使用Jaws和一组脚本非常容易访问,这些脚本是为了使表单设计器等东西更容易访问而开发的。
对于C和c++编程,我使用cygwin和gcc作为我的编译器,emacs或vim作为我的编辑器,这取决于我需要做什么。我的很多实习工作都是为Z/OS编程。我使用rlogin会话通过Cygwin访问大型机上的USS子系统,并使用C3270作为我的3270模拟器访问大型机的ISPF部分。
我通常依赖于合成语音,但也有盲文显示。我发现我通常用语音工作得更快,但在标点符号很重要且复杂的情况下使用盲文显示。这方面的例子是带有大量嵌套括号和JCL的if语句,其中标点符号非常重要。
更新
我正在cygwin http://emacspeak.sourceforge.net下使用Emacspeak,我不确定这是否可以用作编程编辑器,因为它似乎有点反应不太好,但我还没有查看任何配置选项。
Hanselman最近与一位盲人开发人员进行了一次非常有趣的播客。
发明一种设备,你插入usb端口,它基本上是一块“橡胶”,它会自我修改,显示你的代码,让盲人阅读而不是听到它,怎么样?
正如许多人指出的那样,emacspeak是许多老黑客的跨平台持久解决方案。由于它支持Linux和Mac开箱即用,它已经成为我开发Windows无关项目的首选方法。
关于通过听觉而不是视觉来真正理解语法的问题,我发现存在各种各样的技术来接近语法,即使不是在同一个领域。
例如,听觉图标可以代替口头描述符。你可以用音调表示一行缩进的程度。音调越长,缩进越远。由于音调可以与文本和语音并行播放,信息在相同的时间框架内传递,而不会序列化如此基本的交流。
盲文能够快速而精确地解码出一行文字的确切语法。这对于日常生活中使用盲文的人来说更有用;最大的优点是可以随机访问显示的内容。可刷新单元通常在每个字符单元上方有路由器键,可以将光标指向该单元。不要摆弄方向键O(n) op vs O(1)访问。
听觉维度(音调、速率、音量、变化、丰富度、重音等)可以传达一个概念(关键字、类别、变量、错误等)。例如,注释可以用单调变化来读……正合适,如果我可以这么说的话:)。
Emacs和其他较小程度的编辑器(Visual Studio)允许编码器严格地阅读程序(下一个块、折叠块、向下defun、跳转到def、向上解析树等)。这样做,你可以很快得到整个项目结构的“大”图景;通过像Cedet这样的扩展,你可以在文本编辑器中跨平台地使用VS/Eclipse/etc的优点。
可能还有很多,但简而言之,这就是为什么我们中的一些人在工业、学术界或地下室里不停地工作的基础:)。