盲人程式設計師的程式設計生涯

姬光發表於2012-03-26

本文來自於Stackoverflow上的一個問題《 How can you program if you’re blind?》,下面確實有很多盲人程式設計師作出回答,筆者感觸頗深,故整理成文。

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

視力應是大多數程式設計師理所當然應有的感官之一,大多數程式設計師都會花大量的時間盯著顯示器(尤其是當他們處於巔峰狀態時),不過我知道還存在很多的盲人程式設計師(比如目前供職於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開發者更加關注網站的可用性及可訪問性問題,更多地關注殘障人士。

 

相關文章