Записки о софтверном бизнесе

О великий и могучий Русский Алгоритмический Язык.

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”.

Еще почитать по этой теме:

Список языков программирования, не использующих английский.

  1. 10 Responses to “О великий и могучий Русский Алгоритмический Язык.”

  2. By Mikhail Edoshin on Nov 23, 2008

    В некоторых случаях все-таки не-английский язык имеет смысл, например, когда речь идет о понятиях, существующих только в этом языке. Это собственно функции языка, например, склонение существительных, или country-specific понятия вроде «ИНН» и «ОКАТО». На «английском» их все равно придется записывать транслитом, потому что правильный перевод будет еще менее понятен; винительный падеж — accusative case? А творительный и предложный?

  3. By Bright on Nov 23, 2008

    Такие языки не удобны хотя бы тем, что “английский” ЯП воспринимается именно как язык программирования, а вот “русифицированый” - как безграмотный текст на русском =)
    Кстати, тут же вспомнился возможно глупый вопрос: а как американцы воспринимают языки программирования? (получается для них это должно быть сродни РАЯ для русских)

  4. By golergka on Nov 23, 2008

    Прежде всего, русскоязычные языки - это 1C, с присущей ему квалификацией программистов и культурой программирования %)

  5. By vtv on Nov 23, 2008

    Лично мне нравится идея .NET и MSIL: когда каждый пишет на чем удобнее/привычнее, а результат конвертируется в некоторый универсальный код. Почему бы не попробовать и не сделать то же самое с переменными. Тогда бы появилась нужда в локализации (переводе) переменных, но зато отпала бы необходимость в разгадывании их значений на других языках. Это было бы очень полезно для проектов уже написанных с использованием неанглийских названий переменных и прочих структур.

  6. By RunneR on Nov 24, 2008

    Вы таки ненавидите свой родной язык?

  7. By nvoynov on Nov 24, 2008

    Я тоже очень долго смеялся с языка 1С, где кстати есть аналоги всех конструкций в английском эквиваленте. Метаданные тоже можно называть по английски а синонимы писать на русском …

    Но нужно учесть что (1) работа идет в основном с готовыми конфигурациями, которые написаны на русском, и (2) что работа идет в основном с метаданными и данными, с которыми удобнее и понятнее работать на русском, т.к. конфигурация на русском.

    В общем если уже смотреть на 1С - то выбор русского вполне оправдан. С квалификацией и культурой соглашусь, но это относится не только к 1С. На 1С тоже можно вполне красиво писать и нужно понимать что это скорее скриптовой язык готовой системы, а не чистый язык программирования.

    Если оглянутся кстати на данные вообще, например на простые OLTP или другие программы работающие в основном с БД, то русский был бы вполне уместен. Я например сам частенько писал под отчеты запросы типа
    select name as “Наименование”, … as “Комментарий” и в случае ориентации ПО на наш рынок либо на корпоративное ПО - наверное было бы проще на русском - меньше движений, эффективнее разработка

    И соглашусь с vtv - язык должен поддерживать и то и другое и третье, я за переменные и константы на родном языке. Конечно же нужно при этом учитывать потребности самого продукта, а не только разработчика.

    И конечно же спасибо RunneR - правильный комментарий!

  8. By Металлист on Nov 25, 2008

    Этот русский программный язык - фигня полная. Любой начинающий программист без труда запомнит for, if и т.д. и т.п. А те, кому нравится РАЯ, не программисты ни разу.

  9. By Копнев Антон on Nov 26, 2008

    Да, помню что-то такое в школе, но это жесть и полный идиотизм, кстати 1С это тоже идиотизм, какую-то фигню написали, причём не пойми для кого. Программеры уже все привыкли к англ. представлению всяких операторов и т.д. Вобщем я думаю, что применение “Русского алгоритмического языка” это издевательство над программерами.

  10. By studio on Dec 15, 2008

    Думаю, к английскому уже все привыкли. Исторически сложилось так, что именно он стал наиболее популярным. Если де сегодня появится какой-то дрогой язык, вряд ли у него будет хоть какая-то популярность. Какие бы казусы и явные недочеты не были бы в анг7лийском, от него сейчас вряд ли кто-то окажется ;)

  11. By Сергей Гоцуляк on Dec 16, 2008

    Изучал Рапиру, когда у меня дома появился Агат-9. По сравнению с Бейсиком - очень мощный язык (помню, там были кортежи), но программирование на русском оставляло привкус какой-то неполноценности языка…

Post a Comment