Hacker News new | ask | show | jobs
Ask HN: An introduction to web platforms?
7 points by gsastry 6324 days ago
Hi HN. I'm a college student studying physics. I've been pretty interested in startups for a while now, but I haven't really taken the time to truly invest myself into learning the tools required to build web apps. Would anyone be kind enough to give a quick crash course or point me in the right direction to get started? I see terms like jquery, ajax, javascript, ruby on rails, etc get chucked around all the time, yet I don't know how they fit together in one cohesive whole. It's my own fault for sure, but I would appreciate a gentle push in the right direction to begin to understand these concepts.

Thanks!

2 comments

Web server sends pages to client on request. Examples are Apache and IIS.

Web server interacts with server-side scripting language. Examples are PHP and Ruby. Allows you to generate pages on the fly custom-designed for the user, and allows you to do useful things like templating via databases with ease.

Web application framework is built on top of server-side scripting language. These are designed to make life easier for the programmer. Examples are Ruby on Rails or Django.

Serves to a browser. Browser displays HTML (structured content), CSS (for designing the HTML), JavaScript (client-side programming language that deals with interaction on a page). Ajax is a buzzword for JavaScript communication with the server without refresh. jQuery is a library (essentially a bunch of useful functions designed to work together) for JavaScript that makes things like Ajax and selecting individual parts of HTML, something that's usually a pain, easy to do. Cookies allow small amounts of data-storage on the client-side.

Typically, people learn HTML first, then mess with a server-side language (or learn "how to program" in general), then once those two basic skills sets are there build on them at the same time.

Start with a static website on your own computer. You need to learn things in this order.

HTML

CSS so you can style your pages

JavaScript so you can do dynamic things

JQuery makes JavaScript much easier

With this you can actually publish a fully functional web site with a hosting company.

The server side is needed if you have a high volume site or one with dynamic content, such as a shopping site or with visitor created content. For that you need an application server: Django, PHP, Rails, Tomcat, Jboss, etc. About that time you will need to think about databases and SQL. My advice is to learn how to create good pages before learning the server side.

Django and Rails are frameworks, PHP is a language, Tomcat is an app server, and JBoss is an organisation that produces, amongst other things, Seam, which is another framework.
wow. that post is terribly incorrect. get your facts straight. "Django, PHP, Rails, Tomcat, Jboss" ? as far as I know, only one of those is an application server (Tomcat?) Though I dont know what JBoss is, so maybe it is too. PHP is a Language, and django and rails are frameworks.

also, your comment about only needing server-side code if you have a high-volume site? wtf is that supposed to mean? static HTML would survive a slashdotting a lot better than any dynamic site ever could.

What are you doing here?

Considering he's been a member about 200 times as long as you I don't think that's very nice.

I think Russel tries to make a good point but goes about it in a confusing way, let me try to rewrite his post so it makes more sense:

Start with a static website on your own computer, this will keep things simple. There are so many technologies that you could apply to web development that by limiting yourself initially you'll stand a better chance of succeeding and not being overwhelmed.

You need to learn things in this order.

HTML

HTML is the language that web pages are built in, it is the foundation of the web. Since its introduction it has gone through several improvements / changes so make sure you get a tutorial that shows you things the way they are done now, not 12 years ago.

CSS so you can style your pages

CSS stands for 'cascading style sheets', and is used to give pages their 'looks'. Best practice these days is to uncouple 'looks' and 'layout' from 'content'. This is a difficult concept to get your head wrapped around because initially it seems like things are being made harder on purpose, but as you get more proficient you'll find it easier until you start wondering why people did it any different.

JavaScript so you can do dynamic things

JavaScript is a programming language that has become the standard for extending web page functionality on the client side. JavaScript is probably the easiest way to get your feet wet with programming, because you do not need anything but a browser in order to learn and practice with it. I'd personally advise you to use a browser that has a JavaScript console such as firefox so that you can see the cause of any issues in case your programming is less than perfect (which it is bound to be initially).

JQuery makes JavaScript much easier

JQuery is a library of javascript code that allows you to perform much needed functionality without having to code it all up by hand. It also gives you a good sized chunk of code to look at so that you can learn from other peoples code.

With this you can actually publish a fully functional web site with a hosting company.

But up to this point it will still be a 'static' website in the sense that no programs are running on the server side.

If you want to do more complicated things, especially things that produce pages that are different based on the 'state' saved on the server then you will need to get into server side programming. Server side coding is used for almost every serious website nowadays, almost every website that you are a regular user of will have lots of server side programming done, even if the output of that program looks like any other webpage.

The server side is needed if you have a high volume site or one with dynamic content, such as a shopping site or with visitor created content.

In order to create dynamic web pages you will need to have a server, and you will need to install an environment on it that allows you to run the code that will produce the web pages on the fly.

There are a great number of choices that you could make at this point, you'll need to consider which language you want to use (the most frequently used language for web page creation, not neccesarily in order of my preference are: php, perl, python, asp, rails, java, the site you are readin this on is written in 'lisp').

Underneath that language there has to be a 'webserver', which can be a general purpose web server such as 'apache', but it can also be a language specific 'application server', such as TomCat (for java) any one of a whole slew of these, for a list see http://en.wikipedia.org/wiki/Comparison_of_application_serve... ).

For that you need an application server: Django, PHP, Rails, Tomcat, Jboss, etc.

Because a server side application will almost always store state (stuff that remains on the server even if the user isn't there) you will need to get some knowledge of databases at this point. Contenders are PostgreSQL and MySQL.

About that time you will need to think about databases and SQL.

My advice is to learn how to create good pages before learning the server side.

And I fully concur with that.

Thank you for your expansion, just what I wanted to say. I was at work and severely time limited. My real point is that there is a huge amount to learn. The place to start is with good pages. I actually learned in the reverse order starting with SQL, but I spent a couple of decades at it.
De nada, I figured something like that was the case :)