Jump to content

Эйфория (язык программирования)

Эйфория
openEuphoria логотип
Парадигма Императивный, процедурный
Разработано Джереми Каугар, Роберт Крэйг (оригинал), Мэтт Льюис, Дерек Парнелл
Разработчик openEuphoria Group
Впервые появился 1993 год ; 31 год назад ( 1993 )
Стабильная версия
4.1.0 / 1 марта 2021 г .; 3 года назад ( 01.03.2021 )
Дисциплина набора текста статический, динамический
ТЫ Кроссплатформенность : Win32 , Linux , macOS , FreeBSD , NetBSD , OpenBSD.
Лицензия БСД
Расширения имен файлов .e, .ex, .exw, .edb
Веб-сайт открытая эйфория .org
Под влиянием
БАЗОВЫЙ
Под влиянием
Фикс

Euphoria — это язык программирования, созданный Робертом Крейгом из компании Rapid Deployment Software. [1] в Торонто , Онтарио , Канада. Первоначально разработанный (хотя и не выпущенный публично) на Atari ST , [2] первый коммерческий релиз [3] был для MS-DOS как проприетарного программного обеспечения . В 2006 году, с выпуском версии 3, [4] Euphoria стала программным обеспечением с открытым исходным кодом . openEuphoria Group продолжает администрировать и развивать проект. [5] В декабре 2010 года openEuphoria Group выпустила версию 4. [6] openEuphoria вместе с новым брендом и талисманом проекта. OpenEuphoria в настоящее время доступна для Windows , Linux , macOS и трех версий *BSD .

Euphoria — это универсальный высокого уровня императивно-процедурный интерпретируемый язык . Транслятор компиляторы Open генерирует C исходный код , коллекция компиляторов GNU (GCC) и Watcom поддерживаются . Альтернативно, программы Euphoria могут быть привязаны [7] с интерпретатором для создания автономных исполняемых файлов . ряд библиотек графического интерфейса пользователя (GUI), включая Win32lib. Поддерживается [8] и обертки для wxWidgets , [9] ГТК+ [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 — это аббревиатура от «Программирование конечных пользователей с использованием иерархических объектов для устойчивых интерпретируемых приложений», хотя есть некоторые подозрения, что это бэкроним . [ по мнению кого? ]

Интерпретатор Euphoria изначально был написан C. на С выходом версии 2.5 [14] в ноябре 2004 года интерпретатор Euphoria был разделен на две части: внешний синтаксический анализатор и внутренний интерпретатор. Интерфейс теперь написан на Euphoria (и используется с транслятором Euphoria-to-C и Binder). Основная серверная часть и библиотека времени выполнения написаны на C.

Euphoria была задумана и разработана со следующими целями и особенностями дизайна:

  • Простота обучения и последовательные конструкции высокого уровня (больше, чем, например, язык BASIC )
  • Реализация плоской 32-битной памяти, чтобы избежать сложного управления памятью и ограничений по размеру адресации.
  • Поддержка отладки и обработка ошибок во время выполнения.
  • Проверка индексов и типов
  • Свободная и строгая типизация переменных
  • Программирование с использованием объектов как типов (определяемых пользователем или иным образом)
  • Интерпретируется с автоматическим управлением памятью и сборкой мусора .
  • Гетерогенные типы коллекций (последовательности)
  • Графическая библиотека DOS (языковые версии Euphoria до 3.1.1 включительно)
  • Отладчик
  • Интегрированная система баз данных
  • Низкоуровневая обработка памяти
  • Простая упаковка (или доступ к ним) C библиотек

Режимы выполнения

[ редактировать ]

Использовать

[ редактировать ]

Euphoria разработана для упрощения обработки динамических наборов данных различных типов и особенно полезна для обработки строк и изображений. Euphoria использовалась в экспериментах по искусственному интеллекту , изучении математики , для обучения программированию и для реализации шрифтов, включающих тысячи символов. [ нужна ссылка ] Большая часть интерпретатора Euphoria написана на Euphoria.

Типы данных

[ редактировать ]

Euphoria имеет два основных типа данных:

Атом — число, реализованное как 31-битное целое число со знаком или 64-битное число с плавающей запятой IEEE . Euphoria динамически переключается между целочисленным представлением и представлением с плавающей запятой в соответствии с текущим значением.
Последовательность — вектор (массив) с нулем или более элементами. Каждый элемент может быть атомом или другой последовательностью . Количество элементов в последовательности не фиксировано (т. е. размер вектора/массива не обязательно объявлять). Программа может добавлять или удалять элементы по мере необходимости во время выполнения. Выделение-освобождение памяти автоматически обрабатывается путем подсчета ссылок. На отдельные элементы ссылаются с помощью значения индекса, заключенного в квадратные скобки. Первый элемент последовательности имеет индекс один [1]. На элементы внутри встроенных последовательностей ссылаются дополнительные значения индекса в скобках, поэтому X[3][2] относится ко второму элементу, содержащемуся в последовательности, который является третьим элементом X. Каждый элемент последовательности представляет собой тип объекта (см. ниже). .

В Euphoria предопределены два дополнительных типа данных:

Целое число – атом , ограниченный 31-битными целыми числами со знаком в диапазоне от –1 073 741 824 до 1 073 741 823 ( от ⁠ до ). Целочисленные типы данных более эффективны, чем типы данных атом , но не могут содержать один и тот же диапазон значений. Символы хранятся как целые числа, например, кодировка ASCII -'A' точно такая же, как кодировка 65.
Объект — универсальный тип данных, который может содержать любое из вышеперечисленного (т. е. атом , последовательность или целое число ) и который может быть изменен на другой тип во время выполнения.

Не существует типа данных символьной строки . Строки представлены последовательностью целочисленных значений . Однако, поскольку в программировании так часто используются литеральные строки, Euphoria интерпретирует символы, заключенные в двойные кавычки, как последовательность целых чисел. Таким образом

"ABC"

выглядит так, как если бы кодер написал:

{'A', 'B', 'C'}

что то же самое, что:

{65, 66, 67}

Привет, мир!

[ редактировать ]
puts(1, "Hello, World!\n")

Комментарии к программе начинаются с двойного дефиса. -- и пройдите до конца строки.

Следующий код ищет старый элемент в группе элементов. Если он найден, он удаляет его путем объединения всех элементов перед ним со всеми элементами после него. Обратите внимание, что первый элемент последовательности имеет индекс один [1] и что $ относится к длине (т. е. общему количеству элементов) последовательности.

global function delete_item( object old, sequence group )
    integer pos
            -- Code begins --
    pos = find( old, group )
    if pos > 0 then
        group = group[1 .. pos-1] & group[pos+1 .. $]
    end if
    return group
end function

Следующая модификация приведенного выше примера заменяет старый элемент новым. Поскольку переменные old и new определены как объекты, они могут быть атомами или последовательностями . Проверка типов не требуется, поскольку функция будет работать с любой последовательностью данных любого типа и не требует внешних библиотек.

global function replace_item( object old, object new, sequence group )
    integer pos
            -- Code begins --
    pos = find( old, group )
    if pos > 0 then
        group[pos] = new
    end if
    return group
end function

Более того, указатели не используются, а индексы проверяются автоматически. Таким образом, функция не может получить доступ к памяти за пределами ее границ. Нет необходимости явно выделять или освобождать память, а также нет вероятности утечки памяти.

Линия

group = group[1 .. pos-1] & group[pos+1 .. $]

показаны некоторые средства обработки последовательностей . Последовательность может содержать набор любых типов, и ее можно разрезать ( чтобы взять подмножество данных в последовательности ) и объединить в выражения без необходимости использования специальных функций.

Передача параметров

[ редактировать ]

Аргументы подпрограмм всегда передаются по значению; нет возможности передачи по ссылке. Однако параметры можно изменять локально (т. е. внутри вызываемого объекта), что реализуется очень эффективно, поскольку последовательности имеют автоматическую семантику копирования при записи . Другими словами, когда вы передаете последовательность подпрограмме, первоначально передается только ссылка на нее, но в тот момент, когда подпрограмма изменяет этот параметр последовательности, последовательность копируется, и подпрограмма обновляет только копию оригинала.

Сопоставимые языки

[ редактировать ]
  1. ^ Перейти обратно: а б с «Домашняя страница RapidEuphoria» . Архивировано из оригинала 11 июля 2012 г. Проверено 30 декабря 2010 г.
  2. ^ Перейти обратно: а б «Форум RapidEuphoria, 10 сентября 2002 г., Роберт Крейг» . Архивировано из оригинала 16 июля 2011 г. Проверено 30 декабря 2010 г.
  3. ^ Перейти обратно: а б «Форум RapidEuphoria, 18 октября 2006 г., 16:44, Роберт Крейг» . Архивировано из оригинала 16 июля 2011 г. Проверено 30 декабря 2010 г.
  4. ^ Перейти обратно: а б «Форум RapidEuphoria, 18 октября 2006 г., 1:19, Роберт Крейг» . Архивировано из оригинала 16 июля 2011 г. Проверено 30 декабря 2010 г.
  5. ^ Перейти обратно: а б «Домашняя страница группы openEuphoria» . Проверено 30 декабря 2010 г.
  6. ^ «Страница загрузки openEuphoria» . Проверено 30 декабря 2010 г.
  7. ^ Перейти обратно: а б с «Руководство openEuhporia, Переплет и укрытие» . Проверено 7 января 2011 г.
  8. ^ «Проект Euphoria Win32Lib в Sourceforge» . Проверено 30 декабря 2010 г.
  9. ^ «Проект Euphoria wxEuphoria в Sourceforge» . Проверено 30 декабря 2010 г.
  10. ^ «Проект Euphoria GTK+ в Sourceforge» . Проверено 30 декабря 2010 г.
  11. ^ «Проект Euphoria IUP Джереми Каугара» . Проверено 30 декабря 2010 г.
  12. ^ «Руководство openEuphoria, База данных» . Проверено 30 декабря 2010 г.
  13. ^ «openEuphoria wiki, Интерфейсы баз данных» . Проверено 2 января 2011 г.
  14. ^ Перейти обратно: а б с д «Сайт RapidEuphoria, примечания к выпуску» . Архивировано из оригинала 4 января 2013 г. Проверено 30 декабря 2010 г.
  15. ^ «Форум RapidEuphoria, 2 марта 1998 г., 13:04, Роберт Крейг» . Архивировано из оригинала 16 июля 2011 г. Проверено 30 декабря 2010 г.
  16. ^ «РапидЭйфория новости» . Архивировано из оригинала 16 декабря 2010 г. Проверено 30 декабря 2010 г.
  17. ^ «Примечания к выпуску openEuphoria» . Архивировано из оригинала 27 июля 2011 г. Проверено 30 декабря 2010 г.
  18. ^ «Руководство openEuhporia, проблемы, связанные с платформой» . Проверено 30 декабря 2010 г.
  19. ^ «Дорожная карта openEuphoria» . Проверено 30 декабря 2010 г.
[ редактировать ]

Бесплатная загрузка Euphoria для различных платформ, пакетов, Windows IDE, библиотек Windows API, кросс-платформенной оболочки GTK3 для Linux и Windows, графических библиотек (DOS, OpenGL и т. д.).

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 48be50686b89a1d3ec52cf8c79c1f47c__1715369940
URL1:https://arc.ask3.ru/arc/aa/48/7c/48be50686b89a1d3ec52cf8c79c1f47c.html
Заголовок, (Title) документа по адресу, URL1:
Euphoria (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)