interesting.  thanks for the thoughtful reply.

On Sun, Jan 24, 2010 at 2:08 PM, Richard Newman <holyg...@gmail.com> wrote:

> That said (and I'm not trying to make this a "charged" statement ... just a
>> way to learn more) I had always thought that one of the key things that made
>> lisp so complete was that programs don't just crash ... that debugging is
>> fully-baked into the *core* of everything.  Now, I don't remember much about
>> the debugging capabilities of, say, CL, but my understanding is that *after*
>> a crash, you can interrogate the state of objects. . . .rather than having
>> to preemptively guess at what you may want to know in the future.
>>
>
> This is  largely down to CL's condition system: problems are usually
> reported as conditions, which stop execution without unwinding the stack.
> Unlike exceptions, you typically get a REPL in the environment of the
> condition (so you can view locals, inspect objects, etc.) — a bit like being
> "dropped into the debugger" in an IDE. Unlike an IDE, you can *do things* to
> the running program, and the condition often offers restarts (e.g., a
> "compile failed" condition might offer to retry the compilation). That means
> you can fix and continue, or just find out what went wrong.
>
> These make an unexpected condition into an interactive process, rather than
> merely an opportunity for logging. By the time you were ready to ship your
> app, you'd experienced most of the failures, and introduced static or
> dynamic handling for those problems.
>
> Unfortunately, Java can't match CL's condition system. There are steps
> towards including some of its power in Clojure (see errorkit).
>
> That said, I still use tracing extensively in Common Lisp development:
> things might not crash, but I still need to see what's going on to identify
> the root cause of some high-level behavior. I also use print statements:
> often trace output is too verbose, or I need to see the result of some
> computation on an intermediate value. Sometimes there's no condition to
> raise.
>
>
>  Trace is better than logging.  Logging just seems like a flawed approach
>> (as others have pointed out).  I mean, Log4j (or related) is desired in Java
>> so that someone can get more information without a recompile.  But in a
>> dynamically run language or in an environment where you aren't just the user
>> of some closed-off code, you may as well just put print statements where you
>> need them.  The latter is what I was advised to do in Clojure, and it was a
>> real turn-off for me.  Maybe the lack of appeal comes from having to squeeze
>> in that extra "do" nesting -- or maybe because you then have to go through
>> and remove all that stuff later.  Or in the case of logging? you always
>> leave it there, FOREVER.  Even if you never end up caring about some state
>> in a production environment!!!
>>
>
> I disagree that logging is a flawed approach. Tracing is an interactive
> tool. Logging allows you to see what happened before you were watching
> (which is important in the case of systems that are running for months or
> years, on many different machines, handling millions of requests). It also
> helps to produce a usable record of events in your program, which aren't
> always visible in trace output — e.g., "this request was invalid because
> this header appears to be truncated". Try spotting that in trace output.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to