03.06 盲人程序員的編程生涯

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


具體技術細節不必深究,主要了解一下他們的工作狀態,以期讓更多的朋友關注殘障人士的生活與工作。
  原問題大致如下:[blockquote]
視力應是大多數程序員理所當然應有的感官之一,大多數程序員都會花大量的時間盯著顯示器(尤其是當他們處於巔峰狀態時),不過我知道還存在很多的盲人程序員(比如目前供職於Google的T.V. Raman)。
如果你是個盲人(或者視力衰退嚴重),那麼你會怎樣設置你的開發環境來協助你編程呢?[/blockquote]
  下面整理一些精彩回答:
  From Jared:[blockquote]
我是一個完全失明的大學生,已經參加過幾個編程實習,所以我的回答將基於這些經驗。我使用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),我不確定這個作為編程使用的編輯器是否有用,因為它有時好像反應遲鈍,不過我還沒有查看任何配置選項。

盲人程序員的編程生涯

[/blockquote]
  From Saqib[blockquote]
我是個盲人,我已經使用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可以使用不同的聲音/音高來指出語法的不同部分(關鍵字、註釋、標識符等)。[/blockquote]


  From Manish[blockquote]
我是個盲人,已經編程大約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的產品都鼓吹其訪問性好多年了(鄙視他們),但在團隊環境中卻只搞了個在屏幕閱讀器和自定義腳本之上的額外的防禦層。[/blockquote]
  From Edward Kmett[blockquote]
我為大底特律盲人輔導會(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的時候發些牢騷。
最終,你還是要學會發揮自己的長處。[/blockquote]
  From Kyle Burton[blockquote]
可以從Blinux項目開始:http://leb.net/blinux/
這個項目描述瞭如何獲得Emacspeak(帶文本閱讀的編輯器)並且還有許多其他資源。

我曾經跟這樣的一個人工作,他的視力導致他不能使用顯示器,但他使用屏幕閱讀器軟件並花費大量時間使用基於文本的應用程序和shell也工作得很好。
維基百科上有個屏幕閱讀器得列表,也可以從這裡開始:
http://en.wikipedia.org/wiki/Listofscreen_readers[/blockquote]
  From ifwzh[blockquote]
我是來自中國北京的一個研究生,我是計算機科學專業的並且大部分工作是編程。我天生弱視,需要使用放大工具才能看清屏幕上的文字。我在Windows上使用微軟的放大鏡工具,在Linux上使用compiz的放大插件。我一般將工具設置成放大原始字體的三倍。對於我來說,放大工具就夠了,主要問題是速度,我需要移動鼠標來確保指針跟隨我所看到的文本,微軟的放大鏡提供了一個選項”自動跟隨文本編輯光標“,這可以讓我在編輯文本或編碼時擺脫頻繁移動鼠標的困擾。但是這招並不總是管用,因為編輯軟件或者IDE可能不支持。Linux上的放大工具比較難用。KDE中自帶的KMag擁有令人恐怖的刷新率,讓我的眼睛很不舒服,我現在使用的compiz的放大插件還可以,不過沒有自動聚焦功能。對我來說,iOS提供了十分完美的全屏放大解決方案,尤其是iPad的9.7英寸顯示屏。它們的自動聚焦就沒必要了,因為我很少用它們編輯或編碼。安卓(Android)系統只提供了非常少的可訪問性功能,只有像搖動反饋這樣的功能,對我根本沒用。在安卓上沒有什麼放大工具,更別提像iOS上這種全屏放大的功能了。我以前研究Qt,希望做一個Linux上好用的放大工具,甚至是安卓上的,不過很難有什麼進展。[/blockquote]

  通過以上一些回答,我們可以大致瞭解一些盲人程序員每天的工作狀況,我很驚訝居然有這麼多盲人程序員,對於我們來說,可能蒙上眼睛就什麼也幹不了了,真的很敬佩這些同仁們!
  我也希望能夠通過本文讓更多Web開發者更加關注網站的可用性及可訪問性問題,更多地關注殘障人士。

盲人程序員的編程生涯


分享到:


相關文章: