News for hackers. Stuff that matters.
Re:What programming languages should I learn and why? by staunch on Saturday May 19, 2007 @09:22PM (#23322)
Your title is broad but here you say you want to do web development. Many of the people here are interested in programming for programming's sake, so a lot of the advice will be computer sciency. That's great, but if you just want to make stuff you can safely skip theory for now and get your hands dirty producing real stuff and fill in the gaps over time.

The key is to learn best practices of whatever language you choose. Don't learn bad habits. Read the authoritative books and don't take short-cuts. Don't be the guy writing code people cry at having to maintain. Avoid "cargo cult" programming, where you just paste code you find into your programs without fully understanding it. I recommend never pasting at all in fact. At the very least re-type everything as you're learning and try to understand it as best you can.

You can safely skip haskell, lisp, prolog, and all those languages you will never get friends to help you with, many books to read, or libraries to leverage. At least until you've got enough experience to be mostly independent of assistance.

With the use of best practices it doesn't really matter if you choose: Ruby, Perl, Python, or PHP. I'd ignore Java because it has so many training wheels, and the others don't. These can all work extremely well for web development and anyone who says different is selling something. The Truth™ is that Perl5 is the best and Perl6 will make them all obsolete :-)

Re:What programming languages should I learn and why? by SwellJoe on Saturday May 19, 2007 @09:43PM (#23324)
Great to see Perl is coming back into vogue in these kinds of conversations. It's gotten a bad rap for a while, because it's so easy to write really messy and ugly code...but it's also extremely expressive, and contains more functional constructs than even Ruby or Python. Perl 5 didn't get objects right, but they aren't awful (not nearly as big and clunky as Java/PHP). Perl 6 really will be a killer. I watched Audrey Tang's recent video about it, and it was just astounding how far they plan to leap with Perl 6...I must have known it was coming, since I read the apocalypses years ago, but seeing the example code blew me away. It's still a pretty good learning language, and an unbeatable "get things done" language because of CPAN, but if pressed I would have to recommend Ruby or Python for first time programmers.
Re:What programming languages should I learn and why? by jamongkad on Saturday May 19, 2007 @11:58PM (#23331)
I was about to chime in Perl but I read down to this. I'm currently using Ruby now but my first step into hacking was Perl. So I have a soft spot for it. If Perl 6 can live up to it I will not have any qualms hacking in Perl again.
Re:What programming languages should I learn and why? by jaggederest on Monday May 21, 2007 @04:18AM (#23556)
Ruby is so perlesque if you use all the $ variables, it's almost a push.
Re:What programming languages should I learn and why? by SwellJoe on Monday May 21, 2007 @06:20PM (#23716)
True on the surface. But Ruby's everything-is-an-object is a big difference in the way you think when working in each of the languages. Ruby definitely guides you into an OOP mindset, while Perl leaves all paths open...I don't necessarily consider this a win, but it is a pretty big difference in the way one thinks, even if the syntax of Ruby is immediately comfortable to a Perl programmer.

We almost never use OO in our Perl codebase, except where bolting on OO makes a lot of sense (specifically, the UI functions, some CPAN modules that have a more natural OO interface), but in the Ruby code I've written it's all objects and it never feels forced or bolted on. Partly, it's the tasks we're doing where functional programming makes more sense, and partly it's due to having a large codebase that pre-dates Perl 5. Oh, yeah, we also have a huge swath of disparate data being passed around amongst different systems and services, and it's very natural to pass them around as arrays and treat them similarly to lists in lisp. map, grep, shift/unshift, and pop/push get a lot of use in our code. I'm pretty certain we'd do it differently in Python and we'd probably do it differently in Ruby. It'd probably take quite a bit more code in either of those languages, but it might be more readable on first (and second) glance.

Perl 6 will change some of our practices (in three or four years when Perl 6 is wide-spread, anyway), but not all of them. Objects will be beautiful in Perl 6, so we won't avoid them, and argument passing will be much cleaner (right now we pass around refs to arrays a lot, which is somewhat fragile when API changes happen), so those things will change, but our treatment of data will probably remain similar.

So, I agree with you about Ruby syntax. It looks very similar, and is very comfortable to me, as a long time perl coder. But when you actually start building things, the comfortable paths diverge quite a bit.