From: quixoticsycophant@... (Jeff Mitchell) Date: 2003-07-30T11:35:18+09:00 Subject: Ruby could be wildly more popular if it had ... Brackets. Huh? What do you mean "brackets"? Brackets. Ruby doesn't have enough brackets. Hmph! I think ruby has the exact right amount of brackets! But not enough to become popular. Brackets are a prerequisite, didn't you know? That's preposterous! Ruby's great design, its expressiveness, its clarity, its generally grand way of doing things -- all these strengths and you are saying brackets are more important? Yes. To be popular. You keep saying "popular." But who cares about popularity anyway? As if the measure of a language is its popularity. Are you a card-carrying member of the ignorant masses who follow whatever is "hot" at the moment, disregarding what may really be better? No. Then screw popularity. We don't need whimsy programmers who are attracted to the simulated familiarity which brackets give. Such shallow programmers we can do without, thank you. Then you shall continue basking in the lonely sunshine of relative obscurity, secure in your knowledge of what programmers should be like. Good luck with all of that. [brief pause] Surely you are a troll. Nope. What about Python? It doesn't have brackets. Um, Python isn't popular. Perhaps relative to ruby it is. All Python programmers rode the short bus anyway. Huh? Python programmers -- they rode the short bus to school. Short bus? It's the bus for the special -- oh nevermind. [end conversation] Exhibit A. ---------- Ruby as it exists presently. class IO def expect(pat,timeout=9999999) buf = '' case pat when String e_pat = Regexp.new(Regexp.quote(pat)) when Regexp e_pat = pat end while true if IO.select([self],nil,nil,timeout).nil? then result = nil break end c = getc.chr buf << c if $expect_verbose STDOUT.print c STDOUT.flush end if mat=e_pat.match(buf) then result = [buf,*mat.to_a[1..-1]] break end end if iterator? then yield result else return result end nil end end "Oh great another language trying to be different." "Pascal sucks. I hate the 'end' keyword." "My editor isn't set up to handle this language. I don't understand why they can't just use brackets." "A garbled mess, looks like. It's confusing without brackets to guide my eye." Exhibit B. ---------- Ruby as it exists in an alternative universe where it supplanted perl. class IO { expect(pat,timeout=9999999) { buf = '' case pat { when String e_pat = Regexp.new(Regexp.quote(pat)) when Regexp e_pat = pat } while true { if IO.select([self],nil,nil,timeout).nil? { result = nil break } c = getc.chr buf << c if $expect_verbose { STDOUT.print c STDOUT.flush } if mat=e_pat.match(buf) { result = [buf,*mat.to_a[1..-1]] break } } if iterator? { yield result } else { return result } nil } } "Wow cool language. I see what's going on immediately." "I like how it's familiar. My eye is trained to follow brackets, so I can size up this code with one glance." "Hey this looks just like Java! I know Java! I can't wait to start using ruby as my no-separate-compile-step language!" "Dude this is gonna kick perl's ass." ---- I am being more serious than it may or may not appear. I think ruby missed out on a big chance here. It is absurd, but it's true. cheers, Matt