О великий и могучий Русский Алгоритмический Язык.
November 22nd, 2008 Posted in ТехнологииПоговорим о странном - о использовании неанглийских языков в программировании.
Один из первых языков программирования, о котором нам рассказали в школе, был Русский Алгоритмический Язык (РАЯ), разработанный профессором Ершовым.
если условие
то действия 1 иначе действия 2
все
Язык этот был предназначен в основном для обучения, но вроде был создан и компилятор для него. Вот здесь есть более подробное описание с примерами.
Другими языками, основанными на русском и до которых успели дотянуться мои ручки были Фокал, Рапира и СУБД Карат.
Насколько русскоязычная версия языка облегчает его обучение? Посмотрим на следующий пример на языке C.
for( i = 0 ; i < 100 ; i++ )
{
printf("%in");
}
С точки зрения изучающего, даже знающего английский, все конструкции “for”, “;”, “++” являются “иностранными”. Неважно, что именно означают for или printf, поскольку изучается не английский, а C. В конце концов базовых ключевых слов не так много, и выучить их можно за несколько дней. Другое дело, что английский будет нужен для чтения документации и литературы.
Можно сказать, что будущего у не-английских языков программирования нет.
Поговорим еще о одном аспекте - о именовании переменных, функций и комментариях. У нас есть в проекте один полезный класс для работы со строкам, написанный немцем. Все имена переменных и комментарии на немецком. Не могу сказать, что я испытываю большое удовольствие от чтения этого кода.
Даже если проект рассчитан на русский рынок и над работают только русские программисты, все равно стоит использовать английский для именования переменных и комментариев. Никогда не знаешь как сложится ситуация в будущем и чьи глаза будут читать этот код. Может проект будет продан или станет open source. Может просто захочется поделиться с миром и выложить какой-то класс на CodeProject.com. Если русские комментарии еще можно по-быстрому выкосить или перевести, то с переменными и функциями такой трюк не пройдет.
Уголок юмора
Две ситуации связанные с именами функций, которые до сих пор заставляют меня улыбнуться.
1. Работал я одно время в компании ECI вместе с еще несколькими русскими товарищами. Одному из нас нужно было создать временный класс-заглушку. Не долго думая он назвал его Class Joppa (город такой в Мэриленде, для тех кто не знает). Как это часто бывает, класс из временного стал постоянным, оброс функциональностью и стал повсеместно использоваться. Я не особый фанат подобных шуток, но насколько приятно было слышать из уст нативных американцев “Что эта Joppa делает в моем коде?”.
2. Мехматовская история лохматых лет. Одной симпатичной девочке нужно было написать лабораторную по программированию. Как это часто бывают с симпатичными девочками, программирования она не знала, но один из ее поклонников с удовольствием написал для нее эту лабу. Имена функций он, конечно, выбирал на свой вкус. Преподаватель посмотрел программу, убедился в том, что она работает и сказал: “Я с удовольствием поставлю вам 5, если вы скажете мне, кто такой Marko Van Basten”.
Еще почитать по этой теме:
Список языков программирования, не использующих английский.
10 Responses to “О великий и могучий Русский Алгоритмический Язык.”
By Mikhail Edoshin on Nov 23, 2008
В некоторых случаях все-таки не-английский язык имеет смысл, например, когда речь идет о понятиях, существующих только в этом языке. Это собственно функции языка, например, склонение существительных, или country-specific понятия вроде «ИНН» и «ОКАТО». На «английском» их все равно придется записывать транслитом, потому что правильный перевод будет еще менее понятен; винительный падеж — accusative case? А творительный и предложный?
By Bright on Nov 23, 2008
Такие языки не удобны хотя бы тем, что “английский” ЯП воспринимается именно как язык программирования, а вот “русифицированый” - как безграмотный текст на русском =)
Кстати, тут же вспомнился возможно глупый вопрос: а как американцы воспринимают языки программирования? (получается для них это должно быть сродни РАЯ для русских)
By golergka on Nov 23, 2008
Прежде всего, русскоязычные языки - это 1C, с присущей ему квалификацией программистов и культурой программирования %)
By vtv on Nov 23, 2008
Лично мне нравится идея .NET и MSIL: когда каждый пишет на чем удобнее/привычнее, а результат конвертируется в некоторый универсальный код. Почему бы не попробовать и не сделать то же самое с переменными. Тогда бы появилась нужда в локализации (переводе) переменных, но зато отпала бы необходимость в разгадывании их значений на других языках. Это было бы очень полезно для проектов уже написанных с использованием неанглийских названий переменных и прочих структур.
By RunneR on Nov 24, 2008
Вы таки ненавидите свой родной язык?
By nvoynov on Nov 24, 2008
Я тоже очень долго смеялся с языка 1С, где кстати есть аналоги всех конструкций в английском эквиваленте. Метаданные тоже можно называть по английски а синонимы писать на русском …
Но нужно учесть что (1) работа идет в основном с готовыми конфигурациями, которые написаны на русском, и (2) что работа идет в основном с метаданными и данными, с которыми удобнее и понятнее работать на русском, т.к. конфигурация на русском.
В общем если уже смотреть на 1С - то выбор русского вполне оправдан. С квалификацией и культурой соглашусь, но это относится не только к 1С. На 1С тоже можно вполне красиво писать и нужно понимать что это скорее скриптовой язык готовой системы, а не чистый язык программирования.
Если оглянутся кстати на данные вообще, например на простые OLTP или другие программы работающие в основном с БД, то русский был бы вполне уместен. Я например сам частенько писал под отчеты запросы типа
select name as “Наименование”, … as “Комментарий” и в случае ориентации ПО на наш рынок либо на корпоративное ПО - наверное было бы проще на русском - меньше движений, эффективнее разработка
И соглашусь с vtv - язык должен поддерживать и то и другое и третье, я за переменные и константы на родном языке. Конечно же нужно при этом учитывать потребности самого продукта, а не только разработчика.
И конечно же спасибо RunneR - правильный комментарий!
By Металлист on Nov 25, 2008
Этот русский программный язык - фигня полная. Любой начинающий программист без труда запомнит for, if и т.д. и т.п. А те, кому нравится РАЯ, не программисты ни разу.
By Копнев Антон on Nov 26, 2008
Да, помню что-то такое в школе, но это жесть и полный идиотизм, кстати 1С это тоже идиотизм, какую-то фигню написали, причём не пойми для кого. Программеры уже все привыкли к англ. представлению всяких операторов и т.д. Вобщем я думаю, что применение “Русского алгоритмического языка” это издевательство над программерами.
By studio on Dec 15, 2008
Думаю, к английскому уже все привыкли. Исторически сложилось так, что именно он стал наиболее популярным. Если де сегодня появится какой-то дрогой язык, вряд ли у него будет хоть какая-то популярность. Какие бы казусы и явные недочеты не были бы в анг7лийском, от него сейчас вряд ли кто-то окажется
By Сергей Гоцуляк on Dec 16, 2008
Изучал Рапиру, когда у меня дома появился Агат-9. По сравнению с Бейсиком - очень мощный язык (помню, там были кортежи), но программирование на русском оставляло привкус какой-то неполноценности языка…