W Cat - Язык программирования Euphoria. Справочное руководство
- Название:Язык программирования Euphoria. Справочное руководство
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Язык программирования Euphoria. Справочное руководство краткое содержание
Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».
Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.
[Материал из Википедии]
Язык программирования Euphoria. Справочное руководство - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В отличие от других языков, тип переменной не затрагивает никакие вычисления, производимые над переменной. В выражении играет роль только величина переменной. Тип служит только для проверки отсутствия ошибки, чтобы предотвратить любую "порчу" переменной.
Типы, которые вы определяете в своей программе, могут отлавливать в вашей программе неожиданные логические ошибки. Но они не предназначены для перехвата или корректуры ошибок в данных, вводимых пользователем программы.
Проверка типов может быть выключена или включена между подпрограммами с помощью специальных команд with type_check (с проверкой типа)или without type_check (без проверки типа). По умолчанию проверка типов включена при старте программы.
Примечания о проверках производительности:Сравнивая скорость программы Euphoria со скоростью программ, написанных на других языках, в начале программы Euphoria необходимо написать without type_check. Эта команда даёт интерпретатору Euphoria разрешение пропускать проверки типов во время исполнения программы, чтобы сэкономить некоторое время. Все остальные проверки будут при этом выполняться, т.е. по индексам, инициализации и т.п. Даже при выключенной вами проверке типов интерпретатор Euphoria оставляет за собой право делать эту проверку в стратегически важных местах, так как она на деле позволяет вашей программе исполняться быстреево многих случаях. Следовательно, вы можете получить отказ по проверке типа, даже когда проверку выключаете. Включена проверка типов или выключена, вы никогда не получите исключительную ситуацию машинного уровня. У вас всегда будет внятное сообщение от Euphoria, если что-то пошло неправильным путём.( Конечно, и здесь можно нарваться на машинное исключение, например, когда вы делаете poke (размещаете данные непосредственно в памяти), или вызываете подпрограммы, написанные на C или в машинном коде. Но это уже совсем другая история - в этих случаях Euphoria просто уважает ваше неотъемлемое право давать вашей машине любые ваши команды. ) Метод определения типов в Euphoria проще, чем те, которые вы найдёте в других языках, хотя Euphoria обеспечивает программиста значительно большейгибкостью в описании законных величин для типов данных. Вы можете использовать любой алгоритм для включения величин в допустимый диапазон или их исключения из него. Вы можете даже позволить переменной быть типа object, который означает допустимость любогозначения. Подпрограммы могут быть написаны для работы с очень специфическими или с очень общими типами данных.
Но во многих программах забота о каких-то новых типах данных не приносит значительных преимуществ, и вам может вполне хватить четырёх имеющихся предопределённых типов. В отличие от других языков, механизм типов Euphoria даёт вам более свободный выбор. А с типом object вы можете и не вспоминать о наличии остальных трёх.
Тем не менее, для крупных программных проектов определение более конкретных типов может помочь в процессе отладки. Со строго конкретными типами данных логические ошибки отлавливаются вблизи места их зарождения и их распространение по скрытным путям в другие части программы пресекается. Более того, всегда проще размышлять о причинах неправильного поведения некоторого небольшого участка кода, когда у вас есть гарантия, что используемые здесь переменные всегда имели законную величину, а вот требуемый результат отсутствует.
Типы также дают возможность получить осмысленную, проверенную на машине документацию о вашей программе, делая более простым понимание вашего кода другими, да и вами тоже, по прошествии некоторого времени. Комбинирование проверки индексов, проверки инициализации пременных и других обязательных проверок, которые всегда действуют, с продуманной ограниченной проверкой заданных типов делает отладку в Euphoria значительно более простой, чем в большинстве других языков. Повышается и надёжность программы, так как многие скрытые ошибки, проскакивающие фазу тестирования в других языках, здесь практически полностью отлавливаются.
Анекдот 1:Перенеся большую программу C на Euphoria, мы обнаружили ряд скрывавшихся ранее ошибок. Хотя данная программа C и заслужила большое доверие как якобы тотально "корректная", мы нашли: ситуацию, где считывалась неинициализированная переменная; место, где элемент номер "-1" одного из массивов беспрепятственно записывался и считывался; ситуацию, где что-то выводилось как раз мимо экрана. Эти проблемы вели к ошибкам, которые были не слишком заметны для не очень внимательного наблюдателя, и код C успешно прошёл тестирование. Анекдот 2:Алгоритм Quick Sort, представленный на странице 117 "Написания эффективных программ" Джона Бентли, имеет ошибку индексирования! Этот алгоритм будет иногда считывать элемент из памяти непосредственно перед началом сортируемого массива, и будет считывать из памяти элемент непосредственно после конца массива. Хотя и читается какой-то мусор, оставшийся от другой программы, алгоритм всё ещё работает - вероятно, поэтому ошибка никогда и не была обнаружена. Но что, если бы по тем адресам вне массива не было никакой (виртуальной) памяти? Бентли позже модифицировал алгоритм так, что эта ошибка уходит -- но он представлял и раннюю версию как правильную. Даже экспертам нужна проверка правильности индексирования! Примечания о производительности:Когда программист широко применяет свои собственные типы, их проверка интерпретатором добавляет ко времени исполнения программы всего 20..40 процентов. Оставляйте проверку включенной, если вам не нужна действительная экстра-скорость. Вы можете также предусмотреть её выключение только для нескольких особенно сильно загруженных вычислениями подпрограмм. Профилирование может помочь в принятии правильного решения.
2.5 Команды
В Euphoria предусмотрены следующие виды исполняемых команд:
* команда присваивания
* вызов подпрограммы
* команда if (если)
* команда while (пока)
* команда for (для, от)
* команда return (выдать, вернуться)
* команда exit (выйти)
В Euphoria нет специального символа для отделения команд друг от друга, и вы можете располагать любую законную последовательность команд в одной строке кода, или можете разбивать многословную команду по разным строкам так, как вам более удобно. Но вы не имеете права разбивать на части имена, строки, числа и ключевые слова.
2.5.1 команда присваивания
В Euphoria команда присваиванияслужит для придания величины, полученной при вычислении выражения, простой переменной или элементу ряда, или отрезку ряда, то есть,
Читать дальшеИнтервал:
Закладка: