proc asdf { args } {
# if { first draft complex condition } {
if { final simplified condition } {
do something
} else {
do something else
}
}
Sourcing a file with the above comment inside the proc will produce: missing close-brace: possible unbalanced brace in comment
As with many interpreted languages, maybe it's just too easy to iterate interactively with code until it "just works", rather than taking the time to design the code before writing it, leading to perception that it is a "write-only" language.
However, despite its reputation, even Perl can be written in a way that is human-readable. I agree with you that it is more a reflection of the programmer or the work environment than of the language itself.