Что это за пост? Он не похож на статью
Это действительно не статья. Это компиляция самых интересных, на мой взгляд, ответов на заглавный вопрос: «Как программируют слабовидящие программисты?» из обсуждения на Quora.com.
Почему я сделал перевод?
Ответы людей меня сильно впечатлили. Я никогда не думал, что люди сталкиваются с такими проблемами и не только не отчаиваются, а мужественно и смело эти проблемы преодолевают, сохраняя при этом оптимизм и радость к жизни. Это поразительно.
Как веб-разработчик, я, конечно, слышал о таинственных экранных дикторах и полумифических дисплеях Брайля. Кто-то там ими пользуется, но ведь это всё не в моём, а в каком-то совсем другом, особом, вебе, где специально обученные разработчики всё для них подготовили и по вечерам все вместе танцуют под луной.
Это не так. Совсем не так.
Нет никаких специально обученных разработчиков.
Нет никакого особого веба.
Веб один и он общий для всех. И никаких других разработчиков, кроме нас с вами, в нём нет. И именно мы с вами несём за него ответственность.
Именно мы с вами — те люди, которые делают его таким, как он есть. Именно из наших с вами рук пользователи получают веб-страницы. Разработчик — последний, кто вносит в веб-страницу правки и определяет, насколько она будет доступной для людей, которые вынуждены пользоваться вебом иначе — слепые ли они, парализованные ли, или их возможности каким-то иным образом ограничены. Это — социальная ответственность, хотим мы этого или нет.
Давайте же делать веб чуточку лучше, доступнее для всех и каждого, и пусть никто не уйдёт обиженным.
Пархам Даустэр, PHP-программист
Я — слепой PHP-программист. Способ, которым я пишу код, пожалуй, отличается от способов, упомянутых в других ответах. Прежде чем начать, давайте я немного расскажу о себе.
Я слеп от рождения. У меня никогда не было проблемы «потери зрения»: я им никогда не обладал. Это многое упрощает.
Лично я, в отличие от многих других незрячих, использую среду разработки. Мы пользуемся экранными дикторами, а интерфейсы сред разработки в большинстве своём для них плохо доступны. Например, экранным дикторам недоступны все среды разработки компании JetBrains. Это — один из минусов конкуренции в нашем обществе: люди слишком заняты заботой о большинстве, чтобы прислушиваться к меньшинству.
Я использую Zend Studio, основанную на всем известном Eclipse. Eclipse — приятное исключение: доступность реализована очень хорошо. Он доступен не полностью, но и 80% мне вполне хватает. Слепому выбирать не приходится.
Среда разработки эффективно избавляет от рутины вроде запоминания сигнатур методов, документации и множества других вещей, оставляя мне заботу о более насущных вещах (например, почему легаси-код — такой отстой).
Я не пользуюсь клавиатурой Брайля. Использовать всего лишь 6 клавиш, которые ещё и нужно нажимать одновременно для каждого символа — это слишком медленно. Сотня клавиш, которые можно очень быстро нажимать друг за другом — это намного, намного быстрее.
Дисплеем Брайля я тоже не пользуюсь. Вместо этого у меня стоит экранный диктор, настроенный на 420 слов в минуту. Это намного быстрее, чем читать с брайлевского дисплея.
Самое важное, по моему мнению, — быть впереди конкурентов. Для незрячего это уже само по себе сложно. Мы вынуждены конкурировать, не имея одного из чувств, которое есть у большинства людей в мире. Это не было бы большой проблемой, если бы не упоминавшийся мной выше конфликт интересов большинства с меньшинством. Находясь в меньшинстве, нужно находить способы получить то, что многие люди воспринимают как само собой разумеющееся. В этом, мне кажется, заключается сила, приходящая от слабости: приходится импровизировать, заставлять себя, достигать невозможного каждый день всего лишь чтобы не остаться безработным.
Томми Маквильям, мобильный инженер в Quora
Вы слышали про Python Bee? Теперь представьте что так выглядит ваш обычный день.
Одному из моих лучших друзей в старшей школе поставили диагноз «наследственная оптическая нейропатия Лебера», когда он учился в выпускном классе. НОНЛ постоянно снижала его зрение и на первом году обучения в колледже мой друг почти полностью ослеп. Его специализацией была информатика, и то, как он программировал, было одной из самых невероятных вещей, которые я видел в жизни.
В колледже он использовал комбинацию экранной лупы и экранного диктора. Экранная лупа называлась MAGic и позволяла ему увеличивать текст так, что на монитор умещалось всего лишь несколько символов. Сам монитор был огромным экраном свыше 30 дюймов, оптимизированным для слабовидящих. Экранным диктором был JAWS, хотя мой друг перепробовал множество других программ. Он говорил, что существующие программы с открытым кодом выглядят жалко в сравнении с очень дорогими программами, которыми он пользовался благодаря помощи нашей школы.
Мой друг всегда ставил экранный диктор на максимальную скорость чтения (наверное, свыше 300 слов в минуту). Для сравнения, аудиокниги обычно звучат вдвое медленнее. Для меня это звучало как совершенно другой язык, но он его отлично понимал. Мой друг предпочитал использовать абсурдно старую версию Firefox (3.5 или вроде того), потому что она лучше всего поддерживала его экранный диктор. Практически все действия он выполнял горячими клавишами, передвигаясь по приложениям и окнам с ошеломляющей скоростью. Всё это, вкупе с 40-кратным увеличением, делало практически невозможными попытки проследить за его действиями. При этом он работал эффективнее многих виденных мной программистов.
О том, как именно мой друг программировал.
Как редактор кода он использовал Emacs (думаю, из-за того, что наловчился с сумасшедшими горячими клавишами). Экранный диктор читал код, который он проматывал. Точно так же экранный диктор читал вывод терминала, так что исключалась любая возможность того, что что-то не будет озвучено. Как вы догадываетесь, программный код понять сложнее, чем английские слова. Хотя языки, не злоупотребляющие символами в синтаксисе, понимать проще. Более доступны те языки, которые «выглядят» похожими на английский, как Python, Ruby и подобные. Тем не менее, использование отступов вместо скобок довольно-таки усложняет жизнь — приходится внимательно выслушивать количество табов на каждой строке.
Чтобы вы лучше себе представляли общую картину, я расскажу забавный случай, случившийся на втором курсе. Мы изучали OCaml, функциональный язык с забавным синтаксисом. Мой друг был вынужден слушать чушь вроде let rec fib n равно return match n with return вертикальная черта один дефис больше, чем… точка с запятой точка с запятой и тому подобное. В этот день он работал с очень большим куском кода, который никак не компилировался. Он прослушивал этот нелепый синтаксис снова и снова, но не мог найти ни одной ошибки. Ничего не изменилось, пока он не пришёл в класс, где зрячий помощник преподавателя заметил, что по какой-то причине экранный диктор произносит цифру «0» как букву «О». Это был совершенно новый вид багов, с которыми не сталкиваются зрячие программисты.
Стоит также отметить, что он увлечён спецификацией доступности HTML, в особенности ARIA. Большинство сайтов в интернете её полностью игнорируют, несмотря на то, что она очень просто внедряется. То, как он пользуется сайтами с ARIA-атрибутами и без них — это небо и земля.
Сейчас он работает разработчиком ПО на полной ставке.
Стив Дони
Рон Морфорд — один из самых талантливых программистов, с которыми мне приходилось работать. У него было что-то под названием «синдром Марфана», из-за которого он полностью потерял зрение, когда ему было чуть больше двадцати. Я работал на него в начале 90-х, разрабатывая экранный диктор для Windows 3.1. Рон владел компанией Automated Functions, Inc, которая разрабатывала программы и железо для слепых. Одним из его первых продуктов был VERT. Это был ящик размером с обычный ПК, разработанный как посредник между компьютером и терминалом. Он отслеживал проходящий между ними трафик и преобразовывал его в речь. VERT мог произносить до 400 слов в минуту, а Рон их запоминал.
У Рона было невероятная память. Одним из первых проектов, которые я для него делал сразу после колледжа, был экранный диктор для DOS. Иногда я возился с ним полдня и, если у меня ничего не получалось, я шёл к Рону и спрашивал — «Что делает вот эта функция?». Рон помнил её построчно, хотя, возможно, не заглядывал в неё несколько месяцев.
До того, как Рон основал AFI, он был специалистом по компьютерной безопасности в NASA. Он рассказывал отличные истории о том, как тамошние программисты постоянно пытались хакать друг друга, чтобы найти дыры в ранних версиях Unix.
Я работал в области доступности около 8 лет, потом устроился в Microsoft и работая над реализацией доступности в Windows. За это время я видел множество слепых программистов. Они пользовались множеством разнообразных техник и инструментов, но, в основном это была стандартная клавиатура и речевой вывод. Были и клавиатуры Брайля, но мало кто пользовался ими ежедневно. На клавиатуре Брайля девять основных клавиш — по четыре для каждой руки и пробел; буквы вводятся комбинациями клавиш, составляющими алфавит Брайля. Как уже упоминали другие участники, ещё существует дисплей Брайля, с выдвигающимися и втягивающимися пластиковыми палочками. Но такие дисплеи невероятно дороги: 80-колоночный дисплей продавался за 8 000 $, хотя, я думаю, что он мог подешеветь за последние 20 лет.
Лукас Радэлли
Я абсолютно слеп. Я работаю на Google, участвую в разработке алгоритма ранжирования. По моему опыту и по тому, что я слышал от многих других слепых программистов, наш способ программирования не сильно отличается от способа наших зрячих коллег. Я пользуюсь в основном текстовым редактором (Emacs с расширением Emacspeak, озвучивающим текст) и браузером для просмотра внутренних страниц Google с документацией и прочим.
Главное отличие в том, что мы или слушаем то, что на экране, или читаем на дисплее Брайля. Ничего не могу сказать про использование этого дисплея, потому что у меня его никогда не было (слишком дорого), но могу поделиться некоторыми мыслями о том, как программировать на слух.
Самое трудное в программировании на слух в том, что нужно запоминать кучу всего. Вы двигаетесь от строки к строке, прослушивая их целиком. Можно прослушивать код пословно или же посимвольно. Отличие, как видите, в том, что одновременно доступна лишь малая часть кода. Вы не можете начать программировать, посмотрев имена входящих аргументов функции. Вы их помните. Если вам понадобится свериться с объявлением функции, то вы ставите закладку, переходите к объявлению, читаете его и возвращаетесь назад к закладке. Как можно заметить, это вовсе не мгновенный процесс, поэтому тренировка памяти становится необходимым навыком
Мне нравится программировать с помощью Emacspeak, потому что он хорошо подходит для программирования на C++. Например, в этой программе есть голосовые стили: она читает переменные, функции и другие части языка с разной интонацией. Это помогает разобраться, что есть что. Можно считать это аудиоподсветкой кода.
Напоследок, из интересного:
Слепые программисты не используют выравнивание кода. Обычно мы расставляем отступы уже после написания. Нам они не приносят никакой пользы.
Вы можете спросить: а как же Python?
Мне очень правится Python и даже необходимость выравнивать код не меняет этого. Я придумал некоторые техники: например, сдвигать строку в конец каждого блока отступов — так я могу очень быстро узнать, где блок заканчивается. При чтении чужого кода можно настроить диктор, чтобы он проговаривал глубину отступов, но меня слегка раздражает выслушивать, сколько пробелов на каждой строке.
Флориан Бэйджерс
Более развёрнутый ответ ФлорианаЯ пришёл сюда из уведомления Slack в коммьюнити Free Code Camp и вижу что моя блогозапись упомянута дважды. Спасибо. Я это ценю и очень рад, что она оказалась полезной для стольких из людей. К сожалению, из-за каких-то проблем с доступностью, я не могу прочитать комментарии с её упоминанием. Тем не менее, я прошу всех, у кого есть вопросы, стукнуть мне в твиттер Zersiax. Обычно я отвечаю сразу же, если не сплю :-) Это обсуждение показывает, что слепые тоже пишут программы и некоторым это даже нравится.
Возвращаясь к некоторым вопросам, которые упомянуты конкретно в этом обсуждении:
Как я уже упоминал в своём блоге, я стараюсь пользоваться средой разработки. В основном это среды, основанные на Eclipse и Visual Studio, которая, по ироничному стечению обстоятельств, довольно хорошо подходит для визуально ограниченных людей, в то время как Microsoft Access совершенно не accessible (англ. accessible — «доступность», примечание переводчика). Не ирония ли это? :)
Использовать старый браузер (Firefox 3.5) просто глупо, если вы хоть немного кодите для веба. Это может быть грубо с моей стороны, но он всё равно лучше, чем IE. Вещи вроде этого — причина того, что я сейчас стремлюсь работать с экранным диктором NVDA с открытым исходным кодом. Он просто отлично работает с последним Firefox`ом.
Хотя я с радостью поучился бы работать в Vim и Emacs, мне некогда этим заниматься. Кроме того, я стараюсь работать в среде, где зрячие разработчики (в основном студенты) могут со мной взаимодействовать. Как правило, Linux их отпугивает, «Vim» для них — средство для чистки, а «Emaсs» звучит как какой-то вид магии. Поэтому я вынужден работать в редакторах с графическим интерфейсом, даже если командная строка была бы эффективнее.
Ладно, хватит на этот раз:) Спасибо за чтение.