Если мне не изменяет память, то начиная с Delphi 2006 появилась возможность указывать имена идентификаторов не только латиницей, но и вообще любыми буквенными символами. В частности на кириллице. Практического толку от этого мало: для набора текста приходится постоянно переключать раскладку между латиницей (для ввода ключевых слов) и кириллицей. Это ой как напрягает.
Примечательно, что я про это вспоминал за пару дней до семинара. Потом пытался об этом поговорить с Всеволодом на самом семинаре, но там разговор ушёл в сторону FireMonkey. А потом появилась публикация поста: "2 года блогу: пишем понятный код - dBlog". И чегой-то меня “торкнуло”, и я подумал: “а ведь прикольно было бы писать текст на кириллице полностью, не переключая раскладку туда-сюда!”. И ведь задача-то не очень сложная, надо (для начала) научить компилятор понимать ключевые слова, написанные на другом языке – т.е. просто использовать некий словарь…
Ну вот к примеру, гляньте эту несуразную процедурку:
процедура РеверсСтрокиИКоеЧтоЕщё(вход Переменная1: строка; выход Результат: строка); переменные Имя: строка; Буква: Символ; Список: ТСписокСтрок; Ц: ЦелоеЧисло; начало Реузльтат := ''; Список := ТСписокСтрок.Создать; попытка попытка для Ц := 0 до Длина(Переменная1) - 1 делать начало Буква := Переменная1[Ц]; выбор Буква из 'а': Буква := 'я'; 'б': Буква := 'ю'; 'в': Буква := 'э'; конец; если Буква = ' ' то Буква := '•'; Список.Добавить(Буква); конец кроме при И: Исключение делать Результат := И.Сообщение; повысить; конец; для Ц := Список.Количество - 1 вниздо 0 делать Результат := Результат + Список[Ц]; заключение Список.Освободить; конец; конец;
Как оно читается, а? Немного не привычно, но если подсветить ключевые слова, то особо и вчитываться в текст не нужно – всё наглядно и читаемо. Напоминает это, кстати, 1С. 1С-программисты, при этом, с подобным синтаксисом живут довольно хорошо и не горюют.
Пока я этот текст набивал из головы, вот на что обратил внимание.
1) Символ ‘ (кавычка одинарная), который используется для обозначения строк, без переключения раскладки не набрать. Хоть меняй раскладку, или используй “ (двойная кавычка) вместо ‘.
2) Двоеточие, точка с запятой – эти символы есть на цифрах 6 и 4, но мне привычнее нажимать их на клавише Ж.
3) “Русификации” одних ключевых слов не достаточно. Нужно также “русифицировать” типы, классы, методы… ну не русифицировать полностью, а хотя бы алиасы, чтоль, прописать… но всё равно ой как много всего тут. Более серьёзные проблемы могут возникнуть, если вдруг мы захотим поделиться таким кодом где-нить на torry.net. Поймут ли нас, например, французы? А поймём ли мы, ну например, испанский?
В общем-то первые два неудобства чисто технические, а вот третье – в голову приходит мысль о создании словаря, для автоматического перевода (но что-то я сомневаюсь об эффективности такой штуки).
А ещё мне подумалось (теперь, а не тогда… в 2006м мне это всё было просто смешно), что на прикладном уровне это было бы здорово иметь RAD и действительно “быстро” и не задумываясь о переводе набирать код.
P.S.: На самом деле я это всё пишу с некоторой опаской. Всё-таки английский язык более лаконичный, чем русский. Английский (даже наверное более американский, чем английский) – это язык действий. И писать программы надо на английском. Когда я вижу текст на русском языке, мне хочется, чтобы он читался легко. Как в литературе. А если люди начнут писать программы на русском, то это будет не литературный, а … непонятно что. И со временем, русский превратится … а может и не превратится, ведь существует литературный английский?
P.P.S.: заметка так названа, потому что многие (в России, и не только) признают факт, что обучаться программированию лучше всего на Паскале. Если бы при этом Паскаль мог понимать кириллицу в ключевых словах, то для начинающих вообще было бы здорово…
13 коммент.:
"Английский (даже наверное более американский, чем английский) – это язык действий. И писать программы надо на английском."
Это принципиальная ошибка. Программы никогда не пишутся на естественных языках, а только на формальных, в которых имена и ключевые слова - иероглифы. И здесь использовать слова иностранного языка лучше - они именно так для русского и выглядят.
1. Многие - да - признают язык Паскаль, как не просто "хороший", а "самый лучший" для обучения программированию. Исследования в Великобритании показали, что школьники, изучающие информатику и программирование на Delphi, получают более высокий рейтинг по "их" ЕГЭ. А C# (Visual Basic .NET), С/С++ и Java вообще рекомендуют изъять из обучающих технологий. Но современный Object Pascal такой же мощный, как и другие ОО языки, каким он стал после Delphi 2010 (с новой RTTI) и Delphi 2009 (Unicode, методы в записях, generics и т.д.). И реализация FireMonkey на 100% чистом ObjectPascal - явное тому доказательство.
Боюсь подумать, если китайцы начнут свои иероглифы использовать в качестве элементов языка. Не дай бог такой код разбирать потом
2. Английский язык, действительно, более удобен для программирование. Здесь чисто технико-лингвистический анализ:
- нет падежных окончаний;
- глаголы и существительные часто есть одно и то же сочетание букв;
- возможность использовать "левое определение".
Поэтому степень "корявости" - минимальна. Т.е. "программистский английский" ближе к "естественному английскому", чем, к примеру, русский.
Это не хорошо, и не плохо. Это просто факт.
Однако! Как абсолютно правильно заметил автор - обучающий и адаптационный аспект. Вот здесь - надо дать свободу профессионалам в области обучения и инженерной психологии. Отвергать или одобрять нельзя без анализа.
И еще маленькая ремарка. Все-таки программирование - достаточно молодая (очень молодая) сфера деятельности. Поэтому наблюдается терминологическая "чехарда". Например, new (новый) и delete (удалить) в языке С++ (и new в Java и C#) вообще нельзя воспринимать как "слова", это даже не термины... это "мнемонические символы", причем с путаницей. Какое new? Кого мы собираемся delete? Никакого delete вообще нет.
Здесь даже англо-подобные термины Create/Free более уместны.
Иероглифы - иероглифами, но пусть они не вводят в заблуждение, ибо ассоциация с "удалением объекта из памяти" вводит в заблуждение. А так - да, можно и "червячками" блоки помечать {}.
Откровенно говоря, "РеверсСтрокиИКоеЧтоЕщё" вызывает неприязнь. Отчасти -- из-за "корявости", отчасти из-за сходства с э.. с тем, что называют "Язык программирования системы 1С:Предприятие".
Помимо тех факторов, что упомянул Сева, Я считаю что нужно следовать стандартам. А не использовать иероглифы для написания идентификаторов. Да и вообще на мой взгляд в коде НЕ должно быть никаких символов выходящих за пределы ANSI #0..#127. Всё что вне этого -- часть локализации и этому место в ресурсах или где-то ещё.
По поводу обучаемости и адаптации -- нет, не согласен категорически. Учиться плавать надо в воде, а не с помощью видеоуроков сидя на диване. Ну давайте ещё на первых порах разрешим не обнулять переменные при подсчете суммы.
Кириллица в коде -- это как раз не шаг к адаптации, а палка в колесе при переходе к более сложным проектам.
За примерами сюда -- http://bash.im/quote/208544 ))
хм видимо совсем отстал от жизни :) но попробовал
procedure ПоказатьСообщение(s:string);
begin
ShowMessage(s);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
показатьсообщение(edit1.Text);
end;
действительно работает.
Теоретически предлагаемое можно сделать через PreBuild, т.е. русский код вначале транслируется в паскаль. Хотя среда редактора кода тогда нужна другая.
Практически потребность нужна тем, кто пишет (как, в частности, я), там, где англоязычная наука отстает от русскоязычной, т.е. адекватного англоязычного термина нет. Но на практике выручает транслит.
Для обучения насколько я знаю было и есть несколько русскоязычных языков программирования. Но если по сути, то русский язык намного гибче английского, т.е. он менее формален. В этом смысле формальные языки программирования противоречат сути русского языка (возможен любой порядок слов без потери смысла), т.е. они строгим порядком слов ближе к английскому.
>>В этом смысле формальные языки программирования противоречат сути русского языка
По-лингвистическому это называется "аналитические и синтетические языки".
Господа, а никто не обратил внимание, что в в названиях полей РСУБД уже давным давно используют [имя заказчика]
или даже просто [customer name]?
Там тоже хватает своего холивара, но тем не менее это уже не воспринимается как "о, ужас!"
>> Исследования в Великобритании показали, что школьники, изучающие информатику и программирование на Delphi, получают более высокий рейтинг по "их" ЕГЭ.
Где Вы такую траву берете?
Спасибо за комментарии :с)
Я не буду как-то более обосновывать вышеизложенные "мысли вслух", хочу лишь акцентировать внимание вот на чём. Раньше, лет шесть назад, я смотрел на код 1С и мне было смешно его читать! Правда. И к кириллице в коде я относился... ну вот как Balmo пишет, я с ним солидарен... был. Времена меняются, и я начинаю думать, что в этом нет ничего плохого в принципе.
Ну т.е. в коммерческом продукте, который ведут N-программистов, конечно нужны какие-то корпоративные стандарты в плане оформления кода, именования идентификаторов и прочего.
А если, скажем, вот есть ученик/студент (причём он ещё не знает, будет ли он заниматься программированием на серьёзном уровне или нет), и он хочет попробовать быстренько запрограммировать какую-нибудь простенькую анимацию. Например, посмотреть, как строится циклоида, или ещё что-нибудь? Написал, посмотрел, показал сверстникам и забыл.
> Где Вы такую траву берете?
не совсем ответ на вопрос, но в тему: ссылка на ресурс с блога Александра Алексеева: почитать pdf
Ссылка на исходную статью
"1С-программисты, при этом, с подобным синтаксисом живут довольно хорошо и не горюют."
Меня колобасило полгода, когда была необходимость писать в 1С, от этого русского синтаксиса. Русский в программировании, впрочем, как и любой другой язык, кроме английского, неуместен. Теряется самое главное - "международность" языка.
П.Ы. И кстати, в 1С у всех команд, названий системных функций и пр. есть английский эквивалент. Вона куда метят! )))
Дизель-паскаль
Отправить комментарий