> As a first language, you want something that let's you Get Stuff Done > with a minimum of fuss... If you are getting started and if you are not planning on being a full-time programmer, then you want to be looking at the high-level languages as Mike suggests: "the strong candidates include Perl, Python, arguably PHP and my own favourite, Ruby..." 1+ -- Michael # Michael Doran, Systems Librarian # University of Texas at Arlington # 817-272-5326 office # 817-688-1926 mobile # [log in to unmask] # http://rocky.uta.edu/doran/ > -----Original Message----- > From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of > Mike Taylor > Sent: Friday, March 26, 2010 9:23 AM > To: [log in to unmask] > Subject: Re: [CODE4LIB] PHP bashing (was: newbie) > > I was going to start this post with "I couldn't disagree more", but on > sober reflection I am going to go with the more conciliatory "Let me > offer an alternative perspective". > > For someone who is just starting out in programming, I think the very > last thing you want is a verbose language that makes you spend half > your time talking about types that you don't really care about. I'm > not saying there isn't a time and a place for static type-checking, > but while learning to program isn't it. > > As a first language, you want something that let's you Get Stuff Done > with a minimum of fuss -- a language that lets you go directly to > saying what you want to say without having to begin with "public class > HelloWorld { public static void main(String[] args) {" before you can > even call System.out.println (which is, in any case, a very verbose > way of saying "print"). > > As a heuristic, I think you might say that a good first programming > language is one in which a program to print "Hello, world!" is most > naturally expressed in a single line, or more precisely a single > statement. On that basis, the strong candidates include Perl, Python, > arguably PHP and my own favourite, Ruby. > > Java, C++ and the like might be important further down the line, but > they are a horrible way to start: they're like learning to drive in a > Harrier jump jet when what you really need is a bicycle. > > > > On 26 March 2010 13:49, Simon Spero <[log in to unmask]> wrote: > > There is a best language, and you shall know it by its parentheses. > > However, since you probably aren't going to be able to use it > because your > > co-workers aren't up to it, you have to pick a second best. > > > > I would strongly recommend learning a strongly typed language for > one's > > first programming experience. Java, with a suitable development > > environment, such as a Intellij Idea ( http://www.jetbrains.com/ ), > is > > probably the best way to get started. Java is a safe language, which > means > > that any bugs are explicable at the program level, rather than > appearing as > > random damage to unrelated parts of the program > > > > It is important to have a good IDE when using java, as without one it > is > > much too verbose. I recommend Intellij as the java-only edition is > now open > > sourced, and it has the best auto-completion and refactoring > support, as > > well as built in support for unit testing. A lot of important data > > structures are built in to java, which means you can learn how to use > them > > without having to know how to write them. > > > > The second language should be lower level; C is probably the best > choice > > for that. Learning C forces you to learn about memory management, > which you > > need to understand, even if it's better to let a garbage collector > take care > > of it for you. Learning how to implement the data structures you get > for > > free in java et. al will help you know how to use them more > efficiently, and > > design your own data structures in the future. > > > > It is easy to see the assembler/machine level code generated by a C > program > > and relate it to the code you wrote; again, you may not write much > code at > > this level, but it is important to understand what the computer is > actually > > doing when its running higher level code, and how this affects > efficiency. > > > > It's also important to get a basic grasp of algorithmic complexity; > you > > don't need to be able to develop proofs like knuth's, but you should > > understand what big O notation stands for, and why some problems or > programs > > won't scale up. > > > > After that, its safe to learn a scripting language; you'll appreciate > the > > stuff you can get away with not doing, but you'll also know just when > you're > > cheating, and why the Duck is a lie. > > > > Simon > > > >