как вы можете программировать, если вы слепой?

<p>зрение - это одно из чувств, которое большинство программистов считают само собой разумеющимся. большинство программистов часами смотрят на монитор компьютера (особенно в то время, когда они <em>в зоне</em>), но я знаю, что есть слепые программисты (такие как т. в. раман, который в настоящее время работает в google).</p><p>если бы вы были слепым человеком (или медленно становились слепым), как бы вы настроили свою среду разработки, чтобы помочь вам в программировании?</p><p>(одно предложение на ответ, пожалуйста. цель этого вопроса - донести хорошие идеи до вершины. кроме того, программы чтения с экрана могут прочитать хорошие идеи раньше.)</p>

<p>я совершенно слепой студент колледжа, у которого было несколько стажировок по программированию, поэтому мой ответ будет основан на них. я использую windows xp в качестве своей операционной системы и <a href="http://freedomscientific.com/products/fs/jaws-product-page.asp">челюсти</a> , чтобы прочитать то, что появляется на экране для меня в синтетической речи. для программирования java я использую eclipse, так как это полнофункциональный ide, который доступен.</p><p>по моему общему правилу, java программы, использующие swt в качестве инструментария gui, более доступны, чем программы, использующие swing, поэтому я держусь подальше от сетевых компонентов. для любого программирования .net я использую visual studio 2005, так как это была стандартная версия, используемая во время моей стажировки, и она очень доступна с помощью jaws и набора скриптов, которые были разработаны, чтобы сделать такие вещи, как конструктор форм, более доступными.</p><p>для программирования на c и c++ я использую cygwin с gcc в качестве компилятора и emacs или vim в качестве редактора в зависимости от того, что мне нужно сделать. большая часть моей стажировки была связана с программированием для z/os. я использовал сеанс rlogin через cygwin для доступа к подсистеме uss на мэйнфрейме и c3270 в качестве эмулятора 3270 для доступа к части ispf мэйнфрейма.</p><p>я обычно полагаюсь на синтетическую речь, но у меня есть дисплей брайля. я обычно работаю быстрее с речью, но использую дисплей брайля в ситуациях, когда пунктуация имеет значение и усложняется. примерами этого являются операторы if с множеством вложенных скобок и jcl, где пунктуация невероятно важна.</p><h2>обновление</h2><p>я играю с emacspeak под cygwin <a href="http://emacspeak.sourceforge.net">http://emacspeak.sourceforge.net</a> я не уверен, будет ли это полезным для использования в качестве редактора программ, так как кажется, что он несколько не отвечает, но я не посмотрел на любой из вариантов конфигурации еще.</p>

<p>я слеп, и уже 13 лет программирую на windows, mac, linux и dos, на языках c/c++, python, java, c # и различных небольших языках. хотя первоначальный вопрос был о настройке среды, я думаю, что лучше ответить на него, посмотрев, как слепой человек будет использовать компьютер.</p><p>некоторые люди используют среду разговора, такую как т. в. раман и среда emacspeak, упомянутые в других ответах. наиболее распространенным решением на сегодняшний день является наличие программы чтения с экрана, которая работает в фоновом режиме, отслеживая активность ос и предупреждая пользователя с помощью синтетической речи или физического дисплея брайля (обычно показывающего где-то от 20 до 80 символов одновременно). это означает, что слепой человек может использовать любое доступное приложение.</p><p>итак, я лично использую visual studio 2008 в эти дни и запускаю его с очень небольшими изменениями. я отключаю некоторые функции, такие как отображение ошибок при вводе текста, поскольку это меня отвлекает. до прихода в microsoft вся моя разработка велась в стандартном текстовом редакторе, таком как "блокнот", так что никаких настроек.</p><p>можно настроить программу чтения с экрана для объявления отступа. лично я не использую это, поскольку visual studio заботится об этом, а c # использует фигурные скобки. но это было бы очень важно для такого языка, как python, где пробелы имеют значение. наконец, emacspeak использует разные голоса/высоту тона для обозначения различных частей синтаксиса (ключевые слова, комментарии, идентификаторы и т.д.).</p>

<p>я слепой и был программистом в течение последних 12 лет или около того. в настоящее время я работаю старшим архитектором и работаю в sapient corporation (консалтинговая компания на базе кембриджа, занимающаяся разработкой корпоративных решений как на основе веб-технологий, так и для крупных клиентов) я использую несколько программ чтения с экрана, но в основном придерживаюсь jaws для windows и nvda.</p><p>в основном я работал над платформой microsoft и визуальной студией в качестве своего окружения. я также использую такие инструменты, как корпоративная студия ms sql и другие, для доступа к бд, мониторинга сети и т.д. я пытался провести некоторое время с emacspeak, но, поскольку моя работа в основном базировалась на платформе ms, я никогда не проводил там много времени. я также провел пару лет, работая над c++ на linux - в основном использовал блокнот или visual studio на windows для всего кодирования, а затем samba для обмена файлами со средой linux. также использовал borland c для некоторых экспериментальных вещей. недавно поигрался с python, который, как уже отмечали другие люди, особенно недружелюбен для слепого пользователя, потому что он написан с использованием отступа в качестве механизма вложения. сказав это, nvda, самая популярная программа для чтения с открытым исходным кодом, написана полностью с использованием python, и некоторые коммитеры в этом проекте сами по себе слепы. особенно интересный вопрос, который мне часто задают как архитектору, - как мне работать с диаграммами - uml, visio, rational rose и т.д. visio, пожалуй, самый доступный инструмент для построения диаграмм. я был в состоянии написать сценарии челюстей, чтобы читать рациональные диаграммы розы для меня. я использовал инструмент под названием t-dub (понимание технических диаграмм для слепых), разработанный каким-то немецким университетом для доступа к диаграммам uml 2.0. использовали уродливый инструмент на основе java под названием magic draw для разработки, управляемой моделями, а также участвовали в проекте andromda и помогли разработать генератор кода .net из модели uml.</p><p>в целом, я считаю, что больше всего процветаю в командной среде, где я могу работать над своими сильными сторонами. например, в то время как диаграмма чрезвычайно полезна для сообщения/документирования проекта, сам процесс проектирования требует много размышлений и мозгового штурма, а когда проект был продуман, один из ваших товарищей по команде может помочь вам быстро собрать аккуратно нарисованный картина из этого. люди неправильно истолковывают вышесказанное как недостаток независимости или способностей, в то время как я рассматриваю это как чистую взаимозависимость - так как я уверен, что один товарищ по команде никогда не смог бы придумать такой дизайн сам по себе и в -включи, если я от него завису, документирую дизайн, пусть будет так. большинство препятствий, с которыми я сталкиваюсь, - недоступность на основе инструментов. например, все продукты oracle постепенно снижали доступность (с позором для них), и командная среда в основном позволяет мне дополнительный уровень защиты от этих сверх моих программ чтения с экрана и пользовательских сценариев.</p>

<p>я слепой разработчик и работаю под windows, gnu linux и macos x. каждая платформа имеет разные рабочие процессы для слепых пользователей. это зависит от программы чтения с экрана, которую использует слепой разработчик. инструменты разработки не полностью доступны для слепых разработчиков. я могу набирать код и использовать функции компиляции во всех ide, но есть много проблем, если мне приходится проектировать интерфейс, используя такие инструменты проектирования, как interface builder, xglade или другие. когда я разрабатывал с borland delphi, я мог добавить элемент управления, например, кнопку, и я мог изменить каждый визуальный атрибут элемента управления, используя окно инспектора объектов. многие ide используют окна инспектора объектов для изменения визуальных и невизуальных атрибутов, но проблема для слепого разработчика заключается в добавлении новых элементов управления, поскольку метод добавления нового элемента управления состоит в перетаскивании элемента управления из палитры на холст. visual studio 200x использует альтернативные методы для этого, но интерфейс ide меняется в каждой новой версии, и это большая проблема, потому что программы чтения с экрана для windows нуждаются в специальной поддержке, используя сценарии, чтобы идентифицировать каждую область некоторой области. нестандартные приложения. слепой разработчик может использовать visual studio 2008 со своей программой чтения с экрана, но когда появляется новая версия этого ide, он должен ждать новой версии сценариев для этой версии ide. xcode with interface builder не имеет альтернативы для перетаскивания задач. я просил об этом apple много раз, но они работают в других вещах. я опубликовал 3 приложения в магазине приложений ("доступный тральщик", "фруктовая машина" и "programar a ciegas rss"), и мне пришлось разработать весь интерфейс с помощью кода. это тяжелая работа, но я могу управлять всеми функциями каждого элемента управления. eclipse имеет доступный редактор кода, но другие инструменты разработки, такие как отладочная консоль, плагины для проектирования или область документации, создают проблемы для вспомогательных инструментов для незрячих пользователей.</p><p>документация - это проблема и для слепых разработчиков. многие образцы и демонстрации используют изображения, чтобы показать объяснение (установите параметры среды, как вы можете на картинке)</p><p>я думаю, что вопрос не в том, чтобы быть слепым. вопрос заключается в том, что компании и группы разработчиков считают, что доступность влияет на конечное программное обеспечение, но не влияет на разработку программного обеспечения. они думают, что слепой пользователь должен быть клиентом, но слепой пользователь не может быть помощником разработчика.</p><p>слепые ассоциации просят доступности для продуктов и услуг, но они забыли слепых разработчиков. слепые могут работать юристами, журналистами, учителями, но слепой разработчик - странная концепция даже для слепых. много раз я чувствую себя одиноким, потому что некоторые мои слепые друзья не могут понять мою работу.</p><p>вы можете прочитать мое мнение об этой проблеме в этой статье на испанском языке в моем блоге <a href="http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/">http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los- desarrolladores-ciegos /</a> на веб-странице есть инструмент для перевода. извините, но я не перевел это.</p>

<p>emacs имеет ряд расширений, позволяющих слепым пользователям манипулировать текстовыми файлами. вам нужно проконсультироваться с экспертом по этой теме, но в emacs есть возможности преобразования текста в речь. и, вероятно, больше.</p><p>кроме того, есть blinux:</p><p> <a href="http://leb.net/blinux/">http://leb.net/blinux/</a> </p><p>линукс для слепых. был вокруг в течение очень долгого времени. думаю, более десяти лет и очень зрелый.</p>

<p>имейте в виду, что "слепой" - это целый ряд состояний - есть такие, кто юридически слеп, который может читать действительно большой монитор или с помощью увеличения, а затем есть те, у кого вообще нет зрения. я помню одноклассницу в колледже, у которой было специальное устройство для увеличения книг и специальное программное обеспечение, которое она могла использовать для увеличения части экрана. она усердно работала, чтобы закончить колледж, потому что ее зрение ухудшалось и собиралось полностью исчезнуть.</p><p>программирование также имеет спектр потребностей - некоторые люди хорошо разбираются в большом и большом количестве кода, а некоторые лучше разбираются в общей картине и архитектуре. я полагаю, что, учитывая трудности, связанные с интерфейсом экрана, слепота может улучшить вашу способность получить общую картину ...</p>

<p>у хансельмана был <a href="http://www.hanselman.com/blog/hanselminutespodcast125accessibilityinwebandrichapplications.aspx">действительно интересный подкаст со слепым разработчиком недавно</a> .</p>

<p>я работал в большом детройтском обществе для слепых в течение трех лет, управляя bbs, предназначенным для слепого доступа, и работал с рядом слепых пользователей над тем, как лучше удовлетворить их потребности, и с новыми слепыми пользователями, чтобы они адаптировались к доступному оборудованию и предложения программного обеспечения, которые были доступны в то время. если уж на то пошло, я, по крайней мере, научился читать шрифт брайля как защиту от случая, когда я попадал в ту же ситуацию!</p><p>большинство слепых пользователей компьютеров и программистов используют программы для чтения с экрана. <a href="http://www.freedomscientific.com/products/fs/jaws-product-page.asp">челюсти</a> особенно популярен. к счастью, большинство крупных приложений в наши дни предлагают доступ для людей с ограниченными возможностями. возможно, вам придется немного настроить свое окружение, чтобы уменьшить шум, например, рассмотрите возможность отключения intellisense в visual studio.</p><p>a <a href="http://en.wikipedia.org/wiki/refreshable\_braille\_display">дисплей брайля</a> встречается реже, сравнительно намного дороже и может отображать 40 или 80 столбцов текста и может использоваться, когда важно точное позиционирование/пунктуация. хотя программа чтения с экрана может быть настроена для устранения пунктуации, многие люди считают ее отвлекающей, и во многих случаях легче почувствовать ваш путь через нее. челюсти могут быть настроены для управления дисплеем, поэтому вы не будете манипулировать приложениями для специальных возможностей.</p><p>кроме того, многим юридически слепым пользователям по-прежнему остается хоть какой-то прицел. использование высококонтрастных фонов и функция увеличения могут помочь многим из этих пользователей.</p><p>использование togglekeys в windows позволит вам услышать, когда вы случайно нажмете одну из модальных клавиш "caps lock", "num lock", "scroll lock" и т.д.</p><p>я знаю, по крайней мере, одного программиста на haskell, который использует программу чтения с экрана и который явно программирует, не используя правила компоновки haskell, и вместо этого предпочитает использовать довольно не идиоматический, но поддерживаемый <code>{;}</code> вместо него, потому что ему легче/меньше отвлекаться, чтобы получить его программа чтения с экрана для чтения знаков препинания, чем для него, чтобы выяснить точные отступы, которые соответствуют правилам компоновки haskell. на этой же ноте я слышал ворчание от нескольких слепых программистов о том, когда им приходится писать на python.</p><p>в конечном счете, вы учитесь играть на своих сильных сторонах.</p>

<p>я не могу вспомнить источник, но я слышал/читал о форме слышимого синтаксиса "раскраски" - так что вместо строкового назначения читается как</p><blockquote> <p>фу равно кавычка это строковая кавычка</p> </blockquote><p>струнная часть будет читаться с другим тоном или голосом, чтобы сделать разделение элементов более четким.</p>

<p>я аспирант в пекине, китай. я специализируюсь на информатике, и большая часть моей работы - программирование. я родился с плохим зрением, мне нужно использовать увеличительные инструменты, чтобы четко видеть шрифты на экране. я использую инструменты mgnify от microsoft на windows и использую плагин compiz для увеличения, если на linux. я обычно устанавливаю инструмент для увеличения в три раза больше исходного размера шрифта. для меня инструменты maginify в порядке, главная проблема в скорости, мне нужно двигать мышь, чтобы курсоры следовали за текстом, на который я смотрю, microsoft magnify предоставляет опцию "автоматически следовать за точками редактирования текста", которая устанавливает меня из непрерывное движение мыши при редактировании или кодировании. но это не всегда работает, потому что программное обеспечение для редактирования или ide может не поддерживать это. лупы в linux сложны в использовании. kmag, поставляемый с kde, имеет ужасную частоту обновления, что делает мои глаза некомфортными, увеличительные разъемы compiz, которые я использую сейчас, в порядке, но не имеют функции автофокуса (автофокусировка после). ios предоставляет мне идеальное решение с полным увеличением экрана, особенно на 9,7-дюймовом экране ipad. в этом случае автофокусировка не нужна, потому что я почти не использую их для кодирования или другого редактирования. android предоставляет очень мало функций специальных возможностей, только как встряхивание обратной связи, что для меня бесполезно. на android нет хороших инструментов для увеличения, не говоря уже о продвинутой функции, такой как полноэкранное увеличение на ios. раньше я изучал qt, хочу создать полезные инструменты увеличения на linux, даже на android. но вряд ли есть некоторый прогресс.</p>

<p>начнем с проекта blinux:</p><p> <a href="http://leb.net/blinux/">http://leb.net/blinux/</a> </p><p>этот проект описывает, как получить emacspeak (редактор с преобразованием текста в речь) и имеет много других ресурсов.</p><p>я работал с одним человеком, который почти ничего не видел, но мешал им пользоваться монитором - они хорошо работали с программным обеспечением для чтения с экрана и проводили много времени, используя текстовые приложения и оболочку.</p><p>список пакетов для чтения с экрана в википедии - еще одно место для начала: <a href="http://en.wikipedia.org/wiki/list\_of\_screen\_readers">http://en.wikipedia.org/wiki/list\_of\_screen\_readers</a> </p>

<p>когда я учился в аспирантуре, у нас был член нашей исследовательской группы, который был слепым. он был немного старше, может быть, в середине 40-х. он рассказал нам о том, как он запрограммировал свой первый компьютер (который был задолго до обычного преобразования текста в речь) для вывода содержимого экрана в азбуке морзе. чтобы преодолеть очевидную проблему "курица и яйцо", ему приходилось каждый раз полностью переписывать код с нуля, пока он не заработал достаточно хорошо, чтобы он мог прочитать его обратно.</p><p>теперь он использует преобразование текста в речь, хотя он очень тщательно планирует код, прежде чем фактически писать какой-либо из них, чтобы минимизировать цикл отладки.</p><p>он также неплохо делал презентации в powerpoint, которые, несмотря на отсутствие зрения, были почти так же хорошо отформатированы, как и любой зрячий докладчик.</p>

<p>этот пост содержит информацию о том, как команда visual studio делает свой продукт доступным:</p><p> <a href="http://blogs.msdn.com/vsaccessibility/articles/232159.aspx">тур по лаборатории доступности для основной команды visual studio</a> </p><p>многие программисты используют emacspeak:</p><p> <a href="http://emacspeak.sourceforge.net/">emacspeak - the complete audio desktop</a> </p>

<p>вернувшись в новую зеландию, я знал кого-то, у кого была <a href="http://en.wikipedia.org/wiki/macular\_degeneration">макулярная дегенерация</a> , поэтому он был частично замечен. он очень талантливый программист и в конечном итоге использовал delphi, потому что он мог работать, распознавая фигуры word. это было проще сделать с помощью pascal-подобного синтаксиса, чем с волнистой скобкой c-ish. у него есть веб-сайт, но, похоже, он вообще не упоминает дегенерацию желтого пятна, поэтому я не буду его называть.</p>

<p>я слеп, и с некоторых месяцев я использую vinux (дистрибутив linux на основе ubuntu) с sodbeans (версия netbeans с плагином sappy, который добавляет поддержку tts). это решение работает довольно хорошо, но иногда я предпочитаю запускать win xp и nvda для запуска многих страниц в firefox, потому что vinux работает не очень хорошо, когда вы пытаетесь открыть более 3 окон firefox ...</p>

<p>как уже отмечали многие, emacspeak был устойчивым кроссплатформенным решением для многих старых хакеров. поскольку он поддерживает linux и mac из коробки, он стал моим предпочтительным средством разработки проектов windows egnostic.</p><p>что касается вопроса о том, чтобы фактически отказаться от синтаксиса с помощью слухового, а не визуального, я обнаружил, что существует множество методов, позволяющих приблизиться, если не на одном игровом поле.</p><p>слуховые значки могут стоять на месте для словесных дескрипторов для одного примера. вы можете установить тональность для отступа строки. чем длиннее тон, тем дальше отступ. поскольку тональные сигналы могут воспроизводиться параллельно с преобразованием текста в речь, информация поступает в один и тот же период времени и не сериализует передачу чего-то столь базового.</p><p>брайль может быстро и точно декодировать пользователю точный синтаксис строки. это что-то более полезное для людей, которые используют шрифт брайля в повседневной жизни; самым большим преимуществом является произвольный доступ к содержимому дисплея. обновляемые единицы обычно имеют ключи маршрутизатора над каждой символьной ячейкой, которая может поместить курсор в эту ячейку. нет необходимости возиться с клавишами со стрелками o(n) op vs o(1) доступ.</p><p>слуховая размерность (высота, скорость, объем, перегиб, насыщенность, стресс и т.д.) может передать концепцию (ключевое слово, класс, переменная, ошибка и т.д.). например, комментарии могут быть прочитаны в монотонном перегибе ... подходящем, если можно так выразиться :).</p><p>emacs и другие редакторы в меньшей степени (visual studio) позволяют кодеру симметрично просматривать программу (следующий блок, блок сгиба, defun вниз, переход к def, переход по дереву разбора и т.д.). вы можете очень быстро получить "большую" картину структуры всего проекта, делая это; с такими расширениями, как cedet, вы можете получить все преимущества vs/eclipse/etc кросс-платформенного и текстового редактора.</p><p>может быть, можно продолжать и продолжать, но это в двух словах, это основа того, почему некоторые из нас занимаются хакингом в промышленности, адакемии или в наших подвалах :).</p>

<p>группа студентов из университета южного иллинойса эдвардсвилль и университета штата вашингтон работают над языком программирования для слепых:</p><p> <a href="http://www.youtube.com/watch?v=lc1mosdmzfc">http://www.youtube.com/watch?v=lc1mosdmzfc</a> </p>

<p> <a href="http://prutser.wordpress.com/">харальд ван бридероде</a> - это известный голландский эксперт по oracle dba, тренер и ведущий, который слеп. его блог содержит несколько полезных советов для слабовидящих людей.</p>

<p>какой в мире будет клавиатура брайля?</p><p>есть такие вещи, как писатели брайля, но вы никогда не будете использовать один в качестве устройства ввода для компьютера.</p><p>если вы просто говорите о клавиатуре с символами брайля, это тоже будет очень плохой идеей. у вас будет намного больше клавиш для набора текста, и это все равно будет медленнее.</p><p>сенсорный набор текста <em>не</em> визуальный навык, слепой человек может делать это так же, как зрячий.</p>

<p>nvda - хорошая программа чтения с экрана с открытым исходным кодом для победы.</p>

<p>я думаю, что это будет хорошо работать в экстремальном программировании с использованием принципа парного программирования. если вы создаете программное обеспечение для слепых людей, которым лучше его создавать, то кому-то, кто в буквальном смысле будет связан с бизнес-требованиями, так что я не думаю, что это вообще слишком далеко.</p><p>что касается написания кода, ну, если не было какой-то обратной связи, я думаю, что человек может бороться с синтаксисом. аудио обратная связь может помочь в какой-то момент.</p>

<p>существует множество инструментов для помощи слепым или слабовидящим, включая речевую обратную связь и клавиатуры брайля. <a href="http://www.rnib.org.uk/pages/home.aspx">http://www.rnib.org.uk/pages/home.aspx</a> хороший сайт для помощи и советов по этим вопросам.</p>

<p>однажды я встретил сэма хартмана, он был известным разработчиком debian с 2000 года и слепым. на <a href="http://raphaelhertzog.com/2011/06/24/people-behin-debian-sam-hartman-kerberos-package-maintainer/">этом</a> интервью он говорит о доступности для пользователя linux. он использует debian и gnome-orca в качестве программы чтения с экрана, он работает с gnome и "довольно неплохо говорит на iceweasel/firefox и libreoffice".</p><p>говоря конкретно о программировании, он говорит:</p><blockquote> <p>в то время как [gnome-orca] говорит на терминале gnome, в терминальных программах он недостаточно хорош, чтобы мне было удобно его использовать. итак, я запускаю emacs с пакетом emacspeak. в рамках этого я запускаю эмулятор терминала emacs, и в рамках этого я обычно запускаю screen. для дополнительного удовольствия я часто запускаю дополнительные экземпляры emacs на внутренних экранах.</p> </blockquote>

<p>а как насчет изобретения какого-то устройства, которое вы подключаете к usb-порту, и это было бы "листом резины", который мог бы изменить себя, чтобы показать брейл-код вашего кода, позволяя слепым людям читать его, а не слышать?</p>