Увидев этот вопрос , я задумался о различных проблемах, с которыми сталкиваются слепые программисты, и о том, как некоторые из них применимы даже для зрячих программистов. В частности, проблема чтения исходного кода вслух заставляет меня задуматься. Я программировал большую часть своей жизни, и я часто преподаю одноклассникам по программированию, чаще всего на C ++ или Java.
однозначно усугубляет попытку устно передать основной синтаксис выражения C ++. Говорящий должен дать либо идиоматический перевод на английский язык, либо полную спецификацию кода в словесной от руки, используя явные, но медленные термины, такие как «открывающая скобка», «побитовая и» и так далее. Ни одно из этих решений не является оптимальным.
С одной стороны, идиоматический перевод полезен только для программиста, который может отменить перевод обратно в соответствующий программный код - что обычно не происходит при обучении студента. В свою очередь, образование (или просто повышение квалификации по проекту) является наиболее распространенной ситуацией, когда источник читается вслух, и для ошибки существует очень небольшое поле.
С другой стороны, буквальная спецификация ухудшается медленно. Чтобы сказать «фунт, включить, левую угловую скобку, iostream, правую угловую скобку, новую строку», требуется гораздо больше времени, чем просто набрать #include <iostream>
. Действительно, большинство опытных программистов на C ++ воспринимают это просто как «include iostream», но, опять же, неопытных программистов предостаточно, и иногда необходимы буквальные спецификации.
Итак, у меня была идея для потенциального решения этой проблемы.
В C ++ существует конечный набор ключевых слов - 63 - и операторов - 54, исключающих именованные операторы и обрабатывающих составные операторы присваивания и префикса по сравнению с постинфиксным автоинкрементом и декрементом в отличии. Есть только несколько типов литералов, одинаковое количество группирующих символов и точка с запятой. Если я не ошибаюсь, вот и все.
Так не будет ли тогда возможным просто приписать краткое, уникальное произношение каждому из этих различных понятий (включая одно для пробела, где это требуется) и перейти оттуда? Языки программирования гораздо более регулярны, чем естественные языки, поэтому произношение можно стандартизировать. Носители любого языка смогут устно передавать код C ++, а благодаря регулярности и неизменности языка программное обеспечение преобразования речи в текст может быть оптимизировано для приема речи C ++ с высокой степенью точности.
Итак, мой вопрос двоякий: во-первых, возможно ли мое решение; и во-вторых, есть ли у кого-нибудь еще потенциальные решения? Я собираюсь взять предложения и использовать их для подготовки формального документа с примером реализации моего решения.