Стектрейсы функциональщины
Jun. 16th, 2012 09:06 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
К этому: http://jdevelop.livejournal.com/1969110.html
Вообще, в F# та же проблема. Когда функциональный язык сделан поверх не способствующей тому платформы, стеки вызовов превращаются в кромешный ад.
Причем, если при этом фигурирует ленивость - можно сразу вешаться, т.к. найти источник ошибки, не натыкав во все места принудительную активизацию всех ленивых величин, практически нереально (при работе с БД и утеканием итераторов из открытых запросв это еще обычно и ошибку вылечит).
Альтернатива, видимо - некая визуализация потоков данных и показ "откуда пришла эта хрень".
А еще нужно внутренности жабы и дотнета исключать из стек-трейса, заменяя "известную последовательность" вызовов одной строкой типа "кложурь долбится в интероп за полем".
Вообще, в F# та же проблема. Когда функциональный язык сделан поверх не способствующей тому платформы, стеки вызовов превращаются в кромешный ад.
Причем, если при этом фигурирует ленивость - можно сразу вешаться, т.к. найти источник ошибки, не натыкав во все места принудительную активизацию всех ленивых величин, практически нереально (при работе с БД и утеканием итераторов из открытых запросв это еще обычно и ошибку вылечит).
Альтернатива, видимо - некая визуализация потоков данных и показ "откуда пришла эта хрень".
А еще нужно внутренности жабы и дотнета исключать из стек-трейса, заменяя "известную последовательность" вызовов одной строкой типа "кложурь долбится в интероп за полем".
no subject
Date: 2012-06-16 06:30 pm (UTC)no subject
Date: 2012-06-16 06:37 pm (UTC)no subject
Date: 2012-06-16 06:39 pm (UTC)no subject
Date: 2012-06-16 06:52 pm (UTC)no subject
Date: 2012-06-16 06:57 pm (UTC)no subject
Date: 2012-06-16 06:37 pm (UTC)no subject
Date: 2012-06-16 06:51 pm (UTC)no subject
Date: 2012-06-16 06:59 pm (UTC)no subject
Date: 2012-06-16 07:18 pm (UTC)no subject
Date: 2014-01-22 06:08 am (UTC)no subject
Date: 2012-06-16 06:46 pm (UTC)no subject
Date: 2012-06-16 07:06 pm (UTC)2.
> функциональный язык сделан поверх не способствующей тому платформы
> принудительную активизацию всех ленивых величин
Тут, как бы, вопрос будет независимо от платформы. Рекомендую на х-е покодить, будет ровно тот же опыт, если брать реальные задачи (хотя бы ту же работу с БД). Лентяйка, чо. Не связано с функциональностью языка программирования, связано именно с ленивостью.
3.
> при работе с БД и утеканием итераторов
iteratees для простой работы -- самое то. Даже для clojure применить можно.
no subject
Date: 2012-06-16 07:15 pm (UTC)no subject
Date: 2012-06-16 07:37 pm (UTC)no subject
Date: 2012-06-17 07:09 am (UTC)Но можно же и unsafePerformIO! ;-)
А что делают в чистом энергичном языке? Там это понятие не размыто?
no subject
Date: 2012-06-16 07:19 pm (UTC)no subject
Date: 2012-06-16 07:44 pm (UTC)no subject
Date: 2012-06-16 07:51 pm (UTC)no subject
Date: 2012-06-17 01:07 am (UTC)no subject
Date: 2012-06-17 03:56 am (UTC)А порой, она весьма нетривиальная.
no subject
Date: 2012-06-17 06:44 am (UTC)no subject
Date: 2012-06-17 06:53 am (UTC)no subject
Date: 2012-06-17 06:55 am (UTC)no subject
Date: 2012-06-17 07:19 am (UTC)no subject
Date: 2012-06-17 07:32 pm (UTC)Рекомендую.
no subject
Date: 2012-06-17 06:45 am (UTC)no subject
Date: 2012-06-17 02:18 pm (UTC)no subject
Date: 2012-06-17 04:47 pm (UTC)Второе и третье - одно и то же, и я и сам не уверен, приносит ли ленивость на нынешнем уровне развития технологий в среднем больше вреда или пользы. С удовольствием покодил бы на языке типа Хаскелла, только без ленивости.
no subject
Date: 2012-06-17 04:59 pm (UTC)no subject
Date: 2012-06-17 07:30 pm (UTC)