Читаем Язык программирования Euphoria. Справочное руководство онлайн бесплатно


Язык программирования 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

Коллектив авторов

Компьютеры и Интернет / Программирование, программы, базы данных
<p>Язык программирования Euphoria</p>версия 3.1Справочное руководство(c) 2007 Rapid Deployment SoftwareРазрешено свободное копирование этого Руководства.Источник данного текста:http://rapideuphoria.com/russian/refman_r.htm<p>Часть I - Ядро языка</p><p>1. Введение</p>

Язык программирования Euphoria имеет следующие преимущества перед другими языками:

* исключительно простое, гибкое и мощное определение ядра, которое легко поддаётся изучению и дальнейшему использованию.

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

* уникальный высокопроизводительный интерпретатор, который в 30 раз быстрее обычных интерпретаторов вроде Perl или Python.

* оптимизирующий транслятор с Euphoria на Си, ещё более разгоняющий вашу программу, часто от 2-х до 5-ти раз прибавляя ей скорости по сравнению с интерпретатором, и без того необыкновенно быстрым.

* широкая проверка правильности хода программы: контролируются индексы вне диапазона, неинициализированные переменные, неверные величины параметров библиотечных подпрограмм, недопустимые типы данных, присваиваемых переменным и т.п. Здесь практически не бывает загадочных машинных исключений -- вы всегда получаете полное описание на человеческом языке того, что случилось с вашей программой во время её прогона, плюс распечатку последовательности вызовов подпрограмм и значений всех переменных программы. Программа отлаживается быстро, просто и более досконально.

* вы полностью защищены от необходимости знать особенности вашей машины. Для программирования не требуются сведения о длине машинных слов, представлении величин на битовом уровне, порядке байтов и т.д. и т.п.

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

* программы Euphoria работают на платформах Linux, FreeBSD, 32-битной Windows и DOS любой версии, не имея никаких ограничений на объем доступной для использования памяти, в том числе, пресловутых 640K. Вы можете создавать программы, которые автоматически используют всю много-мегабайтную оперативную память вашей машины, плюс дисковый файл памяти, если оперативной оказывается недостаточно.

* вы можете трансформировать исходный код ваших программ в самостоятельные двоичные исполняемые файлы разнообразных типов и форматов.

* подпрограммы Euphoria естественным образом универсальны. Пример программы, который вы найдете чуть ниже, демонстрирует единственную подпрограмму, которая одинаково успешно сортирует данные любого типа : целые числа, числа с плавающей точкой, строки и т.д. При этом Euphoria не является "объектно-ориентированным" языком, а достигает многих преимуществ этих языков значительно более простым путём.

* система программирования Euphoria полностью свободна и открыта.

<p>1.1 Пример программы</p>

Здесь представлен пример завершённой программы Euphoria.

~~~~~~~~~~~

sequence list, sorted_list

function merge_sort(sequence x)

-- сортирует x в порядке возрастания методом рекурсивного слияния

integer n, mid

sequence merged, a, b

n = length(x)

if n = 0 or n = 1 then

return x -- тривиальный случай

end if

mid = floor(n/2)

a = merge_sort(x[1..mid]) -- сортируется первая половина x

b = merge_sort(x[mid+1..n]) -- сортируется вторая половина x

-- слияние двух отсортированных половинок

merged = {}

while length(a) 0 and length(b) 0 do

if compare(a[1], b[1]) then

merged = append(merged, a[1])

a = a[2..length(a)]

else

merged = append(merged, b[1])

b = b[2..length(b)]

end if

end while

return merged & a & b -- слитые данные плюс остатки

end function

procedure print_sorted_list()

-- генерирует sorted_list из list

list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2}

sorted_list = merge_sort(list)

? sorted_list

end procedure

print_sorted_list() -- эта команда запускает программу

~~~~~~~~~~~

Данный пример содержит 4 отдельные команды, которые выполняются последовательно. Первая объявляет две переменные: list и sorted_list как ряды (sequence) (гибкие массивы). Вторая определяет функцию merge_sort(). Третья определяет процедуру print_sorted_list(). Четвёртая и последняя команда вызывает процедуру print_sorted_list() на исполнение.

Программа печатает на экране:

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.

merge_sort() так же легко отсортирует {1.5, -9, 1e6, 100} или {"oranges", "apples", "bananas"} .

Данный пример имеется в каталоге Euphoria -- euphoria\tutorial\example.ex . Это не самый быстрый из методов сортировки, доступных в Euphoria. Перейдите в каталог -- euphoria\demo -- и введите команду "ex allsorts", чтобы проверить хронометраж различных алгоритмов сортировки при возрастании числа сортируемых объектов. Быстрый учебный пример программирования аналогичной функции на Euphoria вы можете также найти в -- euphoria\demo\bench\filesort.ex .

<p>1.2 Установка</p>

Чтобы установить систему Euphoria на своей машине, сначала прочтите инструкцию в файле install_r.doc . Установка заключается в простом копировании файлов euphoria на ваш жесткий диск в каталог (директорию) с именем "euphoria", и последующей модификации вашего файла autoexec.bat с таким расчётом, чтобы включить каталог euphoria\bin в путь поиска, а переменную окружения EUDIR установить на каталог euphoria.

После установки каталог euphoria на вашей машине будет выглядеть примерно так:

\euphoria readme.doc readme.htm License.txt \bin Интерпретаторы ex.exe и exw.exe. Трансляторы ec.exe и ecw.exe. Или на Linux/FreeBSD, интерпретатор exu и транслятор ecu. Здесь также будут служебные программы, такие как ed.bat, guru.bat и т.д. \include стандартные библиотеки, т.е. graphics.e и т.п. \source полный исходный код (интерпретатор, транслятор, биндер) \doc refman.doc, library.doc и другие файлы документации в простом текстовом формате \html файлы формата HTML, соответствующие каждому из файлов .doc в каталоге doc \tutorial небольшие учебные программы, которые помогут вам в изучении Euphoria \demo общие демо-программы, которые работают на всех платформах \dos32 демо-программы, специфические для DOS32 (может не быть) \win32 демо-программы, специфические для WIN32 (может не быть) \linux демо-программы, специфические для Linux/FreeBSD (может не быть) \langwar игра language war (пиксельно-графическая версия для DOS или текстовая версия для Linux/FreeBSD) \bench программы оценки производительности Подкаталог Linux не включается в пакет для DOS/Windows, а dos32 и win32 подкаталоги не включаютя в пакет для Linux/FreeBSD. В данном Руководстве каталоги показаны с использованием обратной косой черты. ( \ ). Пользователи Linux/FreeBSD должны помнить, что там действует обычная косая черта( / ).

<p>1.3 Запуск программы</p>

Программы Euphoria запускаются из командной строки вводом команды ex , exw или exu , сопровождаемой именем главного файла программы Euphoria. Вы также можете вводить здесь дополнительные слова (известные как аргументы командной строки ). Ваша программа может вызывать встроенную функцию command_line(), чтобы прочесть всю введённую вами командную строку. Версия интерпретатора Euphoria для DOS32 называется ex.exe . Версия для WIN32 называется exw.exe . Версия для Linux/FreeBSD называется exu . Как это здесь принято, главные файлы программ Euphoria имеют расширения .ex , .exw или .exu . Другие файлы Euphoria, предназначенные для включения в главную программу, имеют расширения .e или иногда .ew или .eu . Чтобы сократить команду, вы можете опускать ".ex", и интерпретатор ex будет подставлять это расширение для вас автоматически. exw.exe будет подставлять ".exw", а exu -- ".exu". Каждый из интерпретаторов перебирает и другие возможные расширения, если файл с основным расширением не нашёлся. Если файла с заданным именем, но ни с одним из условленных расширений, нет в текущем каталоге, проверяются каталоги из переменной окружения PATH (сначала с использованием основного расширения, а затем остальных).

Вы можете перенаправлять стандартные ввод и вывод из программы Euphoria, например:

ex filesort.ex sorted.txt

или просто,

ex filesort sorted.txt

В отличие от многих других компиляторов и интерпретаторов, здесь нет аргументов командной строки, предназначенных для изменения режима собственно интерпретаторов ex , exw или exu . Интерпретатор реагирует только на имя вашей программы Euphoria, и если вы не указали это имя, он пригласит вас к его вводу.

Для часто используемых программ под DOS/Windows вам могут пригодиться маленькие пакетные .bat файлы, к примеру, myprog.bat , содержащий пару команд наподобие показанных ниже:

@echo off

ex myprog.ex %1 %2 %3

Первая команда выключает отображение собственно команд на экране. Вторая - запускает ex myprog.ex с тремя или менее аргументами командной строки. Просмотрите описание функции command_line(), там есть пример, как можно читать эти аргументы по ходу вашей программы. Если вашей программе требуется большее число аргументов, нужно добавить %4 %5 и т.д. Наличие .bat-файла сэкономит вам несколько нажатий на клавиши при наборе ex (или exw ) каждый раз, когда вы запускаете свою любимую программу, т.е. вы можете просто ввести:

myprog

вместо:

ex myprog

К сожалению, DOS не позволяет перенаправление стандартных ввода и вывода, если вы используете .bat -файл.

Под Linux/FreeBSD, вы можете задать путь к интерпретатору Euphoria в первой строчке вашего главного файла. То есть, если ваша программа называется, например, foo.exu:

#!/home/me/euphoria/bin/exu

procedure foo()

? 2+2

end procedure

foo()

Затем вы делаете ваш файл исполняемым:

chmod +x foo.exu

А затем просто вызываете его на исполнение:

foo.exu

чтобы запустить свою программу. Вы можете даже укоротить имя программы до простого "foo". Интерпретатор Euphoria игнорирует первую строку, если она начинается с #! . А командный интерпретатор ОС Linux трактует такую строку как путь к программе (т.е. интерпретатору Euphoria), предназначенной для открытия (запуска) данного файла. Но будьте внимательны - эта первая строка должна заканчиваться в стиле Linux/FreeBSD символом перевода строки \n, а не в стиле DOS/Windows символами возврата каретки - перевода строки \r\n, иначе командный интерпретатор Linux/FreeBSD может сбиться. Если ваш файл окутан, вы должны указывать путь к backendu, а не к exu.

Что касается связанных файлов, их можно получить, запустив bind.bat (DOS32) или bindw.bat (WIN32), или bindu

(Linux/FreeBSD), чтобы связать вашу программу Euphoria с ex.exe , exw.exe или exu в единый самостоятельный двоичный исполняемый файл (типа .exe для DOS/Windows). С таким самостоятельным .exe -файлом вы можетеуже и перенаправлять стандартные ввод и вывод. Окутывание и связывание подробно обсуждаются в разделе 1.5 Распространение программы .

Используя транслятор с Euphoria на Си, вы можете получить другой вариант самостоятельного .exe-файла, который обычно будет исполняться значительно быстрее, чем связанная программа.

exu или ex.exe и exw.exe находятся в каталоге euphoria\bin , который должен быть в пути поиска. Переменная окружения EUDIR должна указывать на главный каталог Euphoria, т.е. c:\euphoria .

<p>1.3.1 Запуск под Windows</p>

Вы можете запускать программы Euphoria прямо из окружения Windows или из оболочки DOS, которую вы открыли из Windows. Ассоциируя .ex -файлы с интерпретатором ex.exe , а .exw -файлы с интерпретатором exw.exe , вы можете затем просто сделать двойной щелчок мышью на .ex - или .exw -файле, чтобы запустить их на исполнение. Под Windows вам следует задать новый тип файла для расширения .ex , последовательно щёлкнув на значке My Computer и опциях / view / options / file types. Несколько программ Euphoria могут исполняться одновременно в разных окнах. Если вы преобразовали свою программу в .exe -файл, вы можете запускать её двойным щелчком мыши на её значке - как и любую другую программу Windows.

<p>1.3.2 Использование файла памяти</p>

Если ваша программа Euphoria исполняется под Linux/FreeBSD или Windows (или в оболочке DOS под Windows) и ей недостаточно свободной оперативной памяти, она начинает использовать "виртуальную память". Операционная система предоставляет такую память вашей программе автоматически, выгружая часть менее актуального кода и данных из оперативной памяти на диск, в системный файл памяти (его ещё называют файлом "подкачки" или своп-файлом). Чтобы изменить размер файла памяти под Windows, щёлкните Control Panel / 386 Enhanced / "virtual memory...". Под OS/2 вы можете подстроить величину "DPMI_MEMORY_LIMIT", щёлкнув на значке виртуальной DOS-машины, "DOS Settings", чтобы выделить больше расширенной памяти для своей программы.

Под чистой DOS, вне Windows, системный файл памяти отсутствует, поэтому расширитель DOS, встроенный в интерпретатор ex.exe (DOS32), создаёт свой собственный файл памяти для использования вашей программой. Прочтите файл platform_r.doc, там есть кое-какие подробности на этот счёт.

<p>1.4 Редактирование программы</p>

Похожие книги