From: "David A. Black" Date: 2005-10-29T01:10:21+09:00 Subject: "Readability" inflation Hi -- I'm writing this separately from any thread partly because it's a new topic, and partly because I don't want to appear to be pouncing on any particular post or person. If anything, I'm pouncing on several of each :-) But really I'm just puzzling things through. Over the years and, I think, particularly in recent months, there's been a ton of suggestions for changing Ruby syntax. The majority involve adding new semantics through new punctuation. Most of the rest involve some kind of distillation of existing syntax into something smaller. Thus we've see talk of: lambda -> () {} ary.every.capitalize def some_method(:a: :b:,; c::d=:e => f) :-) and so forth. Ruby has always "sold itself" to programmers in large part because it looks so good and, in the eyes of many, many people, successfully balances expressiveness with clarity. "Readability" is not an absolute -- but the empirical evidence suggests that a lot of people experience Ruby as very readable. I'm certainly convinced that if even a few of the punctuation and/or condensation things happen to the syntax, Ruby's reputation for readability will decline rapidly and permanently. I may be wrong, but my belief and working hypothesis is that the "readability margin" is quite narrow and easily erased. That leaves me wondering why all these suggestions keep arising. I think what's happening is that people who've used Ruby for a while get used to it, and then they sort of shift their readability threshold. In other words, if you've seen this: a.map {|b| b.meth } for several years, then even though it looked beautiful and concise and transparent to you at first, it will start to look verbose and syntactically inefficient. So then you might want to have: a.every.meth {|b| (or implicit var, or whatever) } Similarly, if you're used to: f = lambda {|a,b| ... } then after a while, you might find that so natural that you feel "ready" for f = lambda -> (a,b) { ... } And yet... if you had encountered the latter version first, you would never have had the feeling of balance and cleanness that you got (or at least I did) from the former version. So I think there's a kind of readability inflation going on: people who are acclimatized to Ruby start feeling comfortable about going to the "next" level of line-noise and/or compactness. I'd like to sound a note of caution about this. I think it has the potential to disserve Ruby's interests, by moving the language away from the thing that has been proven to be so attractive. I've never been big on the idea of adding features to Ruby to make newcomers "from" other languages feel at home. But here, I am indeed concerned about newcomers. The point, though, is the same, but from the other side: just as I do not advocate putting in C++, Java, or Perl features to sweeten the pot for people considering Ruby, so I do not advocate *removing* what I see as *Ruby* features (even at a fairly fine-grained level). I think either of these things can alter the balance. No, I do not think Ruby should stagnate and be dead. If 1.8.3 were the last version, it would not stagnate and be dead, because people *use* it and do things with it. The fact that, for me, that counts as non-stagnation does perhaps mean that I am quite conservative about language change. I don't think the language needs to change, unless something is truly broken or missing. David -- David A. Black dblack@wobblini.net