Хакер, я немножко о другом. Вот какую про какую разницу. Всегда привожу простой пример:
В качестве курьёзного примера, показывающего, что текст может быть понятен и при этом вообще не содержать словарно-нормальных фонетических образований (т.е. смысл содержащихся в нём «фонетических образований» обусловлен контекстуально), приведём анекдот, найденный в интернете:
«По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, вкокам пряокде рсапожолена бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы не чиатем кдаужю бкуву по отдльенотси, а все солво цликеом».
А фактически — на следующем шаге обобщения мы читаем всё предложение целиком; на следующем шаге обобщения мы читаем весь абзац целиком и т.д. Другое дело, что такого рода факты целостного восприятия фрагментов текстов и текстов в целом мы далеко не во всех случаях осознаём.
А теперь попроси начинающего программера на минуту посмотреть на твои идентификаторы в русском и английском варианте. Что он увидит и вспомнит после этой минуты? А что запомнит? Конечно то, что ему проще.
Английский текст труден, потому что его нужно
читать, а русский текст мы
видим, а не читаем. Для многих слово set - это русское "установить", "назначить", а не образ самого действия. Это только со временем приходит
видение, а не
чтение. Попробуй взять английский текст и смешать в нём буквы (можно написать такую программку
![Smile :)](./images/smilies/icon_smile.gif)
), а потом "увидеть" его по аналогии с русским. Думается мне возникнут трудности. Вот эти трудности мешают многим в быстром освоении алгоритмов, т.к. создают невидимый психологический барьер в понимании. Да и текст (листинг) на русском быстрее сканируется мозгом. Я вот бегу по своему парсеру и сразу "вижу", а не "читаю" идентификаторы. Нет барьера, а у меня очень длинный путь программиста, начиная от МК-61 и синклер-бейсика на спектруме.
Viper , меня три года обучали внутренней архитектуре ЗРК С-300, в том числе её ЦВМ. Уверяю
![Smile :)](./images/smilies/icon_smile.gif)
там английского духа не вообще, а регистры называются магазинами. Так вот. Про это я ручаюсь. Некоторые товарищи видели программы для наших истребителей... пруфлинк не нашёл к сожалению. Эти машины защищают нашу страну от "горячего" оружия. К сожалению, этого мало оказалось. Это по поводу ВПК.
Лично я тебя не понимаю.
Одно дело обучать языку программирования синтаксис которого это русские/английские слова, и совершенно другое дело использовать русские идентификаторы в "англоязычном" языке программирования, равно, как использование английских идентификаторов в "русскоязычном" в том же 1C.
Они были первопроходцами, на тот момент и это уже было серьёзным поворотом в мышлении.
Вызывает отвращение, и я бы по собственной воле не в жизнь не стал поддерживать/дорабатывать ПО с таким кодом.
Вот так гораздо лучше (ИМХО конечно):
А здесь уже первопроходец я. Да, не очень красиво. Знаки подчёркивания я давно не использую, т.к. обычно такие переменные зарезервированы под внутренние нужны системных библиотек. Лучше к этому не привыкать. Тут мне нужно было как-то разделить локальные и глобальные имена. Увы, среда бейсика подсвечивает их одинаково, а вот в других средах сразу видно что локальное, а что глобальное и нет нужды в суффиксах.
А теперь по теме. Я вылизывал пока только сам парсер. Имейте в виду, что он портирован с языка Java, где всё суть классы, поэтому может показаться странным класс
ОбразСвойств, который выглядит как структура, а создан в виде класса.
На этот момент
Ревизия 16 поддерживает:
- три типа значений переменных: boolean (ТИП_ЛОГИКА), double (ТИП_СКАЛЯР) и string (ТИП_СТРОКА) (многомерные массивы заложены уже, но пока не до конца реализованы);
- внутренние математические функции, около 10 штук;
- однострочные комментарии, начинающиеся '//';
- полная поддержка исключительных ситуаций - вы можете отследить любую ошибку (если правильно её опишете);
- оператор присвоения ":=" и работу с глобальными переменными;
В принципе всю функциональность можно описать одной лишь грамматикой, но её не сразу поймёшь. Класс JVector и Vector отличаются только типом возвращаемого результата. JVector работает с объектными типами, для которых нужен set, а Vector с обычными типами. Буква "J" означает, что он работает с экземплярами классов и имеет интерфейс как явовский Vector.
По поводу обработки ошибок. Понятия не имею как тут их надо обрабатывать, поэтому я сделал просто - разместил обработчики в каждом методе. Весь поток ошибок складывается в специальный ВекторОшибок, первый элемент которого - причина исключения, остальные - снежный ком следующих ошибок. Признак ошибки - публичное поле
Ошибся. Очень интересно писать: If Разборщик.Ошибся then и т.д.