![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Посетила странная мысль - если стек вызовов в программе становится слишком глубоким (не считая рекурсий по данным, видимо), это означает, что уровень абстракции, предоставляемый используемым инструментом разработки, не соответствует решаемой задаче.
То есть, например, если я использую какую-то библиотеку - должно быть пофиг, как там она делает внутри себя, это должно быть черным ящиком, в том числе и в стеке вызовов. И если нужно отлаживать библиотеку - это нужно делать отдельно, когда кроме нее в стеке вызовов сверху только Main() сидит. А если мы отлаживаем конечную программу - то вызов библиотеки будет сидеть внизу стека, одной строкой.
То есть, например, если я использую какую-то библиотеку - должно быть пофиг, как там она делает внутри себя, это должно быть черным ящиком, в том числе и в стеке вызовов. И если нужно отлаживать библиотеку - это нужно делать отдельно, когда кроме нее в стеке вызовов сверху только Main() сидит. А если мы отлаживаем конечную программу - то вызов библиотеки будет сидеть внизу стека, одной строкой.
no subject
Date: 2009-11-16 08:27 pm (UTC)По идее монады+ленивые вычисления должны порождать такую лапшу, что традиционная отладка в принципе будет бессмысленна.
no subject
Date: 2009-11-16 08:33 pm (UTC)Хотя я бы это дело на уровень компилятора засунул, в виде функции, эквивалентной id, но с записью в какой-нибудь внутренний лог, со стеком/графом вызовов.