Автор Тема: Эйфория (ЯП)  (Прочитано 11093 раз)

DddIzer

  • Гость
Эйфория (ЯП)
« : Апрель 22, 2013, 11:33:50 am »
На выходных наткнулся на сие чудо. И впечатления  довольно противоречивые... Простая система типов  - всего 2 базовых:
1.аtom - простой (неделимый) -  включающий в себя целые и действительные числа (переходы между ними автоматические)
2. sequence -составной - иерархическая последовательность (возможно пустая) , представляет собой   произвольную комбинацию элементов атомарного типа и последовательностей.
и 2 специальных пример: {1, 4.5, {2, 'h'},"Hello"}
1. integer - 31 битовое знаковое целое
2. object -  обобщенный тип - его значениями могут быть как последовательности так и атомы.
Типизация динамическая строгая.  Выделенного логического типа нет  - используется сишная интерпретация:
логические операции возвращают 0 или 1.. операции сравнения трактуют 0 как ложь , все остальное - как истину.
Строка трактуется как последовательность символов  ("Hello"  эквивалентно {'H','e','l','l','o'})
Есть разделение на процедуры и функции. Многозадачность на уровне языка.
Eсть возможность создания пользовательского типа (по факту представляет функцию возвращающую целое число -  если 0 то рассматриваемое значение не принадлежит этому типу). Модулей нет - есть пространства имен и модификаторы видимости переменных и функций. Есть goto и  label'c  :) тяжелое наследие бэйсиковского прошлого. Указателей нет (на уровне сущностей языка). Громадная стандартная  библиотека (Руби и Луа отдыхают).  OOП - в чистом виде отсутствует (эмулируется как в Луа).
Есть автогенерация документации и модульное тестирование.... Есть 64 и 32 битные реализации под основные платформы...
в бета тестировании  реализация под армы...
Четыре возможных способа распространения программ:
1. исходник
2. IL  код (запускается интерпретатором на хост -машине )
3. IL код с присоединенным интерпретатором (в ввиде exe)
4. Возможна трансляция и автоматическая сборка и компиляция gnu - шным СИ.
Быстродействие интерпретируемого кода - в несколько раз превосходит Питонный и Луашный (на (цело)численных задачах  :D). Ну про откомпилированный код говорить смысла нет...
Визуально текст программ  производи (ИМХО) хорошее впечатление - пример (быстрая сорировка):

include std / console .e
 sequence original_list

 function merge_sort ( sequence x)
 -- put x into ascending order using a recursive merge sort
 integer n, mid
 sequence merged , a, b

 n = length (x)
 if n = 0 or n = 1 then
 return x -- trivial case
 end if

 mid = floor (n/2)
 a = merge_sort (x [1.. mid ]) -- sort first half of x
 b = merge_sort (x[mid +1.. n]) -- sort second half of x

 -- merge the two sorted halves into one
 merged = {}
 while length (a) > 0 and length (b) > 0 do
 if compare (a[1] , b [1]) < 0 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 -- merged data plus leftovers
 end function

 procedure print_sorted_list ()
 -- generate sorted_list from original_list
 sequence sorted_list

 original_list = {19 , 10, 23, 41, 84, 55, 98, 67, 76, 32}
 sorted_list = merge_sort ( original_list )
 for i = 1 to length ( sorted_list ) do
 display (" Number [] was at position [:2] , now at [:2] ",
 { sorted_list [i], find ( sorted_list [i], original_list ), i}
 )
 end for
 end procedure

 print_sorted_list () -- this command starts the program
Кто желает высказаться по сабжу.. Кстати Борис.. не рассматривали как замену Луа?

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #1 : Апрель 22, 2013, 11:41:57 am »
Сорри, конечно же это не быстрая сортировка  :D

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Эйфория (ЯП)
« Ответ #2 : Апрель 22, 2013, 11:43:24 am »
Сорри, конечно же это не быстрая сортировка  :D
А с отступами в коде там специально так все плохо?
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #3 : Апрель 22, 2013, 11:48:27 am »
Сорри, конечно же это не быстрая сортировка  :D
А с отступами в коде там специально так все плохо?

Питоновских ограничений (а так же разделителей операторов вроде ';') - НЕТ. Что касается примера.. то я просто скопировал его из PDF ника документации...  Кстати, документация.. одна из лучших которые я когда либо видел....

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #4 : Апрель 22, 2013, 12:25:20 pm »
В порядке пищи для размышления.. Эйфория была создана Робертом Крейгом в 1993 (почти как ББ) , также как и в случае с ББ
задумывалось это дело как коммерческий проект. В двухтысячных он так же как и ББ перешел в Открытое сообщество. Как и  в случае с ББ пользователей у него с  гулькин нос... но посмотрите на тенденцию развития... и качество продукта... функциональность... - это СОВСЕМ не ББ  :-\

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Эйфория (ЯП)
« Ответ #5 : Апрель 22, 2013, 12:56:11 pm »
Сорри, конечно же это не быстрая сортировка  :D
А с отступами в коде там специально так все плохо?

Питоновских ограничений (а так же разделителей операторов вроде ';') - НЕТ. Что касается примера.. то я просто скопировал его из PDF ника документации...  Кстати, документация.. одна из лучших которые я когда либо видел....
Ну, это все понятно. Просто странно кидать не отформатированный нормально кусок кода, и говорить: смотрите как оно приятно читается!
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #6 : Апрель 22, 2013, 12:59:03 pm »

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Эйфория (ЯП)
« Ответ #7 : Апрель 22, 2013, 01:02:26 pm »
Имеется в виду это -- http://ru.wikipedia.org/wiki/Euphoria_(язык_программирования) ?
Непонятно, зачем он нужен в современное время...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #8 : Апрель 22, 2013, 01:02:48 pm »
(с хорошим форматированием , выделением и подсветкой  можно и Схему нормально читать)

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #9 : Апрель 22, 2013, 01:05:35 pm »
Имеется в виду это -- http://ru.wikipedia.org/wiki/Euphoria_(язык_программирования) ?
Непонятно, зачем он нужен в современное время...
полагаю, что за тем же  что и Луа.. Руби.. Питон... + достойная замена Бэйсику...
т.е. - скриптование и прототипирование
« Последнее редактирование: Апрель 22, 2013, 01:07:17 pm от DddIzer »

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #10 : Апрель 22, 2013, 01:42:53 pm »
т.е. для обучения (в тех учебных заведениях где его используют). Меня на сайте повеселили комменты в стиле "я обучался программированию на Бэйсике, но  без особых  успехов, но все изменилось когда я перешел на Эйфорию"  :D

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Эйфория (ЯП)
« Ответ #11 : Апрель 22, 2013, 01:54:13 pm »
То есть, у него всё сложилось с бейсиком, когда он перешел на эйфорию?

DddIzer

  • Гость
Re: Эйфория (ЯП)
« Ответ #12 : Апрель 22, 2013, 01:59:12 pm »
То есть, у него всё сложилось с бейсиком, когда он перешел на эйфорию?
:D э нет у него все сложилось с ПРОГРАММИРОВАНИЕМ...

Valery

  • Full Member
  • ***
  • Сообщений: 101
    • Просмотр профиля
Re: Эйфория (ЯП)
« Ответ #13 : Апрель 23, 2013, 07:34:52 am »
На выходных наткнулся на сие чудо. И впечатления  довольно противоречивые... Простая система типов  - всего 2 базовых:
1.аtom - простой (неделимый) -  включающий в себя целые и действительные числа (переходы между ними автоматические)
2. sequence -составной - иерархическая последовательность (возможно пустая) , представляет собой   произвольную комбинацию элементов атомарного типа и последовательностей.
Lisp: atom и список

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Эйфория (ЯП)
« Ответ #14 : Апрель 23, 2013, 09:47:18 am »
Ещё и Рефал сюда годится...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…