Language choice where there are no decisive external factors - like business requirements - is tricky. For most programmers, the language we prefer is nothing more than that - a preference. But new programmers by definition don't know enough to have a preference. If you're a free spirit and like expressive power - the ability to say what you want in the manner you want - Perl may be a good start. It's true that Perl lets you make just about every mistake a programmer can, but you can't learn from mistakes you're not allowed to make. If you're a pedantic authoritarian, then Python may be good start. It enforces a "right" way to do things and thereby eliminates many of the mistakes you might have had the opportunity to make in Perl. If you've got OCD and like futzing about with a million little pieces, Java may be a good start. (No, I'm kidding, Java isn't a good start. Nor is it a good end. But seriously, when learning to program, compiled languages like Java add unneeded overhead.) Javascript, on the other hand, may be a very good place to start. It's an odd language, but the prominence of the browser makes it a compelling option. Where in Perl the motto is "There's more than one right way to do it" and in Python it's "There's one right way to do it," you might say the motto for Javascript is "There's more than one wrong way to do it." If you choose Javascript, only bother to make things work in one browser at first. Cross-browser functionality is for the professionally insane. Ruby. I don't really know enough about Ruby to say anything about it. PHP. I have to agree with others - don't bother with PHP. I found a brief article that goes over a few more esoteric languages which may be of interest. http://www.h3rald.com/articles/10-programming-languages/ I'm thinking of looking into Lua, myself. Devon -----Original Message----- From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of Joe Hourcle Sent: Wednesday, March 24, 2010 5:44 PM To: [log in to unmask] Subject: Re: [CODE4LIB] newbie On Wed, 24 Mar 2010, Eric Lease Morgan wrote: > On Mar 24, 2010, at 3:24 PM, jenny wrote: > >> My question is, where would you recommend I would begin? What's hot >> right now in the library world? Python, PERL, Ruby? Any advice you'd >> have for a beginner like me or even recommendations for online courses >> would be extremely appreciated > > > If you are approaching the problem for the point of view of learning a > programming language, then then you have outlined pretty good choices. > At the risk of starting a religious war, I like Perl, but PHP is more > popular. Java is pretty good too, but IMHO it doesn't really matter. In > the end you will need to use the best tool for the job. I know there's a lot of stuff written in it, but *please* don't recommend PHP to beginners. Yes, you can get a lot of stuff done with it, but I've had way too many incidents where newbie coders didn't check their inputs, and we've had to clean up after them. Just yesterday, I was helping someone at another federal agency clean up after someone got in through a PHP script and had turned their site into an ad for cialis. (but cleverly disguised, using their header / footer, and it only showed up when you passed the correct query_string to it) The problem's gotten so bad here, that we've been asked to send our entire web directory on each server to our security office, so that they can run it through some security scanner that looks for problems in PHP code. (they relented to my running 'find' on the system for PHP scripts, as we serve a few dozen TB of data over HTTP) We're also running intrusion detection software that managed to catch someone attempting to exploit refbase (and that was strike #2 against it ... I've never gotten a response to my e-mails to the maintainer, so we've since had to scrap the installs of it that we had). So, anyway ... don't do PHP. Even Tim Bray recommended that at ASIS&T's 2009 annual meeting, where he gave the plenary. (He recommended people learn Ruby, instead) Personally, I do most of my work in Perl, where I can, but I'd recommend Ruby or Python over someone learning PHP (unless it was to learn enough to migrate code off of PHP). ... and yes, I know I've stirred this pot before: http:[log in to unmask] http:[log in to unmask] ... And if you're using PHP, and can't get away from it, consider using something like mod_security to watch for signs of malicious behavior: http://www.modsecurity.org/ (note -- not an endorsement, I don't use it myself, as they've got something installed on the upstream firewall that does it ... which means that someone else sees it happen, and then we have to clean it up, fill out paperwork that we've cleaned it up, have meetings about how we're going to clean it up (when we already did), etc.) -Joe