ФлеймФорумПрограммирование

Что накодить на Haskell'е? (5 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#60
16:18, 26 сен 2011

cNoNim
> мне надо либо твой эрланг запустить либо тебе мой хаскель
Да думаю практически не зависит. У тебя же не селерон 600 :) Думаю железо одинаковое приблизительно. У меня тут Пентиум Дуал Коре на 2.52

#61
16:19, 26 сен 2011

entryway
сделай тогда уж fib 40 :) мне для 40 алгоритм на хаскеле давал не тот результат )
хотя это наверное изз того что я не понимаю что такое в erlange

-> ok

:)

#62
16:19, 26 сен 2011

entryway
у меня core i7 на 2

#63
16:22, 26 сен 2011

cNoNim
> сделай тогда уж fib 40 :) мне для 40 алгоритм на хаскеле давал не тот результат
http://prboom-plus.sf.net/clip/2011-09-26_15.21.26.png

Забей на ok. Это просто 'ok' в консоль, мол "готово".

#64
16:25, 26 сен 2011

Небось Erlang сольет.
http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&… mp;lang2=hipe

#65
16:25, 26 сен 2011

cNoNim
> у меня core i7 на 2
Сойдет. Давай первые 100к простых замеряй.

#66
16:33, 26 сен 2011

Теперь вечером ;) может какой нить online компилятор
Тока надо чтоб и то и то поддерживал

#67
16:41, 26 сен 2011

А как выглядит игровой цикл на хаскеле?

#68
17:18, 26 сен 2011

Chipmunk
> Есть ли смысл писать ммо сервер на ерланге?
и да, и нет.
тут нужно взвешивать за и против.
если браузерку - та да, ирланк ничуть не хуже петона.
если какой-нибудь ММОшутер, то скорее всего нет, либо делать критически важные к скорости участки в виде NIF'ов.

#69
17:37, 26 сен 2011

В хаскеле input, render будут грязными этапами игрового цикла
Поэтому в бой пойдут монады и геморрой, но в целом есть решения

#70
12:33, 27 сен 2011

Объясните, почему я не могу перехватить исключение нехватки памяти в ерланг.

Возьмем код генерации чисел Фибоначчи с предыдущей страницы и модифицируем его так, чтобы все найденные числа сохранялись в списке и попытаемся нагенерить 100k таких чисел.

Получаем такую картину:

Изображение

Обернем все функции в try catch блок следующим образом:

-module(fib).
-export([fib/1]).

fib(N) ->
  try
    fib([], N, 1, 1)
  catch
    _:_ -> fail
  end.

fib(List, 0, _, _) ->
  try
    lists:reverse(List)
  catch
    _:_ -> fail
  end;

fib(List, N, F1, F2) ->
  try
    fib([F1 | List], N - 1, F2, F1 + F2)
  catch
    _:_ -> fail
  end.

Почему ерланг продолжает падать? Насколько я понял — сделать ничего нельзя. Как с этим в хаскеле?

#71
15:28, 27 сен 2011

entryway
> Почему ерланг продолжает падать? Насколько я понял — сделать ничего нельзя.
потому что версия Эрланга под windows делается и тестируется по остаточному принципу.
проверил работу "гениального" кода под виртуальной машиной Debian Linux,  erl R14A, 2Gb памяти выделено под виртуалку - да, затупило, но выдало результат.
вывод: использовать Эрланг в родной для него среде.
и предупреждение на будущее: сеть в эрланге под виндовс тоже написана лишь бы как. если под линуксом используется epoll, то под виндовсом - только select (iocp пока никто не прикрутил).

#72
15:47, 27 сен 2011

ffinder
> проверил работу "гениального" кода под виртуальной машиной Debian Linux, erl
> R14A, 2Gb памяти выделено под виртуалку - да, затупило, но выдало результат.
Результат и у меня выдает. И даже сообщает о нехватке памяти. А потом erl.exe падает.

Падение повторяется не всегда. По шоту видно, что ерланг пытается выделить 400мб, но видимо из-за фрагментации иногда не получается.

ffinder
> вывод: использовать Эрланг в родной для него среде.
Мне кажется, что чтобы делать такие выводы ты должен добиться похожего сообщения об ошибке о нехватке памяти на твоей виртуалке ("помочь" может запуск несколько раз подряд или нескольких копий), но не получить падения оболочки.

#73
17:09, 27 сен 2011

entryway
В этом коде try/catch использованы неправильно, он вообще никаких исключений не словит.

А падать оно должно, поскольку удобнее, когда реакция на нехватку памяти всегда одна.
Можно попросить много памяти, и ее дадут. Но не факт, что ее всю можно использовать.
Если в нее достаточно много всего вписать (+ запустить сбоку пару новых процессов), то наша программа может оказаться наедине с пустыми обещаниями от ядра. В этом случае ядро без лишних вопросов убьет какой-то из процессов.

Если даже обрабатывать ошибку маллока, то что можно сделать без памяти с таким языком? Это же не С, который делает разворот на месте. Тут придется каждому актеру давать блок памяти на черный день. (и не забыть еще обработать рассмотренный ранее случай, когда ОСь просто убивает виртуальную машину)

#74
17:19, 27 сен 2011

Chipmunk
> В этом коде try/catch использованы неправильно, он вообще никаких исключений не
> словит.
Все там правильно

Programming Erlang by Joe Armstrong:
http://www.vigith.com/blog/erlang/tutorial/chapter-4

try Expr
catch
    _:_ -> ... Code to handle all exceptions ...
end
this will catch all the exceptions, but if you replace _:_ with _ then only default throw will be caught.

Страницы: 1 2 3 4 5 6 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.