in reply to Why like Perl?
I'm not really a programmer, or at least I don't really consider myself one primarily. I always wanted to be...a lumberjack! Well, not really, but I never thought about being a programmer until I had already started doing a lot of programming as a scientist. Along the way I've run into a lot of languages. The things I like about Perl are probably best reflected in the reasons I don't use other languages. This isn't a knock on other languages: just a personal cost-benefit analysis and a bit of personal preference. Furthermore, once I made the commitment to Perl, I'm locked in. Switching costs can be pretty high once you choose your rut.
Perl is mostly stable: I used to like Java. I really don't have anything against it, and I haven't used it recently, but I was a partner in a company where another partner was a guy on the JavaSoft team. So, we used some Java. Then things got funky and Java became a moving target. I liked Macs, but despite that fact that JavaSoft was literally across the street from Apple, the Java runtime on Macs sucked. Perl's getting to be a little like that with the changes in various core modules, but certainly not as bad as the Java 1.0 days. Java is probably a lot more stable now, but I made the switch a long time ago.
Perl works with other things: I like Smalltalk, but unless I want to immerse myself in something that nobody else besides Ward Cunningham and 200 other people in the world know and use, I'm not going to get a lot of work done. I think Smalltalk would be more interesting if my machine was a Smalltalk environment, but it's unix, so it isn't. Unix let's all sorts of things talk to all sorts of other things.
Perl has sigils and CPAN: Python is nice. I like Python. There is a lot of good stuff there. However, it's missing sigils. Every time I try to use something in Python, I run into some problem with reserved keywords. A couple times a year I try to do everything I need to do in Perl in Python, but have a hard time finding the right modules.
Perl isn't object-oriented, and Perl has CPAN, part 2: Ruby is nicer than Python. Ruby is a wet dream, really, and I mean that as a compliment. It's as old as Perl 5. They have a nice community. They are getting more and more modules together. I even wrote a couple of Ruby articles, I think. Still, Ruby is object-oriented, and sometimes I don't need objects. There is some project size where an completely OO system costs as much as a procedural one, but I still do a lot of small things with Perl, so I don't want the extra OO baggage all the time. If I had to switch languages, I'd be all over Ruby. (Wait, that doesn't sound PC).
Perl isn't FORTRAN: FORTRAN is a pain in the ass unless you are doing formula translation, but the thing I hate is the code I've had to deal with. Once it's running it's really, really fast, and if I needed to calculate blast waves it might be the right tool, but I've found FORTRAN programs that would make the messiest Perl like neat. It's not really FORTRAN's fault: I blame the scientists. I also had to use it on VMS, which sucks the biggest donkey in the world.
Perl is about data, not computers: Do I really want to manage memory? Not really, but otherwise C is okay if I need all the power of assembly language with the ease-of-use of assembly language (stolen quote from somewhere). Sometimes I need that. Not often though. Perl is written in C, so it can't be all that bad. It's strongly typed, too.
Perl only needs the command line: I only learned C++ because I thought it would be a good thing to do. It was, I guess, but I hear a lot of horror stories about what C++ programmers actually have to do, and most of the ones I've talked to use some sort of commercial IDE. That's certainly not representative, and I certainly didn't use an IDE when I did C++, but that's what I hear C++ people talking about.
Perl gives useful output: Lisp is okay, I guess. I know Paul Graham built ViaWeb then Yahoo! Stores around it. Every time I look at it I see a bunch of mathematical masturbation without interesting results. Functional programming doesn't quite fit in with the real world, methinks. Calculate the Nth root of some polynomial all you like, and I'll be over here parsing some text. I haven't done anything serious with it though.
|
|---|