I'm interested in developing for the web and I'm curious what languages should I know besides html, css, javascript, php/python/ruby. I don't know much about c# or java to make a decision whether to learn them or not, are they used much in the field I'm interested in? What other technologies should I look into ?
-
Yes, C# and Java are used frequently for building web applications, particularly if you're talking about business applications, as opposed to hobbyist applications.– MarcieCommented Dec 19, 2010 at 20:05
-
It all depends of what you really want to do. If you plan to build small apps for small companies, you seem to know what it requires. Anyway I'd advice to learn python, and Linux shell command line, and the most powerful editor of all times: vim.– Olivier PonsCommented Dec 21, 2010 at 10:17
10 Answers
HTML and CSS are not programming languages.
Google App Engine supports Java. Microsoft IIS supports C#. If you're already familiar with html, css, js, php, python, and ruby, don't bother learning any more langauges, start programming!
You need to learn some SQL to interact with database.
-
2Yeah I know but I thought of including them otherwise I would of got a comment saying to learn them first.– webguyCommented Dec 19, 2010 at 18:53
-
2+1: Good answer. BTW, Google App Engine supports Python also.– JohnCommented Dec 19, 2010 at 19:01
-
14"HTML and CSS are not programming languages." And neither are SQL. But they are still languages. Commented Dec 19, 2010 at 19:22
-
5I don't see the phrase "programming language" anywhere in the question. But I agree with the rest of your answer: if he knows HTML, CSS, Javascript, and several languages suitable for server-side dev already, he doesn't need another programming language; and SQL will surely be the one important thing he's missing. Commented Dec 19, 2010 at 22:11
-
6He didn't say HTML or CSS were programming languages; he said they are languages, and they are.– MudCommented Dec 20, 2010 at 4:48
You will need to learn SQL at some point and it's probably better to learn it sooner rather than later. You'll need to know a thing or two about databases no matter what framework or language you work in so the effort spent on learning SQL won't be wasted. Most frameworks and languages try their best to abstract the database access layer but it varies from language to language and you won't see the unity unless you know SQL. Lately there's a push away from relational databases but it's still a good idea to learn the basics of SQL simply because many of the terms and concepts have analogs in non-relational settings as well.
-
1It should be noted that you only need to know SQL if you're using a SQL database. Commented Dec 20, 2010 at 7:25
-
If we were to get really picky we could note that you could probably get away with not knowing it even if you are (depending on platform and framework) but... one would expect a non-trivial application to need to store data and the odds are that it will be stored in a database (SQL or NoSQL, but more probably SQL) and words 7, 8 and 9 in the above answer are "at some point"– MurphCommented Dec 20, 2010 at 7:49
-
@Jason Baker: I disagree. An understanding of databases is required for any non-trivial web application and SQL has been around for a long enough time to have tons of documentation and streamlined learning resources. The same can not be said for other database technologies so SQL is a good entry point.– user7146Commented Dec 20, 2010 at 8:26
You will get away with knowing:
- At least one object-oriented language: Java, C# are currently among the most popular.
- Not languages per se, but framework(s) to go with them (ASP.Net, JSP, Spring or whatever)
SQL - for talking to databases
HTML & CSS (purists will argue these aren't languages (personally I disagree - what does the 'L' in 'HTML' stand for?) but whatever - you still need to know them.)
JavaScript and the JQuery libraries.
XML - used everywhere.
English (not you personally, but generally speaking, and in at least two thirds of the world)
Over and above this: any other languages - Python or Ruby perhaps, *nix shell scripts, DOS for batch files, UML for requirements definition, oh and maybe some Klingon so you can socialise with your geeky colleagues*
.
* before you all start downvoting, I'd like to point out that this last bit was a
joke ;-)
-
3
-
To get a quick start, you might want to look at frameworks like Ruby on Rails, Django or Grails. To use them, you need to learn Ruby, Python resp. Groovy. Those languages are relatively easy to learn, so if you are new to web application programming, you might want to start with one of them.
JavaScript, HTML, CSS are necessary in any case. You will probably need some SQL, too.
Except the ones you listed, Java, ASP, .NET (and hence C#) and SQL are common in the Web world. However, it seems to me that many of those who use PHP and C#/.NET/ASP are not enjoying it. Few are fanatic of these technologies if they are also proficient in something else.
Also, you can't learn all of these properly in a reasonable amount of time. I'd recommend to test around, and stick with one web framework you like, and learn that properly first.
The one language of the above most likely to be useful in any case is SQL, so learn that first. As for choice of web framework, the obvious ones are Ruby on Rails, Django (Python), Pyramid (also Python). I don't know which exist on Java/.NET, sorry.
Google App Engine is cool, and uses a sort of almost-Django by default, but Pyramid runs on it also. And you can run Java, but I don't know what restrictions there are there.
Well, that's all the general recommendations I have. If you want me to get dogmatic I'd recommend you too use Python with Pyramid and SQLAlchemy for SQL access. But it's so much a matter of taste. :)
-
4Actually, these days the .NET stack is pretty enjoyable to use for large-ish projects. While webforms was pretty horrible, MVC is very usable. On the back end, WCF + nHibernate make services and persistence relatively simple too. For quick and dirty stuff it's probably over the top Commented Dec 19, 2010 at 22:05
-
2I disagree entirely with your take on C# and ASP.NET. While what you say was probably true a few years ago, I'm currently seeing huge enthusiasm amongst ASP.NET developers, far more than at any previous time in the seven or so years I've been working with the platform. Developers love LINQ, they love ASP.NET MVC, they're very excited about the Async functionality currently being previewed. Commented Dec 19, 2010 at 22:14
-
OK, it could have changed lately without me noticing it. I've never used it myself, I just notice that the users complained and rather would use something else. Same with PHP. (This is of course all people who also know Python I'm talking abut here). Commented Dec 19, 2010 at 22:30
-
1@Lennart: I haven't worked with PHP but my observation is that people complain about it more than they used to. I'm not sure if that's because it's getting worse, or just because alternatives to PHP are improving faster than PHP is. Commented Dec 20, 2010 at 1:03
-
1@Job: I'm a BFG/Pyramid fan, myself. But using smaller frameworks is generally a good idea when you don't need most of the features of the big one. Commented Feb 15, 2011 at 22:17
Definitely check out Django if you already know Python, it's a great web app framework, really easy to get started with (there are tutorials on the Django website) and very flexible.
-
really easy to get started - definitely. very flexible up to a point. Commented Dec 21, 2010 at 14:54
-
2@dan... Yeah very flexible until the brick wall. Commented Feb 15, 2011 at 21:50
Just because no one has mentioned it yet, Flash with ActionScript 3 is a rather wide-spread solution for rich-media client-side applications. It always depends on what you want to develop.
I would rather suggest that learning Java or C# now from scratch would be a bit too much and probably couldn't really help your profile. With the languages you already know, you could in theory do everything you want (with the help of a little SQL, certainly.)
On the other hand, if you're at home in the Microsoft world, some ASP.NET stuff can't be wrong. And with C# and SilverLight, you can also do the things that you can do with Flash.
Not a language as such, but you should learn XML and XPath (and maybe XSLT).
As 5arx said, XML is used everywhere and XPath is incredibly useful at pulling information out of an XML document.
I think you should focus more on how to structure a well written website. That will follow all programming languages you'll ever learn. How should the site connect to the backend, what types of storage should you use?
Basically all programming langauges offer the same service, and most of them are so similar that once you learn enough you can quickly switch between them. Stop focusing on learning programming languages, they just come along for the ride. Focus on what it is you want to achieve.
If you're looking to do web applications that require many concurrent and/or long polling requests I would say you'd have to look into Erlang and/or Node.js for server side Javascript.