Euphoria (язык программирования)
![]() Euphoria ([ju:ˈfɔ:riə], юфо́ри, также рус. эйфори́я, ра́дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software)[2] в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications». Первый публичный выпуск[3] предназначался для 32-битных машин (i386) с MS-DOS и был проприетарным (1993 год). В 2006 году с выходом версии 3[4] проект Euphoria стал открытым, и развивать его начало сообщество OpenEuphoria [5], которое в декабре 2010 года выпустило 4-ю версию[6] с новым логотипом и талисманом[7]. В настоящее время пакет OpenEuphoria версий 4.* выпускается для Microsoft Windows, Linux, Mac OS X и трёх BSD-систем (FreeBSD, NetBSD, OpenBSD). Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана»[8] с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib[9] и «оберток» для wxWidgets[10], GTK+[11] и IUP[12]. Euphoria имеет встроенную простую систему баз данных[13] и «обертки» для работы с другими типами баз данных[14]. ОбзорEuphoria — процедурный язык общего назначения, отличительными особенностями которого являются простота, удобочитаемость, быстрое развертывание и высокая производительность.
ИсторияРазработка языка Euphoria началась с опытов Роберта Крейга[2] на персональном компьютере Atari Mega-ST[15]. Многие идеи дизайна языка пришли из магистерской диссертации Крейга, защищённой им в Университете Торонто[16]. Диссертация была написана под влиянием работ Джона Бэкуса по функциональным языкам программирования[16]. Затем Крейг портировал оригинальную реализацию языка для Atari на 32-битную платформу машин с процессором 386 под управлением Microsoft MS-DOS и выпустил первый пакет (версия 1.0) в июле 1993 года[3] с проприетарной лицензией, основав собственную компанию Rapid Deployment Softawre (RDS) по разработке и продаже интерпретатора Euphoria в варианте DOS32. Первоначальную реализацию для Atari Крейг называет «примитивной»[17] и не публиковал её. До 2006 года Крейг продолжал развивать и издавать Euphoria в своей фирме (сайт rapideuphoria.com[2]), состоявшей из него самого и его жены Джанко Миура, выпустив более десятка версий в двух сериях, 1.* и 2.*. В октябре 2006 года RDS начала 3-ю[4] серию Euphoria и объявила, что в дальнейшем Euphoria будет свободно распространяться по открытой лицензии. Итогом работы с проприетарными сериями 1 и 2 является сообщество зарегистрированных пользователей в 67 странах мира, включающее множество программистов, точное число которых известно только RDS, но на момент выпуска версии 2.5 значительно превышало тысячу. Под непосредственным руководством RDS сообщество продолжало выпускать Euphoria, доведя пакет до версии 3.1.1 (август 2007 года)[16][18]. После этого RDS постепенно отошла от руководства разработкой Euphoria, и дальнейшие усовершенствования и изменения вносятся сообществом OpenEuphoria[5] под коллегиальным руководством. В декабре 2010 года[19] сообщество выпустило версию 4.0, положив начало 4-й серии, теперь с новым логотипом и талисманом проекта[7]. Версия 3.1.1 является важной вехой в развитии языка, так как это последняя версия, официально поддерживающая платформу MS-DOS[20]. Версия 3.1.1 пока остаётся последней версией строгого классического направления, без "вольностей", появившихся в 4-й. Краткий список новшеств, появившихся начиная с версии 4.0.0[21]:
и многое другое. Интерпретатор языка Euphoria первоначально был целиком написан на Си. Начиная с версии 2.5[16], выпущенной в ноябре 2004 года, интерпретатор был разделен на две части: парсер, написанный на Euphoria, и интерпретатор байт-кода, написанный на Си. Отличительные чертыEuphoria задумывался и разрабатывался со следующими целями и отличительными чертами:
Режимы выполнения
ИспользованиеEuphoria задуман как готовое решение для облегчения обработки динамических коллекций данных различных типов и в частности удобен для обработки строк и изображений. Euphoria используют для экспериментов с искусственным интеллектом, изучения математики, обучения программированию и для создания шрифтов, состоящих из тысяч символов. Достаточно большая часть интерпретатора Euphoria написана на Euphoria. Типы данныхEuphoria имеет четыре встроенных типа данных:
В Euphoria нет специального типа данных для символьных строк. Строка представляет собой ряд целых чисел, однако для строк используется привычная запись в двойных кавычках. Таким образом, в программе Euphoria
эквивалентно:
и эквивалентно:
Кроме встроенных типов, программа Euphoria может работать с типами данных, определяемых программистом, и задающих более узкий диапазон значений переменной внутри пределов встроенных типов. Пользовательские типы данных используются в основном при отладке программы, по её окончании проверка этих типов может быть отключена директивой ПримерыHello World
Работа с рядамиСледующий код ищет элемент x в группе элементов. Если такой элемент найден, он удаляется при помощи конкатенации всех элементов группы стоящих перед ним со всеми элементами после него. Заметьте, что первый элемент ряда имеет индекс один [1], а знак доллара $ в качестве индекса обозначает номер последнего элемента ряда. function delete_item (object x, sequence group) integer pos pos = find( x, group ) if pos > 0 then group = group[1 .. pos-1] & group[pos+1 .. $] end if return group end function Строка кода
показывает один из способов работы с рядами[23]. Ряд может содержать группу элементов любого типа, и они могут быть выделены, а потом объединены (конкатенированы) с другим рядом при помощи встроенных операторов. Операция выделения элементов ряда называется сечением ряда. Следующая модификация предыдущего примера заменяет старый элемент новым. Поскольку переменные old и new объявлены как объекты, то они могут быть как атомами, так и рядами. Проверка типов не требуется, так как функция может работать с любыми типами данных. function replace_item( object old, object new, sequence group ) integer pos pos = find( old, group ) if pos > 0 then group[pos] = new end if return group end function Передача параметровПараметры в подпрограмму всегда передаются по значению, однако первоначально передается только ссылка на объект, а его копия создается только если подпрограмма пытается его изменить, и далее подпрограмма работает уже с копией, а не с самим объектом (так называемый метод «копирование при записи»). Таким образом, параметр может измениться внутри подпрограммы, исходный же объект останется неизменным. При необходимости измененную копию объекта можно передать как возвращаемое значение функции. Основные модификации и диалекты EuphoriaДвуязычная версия EuphoriaСуществует модификация 2.5 версии Euphoria с английскими и русскими ключевыми словами (в кодировке CP866) и неограниченным алфавитом для идентификатров, разработанная с участием Крейга[24]. Также ведётся разработка двуязычной модификации для Euphoria версии 3, в данный момент на стадии альфа. PhixPhix[25] — разрабатываемый Питом Ломаксом компилятор языка программирования, базирующегося на синтаксисе RDS Euphoria, но имеющий следующие отличия[26][27]:
На данный момент текущая 0.6.2 версия компилятора, выпущенная 10 июля 2011 года имеет статус бета. Похожие языки программированияЛитератураJuliet Kemp. Joyous coding with OpenEuphoria // LinuxFormat (english version). — November 2013. — № 176. Ссылки
Примечания
|
Portal di Ensiklopedia Dunia