10% as verbose as Perl, 3X faster: K is the best language you've never heard of
kuro5hin.org
kuro5hin.org
Maybe I'm missing something.
Would that be easier to read if I added (superfluous) words?
If your aim is to save yourself a couple characters per line, fine. But it does come at a cost.
There's a lot of other considerations, and right now Haskell and Erlang are leading my "what'll my next back end projects use" list (after Perl 6...which I'm getting excited about after seeing Audrey Tang's talk about it from a few days ago, as it appears it will fix every single major problem with Perl, by my reckoning)...but I'm not going to rule out a language merely because my first glance at it makes me uncomfortable or confused (if that were the case, I would have never used Perl, Python, Ruby, and I would be avoiding messing with Erlang and Haskell...I might have even continued trying to figure out Java, since it seemed comfortably familiar based on my C experience, but I believe that would have been a very bad instinct).
bzip2 -9 <hellow.c | uuencode hellow.c.bz2
(For that matter, I try to avoid Perl too.)
http://www.paulgraham.com/indylangs.html
"The individual tokens should be short as well. Perl and Common Lisp occupy opposite poles on this question. Perl programs can be almost cryptically dense, while the names of built-in Common Lisp operators are comically long. The designers of Common Lisp probably expected users to have text editors that would type these long names for them. But the cost of a long name is not just the cost of typing it. There is also the cost of reading it, and the cost of the space it takes up on your screen."
I'd guess that if you want to be better at Arc than all the Arc-philes who know Lisp, K would be worth studying.
Seriously, this is one case where I think PG is wrong. Typing isn't the main productivity burden on programmers, thinking is. Any time you make someone decipher an identifier, you're slowing them down. Unpronounceable functions are particularly bad: I dunno about others, but I always think "F-N" when I see "fn", while I think "def" when I see "def".
I think Python and Scheme have it basically right, Haskell is okay but has an unfortunate tendency towards obscure vocabulary and cryptic conventions (nub? foldl? mapM_?), and Common Lisp and Java are way too verbose.