The “Verbally Readable !== Quicker Comprehension” argument on http://ryanflorence.com/2011/case-against-coffeescript/ is really potent and interesting. I and I’m sure others would be very interested in evidence arguing against this. There’s clear evidence for this and I believe it. People naturally think in images, not words, so we should be designing languages that aren’t similar to human language like English, French, whatever.
Being “readable” is quicker comprehension. Most articles on Wikipedia are not readable as they are long, boring, dry, sluggish and very very wordy. Because Wikipedia documents a ton of info, it is not especially helpful when compared to sites with more practical, useful and relevant info. Languages like Python and CoffeScript are “verbally readable” in that they are closer to English syntax. Having programmed firstly and mainly in Python, I’m not so sure this is really a good thing.
The second interesting argument is that CoffeeScript is an intermediator, a step between two ends, which may increase the chance of bugs.
While CoffeeScript has other practical benefits, this question specifically requests evidence showing support for the counter-case of language “readability”
5
I think the Article has a point as far as JavaScript vs. CoffeScript is concerned.
I personally find JavaScript quite readable and I just do not see the point of sticking another layer of syntax on top.
I have similar experiences with Java/Groovy, Groovy is just great: highly expressive, cuts out a lot of useless tedious typing compared with Java, the “extras” like native SQL support are really worth having. BUT the last time I used it debugging was painful, you end up stepping through endless obscure internal Groovy classes before you get back to your own code.
Python on the other hand is a complete self supporting environment, it is it’s own language and is not tacked on top of another language (although Python itself is written in C and has excellent integration with anything written in C or C++). It has its own debugger so for the most part you are debugging the python code you wrote.
The designers of Python obsess over the expressiveness of the language and consistency of syntax. Once you get the hang of it it is very readable. You genuinely write much less code in Python compared with using other languages to solve the same problem, and, well written Python code is clear and unambiguous.
The only downsides are that in common with most dynamic languages it does not play well with IDEs, and, all that lovely high level expressiveness is not interpreted into a lean mean execution.
5
People naturally think in images
The author of that article shouldn’t speak for everyone. Some people naturally think in images, others are more verbal/symbolic. Besides, his examples are of verbal versus symbolic. Neither &&
nor and
is a picture; both are symbolic rather than pictorial, and both are processed by the same side of the brain. Symbolic reasoning is much closer to verbal reasoning than it is to spatial reasoning.
I for one am not a big fan of pictorial programming. It doesn’t communicate to me. I never did like flow charts. I absolutely loathe UML diagrams as they inevitably bring out the worst in both worlds. Pictures make nice cartoons, great for presenting ideas to management. They’re not so good for doing meaningful work in programming, mathematics, or physics (all of which are largely symbolic).
Sometimes pictures just don’t cut it. Symbols are more powerful than pictures. Try drawing a picture of an infinite dimensional Hilbert space.
3
I find the argument about symbols and structure communicating more (and more quickly) than natural words quite compelling, but then my all-time favourite language is Scheme, so I would.
I would answer “somewhat”.
To be fair I think we have to first factor out our personal bias (ie. familiarity with keywords, syntax, and constructs) and only judge languages that we have never seen before. (To judge the more popular languages we can only accept answers from new programmers as they are introduced to a the language for the first time.) Then, given an identical implementation in several languages, the question posed should be “which of these is easier to understand”?
I would guess that the more there is a syntax hurdle the less likely a language will score well in this scenario, and that favors languages with a cleaner and more obvious syntax.
Much more likely to communicate the programmer’s intent will be the choice of variable names and of course the comments that were included, and that transcends nearly all languages.
I don’t read code; I see patterns.
Eventually this applies to all the languages I learn.
The window where ‘readable’ matters is very short, a few days at most, even for idiomatic languages.
1