视觉是大多数程序员认为理所当然的感官之一。大多数程序员会花几个小时盯着电脑显示器(尤其是在他们全神贯注的时候),但我知道有些程序员是盲人(比如目前在谷歌工作的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.
其他回答
有一次我遇到了Sam Hartman,他是一个著名的Debian开发人员,从2000年开始,他是盲人。在这次采访中,他谈到了Linux用户的可访问性。他使用Debian和Gnome -orca作为屏幕阅读器,它与Gnome一起工作,并且“在Iceweasel/Firefox和Libreoffice方面做得相对不错”。
在谈到编程时,他说:
虽然[地精-虎鲸]会说地精终端,但它真的不够好 说终端程序,我很舒服地使用它。所以,我跑了 Emacspeak包。在其中,我运行Emacs 在终端模拟器中,我倾向于运行Screen。为了增加 有趣的是,我经常在内部运行额外的Emacs实例 屏幕。
harald van Breederode是荷兰著名的Oracle DBA专家、培训师和演讲者,他是一位盲人。他的博客为视障人士提供了一些有用的建议。
我在大底特律盲人协会工作了三年,经营一个专为盲人访问而设计的BBS,并与许多盲人用户合作,以更好地满足他们的需求,并与新盲人用户合作,让他们适应当时可用的硬件和软件产品。如果不出意外的话,我至少学会了阅读盲文,以避免自己陷入同样的境地!
大多数盲人电脑用户和程序员使用某种屏幕阅读器。《大白鲨》尤其受欢迎。幸运的是,目前大多数主要应用程序都提供了某种形式的残疾人访问。你可能需要稍微调整你的环境来减少杂音,例如考虑在Visual Studio中禁用智能感知。
盲文显示器不太常见,而且相对昂贵得多,可以显示40或80列文本,并且可以在精确定位/标点符号很重要的情况下使用。虽然屏幕阅读器可以配置成快速读出标点符号,但很多人觉得这会分散注意力,而且在很多情况下,你更容易自己摸索。Jaws可以配置为驱动显示,因此您不必同时处理辅助应用程序。
此外,许多合法失明的用户仍有一定程度的视力。使用高对比度背景和放大功能可以帮助这些用户。
在Windows中使用ToggleKeys会让你听到当你不小心点击一个模式“caps lock”,“num lock”,“scroll lock”等键。
I know at least one Haskell programmer who uses a screen reader and who explicitly programs without using Haskell's layout rules, and instead opts to use the rather non-idiomatic, but supported {;}'s instead, because it is easier/less distracting for him to get his screen reader to read off punctuation than for him to figure out exact indentation that complies with Haskell's layout rules. On that same note, I've heard some grumbling from a couple of blind programmers about when they have to write Python.
最终,你学会了发挥自己的优势。
我认为这在使用结对编程原理的极限编程中会很有效。如果你是为盲人开发软件,那么谁会比那些真正了解业务需求的人更适合做这个软件呢,所以我认为这一点都不牵强。
至于写代码,除非有某种反馈,否则我认为一个人可能会在语法上挣扎。音频反馈可能会有所帮助。
来自南伊利诺伊大学爱德华维尔分校和华盛顿州立大学的一组学生正在为盲人开发一种编程语言:
http://www.youtube.com/watch?v=lC1mOSdmzFc