On Mon, Jan 16, 2006 at 10:42:41AM -0800, John McGrath wrote:
} I’m curious – how many of us came to Rails from other branches of the
OO
} world – Java, C# – and how many of us came from the design or non-OO
} scripting worlds?
There’s a third option (and probably more, actually). The languages I
have
learned, as complete and in as close to chronological order as I can
manage:
- AppleSoft BASIC
- Logo
- Pascal
- Bourne shell scripting
- C
- sed and awk
- C++
- tcsh customization (not scripting, quite)
- MIPS assembly
- ml
- Java
- 486 assembly
- Lisp
- JavaScript (a.k.a. VRMLscript and ECMAscript)
- vi/vim scripting
- SPARC assembly
- SQL
- LaTeX
- C++ again (the standard had changed radically, adding generics)
- AppleScript (somewhat)
- Objective-C
- C#
- VB.NET
- Ruby
Notably absent are Scheme, OCAML, Haskell, SmallTalk (though I did learn
a
very little bit), Perl, and Python. When I say I learned one of these
languages, except as noted, it means I did some significant level of
work
in them (and I don’t necessarily mean paid work). Of them, my favorites
are
probably the sh/sed/awk triumvirate, C#, C++, and Ruby. MIPS assembly
and
ml have a certain elegance to them, but they aren’t too useful.
} Reason I ask is that I’m finding Rails a blast and very productive,
but I
} think one reason is that I already cut my teeth on MVC and ORM during
two
} years of writing apps with J2EE/Struts/Hibernate. And in Javaland, it
took
} me a while – more than a few months – to really wrap my head around
those.
}
} I’m wondering, what’s the learning curve like for someone being
exposed to
} OO/MVC/ORM for the first time through Rails? How long, on the average,
does
} it take to feel comfortable?
The point is that I’m from the “lots of languages, lots of paradigms”
world. It took me perhaps 16 hours to learn Ruby well enough to create a
small Ruby on Rails app to kick the tires. Mind you, those 16 hours were
spread out over the course of a few months, including the pickaxe book
as
bathroom reading and idly poking through Why’s Poignant Guide. I just
ordered the Agile Rails book last week, so I expect to get deeper into
it
soon.
Ultimately, there’s nothing new under the sun in language design. Even
the
seemingly novel plan to add query language support to C# is just a
better
implementation of embedded SQL. Knowing awk, ml/Lisp, and Objective-C is
sufficient to grasp Ruby. The advances in languages have everything to
do
with incresing how much I can express clearly and precisely in each line
of
code; it’s a quantitative, not qualitative, difference.
If I were dictator of the (software development) world, everyone who
wanted
to program would have to learn (and use for something significant) at
least
ten languages, including C, some kind of assembly, some true functional
language (e.g. Haskell, Scheme, ml), SQL, some scripting language
(e.g. sh/sed/awk, Ruby, etc.), and some “mainstream” OO language (e.g.
C++,
Java, C#, Obj-C). Learning a first language is hard. Learning a second
language is sometimes even harder. Learning a fifth language is pretty
easy. Learning a tenth is trivial. Learning a 20th is a lark. I try to
learn a new language every couple of years. Aside from keeping me
relevant,
it helps me understand the languages I already know even better.
} John
–Greg