Oberon space
General Category => Общий раздел => Тема начата: 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
Кто желает высказаться по сабжу.. Кстати Борис.. не рассматривали как замену Луа?
-
Сорри, конечно же это не быстрая сортировка :D
-
Сорри, конечно же это не быстрая сортировка :D
А с отступами в коде там специально так все плохо?
-
Сорри, конечно же это не быстрая сортировка :D
А с отступами в коде там специально так все плохо?
Питоновских ограничений (а так же разделителей операторов вроде ';') - НЕТ. Что касается примера.. то я просто скопировал его из PDF ника документации... Кстати, документация.. одна из лучших которые я когда либо видел....
-
В порядке пищи для размышления.. Эйфория была создана Робертом Крейгом в 1993 (почти как ББ) , также как и в случае с ББ
задумывалось это дело как коммерческий проект. В двухтысячных он так же как и ББ перешел в Открытое сообщество. Как и в случае с ББ пользователей у него с гулькин нос... но посмотрите на тенденцию развития... и качество продукта... функциональность... - это СОВСЕМ не ББ :-\
-
Сорри, конечно же это не быстрая сортировка :D
А с отступами в коде там специально так все плохо?
Питоновских ограничений (а так же разделителей операторов вроде ';') - НЕТ. Что касается примера.. то я просто скопировал его из PDF ника документации... Кстати, документация.. одна из лучших которые я когда либо видел....
Ну, это все понятно. Просто странно кидать не отформатированный нормально кусок кода, и говорить: смотрите как оно приятно читается!
-
Ну, это все понятно. Просто странно кидать не отформатированный нормально кусок кода, и говорить: смотрите как оно приятно читается!
я это сделал специально!
-
Имеется в виду это -- http://ru.wikipedia.org/wiki/Euphoria_(язык_программирования) (http://ru.wikipedia.org/wiki/Euphoria_(язык_программирования)) ?
Непонятно, зачем он нужен в современное время...
-
(с хорошим форматированием , выделением и подсветкой можно и Схему нормально читать)
-
Имеется в виду это -- http://ru.wikipedia.org/wiki/Euphoria_(язык_программирования) (http://ru.wikipedia.org/wiki/Euphoria_(язык_программирования)) ?
Непонятно, зачем он нужен в современное время...
полагаю, что за тем же что и Луа.. Руби.. Питон... + достойная замена Бэйсику...
т.е. - скриптование и прототипирование
-
т.е. для обучения (в тех учебных заведениях где его используют). Меня на сайте повеселили комменты в стиле "я обучался программированию на Бэйсике, но без особых успехов, но все изменилось когда я перешел на Эйфорию" :D
-
То есть, у него всё сложилось с бейсиком, когда он перешел на эйфорию?
-
То есть, у него всё сложилось с бейсиком, когда он перешел на эйфорию?
:D э нет у него все сложилось с ПРОГРАММИРОВАНИЕМ...
-
На выходных наткнулся на сие чудо. И впечатления довольно противоречивые... Простая система типов - всего 2 базовых:
1.аtom - простой (неделимый) - включающий в себя целые и действительные числа (переходы между ними автоматические)
2. sequence -составной - иерархическая последовательность (возможно пустая) , представляет собой произвольную комбинацию элементов атомарного типа и последовательностей.
Lisp: atom и список
-
Ещё и Рефал сюда годится...
-
На выходных наткнулся на сие чудо. И впечатления довольно противоречивые... Простая система типов - всего 2 базовых:
1.аtom - простой (неделимый) - включающий в себя целые и действительные числа (переходы между ними автоматические)
2. sequence -составной - иерархическая последовательность (возможно пустая) , представляет собой произвольную комбинацию элементов атомарного типа и последовательностей.
Lisp: atom и список
Согласен :D... порешал на Эйфории учебные задачки - впечатления очень приятные. Понятно что реальному продвижению этого языка в России для нужд обучения будет мешать отсутствие инфраструктуры (иде и методических материалов). Что касается использования его для скриптования.. то ей богу , если бы с год назад он попался на глаза.. то я бы его использовал вместо Lua для скриптования Gulpa - качество документации Эйфории на высоте..
-
Кстати Борис.. не рассматривали как замену Луа?
Любопытная штука. Но Lua в ближайшее время мне мало что сможет заменить. Т.к. развитое окружение и популярность Lua перекрывают все недостатки языка с лихвой.
-
Любопытная штука. Но Lua в ближайшее время мне мало что сможет заменить. Т.к. развитое окружение и популярность Lua перекрывают все недостатки языка с лихвой.
в том то и дело, что мне показалось , что у эйфории окружение по шире и качественнее будет, к тому же он быстрее Луа в несколько раз...
-
А где на окружение посмотреть можно? Есть список библиотек и биндов?
И откуда сведения о "быстрее Луа в несколько раз"?
-
А где на окружение посмотреть можно? Есть список библиотек и биндов?
И откуда сведения о "быстрее Луа в несколько раз"?
прекрасная документация в инсталяции (pdf и html) , бенчмарк -http://openeuphoria.org/wiki/view/EuphoriaBenchmarking.wc (http://openeuphoria.org/wiki/view/EuphoriaBenchmarking.wc) , по поводу биндов .. на сайте, лично
я для себя отметил бинды под wxWidgets и Tegraf
-
Не вижу Lua в бенчмарке :)
-
Не вижу Lua в бенчмарке :)
нате http://www.rapideuphoria.com/bench.txt (http://www.rapideuphoria.com/bench.txt) ;)
-
Чет фантастические результаты. Не поверю, пока сам не проверю
-
Чет фантастические результаты. Не поверю, пока сам не проверю
так вперед :D :D :D :D
-
Вот тут результаты вменяемые http://dada.perl.it/shootout/sieve.html (этот же тест)
Эта эйфория от си не отстает? O_o
-
а я откуда знаю... в приведенном вами бенче я ее не увидел...
-
DIzer, а какой вы редактор используете? Там есть IDE?
-
DIzer, а какой вы редактор используете? Там есть IDE?
там есть хардкорный редактор (написанный на эйфории)- который запускается с помощью батника ed.bat (в каталоге bin инсталяции).
Мне он очень напомнил vi - короче. после запуска вводишь скрипт, потом нажимаешь esc в верху появляется полоска команд после чего вводишь команду ( например, для запуска интерпретатора жмешь е (и т.д))... есть подсветка и автокомплит конструкций по мере ввода текста... вообщем весьма хардкорно...
-
DIzer, вам удалось IUP на нем запустить? Я ниасилил :-\
-
DIzer, вам удалось IUP на нем запустить? Я ниасилил :-\
похоже на то ,что этот бинд для Эйфории 3.3... странно , у вас то же самое? (любая демка выдает ошибку на константe значения по умолчанию функции get_color -CENTER_PARENT )
-
Именно так