Hacker News new | ask | show | jobs
by japherwocky 5509 days ago
Someday, you'll get to work in a language that has a good REPL, and you'll never want to go back to printing. :)
2 comments

I'm sorry, but this is condescending and simply false, even with the smiley face. I use output for inspection in Perl, Scheme, Javascript, and for (what are in my world) good reasons. The print statement usually doesn't influence the running program in any way. That means no matter who wrote the interpreter/compiler, the debugger, or whatnot, the printing won't have much influence on the program. But I've heard "Why is this bug only showing up in the debugger?" more than once in my time.
Someday, you'll want to run your code more than once, and you'll write tests instead of typing them into the REPL.
Print statements aren't meaningful tests, though. Hence the eight hojillion xUnit ports for pretty much every major language.
OK, so say you have some test that creates a foobar object and invokes the method baz, which does some stuff that you care about. The test fails. What do you do? Do you pick apart the implementation of baz in the REPL, or do you add some print statements inside baz?

The second option is easier. You obviously remove them once your understanding (and tweaking) of the code leads to a passing test.

you set a trace point inside baz, investigate with the REPL, and fix your code.
wait.. what? are you scanning stdout with your tests?