视力是大多数程序员认为理所当然的感觉之一。大多数程序员会花几个小时看电脑显示器(尤其是在他们处于区域的时候),但我知道有些程序员是盲人(比如目前在谷歌工作的 TV Raman)。
如果您是一个盲人(或逐渐失明),您将如何设置开发环境来帮助您进行编程?
(请每个答案提出一个建议。这个问题的目的是将好的想法带到顶部。此外,屏幕阅读器可以更早地阅读好想法。)
视力是大多数程序员认为理所当然的感觉之一。大多数程序员会花几个小时看电脑显示器(尤其是在他们处于区域的时候),但我知道有些程序员是盲人(比如目前在谷歌工作的 TV Raman)。
如果您是一个盲人(或逐渐失明),您将如何设置开发环境来帮助您进行编程?
(请每个答案提出一个建议。这个问题的目的是将好的想法带到顶部。此外,屏幕阅读器可以更早地阅读好想法。)
我是一个完全失明的大学生,有过几次编程实习,所以我的答案将基于这些。我使用 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 部分。
我通常依靠合成语音,但确实有盲文显示器。我发现我通常在语音方面工作得更快,但在标点符号很重要且变得复杂的情况下使用盲文显示器。例如,带有大量嵌套括号的 if 语句和标点符号非常重要的 JCL。
我在 cygwin http://emacspeak.sourceforge.net下玩 Emacspeak我不确定这是否可以用作编程编辑器,因为它似乎有点反应迟钝,但我没有看过任何配置选项然而。
我是盲人,并且已经在 Windows、Mac、Linux 和 DOS 上编程了大约 13 年,使用的语言包括 C/C++、Python、Java、C# 和各种较小的语言。虽然最初的问题是关于配置环境的,但我认为最好通过看看盲人如何使用计算机来回答。
有些人使用谈话环境,例如其他答案中提到的 TV Raman 和 Emacspeak 环境。到目前为止,更常见的解决方案是让屏幕阅读器在后台运行,监控操作系统活动并通过合成语音或物理盲文显示器(通常一次显示 20 到 80 个字符)提醒用户。这意味着盲人可以使用任何可访问的应用程序。
因此,这些天我个人使用 Visual Studio 2008,并且只进行了很少的修改即可运行它。我关闭了某些功能,例如在我输入时显示错误,因为我发现这会分散注意力。在加入微软之前,我所有的开发都是在像记事本这样的标准文本编辑器中完成的,所以再一次没有定制。
可以配置屏幕阅读器来宣布缩进。我个人不使用这个,因为 Visual Studio 会处理这个,而 C# 使用大括号。但这在像 Python 这样空格很重要的语言中非常重要。最后,Emacspeak 确实使用不同的声音/音高来表示语法的不同部分(关键字、注释、标识符等)。
我是盲人,过去 12 年左右一直是程序员。目前是一名高级架构师,在 Sapient Corporation(一家位于剑桥的咨询公司,创建基于 Web 和基于胖客户端的企业解决方案)工作。我使用了几个屏幕阅读器,但大多坚持使用 Jaws for windows 和 NVDA。
我主要在 Microsoft 平台和 Visual Studio 作为我的环境工作。我还使用 MS Sql 企业工作室等工具进行数据库访问、网络监控等。我尝试花一些时间在 emacspeak 上,但由于我的工作主要基于 MS 平台,因此从未真正花很多时间在那里。我还花了几年时间在 linux 上研究 C++——主要使用 Windows 上的记事本或 Visual Studio 进行所有编码,然后使用 samba 与 linux 环境共享文件。也将 borland C 用于一些实验性的东西。最近一直在玩python,正如上面其他人所指出的,它对盲人用户特别不友好,因为它是使用缩进作为嵌套机制编写的。话虽如此,NVDA,最受欢迎的开源屏幕阅读器完全使用 python 编写,该项目的一些提交者本身就是盲人。作为一名架构师,我经常被问到的一个特别有趣的问题是我如何处理图表 - UML 和 visio 以及理性玫瑰等。Visio 可能是最容易使用的图表工具。我能够编写下颚脚本来为我阅读理性的玫瑰图。我使用了一些德国大学开发的名为 T-dub(盲人技术图表理解)的工具来访问 UML 2.0 图表。曾使用基于 java 的丑陋工具(称为magic draw)进行模型驱动开发,并且是 androMDA 项目的提交者,并帮助从 UML 模型开发 .Net 代码生成器。作为一名架构师,我经常被问到的一个特别有趣的问题是我如何处理图表 - UML 和 visio 以及理性玫瑰等。Visio 可能是最容易使用的图表工具。我能够编写下颚脚本来为我阅读理性的玫瑰图。我使用了一些德国大学开发的名为 T-dub(盲人技术图表理解)的工具来访问 UML 2.0 图表。曾使用基于 java 的丑陋工具(称为magic draw)进行模型驱动开发,并且是 androMDA 项目的提交者,并帮助从 UML 模型开发 .Net 代码生成器。作为一名架构师,我经常被问到的一个特别有趣的问题是我如何处理图表 - UML 和 visio 以及理性玫瑰等。Visio 可能是最容易使用的图表工具。我能够编写下颚脚本来为我阅读理性的玫瑰图。我使用了一些德国大学开发的名为 T-dub(盲人技术图表理解)的工具来访问 UML 2.0 图表。曾使用基于 java 的丑陋工具(称为magic draw)进行模型驱动开发,并且是 androMDA 项目的提交者,并帮助从 UML 模型开发 .Net 代码生成器。我能够编写下颚脚本来为我阅读理性的玫瑰图。我使用了一些德国大学开发的名为 T-dub(盲人技术图表理解)的工具来访问 UML 2.0 图表。曾使用基于 java 的丑陋工具(称为magic draw)进行模型驱动开发,并且是 androMDA 项目的提交者,并帮助从 UML 模型开发 .Net 代码生成器。我能够编写下颚脚本来为我阅读理性的玫瑰图。我使用了一些德国大学开发的名为 T-dub(盲人技术图表理解)的工具来访问 UML 2.0 图表。曾使用基于 java 的丑陋工具(称为magic draw)进行模型驱动开发,并且是 androMDA 项目的提交者,并帮助从 UML 模型开发 .Net 代码生成器。
总的来说,我发现在一个可以发挥自己优势的团队环境中,我最能茁壮成长。例如,虽然图表对于交流/记录设计非常有用,但实际的设计过程涉及大量的思考和头脑风暴,当设计完成后,您的一位团队成员可以帮助您快速拼凑出一张整齐的画画出来的。人们错误地将上述内容误解为缺乏独立性或能力,而我认为这是纯粹的相互依赖——因为我确信单独的队友永远不可能靠他/她自己和在-转身,如果我依靠他来记录设计,就这样吧。我面临的大多数障碍是基于工具的不可访问性。
我是一名盲人开发人员,我在 Windows、GNU Linux 和 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 个应用程序(Accessible minesweeper、accessible fruitmachine 和 Programar a ciegas RSS),我必须通过代码设计所有界面。这是一项艰苦的工作,但我可以管理每个控件的所有功能。Eclipse 有一个可访问的代码编辑器,但其他开发工具(如调试控制台、设计插件或文档区域)为盲人用户的辅助工具带来了问题。
对于盲人开发人员来说,文档也是一个问题。很多样例和演示都使用图片来展示说明(设置环境设置如图)
我认为问题不在于盲目。问题是公司和开发团队认为可访问性会影响最终软件,但不会影响开发软件。他们认为盲人用户应该是客户,但盲人用户不能成为开发伙伴。
盲人协会要求产品和服务的可访问性,但他们忘记了盲人开发人员。盲人可以担任律师、记者、教师,但盲人开发人员即使对盲人来说也是一个奇怪的概念。很多时候我感到孤独,因为我的一些盲人朋友无法理解我的工作。
您可以在我的博客http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/中阅读我对这个问题的看法。 网页中有翻译工具。抱歉,我没有翻译。
Emacs 有许多扩展允许盲人用户操作文本文件。您必须咨询该主题的专家,但 emacs 具有文本到语音的功能。而且可能更多。
此外,还有 BLinux:
盲人Linux。已经存在了很长时间。我觉得十几年了,而且很成熟。
请记住,“盲人”是一系列条件——有些人在法律上是盲人,可以阅读一个非常大的显示器或在放大镜的帮助下,还有一些人根本没有视力。我记得有一个大学同学有一个特殊的设备可以放大书籍,还有一个特殊的软件可以用来放大屏幕的一部分。她正在努力完成大学学业,因为她的视力越来越差,即将完全消失。
编程也有一系列需求——有些人擅长编写大量代码,而有些人则更擅长看大局和架构。我想考虑到屏幕界面带来的困难,失明可能会增强你获得大局的能力......
Hanselman最近与一位盲人开发人员进行了一个非常有趣的播客。
我在大底特律盲人协会工作了三年,运行一个专为盲人访问量身定制的 BBS,并与许多盲人用户一起研究如何更好地满足他们的需求,并与新盲人用户一起让他们适应可用的硬件和当时可用的软件产品。如果不出意外,我至少学会了阅读盲文作为对冲我曾经在同样情况下结束的案例!
大多数盲人计算机用户和程序员都使用某种屏幕阅读器。尤其是大白鲨很受欢迎。幸运的是,如今大多数主要应用程序都提供某种形式的无障碍访问。您可能需要稍微调整您的环境以减少喋喋不休,例如考虑在 Visual Studio 中禁用 Intellisense。
盲文显示器不太常见,而且相对昂贵得多,可以显示 40 或 80 列文本,并且可以在精确定位/标点符号很重要时使用。虽然屏幕阅读器可以配置为使用标点符号,但很多人发现它会分散注意力,并且在许多情况下更容易通过它来感觉自己的方式。Jaws 可以配置为驱动显示器,因此您无需处理可访问性应用程序。
此外,许多合法盲人用户仍然有一些视力。使用高对比度背景和放大功能可以帮助很多这些用户。
在 Windows 中使用 ToggleKeys 可以让您听到当您不小心点击模式“大写锁定”、“数字锁定”、“滚动锁定”等键之一时的声音。
我知道至少有一个 Haskell 程序员使用屏幕阅读器并且在不使用 Haskell 布局规则的情况下显式编程,而是选择使用相当非惯用但支持{;}
的 's 代替,因为它更容易/更少分散他的注意力他的屏幕阅读器阅读标点符号,而不是让他找出符合 Haskell 布局规则的确切缩进。同样,我听到一些盲人程序员抱怨他们何时必须编写 Python。
最终,您将学会发挥自己的优势。
我不记得出处了,但我听说过/读过一种可听语法“着色”的形式——这样就可以将字符串分配读作
foo 等于引号 这是一个字符串引号
字符串部分将以不同的音高或声音阅读,以使元素的分离更加清晰。
一个起点是 Blinux 项目:
该项目描述了如何获得 Emacspeak(文本到语音的编辑器)并拥有许多其他资源。
我与一个视力正常但阻止他们使用显示器的人一起工作——他们在屏幕阅读器软件方面做得很好,并且花了很多时间使用基于文本的应用程序和外壳。
维基百科的屏幕阅读器包列表是另一个起点:http ://en.wikipedia.org/wiki/List_of_screen_readers
我是中国北京的一名研究生。我主修计算机科学,我的很多工作都是编程。我天生视力低下,我需要使用放大工具才能清楚地看到屏幕上的字体。我在 windows 上使用 microsoft 的 mgnify 工具,如果在 linux 上使用 compiz 的 magnify 插件。我通常将该工具设置为原始字体大小的三倍。对我来说放大工具没问题,主要问题是速度,我必须移动鼠标才能让光标跟随我正在查看的文本,微软的放大提供了“自动跟随文本编辑点”的选项,这让我从编辑或编码时连续鼠标移动。但它并不总是有效,因为编辑软件或 IDE 可能不支持。linux上的放大工具很难用。KMag自带的KDE刷新率很差,眼睛不舒服,我现在用的compiz的放大插头还可以,但是没有自动对焦(自动对焦)的功能。iOS 为我提供了非常完美的全屏放大解决方案,尤其是在 ipad 的 9.7 英寸屏幕上。不需要自动对焦,因为我几乎不使用它们来编码或做其他编辑工作。Android 提供的辅助功能很少,只有抖音反馈之类的,对我来说没什么用。android上没有任何好的放大工具,更不用说iOS上的全屏放大等高级功能。我以前学Qt,想在linux上,甚至在android上做一个有用的放大工具。但几乎没有什么进展。但没有自动对焦功能(对焦自动跟随)。iOS 为我提供了非常完美的全屏放大解决方案,尤其是在 ipad 的 9.7 英寸屏幕上。不需要自动对焦,因为我几乎不使用它们来编码或做其他编辑工作。Android 提供的辅助功能很少,只有抖音反馈之类的,对我来说没什么用。android上没有任何好的放大工具,更不用说iOS上的全屏放大等高级功能。我以前学Qt,想在linux上,甚至在android上做一个有用的放大工具。但几乎没有什么进展。但没有自动对焦功能(对焦自动跟随)。iOS 为我提供了非常完美的全屏放大解决方案,尤其是在 ipad 的 9.7 英寸屏幕上。不需要自动对焦,因为我几乎不使用它们来编码或做其他编辑工作。Android 提供的辅助功能很少,只有抖音反馈之类的,对我来说没什么用。android上没有任何好的放大工具,更不用说iOS上的全屏放大等高级功能。我以前学Qt,想在linux上,甚至在android上做一个有用的放大工具。但几乎没有什么进展。Android 提供的辅助功能很少,只有抖音反馈之类的,对我来说没什么用。android上没有任何好的放大工具,更不用说iOS上的全屏放大等高级功能。我以前学Qt,想在linux上,甚至在android上做一个有用的放大工具。但几乎没有什么进展。Android 提供的辅助功能很少,只有抖音反馈之类的,对我来说没什么用。android上没有任何好的放大工具,更不用说iOS上的全屏放大等高级功能。我以前学Qt,想在linux上,甚至在android上做一个有用的放大工具。但几乎没有什么进展。
当我在读研究生时,我们的研究团队中有一个失明的成员。他年纪大了一点,大概40多岁。他告诉我们他是如何编写他的第一台计算机(这远在文本转语音普及之前)以摩尔斯电码输出屏幕内容的。为了克服明显的先有鸡还是先有蛋的问题,他每次都必须从头开始完全重写代码,直到代码运行良好,可以让他读回代码。
现在他使用文本转语音,尽管他在实际编写任何代码之前对代码进行了非常彻底的计划,以最大限度地减少调试循环。
他也很擅长做 PowerPoint 演示文稿,尽管他视力不佳,但其格式与任何有视力的演示者的一样好。
回到新西兰后,我认识一个患有黄斑变性的人,所以视力不全。他是一位非常有才华的程序员,最终使用了 Delphi,因为他可以通过识别单词形状来工作。使用类似 Pascal 的语法比使用 C-ish 波浪括号更容易。他有一个网站,但似乎根本没有提到黄斑变性,所以我不会命名他。
我是盲人,从几个月开始,我将 VINUX(基于 Ubuntu 的 Linux 发行版)与 SODBEANS(带有名为 SAPPY 的插件的 netbeans 版本,添加了 TTS 支持)一起使用。这个解决方案效果很好,但有时我更喜欢启动 Win XP 和 NVDA 来在 FireFox 上启动许多页面,因为当您尝试打开 3 个以上的 FireFox 窗口时,Vinux 不能很好地工作......
正如许多人指出的那样,emacspeak 一直是许多老黑客的持久解决方案跨平台。由于它支持 Linux 和 Mac 开箱即用,它已成为我开发 Windows 不可知项目的首选方式。
对于通过听觉而不是视觉来实际掌握语法的问题,我发现如果不在同一个比赛场地上,存在多种技术可以使语法接近。
例如,听觉图标可以代替语言描述。您可以为一行缩进的距离设置音调。音调越长,缩进越远。由于音调可以与文本到语音的同时播放,因此信息在同一时间范围内传递,并且不会序列化如此基本的东西的通信。
盲文可以快速准确地为用户解码一行的确切语法。这对于在日常生活中使用盲文的人来说更有用;最大的优点是随机访问显示的内容。可刷新单元通常在每个字符单元上方都有路由器键,可以将光标置于该单元。不用摆弄箭头键 O(n) op vs O(1) 访问。
听觉维度(音高、速率、音量、拐点、丰富度、重音等)可以传达一个概念(关键字、类别、变量、错误等)。例如,评论可以以单调的变化形式阅读......如果我可以这么说的话:)。
Emacs 和其他编辑器在较小程度上(Visual Studio)允许编码人员以语义方式仔细阅读程序(下一个块、折叠块、向下 defun、跳转到 def、向上分析树等)。这样做,您可以非常快速地获得整个项目结构的“大”图;使用 Cedet 之类的扩展,您可以获得 VS/Eclipse/etc 跨平台和文本编辑器的优点。
可能会继续下去,但简而言之,这就是为什么我们中的一些人在工业界、学术界或地下室中进行黑客攻击的基础:)。
harald van Breederode是荷兰著名的盲人 Oracle DBA 专家、培训师和演讲者。他的博客包含一些对视障人士有用的提示。
一群来自南伊利诺伊大学爱德华兹维尔分校和华盛顿州立大学的学生正在为盲人开发一种编程语言:
盲文键盘到底是什么?
有诸如盲文书写器之类的东西,但您永远不会将盲文书写器用作计算机的输入设备。
如果您只是在谈论带有盲文符号的键盘,这也是一个非常糟糕的主意。打字时你将有更多的键可以触及,而且速度仍然会更慢。
触摸打字不是一种视觉技能,盲人可以像有视力的人一样做到这一点。
NVDA 是一个很好的开源屏幕阅读器。
我认为这在使用结对编程原理的极限编程中会很有效。如果您正在为盲人制作软件,那么谁能更好地制作它,然后是真正与业务需求保持联系的人,所以我认为这根本不是牵强附会。
至于编写代码,除非有某种反馈,否则我认为一个人可能会在语法方面遇到困难。不过,音频反馈可能会有所帮助。
发明一种插入USB端口的设备怎么样?基本上是一块“橡胶片”,它会自我修改以显示你的代码的盲点,让盲人阅读它而不是听到它?
有多种工具可以帮助盲人或视力不佳的人,包括语音反馈和盲文键盘。http://www.rnib.org.uk/Pages/Home.aspx是一个很好的网站,可以就这些问题提供帮助和建议。
有一次我遇到了 Sam Hartman,他是 2000 年以来著名的 Debian 开发人员,而且是个盲人。在这次采访中,他谈到了 Linux 用户的可访问性。他使用 Debian 和 gnome-orca 作为屏幕阅读器,它与 Gnome 配合使用,并且“在说 Iceweasel/Firefox 和 Libreoffice 方面做得比较好”。
具体谈到编程,他说:
虽然 [gnome-orca] 确实会说 gnome-terminal,但它在说终端程序方面还不够好,我觉得使用它很舒服。因此,我使用 Emacspeak 包运行 Emacs。在其中,我运行 Emacs 终端仿真器,在其中,我倾向于运行 Screen。为了增加乐趣,我经常在内部屏幕中运行额外的 Emacs 实例。