From: Robert Dober Date: 2006-07-09T02:52:25+09:00 Subject: Re: Why Ruby over Python? ------=_Part_96060_12701113.1152381142117 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On 7/8/06, M. Edward (Ed) Borasky wrote: > > vasudevram wrote: > > Hi, > > > > I'm sticking my neck out here a bit, since I'm relatively new to Ruby, > > but gonna do it anyway ... :0) [I do have a good amount of experience > > in other languages like Java, C, Python]. More knowledgeable Rubyists, > > feel free to flame away at what I say below :-) I know I'll learn > > something from it anyway. > > > Not so much flames as challenges ... > > Reason 0: First of all, its not necessarily a matter of preferring Ruby > > *over* Python. Its not an either-or situation at all - unless you want > > to make it one. Its quite possible to learn and work with more than one > > language at the same time, or at least in a staggered/parallel manner. > > Many top developers are of the view that learning and using more than > > one language is beneficial, helps you grow as a programmer. > I have found that switching languages rapidly, frequently, even in a > "staggered/parallel" manner is for the most part counter-productive. > Programming in *any* language is an activity that requires a mix of > intense focus on the programming tasks *and* an intensely active > communication in a spoken human language with customers and colleagues. > Add multiple programming languages and you lose focus. > > Occasionally a project will need multiple languages. I've found those go > slower and are more difficult than projects where you can wallow in your > knowledge of a single language and a single application domain. I pity a > programmer who has to write a Ruby - FORTRAN bridge that is called by a > Java ERP application for an engineering firm located in Quebec. :) > > Yes, indeed, learning multiple languages does help you grow, provided > they aren't too similar. There's a note about that on someone's blog -- > give me a day or so and I can track it down. But briefly, he claimed -- > and I somewhat agree -- that there are two broad classes of language. > > There's the "Algol Family", into which class C/C++, Java, Python, Ruby, > Perl, etc. fall, and there's the "Lisp Family". If you're like most of > us, you spend most of your time in the Algol family. His point was that > you grow more if you learn a Lisp family language than if you learn > another Algol family language. > > Incidentally, where I disagree is that I think there are six families: > > 1. Macro assemblers > 2. Algol > 3. Lisp > 4. APL > 5. Forth > 6. Smalltalk > > One of the things that's attractive to me about Ruby is that it contains > features from most of the six. I haven't found much of APL or Forth, but > there are clearly influences from Algol, Lisp, Smalltalk and macro > assembler. > > Reason 1: Ruby is more object-oriented than Python. > > > Well ... Ruby objects were there from day one, and they resemble > "classical" object concepts like those in Smalltalk, C++ and Java, but I > don't think *today's* Python is "less object-oriented" than *today's* > Ruby, nor do I think Ruby is "more object-oriented" than R, Lisp or > Scheme. > > Reason 2: The Principle of Least Surprise. You can, to a good extent, > > almost figure out how parts of the language / syntax work, after you've > > learnt a bit of it. Read the Pickaxe and other Ruby books and the docs > > to see more on what this means. > > I've been writing some Ruby code and can attest to it. > > > I haven't found Ruby code all that obvious to a newcomer. I've been > programming a long time, and I have a programming style that evolved > from macro assembler to FORTRAN to Perl to R, with influences from Lisp, > FORTH and Java. > > Part of it is that I'm very much more familiar and comfortable with > functional programming than I am with object-oriented programming. In my > younger days, I was actually one of those people who went around on long > tirades declaiming that Functional Programming was the one true way. :) > I thought pure functional languages had a lot going for them. I still do. > > I spent about three hours last night trying to understand Hal Fulton's > well-crafted example of metaprogramming that reads CSV files. I know it > will make sense to me eventually, but it didn't after three hours. I > know it's "good code", I know it's "elegant code", I know it's an > example of the wonders of Ruby, and I know it works. But I still don't > know why. :) > > Reason 3: No indentation rules like in Python. Just open the logical > > construct like if or while with its corresponding keyword ("if" / > > "while"), close it with "end". Though I'm an experienced developer and > > a very good typist, Python's syntax rules recently almost drove me mad, > > trying to track down an elusive bug that was related to indentation. > > The rules of indentation themselves are straightforward enough. The > > problem arises when you accidentally, say, mix spaces and tabs, or, if > > you're not using tabs (which is probably better), put in one more or > > less space - stuff like that. This was not the problem in my case, > > since I consistently use tabs. The problem arose - I think - because I > > was switching text editors (Metapad and GVim on windows) at times in a > > coding session. This somehow led to the changing of some tabs to > > spaces. Hard to detect visually in a Windows style editor like Metapad. > > Using the ":se list" option in GVim can help, but it still takes time > > to track down and change all those spaces back to tabs. One can argue > > away that one should not change editors in the middle of a session, > > etc., but the point is that this problem simply would not happen in > > Ruby, even if you switch editors midway. > > > Well ... there are language-specific IDEs for Python. If I were > planning/required to learn Python, I'd probably use Leo. I've got Leo > and if I can get it integrated with the languages I do use, Perl, R and > Ruby, I'll give it a shot. And there are language-specific IDEs for > Ruby. But don't *real* programmers use Emacs? > > > > Actually, I've never bothered to learn Emacs. It had a (justified) > reputation as a memory hog, so I learned vi. I'm pretty sure GNU Emacs > is no longer a memory hog, but I'm so firmly down the "vim" path that > Emacs seems like a distraction. > > -- > M. Edward (Ed) Borasky > > http://linuxcapacityplanning.com > > > *much* shorter answers ;) --=20 Deux choses sont infinies : l'univers et la b=EAtise humaine ; en ce qui concerne l'univers, je n'en ai pas acquis la certitude absolue. - Albert Einstein ------=_Part_96060_12701113.1152381142117--