My son (14) wants to start writing web applications for fun and is debating what program to learn (Ruby, Python, PHP, LISP, etc.) Which one should I steer him towards and why?
I'm inclined to say javascript, simply because pretty much any web application is going to need at least some JS. And it's not bad choice of language anyway. Maybe not so ideal for the server side but node.js seems to be gaining some traction. Being a node.js adept might even be quite a cunning choice at this point career-wise.
Ruby or Python seem to be the best choices. Easy to get started, mature libraries and web development frameworks, powerful enough to get things done, encourage decent programming practices, etc. You'll probably want Javascript too...
He wants to write web applications.<p>If you put aside 'web', I imagine Python to be the best training language - its the new Pascal. I say that as one of the European Turbo Pascal generation that used TP as a stepping stone to assembler. Python offers that same clarity without the dumbing down. Python is as close to pseudo-code as I've seen. Its what I imagine myself introducing my children too just as soon as a I dare let them borrow my computers...<p>But if he really means web, Haxe might be a good choice. Its javascript-esque, it runs in browsers, and you can do fancy graphics and games and such. I imgaine making flash applets to be far closer to what he might enjoy rather than text-based stuff that more classic web development generates.<p>The whole making web pages and equating that to programming - sure its a job and all, but is it fun and inspiring?
In terms of ease of use I would definitely go Rails, it pretty much has the largest ecosystem in terms of web development.<p>In terms of more academically interesting languages, I might recommend Haskell or Clojure.
I am going to throw my hat into the ring for a combination of Javascript and PHP or Ruby. This way he can learn both the front and back-end coding structures and be well on his way to making web-applications. Deciding between PHP and Ruby is a peronal choice really, but I would go with PHP, but thats my own inclination because I work far faster and better in PHP than I do in Ruby. That and I feel Ruby is easier to pick up if you have a background in Java while PHP can be easily learned on the fly.
From my experience, I think Rails would be a good option. I myself am new to programming (been doing it for less than 3 months) and have found Rails to be relatively easy/ straight forward. Plus there is are so many ressources out there in case he would like to learn more.<p>Rails for Zombie could be a good starting point.<p>Side note, when I say I am new to programming, 3 months ago I barely knew what css ment - and have never taken a cs class.
Javascript in my opinion. It isn't hard to learn and it has a lot of diverse applications now that node.js is going strong. A couple of easy ways to learn are:<p>* the basics - <a href="http://www.codecademy.com/#!/exercise/0" rel="nofollow">http://www.codecademy.com/#!/exercise/0</a><p>* more advanced - <a href="http://ejohn.org/apps/learn/" rel="nofollow">http://ejohn.org/apps/learn/</a>
The most important part of the learning process is to have access to a good mentor. So I recommend you the HtDP book[1], and just use whatever language you are good at.<p>Happy hacking.<p>[1] <a href="http://www.htdp.org/" rel="nofollow">http://www.htdp.org/</a>
I disagree with everyone. The best language to learn first is BASIC. You can probably find some emulator that's web based. After that, you can learn whatever floats your boat.