盲人程序員的編程生涯

openkk 12年前發布 | 21K 次閱讀 程序員

        本文來自于 Stackoverflow 上的一個問題,下面確實有很多盲人程序員作出回答,筆者感觸頗深,故整理成文。

        具體技術細節不必深究,主要了解一下他們的工作狀態,以期讓更多的朋友關注殘障人士的生活與工作。

        原問題大致如下:

視力應是大多數程序員理所當然應有的感官之一,大多數程序員都會花大量的時間盯著顯示器(尤其是當他們處于巔峰狀態時),不過我知道還存在很多的盲人程序員(比如目前供職于 Google 的T.V. Raman)。

如果你是個盲人(或者視力衰退嚴重),那么你會怎樣設置你的開發環境來協助你編程呢?

        下面整理一些精彩回答:

        From Jared:

我是一個完全失明的大學生,已經參加過幾個編程實習,所以我的回答將基于這些經驗。我使用 Windows xp 作為操作系統,使用 Jaws 的合成語音來閱讀屏幕上的內容。對于 Java 編程,我使用 eclipse,因為它是一個全功能可訪問的 IDE。

以我的經驗來看,java 編程中使用 SWT 作為 GUI 工具的可訪問性要比使用 Swing 好一些,這就是為什么我放棄 netbeans 的原因。對于 .net 編程,我使用 visual studio 2005,因為這是我實習時使用的標準版本,而且通過使用 Jaws 和一系列腳本(比如簡化表單設計的腳本),可以使操作變得非常簡單。

對于C和 C++ 編程,我使用 cygwin 加上 gcc 作為編譯器,使用 emacs 或者 vim 作為編輯器,視具體工作而定。我的大部分實習涉及到Z/OS 的編程,我使用一個登錄會話通過 Cygwin 訪問 USS 子系統,并且使用 C3270 作為我的 3270 模擬器來訪問主框架的 ISPF 部分。

我一般依賴于帶點字(Braille:點字/盲文)顯示(譯者注:下圖為一種點字設備)的合成語音。我發現在標點很重要且比較復雜的情況下使用點字顯示的話,工作效率會更高。一個例子就是當有很多 if 聲明很許多嵌套的括號和 JCL 時,標點就顯得非常重要了。

更新

我在玩 cygwin 下的 Emacspeak http://emacspeak.sourceforge.net,我不確定這個作為編程使用的編輯器是否有用,因為它有時好像反應遲鈍,不過我還沒有查看任何配置選項。

盲人程序員的編程生涯

        From Saqib

我是個盲人,我已經使用 Windows、mac、Linux 和 DOS 編程大約 13 年了,使用的語言從C/C++、Python、Java、C#到各種小眾語言。盡管原問題是關于環境配置的,不過我認為最好應該從盲人如何使用電腦開始回答。

有些人使用有聲環境,例如T. V. Raman 樓上提到的 Emacspeak 環境。迄今為止更通用的解決辦法是使屏幕閱讀器運行在后臺,并監視操作系統的活動,然后通過合成語音或者物理點字顯示(一般一次顯示 20 至 80 個字符)提醒用戶。這就意味著盲人可以使用任何可訪問的應用程序了。

那么,我自己這些日子在用 Visual Studio 2008,只做了很少的更改。我關掉了一些諸如在輸入時顯示錯誤等功能,因為我發現這個功能很容易使你分心。在加入微軟行列之前,我的所有開發工作都在類 似記事本(Notepad)這樣的標準的文本編輯器中完成,所以仍然沒有任何自定設置。

讓屏幕閱讀器讀出縮進也是可能的,我自己不用這個功能,因為 Visual Studio 會處理這些,并且 C# 中是用大括號的。但是在像 Python 這樣空格很關鍵的語言中就很重要了。最后,Emacspeak 可以使用不同的聲音/音高來指出語法的不同部分(關鍵字、注釋、標識符等)。

        From Manish

我是個盲人,已經編程大約 12 年了。目前我是 Sapient Corporation(一個劍橋的顧問公司,專注基于 Web 的和胖客戶端的企業解決方案)的高級架構師。我使用幾個屏幕閱讀器,不過大部分是在 Windows 上使用的 Jaws 和 NVDA。

我大部分在微軟平臺上工作,使用 visual studio 作為開發環境。我也使用像 MS Sql 企業版以及其他的數據庫操作工具、網絡監控工具等。我曾嘗試花些時間使用 emacspeak,不過由于我的工作大部分基于 MS 平臺,所以不會在那上面花太多時間。我也花過幾年在 Linux 上使用C++,大部分時候是在 windows 上使用記事本或者 visual studio 完成所有的編碼工作,然后用 samba 與 linux 環境共享文件。我也使用 borland C 來做些小實驗。最近在玩 python,它普遍被認為是對盲人用戶最不友好的程序語言,因為它使用縮進作為嵌套機制。說到這里,最流行的開源屏幕閱讀器 NVDA 就完全是用 python 寫的,而且這個項目的一些貢獻者本身就是盲人。一個很有意思的問題就是,我經常被問到,作為一個架構師我是如何處理各種圖表的(UML、viso 以及 rational rose 等等)。Visio 可能是最易操作的圖表工具了,我還可以寫 jaws 腳本來為我讀出 rational rose 圖表。我曾用過一個叫T-dub(technical diagram understanding for the blind)的工具來處理 UML 2.0 圖表,它是一些德國大學開發出來的。我還用過一個基于 java 的非常丑陋的工具叫做 magic draw 來處理模型驅動(model-driven)的開發工作,并且作為 androMDA 項目的一個提交者(commiter)協助開發了從 UML 模型生成 .Net 代碼的生成器。

總體來說,我發現我的自力更生激勵了整個團隊。例如,當一個圖表對溝通/文檔化一個設計非常重要時,實際的設計過程牽扯到大量的思考和頭腦風暴,并 且當設計定稿時,你的一個隊友可以幫你快速將其整理為一個干凈整齊的圖片。人們通常將這種情況視為缺乏獨立性或能力,而我卻認為這是純正的相互依存,因為 我很確定那個隊友靠他/她自己或著幾人輪流都不可能想出那樣的設計,如果我依賴他將設計文檔化也是如此。我遇到的大部分障礙都是基于工具的不可訪問的問 題。例如所有的 oracle 的產品都鼓吹其訪問性好多年了(鄙視他們),但在團隊環境中卻只搞了個在屏幕閱讀器和自定義腳本之上的額外的防御層。

        From Edward Kmett

我為大底特律盲人輔導會(Greater Detroit Society for the Blind)工作三年了,運營一個為盲人訪問量身定制的 BBS,并且和很多盲人用戶一起工作探尋如何能夠更好地滿足他們的需求,并幫助新的盲人用戶訓練他們使用軟件和硬件。如果不出意外的話,我至少學會了閱讀 點字(盲文)來防止萬一我遇到跟他們一樣的處境。

大部分盲人計算機使用者及程序員使用類似屏幕閱讀器的東西。Jaws 在某種程度上是最受歡迎的。幸運地,現今的大多數應用程序都提供了某種形式的殘障人士訪問方式。你可能需要將你的環境稍微調整一下,讓它少說一些,比如,可以考慮禁止 Visual Studio 中的智能感知(Intellisense)。

點字顯示設備就 不那么常用了,相比之下也貴很多,它可以顯示 40 或 80 列文本,而且可以用在當精確定位/標點很重要的場合。而屏幕閱讀器可以配置成快速讀出標點,很多人發現它容易令人分心,其實通過它可以很容易找到適合自己 的方式。Jaws 可以配置成顯示驅動的,因此你無法兼顧可訪問性應用程序。

同時,很多法律上的盲人用戶仍然有一點遺留的視力。使用高對比度的背景和放大功能可以幫助很多這樣的用戶。

在 Windows 中使用 ToggleKeys 可以在你不小心敲擊了”caps lock“、”num lock“、”scroll lock“等健時讓你能夠聽到。

我知道至少有一個 Haskell(譯者注: 一種純函數式編程語言)程序員使用屏幕閱讀器,并且不使用 Haskell 的布局規則直接編程,并且不使用非慣用(non-idiomatic)的選項,而是用支持{;}的。因為它不會使閱讀器讀出大量的標點,而且還得計算出 Haskell 布局規則中精確的縮進,這樣他就不會太過分心。同樣的,我還聽說一些盲人程序員在寫 Python 的時候發些牢騷。

最終,你還是要學會發揮自己的長處。

        From Kyle Burton

可以從 Blinux 項目開始:http://leb.net/blinux/

這個項目描述了如何獲得 Emacspeak(帶文本閱讀的編輯器)并且還有許多其他資源。

我曾經跟這樣的一個人工作,他的視力導致他不能使用顯示器,但他使用屏幕閱讀器軟件并花費大量時間使用基于文本的應用程序和 shell 也工作得很好。

維基百科上有個屏幕閱讀器得列表,也可以從這里開始:

http://en.wikipedia.org/wiki/Listofscreen_readers

        From ifwzh

我是來自中國北京的一個研究生,我是計算機科學專業的并且大部分工作是編程。我天生弱視,需要使用放大工具才能看清屏幕上的文字。我在 windows 上使用微軟的放大鏡工具,在 linux 上使用 compiz 的放大插件。我一般將工具設置成放大原始字體的三倍。對于我來說,放大工具就夠了,主要問題是速度,我需要移動鼠標來確保指針跟隨我所看到的文本,微軟的 放大鏡提供了一個選項”自動跟隨文本編輯光標“,這可以讓我在編輯文本或編碼時擺脫頻繁移動鼠標的困擾。但是這招并不總是管用,因為編輯軟件或者 IDE 可能不支持。linux 上的放大工具比較難用。KDE 中自帶的 KMag 擁有令人恐怖的刷新率,讓我的眼睛很不舒服,我現在使用的 compiz 的放大插件還可以,不過沒有自動聚焦功能。對我來說,iOS 提供了十分完美的全屏放大解決方案,尤其是 ipad 的9.7英寸顯示屏。它們的自動聚焦就沒必要了,因為我很少用它們編輯或編碼。安卓(Android)系統只提供了非常少的可訪問性功能,只有像搖動反饋 這樣的功能,對我根本沒用。在安卓上沒有什么放大工具,更別提像 iOS 上這種全屏放大的功能了。我以前研究 Qt,希望做一個 linux 上好用的放大工具,甚至是安卓上的,不過很難有什么進展。

        通過以上一些回答,我們可以大致了解一些盲人程序員每天的工作狀況,我很驚訝居然有這么多盲人程序員,對于我們來說,可能蒙上眼睛就什么也干不了了,真的很敬佩這些同仁們!

        我也希望能夠通過本文讓更多 Web 開發者更加關注網站的可用性及可訪問性問題,更多地關注殘障人士。

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!