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:
[log in to unmask]" target="_blank">http:[log in to unmask]
[log in to unmask]" target="_blank">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
|