views:

412

answers:

5

I have read a ton of posts and articles about all of these languages and the good and bad of each. I realize that some folks will say "Oh another 'best language question'" and frankly I don't care. I am genuinely curious about this and I think it is an interesting question for healthy discussion. I would like to learn a language that will teach good programming fundamentals while also allowing to get something up quickly. Ultimately I would like to be able to create sites and Web 2.0-like sites/apps. It would also be nice to be able to find some work in the event that I ever reach a level of expertise where that may be a possibility. I've started and switched between several platforms and one problem with a few was all of the required components and modules that were required from different vendors (Eclipse with Aptana and Zend caused some issues in setting up). One thing that I really liked about the .NET platform is that it is a cohesive environment with lots and lots of documentation that all works together quite easily. However, I know that the possibility exists for some cost issues down the road though I'm not sure how applicable this would be to a solo-developer with smaller projects. Also, while I think C# is a great language that would teach good fundamentals, is it realistic to gain some level of competence in a shorter period of time given off-hours studying.
I also looked at Java and it seemed like it may be overkill for what I'm trying to do though I can't state that with any certainty.

PHP seems like a great web development language that a lot of huge sites have been built with but one concern that I keep hearing over and over is the tendency to fall into poor habits with it (I know, this is a possibility with all languages-but again, I want one that minimized that potential given a reasonable amount of discipline.) Cost issues seem to be much less of an issue with php and it seems to be ubiquitous with hosts.
I've heard great things about Python and I went through some tutorials but it seems that it's been such a pain in the ass getting it to work as a cohesive system the way .NET does. I know Django is supposed to be great but it was also a pain in the ass to get going.

Ruby seems enjoyable to learn but does teach the fundamentals the best way? Does it matter in the end if it gets me going sooner? Plus there don't seem to be a lot of jobs the way there are with php and C# (it would at least be nice to be able to do some freelance work at some point).
This is a highly subjective question so apologies for that as well as the length of it. Any help would be much appreciated. I'm teetering on the verge of concentrating on one of several languages and your guidance would really help.

In summary, what language should I learn for web development (web 2.0-like sites) that allows a novice to get up reasonably quickly and teaches good habits such that it would be somewhat easy to pick up new languages?

+2  A: 

"I would like to learn a language that will teach good programming fundamentals" - that doesn't sound like PHP. You may learn the fundemantals of using a forloop but it's not the best choice if you want to learn good programming practices.

If you can't develop outside a fat ten-ton IDE python is not really a language for you. I'm not sure about ruby but I think it's pretty similar in that respect (it's hard to analyze the code staticaly so there's not much use of IDEs that try to guess what you are thinking when you push a dot). Both ruby and python are great languages if you can make a small shift in your thought process to grasp the basics.

So that leaves you whith C# which is a great language and .net with which you are pretty much stuck on windows (yes, I know of mono, it's a far cry from ms .net). In my opinion .net is not very well suited for learning the basics of programming (especially not web development).

My recommendation is to try and develop something small with any of these and see what you like most. Set yourself a goal, a blogging engine is a bit too much and stereotypic, maybe a service like tinyurl.

Vasil
+1  A: 

I would recommend you to start reading The Pragmatic Programmer: From Journeyman to Master. Too many programing languages out there all have their pros and cons.

As mentioned in Pragmatic Programmer , try to learn a new language every year.Once done with try out and do some projects and browse through the FOSS projects done using that language to learn best practices,approaches,join the community,get involved in forums,understand its nuisances and hacks.

Doing everything at once won't yield useful results and may confuse you more when you see it again.

Spending time hacking with it and doing project is the right way to learn new things and some times getting stuck too :).

+3  A: 

It doesn't matter what language/framework you start if so long as you have the drive the see through it to completion.

That being said, it doesn't help very much, so I am going to offer you very personal opinions. I do not think that Ruby or Rails would be a good way to start off, simply because there's too much magic going on behind the scenes. I personally like RoR though, so do check it out as well. I just don't know if you can (or want to) start with it.

ASP.net would be good place to start though, having an okay balance between what's magic and what's not; your choice of programming language coupled with a decent framework. C# is a pretty good language and getting better all the time.

I don't recommend starting off with Java web applications though (don't know about the frameworks). Even though Java is often taught in entry level courses, you learn a bunch of stuff that's not really that important if all you're doing is web applications. It's good to learn as much as you can of course, but then why not start with C/C++? Or assembly?

For me as a newbie to web development, ASP.net was a godsend while I was struggling with why we had to do this and that in Java web applications. So I'm with ASP.net on this one.

Jaryl
A: 

you didn't mention Flash/AS3 which would certainly qualify as a legitimate environment to learn for Web 2.0 applications across a wide array of platforms. I find I can do very useful and surprisingly polished work pretty quickly using Flex and there are tons of resources .. and loads of libraries and Flex Builder (built on Eclipse) is pretty good / nice debugger ..

And Bonus: AS3 is like javascript on steroids so pick op some jQuery and you will be well equipped to handle client side stuff too

Scott Evernden
A: 

My biased opinion is Python. You can easily create dynamic websites, it has a web-server that works in 1 line of code, it lives on the principals of Batteries Included. The documentation is sometimes lacking, but the community is good. You might struggle to find an all encompassing IDE though. Personally I use a variety of editors from good old vi to scite, kate, eclipse and even just the python console for testing snippets quickly.

Christian Witts