Форум программистов, компьютерный форум, киберфорум
Другие языки программирования
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
894 / 643 / 216
Регистрация: 30.06.2015
Сообщений: 3,527
Записей в блоге: 34
1

Euphoria - плюсы и минусы

02.09.2015, 17:34. Просмотров 7438. Ответов 29
Метки нет (Все метки)

Существует такой язык программирования как Euphoria, это акроним «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».
Язык обьединяет в себе синтаксическую простоту basic, с некоторыми конструкциями языка C.
Из https://ru.wikipedia.org/wiki/... мирования):
"Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib[9] и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных."
С сайта www.rapideuphoria.com
" Euphoria против других языков
Положив в основу Euphoria ряды как единственную, простую, общую, рекурсивную структуру данных, удалось избежать громадного объёма сложностей, обычно присутствущих в языках программирования. Массивы, структуры, союзы, массивы записей, многомерные массивы и другие тому подобные объекты других языков все могут быть легко представлены рядами. И структуры высшего уровня, такие как списки, стеки, архивы, очереди, деревья и т.д., тоже не ушли от этой участи.

Более того, в Euphoria вы можете иметь ряды смешанного типа; вы можете присвоить значение любого объекта элементу ряда; и ряды легко растут и сокращаются без всяких дополнительных усилий со стороны программиста по поводу вопросов выделения и освобождения памяти. Точная заблаговременная раскладка данных в структуры не требуется и она может быть создана и изменена динамически по мере необходимости. Легко пишется код общего характера, где, например, вы подаёте и извлекаете из единственного стека объекты разнообразного рода данных. Создание гибкого списка, который содержит разнообразные объекты данных, тривиально в Euphoria, но требует десятков строк уродливого кода в других языках.

Манипуляции с данными весьма эффективны, так как интерпретатор Euphoria не копирует большие объекты, а указывает на уже существующий экземпляр.

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

В отличие от других языков, таких как LISP и Smalltalk, Euphoria выполняет "приборку" неиспользуемой памяти в непрерывном процессе, который никогда не вызывает случайных задержек в исполнении программы и не требует предварительного резервирования огромных участков памяти.

Определения обычных языков, таких как C, C++, Ada и т.д., очень сложны. Большинство программистов осваивает только некоторое подмножество возможностей языка. Стандарты ANSI на эти языки читаются как сложные своды законов.

Вас вынуждают писать разный код для разных типов данных, даже чтобы просто скопировать данные, получить текущую длину, сцепить их, сравнить их и т.д. Руководства по этим языкам переполнены функциями, такими как "strcpy", "strncpy", "memcpy", "strcat", "strlen", "strcmp", "memcmp", и т.п., каждая из которых работает только с одним из многих типов данных.

Слишком много сложностей вокруг вопроса о типах данных. Как определить новые типы? Какие типы данных могут быть смешанными? Как преобразовать один тип в другой, да ещё чтобы компилятор остался счастливым? Когда вам нужно что-то, требующее гибкости во время исполнения программы, вы часто находите себя за занятием, которое очень смахивает на попытки надувательства компилятора.

В этих языках численная величина 4 (к примеру) может иметь различный смысл в зависимости от того, что это за тип: int, char, short, double, int* и т.д. В Euphoria 4 - это атом 4, точка! В Euphoria есть кое-что, также названное типом, но это намного более простая концепция, как мы увидим чуть позже.

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

В других языках широко используются переменные-указатели (пойнтеры). Пойнтеры следовало бы назвать "goto" для структур данных. Они заставляют программиста думать о данных как о закреплённых в памяти огороженных участках, на которых производятся разного рода низкоуровневые, непереносимые на другие платформы трюки. Картина медных кишочек машины, на которой будет исполняться программа, то и дело всплывает в воображении программиста. В Euphoria нет пойнтеров и она не нуждается в них.
"
Официальный сайт и форум OpenEuphoria:http://openeuphoria.org
В данной теме прошу выкладывать свои соображения, примеры кода, сравнения и т.д, касаемые данного языка. Прошу тех, кто когда-либо использовал Eu высказывать своё мнение и демонстрировать свои наработки.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2015, 17:34
Ответы с готовыми решениями:

Перечислите все плюсы и минусы языков программирования Perl и PHP
Что может написать программист на Perl и чего не сможет написать программист на PHP

Плюсы и минусы
В массиве Z(m) найти число чередований знака, то есть число переходов с плюсов на минус или с...

Плюсы и минусы C#
Добрый день! Не хочу ни в коем случае развязывать вечную войну идущей между Delphi и С, но...

Плюсы и минусы
Господа, хочется узнать ваше мнение по такому варианту работы с сервером терминалов. Хочу...

29
2 / 2 / 0
Регистрация: 02.07.2014
Сообщений: 36
26.09.2019, 20:48 21
Ещё новость от Kinz
http://pl-euphoria.narod.ru/gb
------------------------------------------
966. Игорь [kyzyl-tash] (20.09.2019 15:36)
Всем когда-то интересовавшимся рад сообщить,
что с согласия Роберта Крейга я выложил здесь
полный исходный код (C и Eu) двуязычной версии
интерпретаторов EU2.5.

http://pl-euphoria.narod.ru/main_gb.htm

Эти интерпретаторы входят в пакет двуязычной
EU, который можно скачать в разделе Расширения
языка Архива RDS.

http://www.rapideuphoria.com/ru_eu_11.zip
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 7
16.11.2020, 14:00 22
К сожалению после передачи языка сообществу, то несколько разбежалось, а русскоязычного, кроме Игоря Качана (очень благодарен ему за перевод документации, благодаря ему я и подсел на ейфорию, но ни как не смог зарегистрироваться у него на сайте) вообще в сети нет. Шиан к сожалению тоже прикрыл свой форум и новый дизайн сайта стал неудобный.
По языку, вот пример использования библиотеки win32lib (использует чистый WinAPI):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
include win32lib_r2.ew
without warning
integer window, child1, child2
 
window = create(Window, "Main Window", 0, 0, 0,500, 500, 0)
child1 = create(Window, "Child 1", window, 0, 0, 400, 400, 
                {WS_CHILD, WS_CLIPSIBLINGS,WS_VISIBLE, WS_OVERLAPPEDWINDOW})
child2 = create(Window, "Child 2", window, 40, 40, 400, 400, 
                {WS_CHILD, WS_CLIPSIBLINGS,WS_VISIBLE, WS_OVERLAPPEDWINDOW})
                    
procedure mouse_cw(integer self, integer event, sequence p)       
    if find(p[1], {WM_LBUTTONDOWN,WM_RBUTTONDOWN, WM_MBUTTONDOWN, WM_MOUSEMOVE}) then
        moveZOrder( self,  HWND_TOP)
    end if
end procedure
setHandler({child1, child2}, w32HMouse, routine_id("mouse_cw"))
 
WinMain(window, Normal)
0
2 / 2 / 0
Регистрация: 02.07.2014
Сообщений: 36
16.11.2020, 15:04 23
У Игоря (Kinz) на pl-euphoria и не было никогда регистрации.
http://pl-euphoria.narod.ru/gb просто гостевая.
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 7
17.11.2020, 10:07 24
Сорри, перепутал, там нажимаешь Добавить запись и крутиться, крутиться ....
Кстати столкнулся с непонятной ерундой, взял из документации пример:
Код
include std/pipeio.e as pipe
integer i
  object z = pipe:create() 
  object p = pipe:exec("dir", z) 
  if atom(p) then 
    sprintf("Failed to exec() with error %x", pipe:error_no())
	

  end if 
  object c = pipe:read(p[pipe:STDOUT], 6024) 
  pipe:kill(p)  	
i=getc(0)
не работает, если взять другую комманду вместо dir то нормально
0
2 / 2 / 0
Регистрация: 02.07.2014
Сообщений: 36
17.11.2020, 11:07 25
Какая Система, какая Euphoria?
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 7
25.11.2020, 10:34 26
XP, 4.1
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 7
09.02.2021, 14:00 27
Ради интереса перенес эту программку на RDS Euphoria 3.1 и Phix 0.8.3, результат такой же.
Кстати в описании не написано, когда Крейг перестал поддерживать RDS Euphoria 3.1
- на ее идее были реализованы OpenEuphoria, которую развивает сообщество (последний релиз в 2015 году)
- и Phix который делает один человек http://phix.x10.mx/download.php (последний релиз 2 февраля 2021г). В отличии от ОЕ, Phix написан на ассемблере и поддерживает классы. Кину сюда перевод с сайта:

Phix имеет несколько преимуществ перед другими языками программирования:
Замечательно простое, но гибкое и мощное определение языка, которое легко выучить и использовать.
Высокопроизводительный интерпретатор / компилятор намного быстрее, чем большинство других.
Полностью управляемое динамическое хранилище данных без необходимости выделять или освобождать память. Переменные могут увеличиваться или уменьшаться до любого размера без какой-либо ручной обработки.
Обширная проверка во время выполнения на наличие индексов, выходящих за границы, неинициализированных переменных, неверных назначений параметров и переменных и многого другого. Нет никаких загадочных машинных исключений - вы всегда получаете полное описание на английском языке любой проблемы, которая возникает в вашей программе во время выполнения, с точной исходной строкой, в которой она возникает, а также полный список стека вызовов и дамп всего значений ваших переменных. Программы можно отлаживать быстро, легко и более тщательно.
Отладчик уровня исходного кода позволяет выполнять программы построчно. Трассировка может начинаться (или заканчиваться) в любой строке или при любом условии под полным контролем программиста.
Встроенный профилировщик выполнения определяет, какие строки кода занимают наибольший процент времени выполнения или выполняются наиболее часто.
Характеристики основного оборудования обычно скрыты. Программы обычно не осведомлены о длине слова, битовых представлениях, порядке байтов и т. Д.
Тем не менее, Фикс удовлетворяет и любого, у кого более глубокое любопытство. Между языком и операционной системой нет скрытой стены, чтобы полностью понять, как все работает на самом деле. Phix может создавать файлы низкоуровневых списков, которые показывают точные адреса и сгенерированные инструкции по сборке, а также включает программу (filedump.exw), которая показывает каждый бит и байт во всех деталях (в пределах разумного, например, отображаются значки и другие подобные данные. в необработанном шестнадцатеричном формате), для файлов Windows PE, Linux ELF и других форматов.
Самостоятельное размещение, поэтому нет необходимости знать другой язык или приобретать какие-либо другие инструменты разработки для улучшения или исправления самого языка. Вы можете легко загрузить, установить и перекомпилировать Phix менее чем за две минуты! (См. Короткую веб-трансляцию по адресу http://phix.x10.mx/tutorial.php , а также Рекомендуемые инструменты .)
Редактор программистов Edita находится в свободном доступе и написан на Phix со всем, что вы могли ожидать, включая множественную и определяемую пользователем окраску синтаксиса, многоязычную поддержку, intellisense, автозаполнение, сворачивание кода, интегрированную справку, средство рисования окон, полный исходный код и многое другое.
Автономные исполняемые файлы могут быть созданы просто путем добавления флага «-c» к обычной команде интерпретации (или с помощью Ctrl F5 при использовании Edita). (Подробный листинг сборки, упомянутый выше, также представляет собой просто "-d".) Нет никаких сложных опций компилятора, которые нужно запомнить, и нет отдельной фазы компоновки. Простая директива форматирования в исходном коде позволяет легко выполнять кросс-компиляцию в любую другую поддерживаемую систему.
Программы Phix, естественно, носят общий характер. В примере программы показана единственная процедура, которая сортирует данные любого типа - целые числа, числа с плавающей запятой, строки и т. Д. Phix достигает многих преимуществ объектно-ориентированного программирования, но гораздо более простым способом.
0
894 / 643 / 216
Регистрация: 30.06.2015
Сообщений: 3,527
Записей в блоге: 34
09.02.2021, 15:53  [ТС] 28
Бейсик с классами уже не бейсик, эйфория с классами уже не эйфория.
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 7
09.02.2021, 17:00 29
Ну у Phix еще и окутывания нет, только интерпретация и компиляция. А так синтаксис не сильно отличается, отладчик такой же, да и общая концепция не изменилась.
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 7
10.02.2021, 08:45 30
Еще у Euphoria есть Система управления базами данных EDS.

Структура базы данных EDS

В EDS база данных - это единственный файл с расширением имени .edb. База данных EDS состоит из 0 или более таблиц. Каждая таблица имеет имя и содержит 0 или более записей. Каждая запись состоит из области ключа и области данных. Ключ может быть любым объектом Euphoria - атомом, рядом, глубоко вложенным рядом, если хотите. Сходным образом, данные могут быть также любым объектом Euphoria. На размер и структуру ключа и данных не налагается никаких ограничений. Внутри данной таблицы все ключи уникальны. Это означает, что в одной таблице невозможны две записи с одним и тем же ключом.

Записи в таблице размещены по возрастанию величин ключей. Когда вы обращаетесь к записи по ключу, применяется эффективный бинарный поиск. Возможен и прямой доступ к записям, без поиска, если вы знаете текущий номер записи в таблице. Записи имеют целочисленные номера от 1 до длины таблицы (текущего числа записей). Увеличивая номер записи, вы можете эффективно пройти все записи в порядке ключей. Однако имейте в виду, что номер записи может измениться при внесении новой записи или при удалении существующей записи.

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

Библиотека, содержащая EDS, database.e, без изменений будет работать под Windows, DOS, Linux или FreeBSD. Файлы баз данных EDS могут быть скопированы и использованы программами, исполняемыми под Linux/FreeBSD и DOS/Windows. Убедитесь, что при копировании файлов применяется двоичный режим, байт в байт, а не текстовый или "ASCII", при которых не исключены системные манипуляции символами конца строки.

Пример:

база_данных: "мои_данные.edb"
первая таблица: "пароли"
запись #1: ключ: "джонс" данные: "euphor123"
запись #2: ключ: "смит " данные: "billgates"

вторая таблица: "инструменты"
запись #1: ключ: 134525 данные: {"молоток", 15.95, 500}
запись #2: ключ: 134526 данные: {"пила", 25.95, 100}
запись #3: ключ: 134530 данные: {"отвёртка", 5.50, 1500}


Это полностью ваше дело, как интерпретировать значения ключей и данных. В соответствии с духом Euphoria у вас в распоряжении тотальная гибкость. В отличие от большинства других систем управления базами данных, записи в EDS не требуют фиксированного числа полей либо предустановленной максимальной длины полей.
Во многих случаях бывает трудно подыскать какие-либо смысловые естественные величины для значений ключей в ваших записях. Тогда рекомендуется выбрать в качестве ключей просто уникальные целочисленные номера. Не забывайте, что вы всегда можете получить доступ к своим данным по номеру записи. Очень легко организовать циклический просмотр записей по их номерам для поиска специфического значения поля.

Энтузиасты к ней написали SQL оболочку.

p.s. Про классы, я пишу костыли, программы облегчающие работу или увеличивающие функционал других программ, они обычно имеют не больше 500 строчек и мне ни разу не потребовались классы, вполне хватало стандартных типов Euphoria.
Блиин, да я вообще отсталый человек, первый и единственных раз писал классы в конце 90, писал курсовик на Borland Pascal графический калькулятор под Дос графику делал.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2021, 08:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Плюсы и минусы кроссфита
Предлагаю обсудить. Например, мне нравиться такой функциональный тренинг, но я предпочитаю все-таки...

Процессор I7 плюсы та минусы
Ответе какие плюсы та минусы Процессор I7

Плюсы и минусы J2se
Ребята, такой вопрос... Какие преимущества есть у j2se перед другими языками? и почему изучают...

Поддомены. Плюсы и минусы.
Опять к Вам с вопросом господа. 1). Какое кол-во поддоменов безопасно делать на одном домене? При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.