表頭美化圖檔
視障程式設計師是如何編程的?
伯樂在線

撰文時間:2016/7/17

 

  
  
  
  先來看看一位盲人程式設計師 T.V. Raman 的故事:14 歲時因青光眼失去了視力,在志願者的幫助下他完成了大學學業, 1989 年得到一台盲人用語音合成器和當時最先進的讀屏軟體,來到美國攻讀博士學位,後來並成為了一名計算機科學家。Raman 目前在谷歌研究院工作,之前在 IBM 和 Adobe 工作,他可以在 23 秒內復原盲人魔方。他現在使用電腦沒有任何障礙,他天天都上網瀏覽信息,他還可以使用特別的手機來看地圖。他的完整故事看這篇:
    
    有位網友看過 Raman 的故事後,在 Quora 上問「有視覺障礙的程式設計師是怎樣編程的?」伯樂在線摘譯了 3 位網友的分享,其中 2 位就是盲人程式設計師。
    
    1.Tommy MacWilliam ,Quora 工程經理
    
    你曾經參加過 Python 拼寫比賽嗎?想像一下如果你每天的生活都是如此該怎樣。
    
    我最好的朋友之一在高三時被確診為 Leber 遺傳性視神經病變,Leber 遺傳性視神經病變會造成視力逐漸衰退。在剛入大學時,他就失去了雙眼的視力。和我一樣,他主修計算機科學;但不同的是,看他編程是我見過的最不可思議的事情。
    
    在大學裡,他曾經把螢幕放大器和文字轉語音軟體組裝到一起。使用的放大器叫做 MAGic,MAGic 可以迅速放大螢幕上的某一點到只顯示出幾個字母。而顯示器本身就是一個巨大的 30 英寸的投影機樣式的東西,並專門為有視覺障礙的人進行了顯示優化。至於文本轉語音的軟體,我記得他嘗試了很多不同的產品,更喜歡使用 JAWS。我特別記得的是,他說現有的開源解決方案相較於他使用的昂貴大型設備(這完全得益於我們學校的支持)就是一個笑話。
    
    他總是把螢幕閱讀器的速度設置為最快,大概每分鐘刷新 300 字,而有聲書的文本通常以這個速度的一半來播放。在我聽來這就像一種完全不同的語言,但他聽起來卻很順暢。事實上,他更喜歡用一個版本非常古老的火狐瀏覽器(3.5 版本左右),因為這個版本能夠很好地支持他的螢幕閱讀器。他幾乎完全使用鍵盤快捷鍵,這使他能夠快速找到應用程式並在窗口之間迅速切換。也就是說,這個放大了 40 倍的螢幕幾乎不可能跟上他操作的速度,但他卻比我見過的許多其他程式設計師更有效率。
    
    他的具體編程方法。他用的是 emacs 編輯器(我想這是因為他對鍵盤快捷鍵已經極其熟練了),當滾動翻頁時,螢幕閱讀器會讀出代碼。同樣,螢幕閱讀器會讀出終端輸出,因此任何會導致不能轉換成文字或聲音的問題都是不被允許的。如你所想,程式語言甚至比英文單詞更難理解。沒有大量使用語法符號的程式語言則更容易理解,像 Python,Ruby 等更像英語的友好語言更容易理解。並且,程序中使用縮進比使用花括號更難理解,因為你要聽出每一行使用的 tab 鍵數。
    
    為了更好的描述我的意思,我說一件發生在我們第二堂導論課上的事。這節課用 OCaml 語言教,這是一種語法獨特的函數式語言。他不得不聽著這樣讓人不著頭腦的話:「let rec fib n equals return match n with return pipe one hyphen greater than… semicolon semicolon」等等。並一度在一個不能編譯的代碼庫的上工作。他一遍遍聽著大聲朗讀的荒謬的語法,但是一切聽起來都那么正常。直到他在課上想盡辦法,一個視力正常的助教才指出,由於這樣或那樣的原因,螢幕閱讀器把數字 「0」 讀成了字母 「o」 (即「哦」的聲音)。而這只是一個全新的,視力正常的程式設計師無需處理的bug。
    
    值得一提的是,他也對 HTML 輔助規範充滿了熱情,尤其是 ARIA。而網際網路上的大多數網站完全忽略了這件事,儘管要實現它是多麼的微不足道。對他而言,網站有與沒有 ARIA 功能就像白天與黑夜的區別。
    
    現在,他是一名全職軟體工程師。
    
    2. Parham Doustdar
    
    我是一名盲人 PHP 開發者。我編程的方式不同於其他答案下提到的那些方法。在繼續之前,讓我告訴你一些我自己的事。
    
    我生來就是失明的。我眼睛的狀況其實並不重要,重點是,我從未有過「失去視力」的問題,因為它不可能發生。這就使很多事情變得簡單了。
    
    我個人使用的開發工具是 IDE 。而很多盲人朋友並不使用 IDE,最可能是因為 IDE 的介面對於我們的螢幕閱讀器來說並不是完全的無障礙。我們的同行有一個問題就是太忙了以致於只照顧到了大多數人而忽視了少數人的聲音。舉個例子,Jetbrains IDE 的整個系列都不是無障礙的。而版本 IDEA-111425 才是為盲人和有視覺障礙的人準備的無障礙開發工具。
    
    我個人使用的是 Zend Studio,這是一款基於 Eclipse 的 IDE,大部分人可能都知道或者用過。Eclipse 是那些使你愉悅的產品之一,它的無障礙功能實現的非常好。雖然並沒有完全實現無障礙,但是實現 80% 就已經夠我使用了。作為盲人,你要學會使用你能夠獲得的來生活。
    
    因此,這就使得我不必記憶方法簽名,文檔和其他所有的事情,從而使我的大腦可以更高效地去思考其他的事情–就像遺留代碼庫為什麼會這麼難理解。
    
    我沒有使用布萊葉盲文鍵盤。布萊葉鍵盤只有 6 個鍵,輸入每一個字符都必須同時按住 6 個鍵,這就要比有很多鍵可以一個個快速按下的鍵盤慢很多。我也沒有使用盲文顯示器,我只是把螢幕閱讀器的速度設為 420 個字每分鐘,這要比用盲文顯示器閱讀要快得多。
    
    我認為最重要的是,你必須要領先於你的同行。作為盲人,你先天就要很遭遇很多困難,因為你沒有大多數人都有的視覺感官。這不會是個大問題,除非是我之前提過的多數人與少數人的對比。既然你是少數人,你就必須設法做到周圍很多人認為是理所當然的事。 在這一點上,我相信力量是建立在你被禁用的能力之上的:由此你學習去提升自己,去前進,去打破不可能,而不是每天擔心失業。
    
    3. Lucas Radaelli,Google工程師
    
    我完全雙目失明。我在 Google 工作,編寫代碼來更改排名算法。就我個人經驗而言,我認為許多盲人程式設計師的編程方式,和視力正常的同事們並無太大差別。大多數時候,我都會用 Emacs 編輯器(Emacs 有個朗讀擴展叫 Emacspeak),還有瀏覽器來查閱谷歌內部頁面。
    
    主要差別是,我們要麼聽螢幕上的內容,要麼通過盲文顯示器來閱讀。我不能對使用盲文顯示器發表評論,因為我還沒有買過這樣的顯示器(太昂貴了),但我可以聊聊程式設計師是如何通過聽力來寫代碼的。
    
    僅通過聽力來編程的最大挑戰在於,你必須能記住很多東西。一行一行地聽代碼。也可以逐字或按字符來聽代碼,問題來了,在規定的時間內要聽完螢幕內的代碼。聽完後,你還不能動手編程,要查找函數定義,了解傳參的變量名。然後記住它。如果想再次查找函數定義,我會設置一個標記。大家會發現,這樣做或許會耗費一些寶貴時間。所以提高記憶力非常有用。
    
    我喜歡通過 Emacspeak 編程,比如說,在寫 C++ 代碼時,它能提供了許多非常酷的東西。在朗讀變量、函數和其他程式語言元素時,Emacspeak 會使用不同的語調。所以很容易區分,你也可以把這個看成是聲音版的代碼高亮工具吧。
    
    最後補充回應大家的好奇心:盲人程式設計師不用縮進代碼。我們通常是寫完代碼後,再對縮進代碼。我們在這方面沒有優勢。
    
    或許你會問,那遇到 Python 代碼又如何?我挺喜歡 Python 的,即便在縮進這點上……但我發明了一些技巧,比如在每個縮進塊的結尾跳一行,這樣我可以很快知道代碼塊何時結束了。當我閱讀其他人的代碼時,我會先在螢幕閱讀器上設置一個選項,告訴我縮進級別。但我發現這樣有點煩,因為我讀的每一行代碼,螢幕閱讀器都會讀出該行代碼中的 space 數量。
參考網址:http://https://read01.com/adgR36.html
Top