I am trying to get a handle on the state of the art regarding web site development and have several questions. Maybe I’ll end up finding most of the answers on my own. I come from a background of C++ and Windows development, and generally I am befuddled by what seems to be the ad-hoc nature of web development.
I focussed in on Django, after online research of it and Ruby (on Rails). From what I read, ROR tries to do everything for you behind the scenes and so therefore is slow and unscalable (and overhyped and not ready for prime time). So I have gotten into Django – downloaded Python and Django, the source from a complete Django site, got it running, and so forth.
There is one site in particular that would to me as an end user represent the state of the art for web sites and I would be curious as to what the foundations of such a site might be. That site is chess.com, and there are all sorts of facilities for playing chess online with other users, user customization of their account with various graphical effects and so on. Is it most likely Java applets they’re using for a site like that? How relevant would Django be for a such a site. Would Django be used in conjunction with something like Flash or even Java applets? Also when a site like chess.com is ported to a mobile device, what is used to write it – the same development tools as for the desktop or something completely different (Yes, I have a lot of catching up to do.)
Are there in fact complete websites written solely in Java, perhaps using very high level Java API’s? Why would someone say (as I read somewhere) that they despised Java so that is why they had gotten into Ruby on Rails and Django.
And regarding Python (and also PHP) what is the justification for their existence? First of all, Python is much, much slower than say C++, being interpreted. Why are websites written in Python or PHP – is platform independence the sole issue here. I am incredulous that application development is much faster in Python than C++ (aside from the garbage collection issue – is that what the primary reason for Python is – garbage collection.)
So anyway, a bunch of newbie questions – will probably end up answering most of them myself if they’re not answered here. Maybe they’re relevant to someone else though.
Hmm, you’ve asked a laundry list of questions here. I’ll pick a couple of the important ones and answer.
As for the rationale for languages like Python… the truth is that many web applications are either I/O bound or database bound. When that’s the case it doesn’t matter much if the language you’re using is not as fast as C++- the bottleneck is elsewhere. Beyond that an awful lot of the core Python routines and data structures are written in C. Python is used to drive the highest level of logic, but most of the work happens in fast native code. It might surprise you to learn that in my current job I write 3D animation software in Python. Of course a lot of what is going on behind the scenes was written in C++. There’s a name for this: “Alternate Hard and Soft Layers.” The reason we use Python is pretty simple- our choices are Python or C++ because of the APIs we write to, and we’re several times as productive in Python. I would actually ask what the rationale for the existence of C++ is, but that’s another subject (and flamebait ;).)
As for html being like assembler, I’m inclined to agree in cases where I am writing the html. I tend to use some sort of abstraction layer to generate html in those cases. But an awful lot of the html in the world is made by designers. Some of them use GUI applications to generate html, and the better ones use text editors. But most of them don’t want to deal with anything more complicated than simple templating in html, which is what they know.
HTML 5 is going to shake a lot of this up. But it is going to be a long time before it is safe to assume that everyone is using a browser capable of doing anything from HTML 5, and longer before it is safe to assume that everyone is using a browser that implements all of HTML 5. Anyway, I’d suggest you look around at some of the less visible projects, like Seaside for instance. There is a lot of experimentation going on. But the web has always been a tough environment for this kind of thing.