Парадигма | Императивная, процедурная |
---|---|
Разработано | Джереми Каугар, Роберт Крейг (оригинал), Мэтт Льюис, Дерек Парнелл |
Разработчик | openEuphoria Group |
Впервые появился | 1993 |
Стабильный выпуск | 4.0.5 / 19 октября 2012 г . |
Печатная дисциплина | статический, динамический |
Операционные системы | Кроссплатформенность : Win32 , Linux , macOS , FreeBSD , NetBSD , OpenBSD. |
Лицензия | BSD |
Расширения имени файла | .e, .ex, .exw, .edb |
Интернет сайт | openeuphoria |
Под влиянием | |
БАЗОВЫЙ | |
Под влиянием | |
Фикс |
Euphoria - это язык программирования, созданный Робертом Крейгом из Rapid Deployment Software [1] в Торонто , Онтарио , Канада. Изначально разработанный (хотя и не публично выпущен) на Atari ST , [2] первый коммерческий релиз [3] был для 16-битной DOS платформы и была собственностью . В 2006 году с выпуском версии 3 [4] Euphoria стала программным обеспечением с открытым исходным кодом . Группа openEuphoria продолжает администрировать и развивать проект. [5] В декабре 2010 года группа openEuphoria выпустила версию 4 [6]openEuphoria вместе с новой идентичностью и талисманом проекта. OpenEuphoria в настоящее время доступна для Windows , Linux , macOS и трех разновидностей * BSD .
Euphoria - это универсальный императивно-процедурный интерпретируемый язык высокого уровня . Переводчик генерирует C исходный код и сбор ГНУ компилятора (GCC) и открытый Ваток Составители поддерживаются. В качестве альтернативы, программы Euphoria могут быть связаны [7] с интерпретатором для создания автономных исполняемых файлов . Ряд графического пользовательского интерфейса (GUI) библиотеки поддерживаются в том числе Win32lib [8] и оберток для WxWidgets , [9] GTK + , [10] и ИУП . [11] Euphoria имеет простую встроенную базу данных [12] и оболочки для множества других баз данных. [13]
Обзор [ править ]
Язык Euphoria - это процедурный язык общего назначения , ориентированный на простоту, удобочитаемость, быструю разработку и производительность с помощью нескольких средств.
- Простота - он использует всего четыре встроенных типа данных (см. Ниже) и реализует автоматическую сборку мусора .
- Разборчивость - синтаксис отдает предпочтение простым ключевым словам на английском языке вместо использования знаков препинания для разграничения конструкций.
- Быстрая разработка - интерпретатор поощряет создание прототипов и постепенную разработку.
- Производительность - эффективный сборщик мусора с подсчетом ссылок правильно обрабатывает циклические ссылки.
История [ править ]
Разработанная как личный проект по созданию языка программирования с нуля, Euphoria была создана Робертом Крейгом [1] на Atari Mega-ST . [2] Многие идеи дизайна для языка пришли из Крейга магистра диссертации в области компьютерных наук в Университете Торонто . [14] На диссертацию Крейга сильно повлияла работа Джона Бэкуса по языкам функционального программирования (FP). [14]
Крейг перенес свою оригинальную реализацию Atari на 16-битную платформу DOS, и первая версия Euphoria была выпущена, версия 1.0, в июле 1993 года [3] под частной лицензией. Первоначальная реализация Atari описана Крейгом как «примитивная» [15] и не была опубликована. Крейг продолжал разрабатывать и выпускать Euphoria через его компанию Rapid Deployment Software (RDS) и веб-сайт rapideuphoria.com. [1] В октябре 2006 года RDS выпустила версию 3 [4] Euphoria и объявила, что отныне Euphoria будет свободно распространяться под лицензией на программное обеспечение с открытым исходным кодом .
RDS продолжила разработку Euphoria, кульминацией которой стал выпуск версии 3.1.1 в августе 2007 года. [14] [16] Впоследствии RDS прекратила одностороннюю разработку Euphoria, и openEuphoria Group [5] взяла на себя текущую разработку. Группа openEuphoria выпустила версию 4 в декабре 2010 года [17] вместе с новым логотипом и талисманом проекта openEuphoria.
Версия 3.1.1 остается важной вехой в выпуске, являясь последней версией Euphoria, поддерживающей платформу DOS . [18]
Euphoria - это аббревиатура от термина «Программирование конечным пользователем с иерархическими объектами для надежных интерпретируемых приложений», хотя есть некоторые подозрения, что это бэкроним . [ согласно кому? ]
Интерпретатор Эйфория был изначально написан на C . С выпуском версии 2.5 [14] в ноябре 2004 года интерпретатор Euphoria был разделен на две части: интерфейсный синтаксический анализатор и внутренний интерпретатор. Интерфейс теперь написан на Euphoria (и используется с переводчиком Euphoria-to-C и Binder). Основная серверная часть и библиотека времени выполнения написаны на C.
Особенности [ править ]
Эйфория была задумана и разработана с учетом следующих целей и особенностей дизайна:
- Простота обучения и последовательные высокоуровневые конструкции (больше, чем, например, в языке BASIC )
- Реализация плоской 32-битной памяти для избежания сложного управления памятью и ограничений адресации по размеру
- Поддержка отладки и обработка ошибок во время выполнения
- Подстрочный индекс и проверка типа
- Свободный и строгий ввод переменных
- Программирование через объекты как типы (определяемые пользователем или иначе)
- Интерпретируемый, с автоматическим управлением памятью и сборкой мусора
- Типы гетерогенных коллекций (последовательности)
- Графическая библиотека DOS (языковые версии Euphoria до 3.1.1 включительно)
- Отладчик
- Интегрированная система баз данных
- Работа с низкоуровневой памятью
- Простая упаковка библиотек C (или доступ к ним)
Режимы выполнения [ править ]
- Устный переводчик
- Переводчик C (E2C) для автономных исполняемых файлов или динамического связывания
- Компилятор и интерпретатор байт-кода (shrouder [7] )
- Binder [7] связывает исходный код Euphoria с интерпретатором для создания исполняемого файла.
- Версия цикла чтения-оценки-печати (REPL) находится в дорожной карте openEuphoria . [19]
Используйте [ редактировать ]
Euphoria разработана для облегчения обработки динамических наборов данных различных типов и особенно полезна для обработки строк и изображений. Euphoria использовалась в экспериментах с искусственным интеллектом , при изучении математики , для обучения программированию и для создания шрифтов, содержащих тысячи символов. [ необходима цитата ] Большая часть интерпретатора Euphoria написана на Euphoria.
Типы данных [ править ]
Euphoria имеет два основных типа данных:
- Атом - число, представленное как 31-битное целое число со знаком или 64-битное число с плавающей запятой IEEE . Euphoria динамически переключается между целочисленным представлением и представлением с плавающей запятой в соответствии с текущим значением.
- Последовательность - вектор (массив) с нулем или более элементов. Каждый элемент может быть атомом или другой последовательностью . Количество элементов в последовательности не фиксировано (т. Е. Размер вектора / массива не нужно объявлять). Программа может добавлять или удалять элементы по мере необходимости во время выполнения. Выделение-освобождение памяти автоматически обрабатывается подсчетом ссылок. Для ссылки на отдельные элементы используется значение индекса, заключенное в квадратные скобки. Первый элемент в последовательности имеет индекс 1 [1]. На элементы внутри встроенных последовательностей ссылаются дополнительные значения индекса в скобках, таким образом, X [3] [2] относится ко второму элементу, содержащемуся в последовательности, которая является третьим элементом X. Каждый элемент последовательности является объектом. тип (см. ниже).
В Euphoria предопределены два дополнительных типа данных:
- Целое число - атом , ограниченный 31-битовыми целыми числами со знаком в диапазоне от -1073741824 до 1073741823 (от -2 ^ 30 до 2 ^ 30-1). Целочисленные типы данных более эффективны, чем типы данных атома , но не могут содержать тот же диапазон значений. Символы хранятся как целые числа, например, кодировка ASCII- 'A' точно такая же, как кодировка 65.
- Объект - общий тип данных, который может содержать любое из вышеперечисленных (например, атом , последовательность или целое число ) и который может быть изменен на другой тип во время выполнения.
Тип данных символьной строки отсутствует . Строки представлены в виде последовательности из целочисленных значений. Однако, поскольку буквальные строки так часто используются в программировании, Euphoria интерпретирует символы, заключенные в двойные кавычки, как последовательность целых чисел. Таким образом
"Азбука"
выглядит так, как если бы кодировщик написал:
{'A', 'B', 'C'}
что то же самое, что:
{65, 66, 67}
Привет, мир! [ редактировать ]
put (1, "Привет, мир! \ n")
Примеры [ править ]
Комментарии к программе начинаются с двойного дефиса --
и проходят до конца строки.
Следующий код ищет старый элемент в группе элементов. Если он найден, он удаляет его, объединяя все элементы перед ним со всеми элементами после него. Обратите внимание, что первый элемент в последовательности имеет индекс 1 [1] и что $ относится к длине (т. Е. Общему количеству элементов) последовательности.
глобальная функция delete_item ( объект старый, группа последовательности ) целое число pos - Код начинается - pos = find (old, group) если pos> 0, то group = group [1 .. pos-1] и group [pos + 1 .. $] конец, еслифункция конца группы возврата
Следующая модификация приведенного выше примера заменяет старый элемент новым. Поскольку переменные old и new были определены как объекты, они могли быть атомами или последовательностями . Проверка типов не требуется, поскольку функция будет работать с любой последовательностью данных любого типа и не требует внешних библиотек.
глобальная функция replace_item ( объект старый, объект новый, группа последовательности ) целое число pos - начало кода - pos = find (old, group) if pos> 0 then группа [pos] = новая конец, еслифункция конца группы возврата
Более того, указатели не используются, а индексы проверяются автоматически. Таким образом, функция не может получить доступ к памяти за пределами допустимого диапазона. Нет необходимости явно выделять или освобождать память и нет шансов на утечку памяти.
Линия
group = group [1 .. pos-1] и group [pos + 1 .. $]
показывает некоторые средства обработки последовательностей . Последовательность может содержать набор любых типов, и это может быть нарезано (взять подмножество данных в последовательности ) и сцепляется в выражениях без необходимости использования специальных функций.
Передача параметров [ править ]
Аргументы подпрограмм всегда передаются по значению; нет возможности передачи по ссылке. Однако разрешено изменять параметры локально (т. Е. Внутри вызываемого объекта), что реализуется очень эффективно, поскольку последовательности имеют семантику автоматического копирования при записи . Другими словами, когда вы передаете последовательность в подпрограмму, сначала передается только ссылка на нее, но в момент, когда подпрограмма изменяет этот параметр последовательности, последовательность копируется, а подпрограмма обновляет только копию оригинала.
Сопоставимые языки [ править ]
- Lua
- Фикс
- Python
- REBOL
- Рубин
Ссылки [ править ]
- ^ a b c "Домашняя страница RapidEuphoria" . Архивировано из оригинала на 2012-07-11 . Проверено 30 декабря 2010 .
- ^ a b "Форум RapidEuphoria, 10 сентября 2002 г., Роберт Крейг" . Архивировано из оригинала на 2011-07-16 . Проверено 30 декабря 2010 .
- ^ a b "Форум RapidEuphoria, 18-10-2006, 16:44 Роберт Крейг" . Архивировано из оригинала на 2011-07-16 . Проверено 30 декабря 2010 .
- ^ a b «Форум RapidEuphoria, 18.10.2006, 1:19 Роберта Крейга» . Архивировано из оригинала на 2011-07-16 . Проверено 30 декабря 2010 .
- ^ a b "домашняя страница группы openEuphoria" . Проверено 30 декабря 2010 .
- ^ "Страница загрузки openEuphoria" . Проверено 30 декабря 2010 .
- ^ a b c "Руководство openEuhporia, Связывание и окутывание" . Проверено 7 января 2011 .
- ^ "Проект Euphoria Win32Lib на Sourceforge" . Проверено 30 декабря 2010 .
- ^ "Проект Euphoria wxEuphoria на Sourceforge" . Проверено 30 декабря 2010 .
- ^ "Проект Euphoria GTK + в Sourceforge" . Проверено 30 декабря 2010 .
- ^ "Проект Euphoria IUP Джереми Каугаром" . Проверено 30 декабря 2010 .
- ^ "Руководство openEuphoria, База данных" . Проверено 30 декабря 2010 .
- ^ "openEuphoria wiki, Интерфейсы баз данных" . Проверено 2 января 2011 .
- ^ a b c d "Веб-сайт RapidEuphoria, примечания к выпуску" . Архивировано из оригинала на 2012-07-14 . Проверено 30 декабря 2010 .
- ^ "Форум RapidEuphoria, 2 марта 1998 г., 13:04 Роберт Крейг" . Архивировано из оригинала на 2011-07-16 . Проверено 30 декабря 2010 .
- ^ "Новости RapidEuphoria" . Архивировано из оригинала на 2010-12-16 . Проверено 30 декабря 2010 .
- ^ "Примечания к выпуску openEuphoria" . Архивировано из оригинала на 2011-07-27 . Проверено 30 декабря 2010 .
- ^ "Руководство openEuhporia, Проблемы, связанные с платформой" . Проверено 30 декабря 2010 .
- ^ "Дорожная карта openEuphoria" . Проверено 30 декабря 2010 .
Внешние ссылки [ править ]
Викискладе есть медиафайлы по теме Euphoria . |
Бесплатная загрузка Euphoria для различных платформ, пакетов, Windows IDE, библиотек Windows API, кроссплатформенной оболочки GTK3 для Linux и Windows, графических библиотек (DOS, OpenGL и т. Д.).
- Официальный сайт OpenEuphoria
- Официальный сайт RapidEuphoria
- openEuphoria Wiki
- Форум openEuphoria
- OpenEuphoria · Репозитории разработки GitHub .
- Использование Euphoria