Как вы можете программировать, если вы слепой?
Зрение - это одно из чувств, которое большинство программистов считают само собой разумеющимся. Большинство программистов часами смотрят на монитор компьютера (особенно во время, когда они находятся в зоне), но я знаю, что есть слепые программисты (такие как TV Raman, который в настоящее время работает на Google).
Если бы вы были слепым человеком (или медленно становились слепым), как бы вы настроили свою среду разработки, чтобы помочь вам в программировании?
(Одно предложение на ответ, пожалуйста. Цель этого вопроса - донести хорошие идеи до вершины. Кроме того, программы чтения с экрана могут прочитать хорошие идеи раньше.)
24 ответа
Я совершенно слепой студент колледжа, у которого было несколько стажировок по программированию, поэтому мой ответ будет основан на них. Я использую Windows XP в качестве своей операционной системы и челюсти, чтобы читать то, что появляется на экране для меня в синтетической речи. Для программирования Java я использую eclipse, так как это полнофункциональная IDE, которая доступна.
По моему общему правилу, Java-программы, использующие SWT в качестве инструментария GUI, более доступны, чем программы, использующие Swing, поэтому я держусь подальше от netbeans. Для любого программирования.net я использую Visual Studio 2005, так как это была стандартная версия, используемая во время моей стажировки, и она очень доступна с использованием Jaws и набора скриптов, которые были разработаны, чтобы сделать такие вещи, как конструктор форм, более доступными.
Для программирования на C и C++ я использую cygwin с gcc в качестве компилятора и emacs или vim в качестве редактора в зависимости от того, что мне нужно сделать. Большая часть моей стажировки была связана с программированием для Z/OS. Я использовал сеанс rlogin через Cygwin для доступа к подсистеме USS на мэйнфрейме и C3270 в качестве моего эмулятора 3270 для доступа к части ISPF мэйнфрейма.
Я обычно полагаюсь на синтетическую речь, но у меня есть дисплей Брайля. Я нахожу, что я обычно работаю быстрее с речью, но использую дисплей Брайля в ситуациях, когда пунктуация имеет значение и усложняется. Примерами этого являются операторы if с множеством вложенных скобок и JCL, где пунктуация невероятно важна.
Обновить
Я играю с Emacspeak под cygwin http://emacspeak.sourceforge.net/ Я не уверен, будет ли он пригоден для использования в качестве редактора программ, так как он выглядит несколько не отвечающим, но я не смотрел ни на один из параметров конфигурации еще.
Я слепой и уже 13 лет программирую на Windows, Mac, Linux и DOS, на языках C/C++, Python, Java, C# и различных небольших языках. Хотя первоначальный вопрос был о настройке среды, я думаю, что лучше ответить на него, посмотрев, как слепой человек будет использовать компьютер.
Некоторые люди используют среду разговора, такую как TV Raman и среда Emacspeak, упомянутые в других ответах. На сегодняшний день наиболее распространенным решением является наличие программы чтения с экрана, которая работает в фоновом режиме, отслеживая активность ОС и предупреждая пользователя с помощью искусственной речи или физического дисплея Брайля (обычно показывающего где-то от 20 до 80 символов одновременно). Это означает, что слепой человек может использовать любое доступное приложение.
Итак, я лично использую Visual Studio 2008 в эти дни и запускаю его с очень небольшими изменениями. Я отключаю некоторые функции, такие как отображение ошибок при вводе текста, поскольку это меня отвлекает. До прихода в Microsoft вся моя разработка велась в стандартном текстовом редакторе, таком как Блокнот, так что никаких настроек.
Можно настроить программу чтения с экрана для объявления отступа. Лично я не использую это, поскольку Visual Studio заботится об этом, а C# использует фигурные скобки. Но это было бы очень важно для такого языка, как Python, где пробелы имеют значение. Наконец, Emacspeak использует разные голоса / высоту тона для обозначения различных частей синтаксиса (ключевые слова, комментарии, идентификаторы и т. Д.).
Я слепой и был программистом в течение последних 12 лет или около того. В настоящее время я работаю старшим архитектором и работаю в Sapient Corporation (консалтинговая компания на базе кембриджа, занимающаяся разработкой корпоративных решений как на основе веб-технологий, так и для крупных клиентов). Я использую несколько программ чтения с экрана, но в основном придерживаюсь Jaws для Windows и NVDA.
Я в основном работал над платформой Microsoft и визуальной студией в качестве своего окружения. Я также использую такие инструменты, как корпоративная студия MS Sql и другие, для доступа к БД, мониторинга сети и т. Д. Я пытался провести некоторое время с emacspeak, но, поскольку моя работа в основном была основана на платформе MS, я никогда не проводил там много времени. Я также провел пару лет, работая над C++ в linux - в основном использовал блокнот или visual studio на windows для всего кодирования, а затем samba для обмена файлами со средой linux. Также использовал borland C для некоторых экспериментальных вещей. Недавно поигрался с python, который, как уже отмечали другие люди, особенно недружелюбен для слепого пользователя, потому что он написан с использованием отступа в качестве механизма вложения. Сказав это, NVDA, самая популярная программа для чтения с экрана с открытым исходным кодом, написана полностью с использованием python, и некоторые коммитеры в этом проекте сами по себе слепы. Особенно интересный вопрос, который мне часто задают как архитектору, - как мне работать с диаграммами - UML, Visio, рациональной розой и т. Д. Visio, вероятно, является наиболее доступным инструментом построения диаграмм. Я был в состоянии написать сценарии челюстей, чтобы читать рациональные диаграммы роз для меня. Я использовал инструмент под названием T-dub (понимание технических диаграмм для слепых), разработанный каким-то немецким университетом для доступа к диаграммам UML 2.0. Использовал уродливый инструмент на основе Java под названием magic draw для разработки, управляемой моделями, и был участником проекта androMDA и помог разработать генератор кода.Net из модели UML.
В целом, я считаю, что я лучше всего развиваюсь в командной среде, где я могу работать над своими сильными сторонами. Например, в то время как диаграмма чрезвычайно полезна для сообщения / документирования проекта, сам процесс проектирования требует много размышлений и мозгового штурма, а когда проект был продуман, один из ваших товарищей по команде может помочь вам быстро собрать аккуратно нарисованный картина из этого. Люди неправильно истолковывают вышесказанное как недостаток независимости или способностей, в то время как я рассматриваю это как чистую взаимозависимость - так как я уверен, что один товарищ по команде никогда бы не смог придумать такой дизайн самостоятельно и в -включи, если я от него завису, документирую дизайн, пусть будет так. Большинство препятствий, с которыми я сталкиваюсь, - это недоступность инструментов. Например, все продукты Oracle постепенно снижались в доступности на протяжении многих лет (позор им), и командная среда в основном позволяет мне дополнительный уровень защиты от них сверх моих программ чтения с экрана и пользовательских сценариев.
Я слепой разработчик и работаю под 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 имеет доступный редактор кода, но другие инструменты разработки, такие как отладочная консоль, плагины для проектирования или область документации, создают проблемы для вспомогательных инструментов для незрячих пользователей.
Документация является проблемой и для слепых разработчиков. Многие образцы и демонстрации используют изображения, чтобы показать объяснение (установите параметры среды, как вы можете на картинке)
Я думаю, что вопрос не в том, чтобы быть слепым. Вопрос заключается в том, что компании и группы разработчиков считают, что доступность влияет на конечное программное обеспечение, но не влияет на разработку программного обеспечения. Они думают, что слепой пользователь должен быть клиентом, но слепой пользователь не может быть помощником разработчика.
Слепые ассоциации просят доступности для продуктов и услуг, но они забыли слепых разработчиков. Слепые могут работать юристами, журналистами, учителями, но слепой разработчик - странная концепция даже для слепых. Много раз я чувствую себя одиноким, потому что некоторые мои слепые друзья не могут понять мою работу.
Вы можете прочитать мое мнение об этой проблеме в этой статье на испанском языке в моем блоге http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/ на веб-странице есть инструмент для перевода. Извините, но я не перевел это.
Emacs имеет ряд расширений, позволяющих слепым пользователям манипулировать текстовыми файлами. Вам нужно проконсультироваться с экспертом по этой теме, но в emacs есть возможности преобразования текста в речь. И, вероятно, больше.
Кроме того, есть BLinux:
Линукс для слепых. Был вокруг в течение очень долгого времени. Думаю, более десяти лет и очень зрелый.
Имейте в виду, что "слепой" - это целый ряд состояний - есть такие, кто юридически слеп, который может читать действительно большой монитор или с помощью увеличения, а затем есть те, у кого вообще нет зрения. Я помню одноклассницу в колледже, у которой было специальное устройство для увеличения книг и специальное программное обеспечение, которое она могла использовать для увеличения части экрана. Она усердно работала, чтобы закончить колледж, потому что ее зрение ухудшалось и собиралось полностью исчезнуть.
Программирование также имеет спектр потребностей - некоторые люди хорошо разбираются в большом и большом количестве кода, а некоторые лучше разбираются в общей картине и архитектуре. Я полагаю, что, учитывая трудности, связанные с интерфейсом экрана, слепота может улучшить вашу способность получить общую картину...
Я работал в Большом Детройтском обществе для слепых в течение трех лет, управляя BBS, предназначенным для слепого доступа, и работал с рядом слепых пользователей над тем, как лучше удовлетворить их потребности, и с новыми слепыми пользователями, чтобы они привыкли к доступному оборудованию и предложения программного обеспечения, которые были доступны в то время. Если уж на то пошло, я, по крайней мере, научился читать шрифт Брайля как защиту от случая, когда я попадал в ту же ситуацию!
Большинство слепых пользователей и программистов используют программы для чтения с экрана. Особенно популярны челюсти. К счастью, большинство крупных приложений в наши дни предлагают доступ для людей с ограниченными возможностями. Возможно, вам придется немного настроить свою среду, чтобы уменьшить шум, например, рассмотреть возможность отключения Intellisense в Visual Studio.
Дисплей Брайля встречается реже, сравнительно намного дороже и может отображать 40 или 80 столбцов текста и может использоваться, когда важно точное позиционирование / пунктуация. В то время как программа чтения с экрана может быть настроена для устранения пунктуации, многие люди считают ее отвлекающей, и во многих случаях легче почувствовать ваш путь через нее. Челюсти могут быть настроены для управления дисплеем, поэтому вы не будете манипулировать приложениями для специальных возможностей.
Кроме того, многим юридически слепым пользователям все еще остается хоть немного видимости. Использование высококонтрастных фонов и функция увеличения могут помочь многим из этих пользователей.
Использование ToggleKeys в Windows позволит вам услышать, когда вы случайно нажмете одну из модальных клавиш "caps lock", "num lock", "scroll lock" и т. Д.
Я знаю, по крайней мере, одного программиста на Haskell, который использует программу чтения с экрана и который явно программирует, не используя правила компоновки Haskell, и вместо этого предпочитает использовать довольно не идиоматический, но поддерживаемый {;}
Вместо этого, потому что ему легче / меньше отвлекать его, чтобы его программа чтения с экрана считывала знаки препинания, чем для него, чтобы выяснить точный отступ, который соответствует правилам компоновки Haskell. На этой же ноте я слышал ворчание от пары слепых программистов о том, когда им приходится писать на Python.
В конечном счете, вы учитесь играть на своих сильных сторонах.
У Хансельмана недавно был действительно интересный подкаст со слепым разработчиком.
Я не могу вспомнить источник, но я слышал / читал о форме слышимого синтаксиса "раскраски" - так что вместо строкового назначения читается как
фу равно кавычка это строковая кавычка
струнная часть будет читаться с другим тоном или голосом, чтобы сделать разделение элементов более четким.
Начнем с проекта Blinux:
Этот проект описывает, как получить Emacspeak (редактор с преобразованием текста в речь) и имеет много других ресурсов.
Я работал с одним человеком, который почти ничего не видел, но мешал им использовать монитор - они хорошо работали с программным обеспечением для чтения с экрана и проводили много времени, используя текстовые приложения и оболочку.
Список пакетов для чтения с экрана в Википедии - еще одно место для начала: http://en.wikipedia.org/wiki/List_of_screen_readers
Я аспирант в Пекине, Китай. Я специализируюсь в области компьютерных наук, и большая часть моей работы - программирование. Я родился с плохим зрением, мне нужно использовать увеличительные инструменты, чтобы четко видеть шрифты на экране. Я использую инструменты mgnify от Microsoft на Windows и использую плагин Compiz для увеличения, если на Linux. Я обычно устанавливаю инструмент для увеличения в три раза больше исходного размера шрифта. Для меня инструменты maginify - это нормально, главная проблема в скорости, мне нужно двигать мышь, чтобы курсоры следовали за текстом, который я смотрю, в microsoft magnify есть опция "автоматически следовать за точками редактирования текста", которая устанавливает меня из непрерывное движение мыши при редактировании или кодировании. Но это не всегда работает, потому что программное обеспечение для редактирования или IDE может не поддерживать это. Лупы в Linux сложны в использовании. KMag, поставляемый с KDE, имеет ужасную частоту обновления, что делает мои глаза некомфортными, увеличительные штекеры compiz, которые я использую сейчас, в порядке, но не имеют функции автофокуса (автофокусировка следующая). iOS предоставляет мне идеальное решение с полным увеличением экрана, особенно на 9,7-дюймовом экране iPad. в этом случае автофокусировка не нужна, потому что я почти не использую их для кодирования или другого редактирования. Android предоставляет очень мало функций доступа, только в виде обратной связи, что бесполезно для меня. На Android нет никаких хороших инструментов для увеличения, не говоря уже о продвинутой функции, такой как полноэкранное увеличение на iOS. Раньше я изучал Qt, хочу собрать полезные инструменты для увеличения на Linux, даже на Android. Но вряд ли есть некоторый прогресс.
Когда я учился в аспирантуре, у нас был член команды исследователей, который был слепым. Он был немного старше, может быть, в середине 40-х. Он рассказал нам о том, как он запрограммировал свой первый компьютер (который был задолго до обычного преобразования текста в речь) для вывода содержимого экрана в азбуке Морзе. Чтобы преодолеть очевидную проблему с курицей и яйцом, ему приходилось каждый раз полностью переписывать код с нуля, пока он не заработал достаточно хорошо, чтобы он мог прочитать его обратно.
Теперь он использует преобразование текста в речь, хотя он очень тщательно планирует код, прежде чем фактически писать какой-либо из них, чтобы минимизировать цикл отладки.
Он также неплохо выступал с презентациями в PowerPoint, которые, несмотря на отсутствие зрения, были почти так же хорошо отформатированы, как и любой зрячий докладчик.
Этот пост содержит информацию о том, как команда Visual Studio делает свой продукт доступным:
Лаборатория специальных возможностей Visual Studio Core Tour
Многие программисты используют Emacspeak:
Я слеп, и с некоторых месяцев я использую VINUX (дистрибутив linux на основе Ubuntu) с SODBEANS (версия netbeans с плагином SAPPY, который добавляет поддержку TTS). Это решение работает довольно хорошо, но иногда я предпочитаю запускать Win XP и NVDA для запуска многих страниц в FireFox, потому что Vinux не очень хорошо работает, когда вы пытаетесь открыть более 3 окон FireFox...
Вернувшись в Новую Зеландию, я знал кого-то, у кого была макулярная дегенерация, поэтому он был частично замечен Он очень талантливый программист и в конечном итоге использовал Delphi, потому что он мог работать, распознавая формы слов. Это было проще сделать с помощью Pascal-подобного синтаксиса, чем с волнистой скобкой C-ish. У него есть веб-сайт, но, похоже, он вообще не упоминает дегенерацию желтого пятна, поэтому я не буду его называть.
Как уже отмечали многие, emacspeak был устойчивым кроссплатформенным решением для многих старых хакеров. Поскольку он поддерживает Linux и Mac "из коробки", он стал моим предпочтительным средством разработки проектов Windows Egnostic.
Что касается вопроса о том, как на самом деле избавиться от синтаксиса с помощью слухового, а не визуального, я обнаружил, что существует множество методов, позволяющих подобрать один, если не на одном игровом поле.
Слуховые значки могут стоять на месте для словесных дескрипторов для одного примера. Вы можете поставить тональные сигналы для определения отступа строки. Чем длиннее тон, тем дальше отступ. Поскольку тоны могут воспроизводиться параллельно с преобразованием текста в речь, информация поступает в один и тот же период времени и не сериализует передачу чего-то столь базового.
Брайль может быстро и точно декодировать пользователю точный синтаксис строки. Это что-то более полезное для людей, которые используют шрифт Брайля в повседневной жизни; Самым большим преимуществом является произвольный доступ к содержимому дисплея. Обновляемые единицы обычно имеют ключи маршрутизатора над каждой символьной ячейкой, которая может поместить курсор в эту ячейку. Не возиться с клавишами со стрелками O(n) op против O(1) доступа.
Слуховая размерность (высота, скорость, объем, перегиб, насыщенность, стресс и т. Д.) Может передать концепцию (ключевое слово, класс, переменная, ошибка и т. Д.). Например, комментарии могут быть прочитаны в монотонном перегибе... подходящем, если можно так выразиться:).
Emacs и другие редакторы в меньшей степени (Visual Studio) позволяют кодеру симметрично просматривать программу (следующий блок, блок сгиба, defun вниз, переход к def, переход по дереву разбора и т. Д.). Вы можете очень быстро получить "большую" картину структуры всего проекта, делая это; с такими расширениями, как Cedet, вы можете получить все преимущества VS/Eclipse/etc кроссплатформенно и в текстовом редакторе.
Может быть, можно продолжать и продолжать, но это в двух словах, это основа того, почему некоторые из нас взламывают в промышленности, в адакдемии или в наших подвалах:).
Группа студентов из Университета Южного Иллинойса Эдвардсвилль и Университета штата Вашингтон работают над языком программирования для слепых:
Харальд ван Бридероде - известный голландский эксперт Oracle DBA, тренер и ведущий, который слеп. Его блог содержит несколько полезных советов для слабовидящих людей.
Какой в мире будет клавиатура Брайля?
Есть такие вещи, как писатели Брайля, но вы никогда не будете использовать один в качестве устройства ввода для компьютера.
Если вы просто говорите о клавиатуре с символами Брайля, это также будет очень плохой идеей. У вас будет гораздо больше клавиш для набора текста, и это все равно будет медленнее.
Сенсорная печать НЕ является визуальным навыком, слепой может делать это так же, как зрячий.
Я думаю, что это будет хорошо работать в экстремальном программировании с использованием принципа парного программирования. Если вы создаете программное обеспечение для слепых людей, которым лучше его создавать, то кому-то, кто в буквальном смысле будет связан с бизнес-требованиями, так что я не думаю, что это вообще слишком далеко.
Что касается написания кода, ну, если не было какой-то обратной связи, я думаю, что человек может бороться с синтаксисом. Аудио обратная связь может помочь в какой-то момент.
NVDA - хорошая программа чтения с экрана с открытым исходным кодом для победы.
Когда я встретил Сэма Хартмана, он является известным разработчиком Debian с 2000 года и слепым. В этом интервью он говорит о доступности для пользователя Linux. Он использует Debian и gnome-orca в качестве средства чтения с экрана, он работает с Gnome и "неплохо говорит на Iceweasel/Firefox и Libreoffice".
Говоря конкретно о программировании, он говорит:
В то время как [gnome-orca] говорит на gnome-terminal, он не достаточно хорош для того, чтобы говорить на терминальных программах, и мне удобно его использовать. Итак, я запускаю Emacs с пакетом Emacspeak. В рамках этого я запускаю эмулятор терминала Emacs, и в рамках этого я обычно запускаю Screen. Для дополнительного удовольствия я часто запускаю дополнительные экземпляры Emacs на внутренних экранах.
А как насчет изобретения какого-то устройства, которое вы подключаете к USB-порту, и это было бы в основном "листом резины", который изменял бы себя так, чтобы отображать код вашего кода, позволяя слепым людям читать его, а не слышать?
Существует множество инструментов для помощи слепым или слабовидящим, в том числе речевая обратная связь и клавиатура Брайля. http://www.rnib.org.uk/Pages/Home.aspx - хороший сайт для помощи и советов по этим вопросам.