Slashdot Mirror


Web Browser Programming Blurring the Lines of MVC

lkcl tips his in-depth article up at Advogato on the difficulties for the MVC programming model that are introduced by Javascript and AJAX, and solutions for them. He writes: "This article outlines how the MVC concept is made incredibly awkward by the gradual but necessary introduction of Javascript and AJAX. A solution is found in the form of Javascript Compiler Technology such as GWT or Pyjamas (PyPy's JS backend or Rb2Js could be used, with some additional work). The article outlines how and why the traditional MVC patterns are fragmented by Javascript and AJAX, advocating that if a site is programmed purely in a high-level language that is then compiled to Javascript for the Web Browser sections, the same high-level source code can be executed either client-side on the browser, or server-side, or even both, depending on the requirements. The implications of this approach are discussed in depth."

303 comments

  1. Please read the article by Anonymous Coward · · Score: 0, Offtopic

    I did and it's worth it!

  2. Implication by Anonymous Coward · · Score: 0

    The implication is that it ends in a total clusterfuck, just like Ajax?

    1. Re:Implication by Anonymous Coward · · Score: 0

      Am I missing something or did MVC die like... 15 years ago?

      Long live sane multi-tier schemes with rational separation of concerns.

    2. Re:Implication by Anonymous Coward · · Score: 0

      Yes, you missed something. MVC is one of the most widely used design patterns in the world. It is used at all layers, from gui widgets, right up to entire frameworks.

    3. Re:Implication by Anonymous Coward · · Score: 0

      Yes, you missed something. MVC is one of the most widely overused design patterns in the world. It is overused at all layers, from gui widgets, right up to entire frameworks.

      There, fixed that for ya.

    4. Re:Implication by greywire · · Score: 1

      Yes, you missed something. MVC is also one of the most misunderstood design patterns in the world. The modern use of the idea is not quite what the inventor intended it to be.

      There, fixed that for you.

      --
      -- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
  3. RubyJS by lkcl · · Score: 3, Informative

    also found, since the submission, rubyjs which is a ruby-to-javascript compiler and yet another port of GWT - this one's called rwt

    1. Re:RubyJS by Anonymous Coward · · Score: 0

      also found, since the submission, rubyjs which is a ruby-to-javascript compiler and yet another port of GWT - this one's called rwt

      Wouldn't that be a translator and not a compiler, since it never generates binary machine language?

    2. Re:RubyJS by therpham · · Score: 1

      You could really call it either. I suppose calling it a translator makes sense given the language analogy, but really all a compiler does is read in some file(s) (usually source code) and emit file(s) based on the input, usually but not always in the form of something executable. So, a source-to-source compiler is still a compiler.

    3. Re:RubyJS by Hurricane78 · · Score: 2

      You have not understood what a compiler is, do you?
      It's a translator/transformer from one language into another.
      Machine language as just a language like any other. And the javascript VM is just a machine like any other. (It's virtual. But every processor you can buy got simulated before it got produced.)
      Even a real processor is written in a language (eg. Verilog) nowadays.

      The only difference between a compiler and a "normal" program is, that the data that compilers process is code too. Oh, and how about a compiler that processes its own code in-memory? ;)

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
  4. More Importantly by Alt_Cognito · · Score: 5, Interesting

    The lines between what is an application are blurring. We have disparate data sources which are being combined in ways which the original sources never necessarily intended. The user application may or may not even be one written by the service provider.

    The semantic web, despite all the nay saying, is here.

    1. Re:More Importantly by MightyMartian · · Score: 5, Insightful

      The semantic web, despite all the nay saying, is here.

      And it's a fucking mess.

      You know, distributed computing is hardly a new thing, so why is it when the dream of all those researchers a generation ago comes to life, it's in a chaotic, difficult and barely-framework framework like AJAX? It's rather like someone a couple of hundred years ago dreaming of the automobile, but when it's finally developed, it's got two front wheels, two horses legs and the driver faces the wrong way.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    2. Re:More Importantly by zappepcs · · Score: 2, Insightful

      I agree. If the semantic web were a parachute, we'd have a lot of dead base jumpers. Some of the idea behind a semantic web are good, but terribly difficult to implement. It's truly a tower of Babylon problem. If (big if) everyone ever agrees to how to handle/interface to web resources, we still all have to learn how to describe things. I call it 'you suck at Gimp' but you call it tutorial, and yet someone else calls it 'fun with Linux apps' and that is just for something easy. It gets worse depending on the subject and the problem can be seen in tag clouds. Definitive descriptions of web resources will hinder the semantic web until it dies.

    3. Re:More Importantly by daem0n1x · · Score: 1, Offtopic

      Tower of Babel.

    4. Re:More Importantly by Anonymous Coward · · Score: 0

      You say this as if you expect the Semantic Web to just appear fully realized out of nowhere, like Athena popping out of Zeus' head. These things take time to evolve. Life on this planet started out as a gooey mess.

      As for your automobile example, cars have evolved over the years. If you compared the first cars ever made with cars of today you would wonder who would ever even try to drive these pieces of junk. Early cars didn't have brakes, windshields, or even roofs. And no safety features. The very first car had a top speed of 7 mph. That doesn't seem very practical when most people can ride a bike (or even run) faster than that, but obviously things changed quite a bit.

      It's not like now that it's here, the sematic web will never change or evolve. So relax a little, give it time, and see what happens in the near future.

    5. Re:More Importantly by Hognoxious · · Score: 1

      Bless you for not saying "mashup".

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    6. Re:More Importantly by jonaskoelker · · Score: 1

      I don't have any of those, go fish...

    7. Re:More Importantly by tacocat · · Score: 1

      Eventually this will get sorted out.

      But it seems to me that MVC is confusing because we are thinking that all components should be done by one language when that's just silly.

      Databases hold the data and we essentially Model around that. There are some databases that are supposed to be object databases, but there isn't much adoption today. And in some cases, the Model doesn't fit into a database at all or easily.

      But where Javascript comes in is when you are building out the View. Who says that all MVC application (Rails) can't always issue XML or JSON format data and leave all of the visual rendering entirely up to the javascript engine on the browser? That would give you a great distribution of computing. All I have to do as a developer is push data to another developers arena where the content can be rendered by an AJAX guru into whatever it is he is looking for.

      The biggest problem that I see today is that Javascript, as is, makes for a very bad programming language when you compare it to most anything else. It requires a lot of specialization to have a good site. You have to be really good at Javascript and really good at something else (Rails, Catalyst..)

    8. Re:More Importantly by szundi · · Score: 1

      How could we describe things in a general, standardized way when we are humans!! :) We simply cannot understand each other and cannot have two people thinking the same way! I think it's already proved/understandable that you simply CANNOT implement this thingy-wingy the way that works for everyone.

    9. Re:More Importantly by zappepcs · · Score: 1

      There actually is a way that would be workable but it would take the skills, resources, and bandwidth of Google.... and of course the willingness for people to let Google or someone scan their data file to categorize it for them. Something like when you save a file, there would be an extra button on the dialog box that allows you to save it with Google tags embedded, save it with your own tags, or just save it.

      This would involve being able to analyze the data in the file, no matter what kind, and that might not yet be possible.

      There would be several levels of tagging. While I've not got a plan here, a basic level of music, text, drawing, picture, animation etc. Then a level that equates to naming of files. Name of the mp3, title of the drawing etc. The 3rd level is descriptive: Rock music by Rainbow, Suspension of 97 Honda Accord, picture from beach - vacation 2003. The fourth level would be more detailed yet, and a fifth level could get technically detailed.

      I have not yet found anything that this would not work for, nor have I found anything that would easily do this for a user. With some good background information/dictionary the technology in the FF address bar, or some search engines could go a long ways since much of what you do is related to other things that you do as a user. If you can imagine 200+ tags for an image... you start to understand how meta data can be overwhelming.

      Take just a picture of the Lincoln Memorial from across the fountain. How many things in that picture might want a tag? Date, time, year, who is in the photo, was it a holiday, a celebration, a speech, vacation and so on. Photographers would like to know the camera, film, shutter speed etc. The police want to know the resolution of the photo.... the list goes on.

      It's not possible to apply that level of tagging yet, but automated tagging built into file formats would help, and services such as Google could provide by analyzing the picture would help. Note that there are other services that could do much of this too, it's not just Google. In analysis the software could tell you that you were diving, at the beach, at the zoo, playing golf, etc. Imagine your vacation photos tagged automatically with gps, date/time, by the camera, when you save it to your computer GoogleTags adds search links for the resort you stayed at and the town it is in. Your pc adds tags that fits it in with other photographs from that general location, software tags it with names of people it can recognize from other photos. The end result is that some months later you can recall the images you want by giving the vacation/location/date/person's name/activity etc. because THAT is how people remember things.

      You can call up all pictures of Uncle Fred to do some photo-montage for his birthday or what have you.

      Of course there are dangers to this, but I'm just thinking of the good side right now.

    10. Re:More Importantly by Anonymous Coward · · Score: 0

      > We have disparate data sources which are being combined in ways which the original sources never necessarily intended. The user application may or may not even be one written by the service provider.

      Did you see that PowerPoint, too?

      Yeah, XML is going to change our lives man.

    11. Re:More Importantly by Anonymous Coward · · Score: 0

      I agree that AJAX is a mess, but it has nothing to do with the semantic web.

    12. Re:More Importantly by Anonymous Coward · · Score: 0

      However, the expression referring to an incomprehensible mess _is_ "Tower of Babel", and not "Tower of Babylon".

    13. Re:More Importantly by David+Gerard · · Score: 1

      Because worse is better. If there's a shitty, shitty way to do something and it's easy to implement, it will take over.

      --
      http://rocknerd.co.uk
  5. No surprise to Senator Ted by jlowery · · Score: 2, Funny

    The internet, being a series of tubes, naturally adapts itself to the PVC, rather than MVC, model.

    --
    If you post it, they will read.
    1. Re:No surprise to Senator Ted by Hognoxious · · Score: 1

      A series of tubes isn't like a dump druck. They use JCB instead.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  6. History of the Internet (condensed) by girlintraining · · Score: 5, Insightful

    Call me jaded, old, and behind the times... But what ever happened to a web browser just being a web browser instead of a development platform with three heads breathing fire, half a dozen plugins, six months of combatability testing, and a kitchen sink? Is there ever a point where a web developer will concede that the web is not the Best Platform for Everything in The Universe(tm)? Or is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++? Help me out here -- this isn't intended as a flame but an honest question -- where does this attitude that everything has to be crowbar'd into a web interface to be considered modern these days? Because a lot of the problems in this article come down to programmers expanding and bloating their platform/language of choice to do something it was never designed for because That's Just What I Know(tm). :( I cry for these languages. I know after 5pm they go home and hit the frozen dairy products hard to feel better about how fat they've become.

    --
    #fuckbeta #iamslashdot #dicemustdie
    1. Re:History of the Internet (condensed) by abigor · · Score: 5, Insightful

      It's a common misconception that people are trying to shoehorn everything into browsers. They're not. But it makes sense for certain apps to be centralised, particularly in a corporate/enterprise environment. It's funny, because the successful web apps that are out there (salesforce.com, Taleo, Gmail, etc. etc.) never get picked on - they are just a fact of life now. But when people experiment with new stuff or try to move other apps into a distributed environment, the critics come out of the woodwork.

      Also, as a longtime C++ programmer, I can say that C++ is no more a "real" language than Python or Ruby - talk about a juvenile understanding of software development. People use what gets the job done quickly and hopefully with fewer bugs, and when the dust settles certain languages and technologies are shown to work, and others not. But you never know unless you try.

    2. Re:History of the Internet (condensed) by lkcl · · Score: 1

      I cover this question in the article. partly it's to do with user expectations; partly it's to do with useability.

      the "traditional" web application, on error-form-checking, has to _regenerate_ the entire page, inserting error messages.

      the response time of such applications conflicts badly with users' expectations.

      if some javascript can do the job - immediately - of checking the password against some basic criteria, for example, why make the user wait several seconds until the server works it out?

    3. Re:History of the Internet (condensed) by Draek · · Score: 1

      But what ever happened to a web browser just being a web browser instead of a development platform with three heads breathing fire, half a dozen plugins, six months of combatability testing, and a kitchen sink?

      Died after Netscape came along. Then IE and ActiveX not only put the final nail in the coffin, it fucked the corpse before doing so.

      Is there ever a point where a web developer will concede that the web is not the Best Platform for Everything in The Universe(tm)?

      Is there ever a point where a C developer will concede that C is not the Best Language for Everything In The Universe(tm)? no, because he has a monetary interest in perpetuating that perception. People who aren't solely web developers, however, would and do concede that, you just haven't looked hard enough.

      Or is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++?

      I'm sorry, did you mean C? or did you declare yourself incompetent in the ways of programming by calling the turd commonly known as C++ a real language? :D kidding but only partially, what's a "real" language varies from programmer to programmer and you shouldn't assume your opinion is the only valid one. Plus, languages have little to do with the platform, plenty of non-web apps written in Perl, and plenty of web apps written in Java too.

      where does this attitude that everything has to be crowbar'd into a web interface to be considered modern these days?

      Because it's easier to sell it to PHBs. How many trends in programming during the last twenty years have made logical sense everywhere they've been applied to? it wouldn't surprise me to hear about a company that demands a MVC architecture on servers' shell scripts, just as it doesn't surprise me to hear about people trying to cram an office suite into a web browser.

      --
      No problem is insoluble in all conceivable circumstances.
    4. Re:History of the Internet (condensed) by vux984 · · Score: 4, Insightful

      Also, as a longtime C++ programmer, I can say that C++ is no more a "real" language than Python or Ruby

      But Javascript or ECMAScript isn't a 'real' language, or at least not in practice, and that's the issue. Code written in it needs to run on multiple different implementations with no properly accepted standards. Contrast that to C, which yeah, has a number of various flavors, but it only matters that you have a compiler that understands that dialect. The stuff you distribute to users isn't going to explode because of your choice of C.

      When you write in javascript, you are passing it to end users to interpret with interpreters that you have little control over, interpreters that exist in mutiple versions, have poorly documented quirks, and deviate from the standards wildly in places, with competing implementations and standards. And your code is supposed to run reliably on all of them.

      Then add HTML / CSS / XHTML / etc which suffer from the same problems as javascript ... they too have no suitable standards (sure standards exist, but that's more an intellectual point than a useful one). People generate invalid statements left and right, and browsers are supposed to guess how to do things. None of them implement the standards, and all of them have quirks.

      People use what gets the job done quickly and hopefully with fewer bugs

      Nothing has more bugs than stuff written in the 'web languages'. The current slashdot home page has 91 SGML parser errors and 1 warning, 225 HTMLTidy warnings, and 40 errors via the W3C markup validation service.

      and when the dust settles certain languages and technologies are shown to work, and others not. But you never know unless you try.

      For what values of 'shown to work' are we interested in? Quality standards and expectations are unbelievably low.

    5. Re:History of the Internet (condensed) by mangu · · Score: 1

      is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++?

      I programmed in C and C++ for about twenty years, then I learned Python. I found that my productivity as a programmer drastically increased. Now I program in C only the basic number-crunching routines that I cannot find in any existing library. I use Python for all the rest, and write code at a much higher rate than I can do in C or C++.

      where does this attitude that everything has to be crowbar'd into a web interface to be considered modern these days?

      Applications have to be installed and supported in the users' computers if they don't have a web interface. If it's an application that will be used only by me, or by very few people, then I do the interface in Qt, using Python. Otherwise, I always try to do it as a web app.

      But I agree with you that browsers are bloated. Web interfaces should be carefully adapted to work well, one cannot just try to do a direct conversion from a local GUI. These toolkits like GWT or PyJs have their limitations, they are useful for doing a quick job, but one should use their functions carefully, not abuse them.

    6. Re:History of the Internet (condensed) by sycodon · · Score: 1

      Just to add to this:

      I'm new to the whole object oriented programming methodologies (.net) and they have a lot of cool things going for them. But I find that most times, they are poorly documented and generally a mess.

      Take a generic web page that returns a row from a database. To do what should be common things like examine and modify values given conditions, highlight or otherwise format a particular row and/or column, perform server side logic that uses data from other tables in the database etc, requires a mind boggeling number of methods, most of which are used to convert data into a form acceptable to another method. Many times, you just can't get there from here.

      And formatting with HTML tables SUCKS!

      And the class documentation is mostly something like this:

      A: is blah blah of B

      then look up B

      B: is blah blah of A.

      Or try this:

      "Public Shared Function Find(Of T)(ByVal array() As T, ByVal match As System.Predicate(Of T)) As T
                Member of: System.Array
      Summary:
      Searches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire System.Array."

      This smells of code documentation generated by code.

      WTF? Can't people write complete sentences describing what the freaking code does?

      I long for the day of plain and simple client server architecture. Hell, it all practically works the same except they traded the clean, well documented and debugged clients for a myriad of incompatible web browsers using kludges to accomplish what used to be straight forward client functionality.

      The ultimate goal of all of this crap is the Holy Grail of easily modifiable systems. But in the pursuit of this goal, development has become a nightmare of competing, half-implmented, half-assed and incompatible languages and frameworks.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    7. Re:History of the Internet (condensed) by Abcd1234 · · Score: 1

      Or is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++?

      No offense, buddy, but anyone who looks to C++ as a general model for a "real" programming language needs to be taken out back and shot. C++ is a horrible confluence of hacks designed to address it's very specific design goals (a fast, system-level, strongly-typed, object-oriented programming language that gives the developer supreme control over what features are used), and I don't know any serious programmer who claims otherwise. But there are *many* programming languages out there *far* superior in their own domains, and Javascript is absolutely among them.

      In short, yes, you're jaded, old, and behind the times. Open your mind. A world does, in fact, exist outside of systems-level application development.

    8. Re:History of the Internet (condensed) by ccguy · · Score: 1

      Is there ever a point where a web developer will concede that the web is not the Best Platform for Everything in The Universe(tm)? Or is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++?

      Well, you see, web developers are probably developing webs which I'd say the web is the Best Platform for.

      As for the C++ remark and its real language status, I can't wait for your gmail or meebo implementation without using any of a fake language.

    9. Re:History of the Internet (condensed) by girlintraining · · Score: 1

      A "real" language has been classically defined to mean "a language which can compile itself." Perl, Python, and Ruby cannot do that (to my knowledge). Most languages used by web developers are interpretive languages, which fail this test.

      --
      #fuckbeta #iamslashdot #dicemustdie
    10. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      I'm pretty web savvy... While I've heard of salesforce.com I've never used it or know what it does. Taleo, never heard of it. I have a GMail account but I don't really use it because, quite frankly, I hate using a browser. Even Firefox feels clunky and slow, and don't get me started on IE. Thunderbird opens up in half the time. I relize I could connect to GMail via imap with Thunderbird but my point is, web apps tend to suck compared to native apps.

    11. Re:History of the Internet (condensed) by girlintraining · · Score: 1

      A "horrible" confluence of hacks that is fast, low-level, reliable, and object oriented and gives the programmer full access to everything? So you prefer slow, high-level, unreliable, procedural-based languages that give you little to no access to the underlying infrastructure? You're a visual basic programmer, aren't you?

      --
      #fuckbeta #iamslashdot #dicemustdie
    12. Re:History of the Internet (condensed) by thetoadwarrior · · Score: 1

      The JavaScript solution is a way to get around the fact the internet tubes aren't big enough. I'd argue that a server handling the job of server the page again isn't any worse than having to deal with dozens of Ajax requests and depending on the browser the Ajax implementation may ruin performance on the client side. Especially on older machines which is sort of ironic since the whole point of doing things in the browser is supposed to make things more neutral and open to all.

    13. Re:History of the Internet (condensed) by gstoddart · · Score: 1

      Call me jaded, old, and behind the times... But what ever happened to a web browser just being a web browser instead of a development platform with three heads breathing fire, half a dozen plugins, six months of combatability testing, and a kitchen sink?

      Because, it became the interface that everyone did everything in, and you could (try to) write code which ran on the client without specifically installing stuff. In theory, it became the utility knife that people kept plugging into. (In practice, I agree with you that it's a big mess.)

      Sadly, I see the same thing in Outlook. There seems to be a peculiar push to integrate everything into Outlook so that people can do all of their tasks from within that one application -- because it's familiar and everyone already has it open. Users seem to be increasingly demanding that any new applications they get rolled out to them be embedded in Outlook so they don't have to go through retraining. (At least, that's what Marketing tells me. :-P)

      Somewhere along the line, people expected that everything would move into the single application they use for everything, instead of the previous "run this program to do this work".

      Cheers

      PS -- you're old, jaded, and behind the times. ;-)

      --
      Lost at C:>. Found at C.
    14. Re:History of the Internet (condensed) by thetoadwarrior · · Score: 1

      But there are *many* programming languages out there *far* superior in their own domains, and Javascript is absolutely among them.

      I was going to completely agree with you until you said this. Javascript is not a good language. Yes part of the problem is how browsers handle it. But if the language is going to allow people to shit all over it then it's just as much at fault.

    15. Re:History of the Internet (condensed) by sjames · · Score: 1

      There are several problems as I see it IM(NS)HO.

      A lot of the problems are avoided if we treat the web browser as just a display technology much like X. The client side scripting confines itself to display functions, accepting user input and notifying the server. The problem that remains is that it isn't THE web browswer, it's a Babel of browsers each with it's own nasty quirks, bolt-on abominations and steaming pile of marketing claims. Defeat is regularly snatched from the jaws of victory. Somehow, in all of that mess there still exists nothing like a standard interface to play a streaming audio or even a consistant way to play a decent static sound with any degree of control.

      The next approach we see is attempting to push as much of the work as possible into the browser (using it like a VM). There we pile the problems above along with developers that don't seem to understand that the client's system cannot be trusted to make any security decisions that affect more than that particular user accessing the system. Because the browsers don't even consider security as an issue during the design phase, we still have no way to use something like an iframe as a sandbox (why not just let the parent document publish a set of javascript functions that the iframe's contents may access (if any)?!?)

      Then, there's the problem on the development side. WE can't seem to decide what a web designer is. In practice, web designers are porimarily visual arts people who through lack of choice do some cargo cult programming (with all of the problems THAT implies). For some reason, people can't get it into their heads that the functionality of a site/page should be done by an engineer with input from the web designer on the visual aspects of the page(s).

      In part, that's because there is no clear separation of the tools. In a more traditional project, a visual designer uses image and layout editors to produce a look and feel. The programmers take the output of those, edit source files and project/makefiles in order to produce an application. The visual designer never touches *.c and doesn't even have a compiler. The programming team may or may not have an image editor, but if they do, they only use it to do format conversions (or for non-project work).

      In contrast, for Web 2.123 Comet or whatever, a web designer places *.html files on a server in order to cause the browser to display them while a programmer might edit the very same files on the same server in order to get the very same browser to act like a VM. The web designer MIGHT have legitimate reasons to touch javascript and the programmers might have valid reasons to alter the HTML.

      The result of all of that is that many AJAX projects end up as a hodge-podge of cargo cult programming, hacks and workarounds, and multi-branching wrappers to trick various crappy browsers into doing something reasonable.

      Add on top of that that the browser specs themselves are loaded with ad-hoc addins and the real specs are besieged with corporate political infighting and you get the current state of affairs.

      As a result of that, in-turn, you get various frameworks that try to tame the untamable and try to make the browser into something it's not ready to actually be (as you point out). Naturally, these break on a regular basis as new browser versions shovel their own crap into the mix.

      I suppose the answer to your question is that everyone wants a sort of X terminal on steroids application with a genuinely write once run anywhere VM (That is, with absolutely NO platform specific extensions allowed for any reason) but what they have is a browser that sorta thinks it can be those things (with at least one of the major players bound and determined to bastardize it into an extended form of vendor lock-in). Meanwhile, there is also a legitimate desire for it to be able to display essentially static markup without having to have a programmer go over the static pages. Much of the 'programming' that happens there is to compensate for the spec not reflecting what the designers actually want to be able to do.

    16. Re:History of the Internet (condensed) by Lazy+Jones · · Score: 2

      It's a common misconception that people are trying to sAlso, as a longtime C++ programmer, I can say that C++ is no more a "real" language than Python or Ruby - talk about a juvenile understanding of software development. People use what gets the job done quickly and hopefully with fewer bugs, and when the dust settles certain languages and technologies are shown to work, and others not. But you never know unless you try.

      If you are a longtime C++ programmer, you should also know that C++ and other statically typed / compiled languages are much easier to debug - not only are there more and better tools (e.g. source-level down to machine code debuggers) available, the compiler warnings and errors are *much* more informative compared to all common interpreted languages. This saves you a lot of time and headaches on the long run and is probably a result of the many more man-years of professional development done in these languages (compared to less than 10 years of mostly small/hobbyist work in all the "web languages" - yes, with exceptions) and of course also due to the fact that statically typed and compiled languages are easier to analyze than dynamically typed and interpreted ones.

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    17. Re:History of the Internet (condensed) by AttillaTheNun · · Score: 1
      The HTML browser helped inspire thinking towards an open, standards-based thin client application architecture.

      It was a useful tool to research some ideas and prove some concepts, but it should have ended there.

      The past decade and a half should have been focused on an analogous thin-client application mark-up language and associated technologies as opposed to the duct tape and twine that we have today.

    18. Re:History of the Internet (condensed) by AttillaTheNun · · Score: 1

      IMO, if the interests of document markup and thin-client application mark-up had been decoupled early on, we wouldn't have this mess.

    19. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      It's like anything, if you can make money doing it, it will be done by someone.

      Whether it adds value or not - if it causes someone to transfer money into your account then it will be done by someone.

      If something shiny and pretty gets people to put money into your pockets then it will be done.

      http://en.wikipedia.org/wiki/Televangelist

      Again, if it puts money into your pockets it will be done. No matter how stupid, not valuable, not productive and even counter productive - it will be done.

    20. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      Many years I had difficulty moving programmers from assembler to C. Real macho programmers used assembler, it was said. Speed demanded it. No compiler could beat me!

      After all the bs about speed, I made some arbitrary rules, which were [adjusted for the speed and resources of today's machines]
      1) There is no justification for writing in assembler unless the code runs more often than once per second.
      2) There is no justification for writing apps in systems programming languages unless they run more often than once per minute.
      3) Always write in the highest level appropriate language.

      These rules still apply. If you make anything sacred today, it will be profane tomorrow.

    21. Re:History of the Internet (condensed) by Have+Brain+Will+Rent · · Score: 1

      You're jaded, old and behind the times! (rimshot please)

      Part of this is the result of a cyclically recurring dream of companies like Sun and IBM to move processing off the desktop and onto a server - because they sell servers. This push comes and goes every maybe 10 years. This time around it has hit some fertile ground because some people in web technology had finally figured out you can be doing something useful while the user is looking at the screen. ;)

      Add to that the seeming fact that people have always been very religious about the language/platform/tools they end up using and there is a huge inertia to do things any other way than the way they are doing things right now (whenever "right now" is).

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    22. Re:History of the Internet (condensed) by abigor · · Score: 1

      A "real" language has been classically defined to mean "a language which can compile itself." Perl, Python, and Ruby cannot do that (to my knowledge).

      http://codespeak.net/pypy/dist/pypy/doc/home.html

      Python and Perl aren't interpreted, and both can be self-hosting. Ruby could be, I'm sure, but I have no idea since I don't use it.

    23. Re:History of the Internet (condensed) by lacoronus · · Score: 1

      With C, you have the target architecture to worry about. Word size, alignment issues, memory models... There is no single standard there either.

      Just because you found a C compiler for your dialect doesn't mean your binary will be compatible across platforms.

    24. Re:History of the Internet (condensed) by pem · · Score: 1

      "If you are a longtime C++ programmer, you should also know that C++ and other statically typed / compiled languages are much easier to debug - not only are there more and better tools (e.g. source-level down to machine code debuggers) available, the compiler warnings and errors are *much* more informative compared to all common interpreted languages."

      Umm, no.

      I used to write lots of assembly language, lots of C, some C++. Device drivers, modem firmware, that sort of thing.

      These days, I write stuff in three languages:

      1) Python -- around 60%
      2) Verilog -- around 40%
      3) C -- under 5%

      The only language I really get paid for writing (the end product) is Verilog. I use Python for everything possible. I even prototype my Verilog in Python and write my test cases in Python. I use a tiny bit of C if python is too slow. C is the new assembly language. C++ doesn't really fit into my world -- you seem to think it would be easier to debug C++ than Python, but for me, it doesn't work out that way in the slightest. And in the rare case where Python is too slow, I translate to C. Since I'm just optimizing inner loops, I don't bother with C++. Basically, the things that need to be optimized usually don't require that much abstraction. Nonetheless, I quite often cheat, and write my C code using Pyrex, so it still looks like Python.

      Having said that, I can envision work environments where I would be using C++ in preference to Python. If the end product had a lot processing involved, and the team was using C++, I would probably consider C++ "good enough" for most tasks. I probably would write a lot of code initially in C++ rather than translate from another language. I probably would write test cases in C++ since I need to fire up the compiler to run the test anyway. But, where programmer time is more important than run time, and where I am not constrained by my choice of language, and where the final product is not C++, I won't use it, because the time-to-good-results which I can achieve with Python far outstrips that I can achieve with other languages.

    25. Re:History of the Internet (condensed) by abigor · · Score: 1

      If you are a longtime C++ programmer, you should also know that C++ and other statically typed / compiled languages are much easier to debug - not only are there more and better tools (e.g. source-level down to machine code debuggers) available, the compiler warnings and errors are *much* more informative compared to all common interpreted languages. This saves you a lot of time and headaches on the long run and is probably a result of the many more man-years of professional development done in these languages (compared to less than 10 years of mostly small/hobbyist work in all the "web languages" - yes, with exceptions) and of course also due to the fact that statically typed and compiled languages are easier to analyze than dynamically typed and interpreted ones.

      Really? I use a debugger on Python code, and it feels a lot like gdb.

      As for the errors being much more informative, I'd have to say that's pretty implementation-dependent.

      Right now, I don't actually work day to day in C++ - instead, I'm working in C and some Java. Neither makes it easier to write bug-free code than Python, in my opinion, although I must say I do appreciate Maven and the way it practically forces you to unit test ;)

      In fact, I see few advantages to static typing. The constant across all language for writing bug free code is indeed unit testing.

    26. Re:History of the Internet (condensed) by ScotlynHatt · · Score: 1

      While I understand what you are trying to say, I think your perspective is backwards. The web is an opportunity vector and business are seizing the opportunity to extend their services to this medium. This doesn't preclude using more low level development with C++ on the back-end at all. In fact is is more likely that the business logic and services are C++ or Java with a framework approach. So this "platform" is not a "modern" version of C++ by any stretch, its just an extension.

    27. Re:History of the Internet (condensed) by abigor · · Score: 1

      I was addressing the original poster's assertions about Python, Ruby, and Perl in particular, not Javascript. Sorry for any confusion.

    28. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 2, Interesting

      But Javascript or ECMAScript isn't a 'real' language, or at least not in practice, and that's the issue. Code written in it needs to run on multiple different implementations with no properly accepted standards.

      You're confusing DOM implementations with Javascript. Javascript is a language with a well-defined standard, and no implementation deviates significantly.

      Browser DOM implementations vary wildly and cause the problem that you're talking about.

      I used to think that Javascript was a crap language, for mostly the reasons you outlined. Then I actually looked into the language and found that, despite a few shortcomings, it's a perfectly find functional language. People misuse it due to its similar syntax to Java and C, and crappy, incompatible DOM implementations further give it a bad name (but that's not its fault.)

    29. Re:History of the Internet (condensed) by Abcd1234 · · Score: 1

      A "horrible" confluence of hacks that is fast, low-level, reliable, and object oriented and gives the programmer full access to everything?

      You also forgot horribly complicated, inconsistent, and full of corners that can hang a programmer if they're not aware of them.

      So you prefer slow, high-level, unreliable, procedural-based languages that give you little to no access to the underlying infrastructure?

      Yeah, you got me. All alternatives to C++ are necessarily all of these things, and therefore that's what I look for in a language. How very clever of you.

    30. Re:History of the Internet (condensed) by Abcd1234 · · Score: 1

      And why, exactly, isn't javascript a good language? I mean, it has it's warts that need mending, specifically namespaces and an import mechanism of some kind. Certainly, some people object to it being prototype-based, or that it's weakly typed, but those are just a matter of taste. But aside from those things, what's wrong with JS?

    31. Re:History of the Internet (condensed) by Abcd1234 · · Score: 3

      A "real" language has been classically defined to mean "a language which can compile itself."

      Complete and total bullshit. If you deny that Python and Perl "compile" themselves, than neither do Lisp or Smalltalk, two of the fundamental pillars of modern programming language pedigree. And I don't think anyone familiar with those languages would claim they aren't "real".

      If you then concede that dynamically byte-compiled languages like Lisp, Smalltalk, Java, and C#, among others, qualify as "real" programming languages based on some reinterpretation of your "definition", then any dynamic Javascript compiler (like, say, V8) automatically promotes Javascript to a "real" language. Sounds like a pretty dubious definition to me.

      Honestly, you have no idea what the hell you're talking about, do you?

    32. Re:History of the Internet (condensed) by Poltras · · Score: 1

      A "real" language has been classically defined to mean "a language which can compile itself."

      Complete and total bullshit. If you deny that Python and Perl "compile" themselves, than neither do Lisp or Smalltalk, two of the fundamental pillars of modern programming language pedigree. And I don't think anyone familiar with those languages would claim they aren't "real".

      Honestly, you have no idea what the hell you're talking about, do you?

      Add to that the fact that any language which can output byte streams to a file, can read a text file and is turing complete (although that last part is not even 100% necessary) can take any source file (whatever the language) out there and output its executable binary file. It then follows that Javascript with a STDIO library _IS_ "a language which can compile itself", just that there are no compiler easily available.

      The OP just wanted to throw up the definition he heard in a book... He should go and read some stuff about algorithmic before talking about classes of languages.

    33. Re:History of the Internet (condensed) by bckrispi · · Score: 1

      It's not the number of server requests as it is a problem with "user experience". You don't want an entire page to refresh on the browser just because you switched tabs.

      --
      Xenon, where's my money? -Borno
    34. Re:History of the Internet (condensed) by ozphx · · Score: 1

      Thats because when you add (and name) things like "AJAX" and write serious articles like this one, it convinces a bunch of cheap web developers that they are developing "applications" and deploying them to a "platform" just like a real programmer.

      --
      3laws: No freebies, no backsies, GTFO.
    35. Re:History of the Internet (condensed) by jbolden · · Score: 1

      OK lets take C++

      1) It is based on C so it has low level OS interactions. This means I need to trust the application author and it puts my entire system in danger

      2) Generally C++ were part of the event driven model. This works for non linear processing. Many web apps are still fundamentally linear.

      3) C++ is designed for high efficiency of hardware but is rather indifferent to programmer time. That is applications need a fairly large base to be cost effective in terms of number of users. On the other hand they can be quite large and complex and still run well on limited hardware. In today's market hardware is generally overpowered which is why computer prices have been falling so drastically for the last 10 years. The goal (with the exception of multimedia) to save money on the programmers not the hardware.

      4) C++ if fundamentally text based and does not have a naturally display mechanism.

      How is this a good fit for the web or the types of apps developed for the web?

    36. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      Javascript is a real language. Your entire posting is actually about the environment JS usually resides (which indeed sucks). Remove the web browser, and look at JS on its own. It is actually a pretty decent language.

    37. Re:History of the Internet (condensed) by prockcore · · Score: 1

      A "real" language has been classically defined to mean "a language which can compile itself." Perl, Python, and Ruby cannot do that (to my knowledge). Most languages used by web developers are interpretive languages, which fail this test.

      Um, since all of those languages have "eval", they most definitely can compile themselves.

    38. Re:History of the Internet (condensed) by prockcore · · Score: 1

      If you are a longtime C++ programmer, you should also know that C++ and other statically typed / compiled languages are much easier to debug

      Only if you're running it locally. Ever try to debug a C/C++ CGI program? That's what nightmares are made of.

    39. Re:History of the Internet (condensed) by ultranova · · Score: 2, Insightful

      But Javascript or ECMAScript isn't a 'real' language, or at least not in practice, and that's the issue. Code written in it needs to run on multiple different implementations with no properly accepted standards. Contrast that to C, which yeah, has a number of various flavors, but it only matters that you have a compiler that understands that dialect. The stuff you distribute to users isn't going to explode because of your choice of C.

      Out of curiosity, what dialect of C is both supported in many platforms and has a standard API for making a graphical UI ? Because I couldn't find any mention of anything but outputting text strings in the libc documentation.

      But it's nice to know that I only need a compiler which understands a particular C "flavour", rather than a browser which understands a particular Javascript flavour. They're very different requirements, those.

      Nothing has more bugs than stuff written in the 'web languages'. The current slashdot home page has 91 SGML parser errors and 1 warning, 225 HTMLTidy warnings, and 40 errors via the W3C markup validation service.

      And yet it works. Were it written in C/C++, it would generate a segmentation violation or a buffer overflow for each of these errors. That's another reason to use web programming languages: they help mitigate the damage caused by incompetent programmers.

      Of course you could get the same benefits by using Java or some other memory-managed language rather than C/C++, but I'm not holding my breath there. Too much "Real Men manage their own memory" vainglory there, not to mention the practical problems, such as garbage collection's bad interaction with swap.</rant>

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    40. Re:History of the Internet (condensed) by colinrichardday · · Score: 1

      I have some small web apps that involve finding the value of a mathematical expression given the value of the variable of the expression. To do so in python (or perl or php) is trivial,
      just assign the variable the proper value and invoke eval(expression). How does one do this in C++?

    41. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      Don't worry, the old timers are the ones running the show. A web-savvy, wet-behind-the-ears kid cannot get close to a real server, much less administer/care for it; if they are happy developing crap for the web fad du jour, it's okay if it pays their bills but any real computing is done using accountable, debuggable, stable languages. C++, maybe -gasp- Java.

      The myspaces, facebooks and hi5s will make billionaires out of very few and employ thousands, but will never turn into platforms for anything serious. Run scientific simulations in a thread in your browser? Government calculating your taxes in your browser? Yeah sure. Visa or Boeing running their businesses in their employee's Operas, IEs and Firefoxes? Yeah, Sure. Databases? Privacy? Distributed applications? Remember to leave your machine on 24/7!!

      Sheesh.

    42. Re:History of the Internet (condensed) by vux984 · · Score: 1

      Out of curiosity, what dialect of C is both supported in many platforms and has a standard API for making a graphical UI ? Because I couldn't find any mention of anything but outputting text strings in the libc documentation.

      wxWidgets and qt and opengl ?

      And, for what its worth, last time I checked 2D vector graphics in Javascript are still a big challenge.

      And yet it works.

      Not well. I get more crap in my browser than in EVERY other application I use combined... floating elements that aren't in the right place, images that are distorted, css bugs causing all kinds of issues, javascript "apps" getting their internal models out of sync with the actual page state...

      For some reason our expectations with web content are so low that this is deemed 'hey pretty good'!

      This qualifies as 'it works' the same way Windows 3.0 qualified. Except that at the time, Windows 3 was pretty cutting edge in terms of what it did on the hardware it ran on... what's the browser platforms excuse? 1GB of ram and a core 2 duo is too tight to properly layout some text and graphics with a bit of crude/rudimentary animation?

      Were it written in C/C++, it would generate a segmentation violation or a buffer overflow for each of these errors.

      Right. Which would mean that it would get FIXED.

      That's another reason to use web programming languages: they help mitigate the damage caused by incompetent programmers.

      No, they just propagate the damage onto end users with crash prone, and often barely working apps. Even at their best its easy to break them. Its not hard to break even gmail. If the browser rejected junk, the web wouldn't be full of it.

    43. Re:History of the Internet (condensed) by micheas · · Score: 1

      Call me jaded, old, and behind the times... But what ever happened to a web browser just being a web browser instead of a development platform ...

      Netscape 2.0beta3 was released and then 1996 happened.

      It is arguable that the reason for the popularity of the web is because Netscape 2 gave a platform for cross platform client server application development.

      Even thought the tools sucked the probable direction was obvious to many (Including Bill Gates) which is why Microsoft pushed for ActiveX and did so much to destroy Netscape.

    44. Re:History of the Internet (condensed) by Anonymous+Brave+Guy · · Score: 1

      Nothing has more bugs than stuff written in the 'web languages'. The current slashdot home page has 91 SGML parser errors and 1 warning, 225 HTMLTidy warnings, and 40 errors via the W3C markup validation service.

      And yet it works. Were it written in C/C++, it would generate a segmentation violation or a buffer overflow for each of these errors. That's another reason to use web programming languages: they help mitigate the damage caused by incompetent programmers.

      While I take your point, I think perhaps you are missing the GP's. Saying that Slashdot "works" despite the bugs is rather generous: of the web sites I visit with significant frequency, Slashdot is borked to the point of being unusable more than all of the others combined: either the page display is so broken that it is unreadable, or it just returns an error code to my browser when I try to visit a page. Many other web sites I use, including such illustrious and high volume sites as the BBC News pages, also fail with irritating regularity. In contrast, despite all the bitching about segfaults and memory leaks and all that jazz, exactly one of the desktop applications I use on a regular basis crashes often enough that I can remember the last time it happened. Ironically, that's the one with a pseudo-webby UI. :-)

      Of course, these things don't take out the whole computer, but in most browsers Javascript screw-ups can take out the whole browser (or leave you vulnerable to pranks like the endless dialog box trick, which is effectively the same thing). This is a royal PITA if you've got multiple tabs open on multiple sites. A browser typically doesn't have the kind of fine control and failure handling of a full-blown OS, yet by developing web applications one inherently assumes that the reliability of the browser as delivery vehicle will be sufficient.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    45. Re:History of the Internet (condensed) by Blakey+Rat · · Score: 0, Flamebait

      Call me jaded, old, and behind the times...

      Ok grandpa.

      But what ever happened to a web browser just being a web browser instead of a development platform with three heads breathing fire, half a dozen plugins, six months of combatability testing, and a kitchen sink?

      It was a short period of about 6 months between when Netscape 1 came out and before someone had the bright idea of plugging Java VMs into it. Remember VRML? What you're griping about missing never really actually existed.

      Is there ever a point where a web developer will concede that the web is not the Best Platform for Everything in The Universe(tm)?

      Honest web developers will right now. But a lot of the reason that the web is being used for things like, say, timekeeping applications is that companies that made stand-alone timekeeping applications... well, they did a really shitty job. Compare Sharepoint with Lotus Notes and tell me which is more pleasant to use.

      Or is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++?

      Wow, you are a grandpa.

      Javascript is a pretty goddamned competent language. No, it's not perfect, but it's a hell of a lot better than (for example) the VBA you're required to use to script Microsoft Office applications. It can emulate a OO language or a functional language, it has reflection, a familiar and simple syntax, it's quick and the interpreter is simple... in short, Javascript's a pretty damned good language overall.

      That all said, DOM sucks ass. But remember, DOM would suck as much ass if you interfaced with it using C++... you can't blame Javascript for DOM flaws.

      Help me out here -- this isn't intended as a flame but an honest question

      Yeah, Javascript isn't a "real" language, yet you're not intending to flame? I guess you just assumed the people reading your post wouldn't be able to remember more than one sentence at a time. Look, if you say someone's language-of-choice isn't a "real" language, you're flaming. And an asshole. You're a flaming asshole.

      -- where does this attitude that everything has to be crowbar'd into a web interface to be considered modern these days?

      That's not even a sentence. But let's assume you meant to put the words "come from" after that sequence of words, and the answer is: from people who were sick of using piece of shit desktop software. It's true that frequently the web applications aren't much better (witness anything from Oracle Apps or Lotus Notes webapps).

      People like you who like desktop software brought this upon yourselves by making unusable, unpleasant pieces of crap for decades. Face it.

      Because a lot of the problems in this article come down to programmers expanding and bloating their platform/language of choice to do something it was never designed for because That's Just What I Know(tm).

      Every web developer is a retard who can't learn anything new! But I'm not intending this as a flame!!!

      I cry for these languages. I know after 5pm they go home and hit the frozen dairy products hard to feel better about how fat they've become.

      Javascript's slimmer than most C++ libraries.

    46. Re:History of the Internet (condensed) by Blakey+Rat · · Score: 1

      I was going to completely agree with you until you said this. Javascript is not a good language. Yes part of the problem is how browsers handle it. But if the language is going to allow people to shit all over it then it's just as much at fault.

      First of all, most people I talk with agree that DOM sucks ass. But DOM has nothing to do with Javascript. (I assume you're talking about DOM when you say "how browsers handle it.)

      Secondly, you should actually give reasons for Javascript being a bad language. Now, it is true that Javascript lacks some features that would be nice to have now that longer programs are being written in it (like namespaces), but that doesn't make it a bad language. Tons of languages, many of them used for applications ten times the size of the biggest JS app, have no namespaces.

    47. Re:History of the Internet (condensed) by Blakey+Rat · · Score: 1

      But Javascript or ECMAScript isn't a 'real' language, or at least not in practice, and that's the issue. Code written in it needs to run on multiple different implementations with no properly accepted standards.

      You are, practically, confined to a "minimum ECMAScript featureset", but it's not like one Javascript interpreter will do something completely opposite from another. Microsoft doesn't call their implementation Javascript, they call it JScript, but as far as I'm aware it's completely in-line with the ECMA specs for all the functionality it implements. Correct me if I'm wrong.

      All the *real* annoyances in web development (things like innerText vs. textContent, lack of a getElementsByClassName, Firefox's inserting empty text nodes in the DOM tree when IE doesn't) are on the DOM layer. The DOM layer would be just as crappy if you had browsers that ran another language.

      (BTW, there's really nothing stopping, for example, Firefox from releasing a browser that would understand [script language="Python"] or [script language="Ruby"] or [script language="Lua"] or what-not. Javascript isn't the end-all, be-all of web languages, if a better one came along browsers could add support for it in no time at all.

      Nothing has more bugs than stuff written in the 'web languages'. The current slashdot home page has 91 SGML parser errors and 1 warning, 225 HTMLTidy warnings, and 40 errors via the W3C markup validation service.

      Valid HTML is over-rated. 95% of sites on the web have as many "errors", and yet they aren't losing any users over it. JCPenney.com is one of the most popular e-commerce sites on the web, and it has terrible, terrible markup. Frankly, nobody cares.

    48. Re:History of the Internet (condensed) by Blakey+Rat · · Score: 1

      A "real" language has been classically defined to mean "a language which can compile itself."

      If you say so...

      Perl, Python, and Ruby cannot do that (to my knowledge).

      Sure they can. They're Turing-complete, and they have functions to read/write files. What's stopping them? (Well, as far as they can be compiled in the first place; see below.)

      I think you're confusing "can not" with "don't". Big difference. The only reason ECMAScript isn't "real" (according to your definition) is that the ECMAScript spec doesn't include any file system interfaces.

      Javascript (and Ruby and Python and possibly Perl) compilation is kind of a unusual situation, though, where even compiled Javascript would need some kind of run-time engine to re-compile portions of the code on-the-fly, since those languages have reflection features. But if that's your issue, you'd also have to decree that C# (and even possibly C++, if you consider Templates) can't be compiled, and then you're into a whole weird world of hurt.

    49. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      IT happened. Vendors can't get in the door anymore unless you don't have to install _anything_ on the client machines. That means web app, or die.

      Having a web browser just be a web browser is no longer acceptable.

      From my perspective, it never was - but for a completely different set of reasons :)

    50. Re:History of the Internet (condensed) by Anonymous Coward · · Score: 0

      Does it physically hurt to be as stupid as you are?

    51. Re:History of the Internet (condensed) by shutdown+-p+now · · Score: 1

      A "real" language has been classically defined to mean "a language which can compile itself."

      Given that Lisp is one of the oldest languages, the "realness" of which is not disputed, this is obviously wrong. At best you can set the requirement at "a language which can be used to implement itself" - in which case any Turing-complete language with IO facilities that are good enough qualifies.

    52. Re:History of the Internet (condensed) by mdm42 · · Score: 1

      I suppose the answer to your question is that everyone wants a sort of X terminal on steroids application with a genuinely write once run anywhere VM (That is, with absolutely NO platform specific extensions allowed for any reason)

      Did we not have exactly that, about ten years ago? (Or at least pretty close to it.) IIRC it's called a "Java VM inside the browser"... I know that applets at the time were spectacularly ugly, and that performance was not great, but those were problems that just need a little time to work out.

      Oh well, Microsoft pissed in that particular soup, didn't they?

      --
      New mod option wanted: -1 DrunkenRambling
    53. Re:History of the Internet (condensed) by ultranova · · Score: 1

      wxWidgets and qt and opengl ?

      Those are part of C standard ?

      And, for what its worth, last time I checked 2D vector graphics in Javascript are still a big challenge.

      The latest version of Firefox has native support for SVG. But yes, there's lots of room for improvement here.

      Not well. I get more crap in my browser than in EVERY other application I use combined... floating elements that aren't in the right place, images that are distorted, css bugs causing all kinds of issues, javascript "apps" getting their internal models out of sync with the actual page state...

      For some reason our expectations with web content are so low that this is deemed 'hey pretty good'!

      More to the point, our expectations of computer programs are so low that anything that doesn't outright crash is "pretty good".

      This qualifies as 'it works' the same way Windows 3.0 qualified. Except that at the time, Windows 3 was pretty cutting edge in terms of what it did on the hardware it ran on... what's the browser platforms excuse? 1GB of ram and a core 2 duo is too tight to properly layout some text and graphics with a bit of crude/rudimentary animation?

      The browser's problem is compatibility, not speed. Neither memory nor CPU power help solve that. So it's a bit like trying to run Windows 3.0 programs under Vista or Wine ;).

      Were it written in C/C++, it would generate a segmentation violation or a buffer overflow for each of these errors.

      Right. Which would mean that it would get FIXED.

      No, in my experience it most likely wouldn't get fixed. The user would simply have to learn to navigate the minefield. A bit like this browser (Firefox 2) will crash if I push Insert right now, but only because it has already ran for a while and has many windows open; and I can't update to Firefox 3 because it has a regression leading to horrible performance (30-second pauses with frozen UI) in one of the pages I frequent, and it doesn't seem that it'll ever get fixed.

      That's another reason to use web programming languages: they help mitigate the damage caused by incompetent programmers.

      No, they just propagate the damage onto end users with crash prone, and often barely working apps.

      I think you're confusing web apps with applications in general here ;).

      If the browser rejected junk, the web wouldn't be full of it.

      That, of course, would require a clear agreement on what constitutes junk and non-junk, which doesn't exist.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    54. Re:History of the Internet (condensed) by sjames · · Score: 1

      Java had the potential to become what we wanted before Microsoft poisoned the well, but other developments would have had to go differently as well.

      First, it would need to be actually integrated into the HTML render engine in the way javascript is rather than just borrowing an independant chunk of canvas from the page.

      That implies that it needed to be BSD licensed so browser producers could freely incorporate it. Given that even with Sun controlling it the spec MS managed to poison it, I can understand why they didn't just open it fully from the start.

      It needed less marketing and more engineering.

      These days, I'd say something Python like would be ideal except that the browser environment doesn't even try to preserve whitespace. Javascript will do if the inconsistencies between IE and everything else (including the DOM) could be resolved (Or just relegate IE to a lunatic fringe and ignore it).

      Then it's just a matter of getting rid of the plugin madness. Even a simple common function like streaming audio or video ends up in a hellish mis-mash with each combination of browser, OS, and available plugin requiring a different API. Get SVG properly supported as well.

    55. Re:History of the Internet (condensed) by cnystrom · · Score: 1

      People are commenting on your language comment and are missing your main point.

      Actually you are ahead of the times...the web is the MS-DOS of the Internet operating systems:

      LOCAL OS
      (Apps)----->(Apps)
      (MS-DOS)-----> (Linux, etc)
      (PC Hardware)----->(PC Hardware)

      (Apps)----->(Apps)
      (Web)----->(Internet OS)
      (OS)----->(OS)
      (PC Hardware)----->(PC Hardware)

      For a number of years MS-DOS owned the PC world and was ubiquitous. Eventually people got tired of the shortcomings and moved on to something better. The comparison to the web is even worse because at least MS-DOS was designed to run apps and, of course the web never was, as you point out.

      The web as an application platform is crap and will be replaced. If they could have fixed it they would have by now.

      If you want to run C/C++ Internet apps in a cross platform environment please see my open source NewIO project (http://www.newio.org). It is far from a complete Internet OS, but I am working on it.

    56. Re:History of the Internet (condensed) by chez69 · · Score: 1

      The big deal with static typing is it is easier on others when you leave for your next programming adventure. Maintainability by others is a big deal.

      Python is nice, by the way. I'm sort of trying to learn it in my spare time, enough to start using jython at work.

      --
      PHP is the solution of choice for relaying mysql errors to web users.
    57. Re:History of the Internet (condensed) by vux984 · · Score: 1

      Those are part of C standard ?

      Ok. Remind me what GUI API the javascript standard has?
      Bearing in mind that stuff provided by the browser DOM isn't part of any Javascript standard.

      The browser's problem is compatibility, not speed. Neither memory nor CPU power help solve that.

      Really? You think the megabytes on top of megabytes that make up IE quirks mode don't consume vast amounts of ram and speed? Its easy to implement most browser features to the standard in a mimum amount of code, and have it run quickly. Supporting the trash code that makes up the web takes orders of magnitude more resources.

    58. Re:History of the Internet (condensed) by thetoadwarrior · · Score: 1

      Reloading a page upon error and flipping through tabs are two different things, imo, and I wouldn't say that either solution is the best option in every case.

    59. Re:History of the Internet (condensed) by logixoul · · Score: 1

      A few things.
      Portability. Even something like Qt only gets you 5 or 6 major platforms. Baroque HTML+JS on the other hand gets you going on anything from BeOS to iPhone. If your app needs flash then this advantage is diminished somewhat.

      A working sandbox model. Executables can do anything to your machine. A webapp can do nothing but sit there and wait for your input.

      Startup speed. To check my mail on a random pc, i write "gmail.com" and i'm up to speed. Having to fetch&install thunderbird (and then maybe uninstall; this not being my pc) would mean i probably wouldn't bother.

    60. Re:History of the Internet (condensed) by ukyoCE · · Score: 1

      Nothing has more bugs than stuff written in the 'web languages'. The current slashdot home page has 91 SGML parser errors and 1 warning, 225 HTMLTidy warnings, and 40 errors via the W3C markup validation service.

      And the slashdot homepage works just fine in firefox, safari, and internet explorer, on mac, windows, and linux. Are those really "bugs" you're talking about?

    61. Re:History of the Internet (condensed) by LS · · Score: 1

      My company makes hotel concierge desk software. We could it in C++ using a native UI widget set, and it probably would be quicker and easier to develop. BUT, we have some problems:

      1. Hotel IT staff don't want to install anything on their concierge desks.

      2. The specs for front desk machines are widely variable

      3. The platform of the various hotels' front desk machines are not all the same (though more than 90% of the time it's windows XP).

      4. We don't have enough staff to go to every hotel to do support or upgrade the software.

      Looking at all of these considerations, it makes a TON of sense to cram our functionality into a browser instead of writing it in C++, despite all the drawbacks of having to deal with AJAX/DOM bullshit.

      LS

      --
      There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
    62. Re:History of the Internet (condensed) by LS · · Score: 1

      But Javascript or ECMAScript isn't a 'real' language, or at least not in practice

      Bullshit. What you say is also true of python, ruby, perl, php, et al - every computer that is running a script might have a different version of Perl, and some scripts will not work, so if you want it to work everywhere you have to test the script with the interpreter versions you want to support. This goes for browsers as well.

      All good software is tested, and IN PRACTICE, you test across the main interpreter versions or browser platforms you want to support, and in the end have a workable product.

      Despite it's flaws, JavaScript is a powerful language. Your line drawn between 'real' and unreal languages is pretty arbitrary.

      LS

      --
      There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
    63. Re:History of the Internet (condensed) by drew · · Score: 1

      But Javascript or ECMAScript isn't a 'real' language, or at least not in practice, and that's the issue. Code written in it needs to run on multiple different implementations with no properly accepted standards. Contrast that to C, which yeah, has a number of various flavors, but it only matters that you have a compiler that understands that dialect. The stuff you distribute to users isn't going to explode because of your choice of C.

      So close, and yet... So far.

      ECMAScript is a 'real' defined language, and JavaScript code that is valid in IE will also be valid in virtually any other browser. Admittedly, the reverse is not quite true. Some browsers have been a bit quicker to add support for newer language features, or are more forgiving of minor syntax errors. You can see the same differences in C compilers from different vendors, too.

      No the real weak point in JavaScript development is not the language itself, but rather the DOM, or the "standard library" if you will. This can be incredibly frustrating, of course, but again it is hardly unique to JavaScript. In the early days of the STL, you could find many of the same problems in C++. And even in C, you still run into the same problems today. Is the fact that not all browsers support addEventListener() somehow more problematic than the fact that not all C libraries implement strlcpy or asprintf? Is the slightly different semantics of instantiating an XmlHttpRequest object on different browsers somehow a graver crime than the fact that not every "struct tm" contains a tm_gmtoff?

      The language problems that plague JavaScript are inherent in any multi-vendor language. If you can't learn how to deal with them, the solution is to either switch to a single vendor language, like Java and C#, or use an abstraction layer to smooth over the differences, like Qt or glib. Interestingly enough, we see both of these solutions at work on the web as well, where many developers have decided to switch to a single vendor solution like Flash or Silverlight, or started using abstraction layers like Prototype, MochiKit, JQuery, Dojo, ...

      --
      If I don't put anything here, will anyone recognize me anymore?
    64. Re:History of the Internet (condensed) by drew · · Score: 1

      Even if I were willing to grant that there are better tools available (doubtful - I would pick Firebug over any C or C++ debugger I've ever used), I would counter that the kinds of mistakes they are most helpful in catching are much harder to make in interpreted languages. Unfortunately, it does take a while to get used to the fact that in JavaScript, occasionally 1 + 1 == 11. (And I still maintain that overloading addition and concatenation in a dynamically typed language is the single worst design decision in the entire language.) But all in all, it's not a terribly hard error to catch, and it's about the only error that I can think of that you are more likely to make in a dynamic language. On the other hand, the errors that you are most likely to spend hours or days chasing down in C++, bad casts or memory errors, go away in a dynamic language. What's more, it can greatly simplify your overall program design by getting rid of a lot of superfluous inheritance structures. In a dynamic language, you can just use inheritance where it's helpful in reducing code duplication, rather than being forced into it because some API FooBar requires whatever you pass in to be an instance of FooPtr.

      --
      If I don't put anything here, will anyone recognize me anymore?
  7. GWT is junk by Anonymous Coward · · Score: 0

    GWT produces a bunch of bloated, slow, redundant code. Compiling Java to Javascript is a hair brain idea. You don't understand how to code for the Web? Stay away from it.

  8. Security issues. by TheLink · · Score: 4, Informative

    "the same high-level source code can be executed either client-side on the browser, or server-side, or even both, depending on the requirements"

    Careful when you blur the lines.

    The gains might not be as much, because there's a very big difference between running your code on an untrusted client vs running your code on your server.

    It may be rather hard to enforce the integrity and security checks at server side when you start to do more and more stuff on the client.

    If the server has to counter check each step, then you still get that round trip latency effect. If you do most of the stuff client side that could mean the server has to figure out what are valid _end_ states from tons of possible intermediate states. Sometimes that might not be possible.

    It's not a problem for things like google maps, if you modify their client side javascript to behave differently it's not a big issue.

    --
    1. Re:Security issues. by Timothy+Brownawell · · Score: 3, Insightful

      If you do most of the stuff client side that could mean the server has to figure out what are valid _end_ states from tons of possible intermediate states. Sometimes that might not be possible.

      Why? I'd think the server would just need to know "is this client permitted to view/modify that data", which really has nothing to do with any intermediate states. All it has to care about is who the client has authenticated as, and what the (entirely server-side) permission database says.

    2. Re:Security issues. by tepples · · Score: 0

      If you do most of the stuff client side that could mean the server has to figure out what are valid _end_ states from tons of possible intermediate states. Sometimes that might not be possible.

      Why? I'd think the server would just need to know "is this client permitted to view/modify that data", which really has nothing to do with any intermediate states. All it has to care about is who the client has authenticated as, and what the (entirely server-side) permission database says.

      How about "in what way is the client permitted to view/modify that data?" In other words, "do the modifications that the client proposes introduce inconsistency into the model?" The constraints can become more difficult to verify on the server once more of the model moves to the client; compare cheating in online multiplayer games.

    3. Re:Security issues. by Timothy+Brownawell · · Score: 1

      The constraints can become more difficult to verify on the server once more of the model moves to the client; compare cheating in online multiplayer games.

      I thought there were two main issues with cheating, that the client is given data it isn't permitted to use (because you can't have a round-trip just to find out what suddenly popped out from behind that wall), and that alternate input methods aren't considered fair (you have to use mouse/keyboard/joystick, no scripts or bots). It has nothing to do with data integrity, it has to do with unenforceable rules that could be violated with a network sniffer and camera driving a fake mouse and keyboard.

    4. Re:Security issues. by TheLink · · Score: 1

      That's actually the point.

      The rules ARE enforceable if you keep most stuff server side, but at the expense of increased latency, higher server load and very poor user experience.

      And the "poor user experience" is what a lot of people are complaining about with webapps, and that's why they are shifting stuff client side.

      While you can do some stuff safely, it does make me wonder what is likely to happen after all that blurring and layers of abstraction/indirection.

      Truth be said, I don't wonder at all, it's inevitable - lots of PHBs are going to insist on something stupid and thousands of cheap clueless programmers are going to do it ;).

      --
    5. Re:Security issues. by madfancier · · Score: 1

      For that you constrain your database with foreign key constraints, and if you're using Postgres and ActiveRecord and Migrations - check out this gem. This way you're guaranteed that whatever enters your database is always valid. Unless you screwed up something of course. : )

    6. Re:Security issues. by DarthJohn · · Score: 1

      lots of PHBs are going to insist on something stupid and thousands of cheap clueless programmers are going to do it

      Pity the ones that have clue enough to know what they're doing, but for some reason or other have to anyway.

    7. Re:Security issues. by Timothy+Brownawell · · Score: 1

      The rules ARE enforceable if you keep most stuff server side, but at the expense of increased latency, higher server load and very poor user experience.

      Some of the rules. I'd guess you could make a decent bot with a good camera and something that could pretend to be a USB keyboard.

      And the "poor user experience" is what a lot of people are complaining about with webapps, and that's why they are shifting stuff client side.

      This is only an issue if read permissions are time-sensitive and changing in real time, which I think is pretty much limited to games. In other cases, client-side prefetching is perfectly OK. Write caching is also OK, either write-back with a save/commit button (which will give an error if the client has been hacked and gotten out of sync with the server) or write-through (where you can asynchronously get an error and have your change locally revert one round-trip after you make it).

    8. Re:Security issues. by jadavis · · Score: 1

      The rules ARE enforceable if you keep most stuff server side, but at the expense of increased latency, higher server load and very poor user experience.

      If you define "end state" to mean "state visible to other users/applications", then the end state is all you need to verify.

      Can you give an example where you need to verify some transient state that is invisible to other users?

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    9. Re:Security issues. by Hognoxious · · Score: 1

      This way you're guaranteed that whatever enters your database is always valid.

      Valid doesn't imply true or accurate.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    10. Re:Security issues. by Anonymous Coward · · Score: 0
      There's a third one, which is what he is describing: client sending invalid data. In the realm of games, possibly the most common cheat of this kind is the speedhack, which is basically walking faster than you are supposed to, but there are various others like using/activating items you don't actually have, or firing a weapon before its cooldown period is over. Most often by merely sending that action to the server (which an official, unaltered client does not allow you to do), no overcomplicated exploits needed.

      Sounds stupid, yes, but you'd be surprised how many popular games, developed by respected software houses, are affected. I can only guess it's because this validation can be costly to a server which has to handle thousands of simultaneous players.

    11. Re:Security issues. by uhlume · · Score: 1

      Only if (assuming we're still in the MVC paradigm) your Controller logic is incredibly simple — or you implement it client-side, and use your web service merely to implement a data store (a terrible idea from a security/data integrity perspective).

      --
      SIERRA TANGO FOXTROT UNIFORM
    12. Re:Security issues. by madfancier · · Score: 1

      True. Although hopefully you never build an ACL in your open editable javascript code. You should certainly not permit anything meaningful to happen without asking server if that's allowed. Then the only problem remains is for all that mess that the client created to be valid. Maybe I'm misunderstanding something?.. This whole conversation is pretty hand-wavy.

    13. Re:Security issues. by Anonymous Coward · · Score: 0

      It just means that controller is split between client and server. All actions can be forwarded from client controller to server controller if needed.
      From what i understand, only view engine is on server side, and all views are rendered by client. After the initial request, the model (s->c) and actions (c->s) are only data between server and client.

  9. not a problem, other than Javascript floats by Tei · · Score: 1

    I write applications in XUL (around 20.000 LoC). I use "MVC"ish style for the server. But the "client" is smart(reads: fat).

    My main problem with JS, is that is float calculations suck. If you want to do something serious with calculations you may have problems.

    --

    -Woof woof woof!

    1. Re:not a problem, other than Javascript floats by sakdoctor · · Score: 2, Funny

      And if it doesn't float it's a witch?

    2. Re:not a problem, other than Javascript floats by Anonymous Coward · · Score: 0

      Only if it weighs the same as a duck.

  10. necessary introduction of Javascript and AJAX? by Anonymous Coward · · Score: 0

    [citation needed]

  11. Re:Haha, Python programmers by Crimsonjade · · Score: 1

    I thought the author's point was weakened when he decided to start tearing down JavaScript and php without giving one sentence to the shortcomings of his language of choice: Python.

  12. History of the Internet (not even close) by eldavojohn · · Score: 5, Insightful

    ... schooled in the old temple and given a proper appreciation of a real language like C++?

    You're going to have to inform us "young'uns" of what is and isn't a "real language." You see, I can't even begin to help you until you concede that if a tool gets the job done, it's a good tool. It might not be the best tool but it's a good tool. Stop making inflammatory statements.

    What you misunderstand about this change of direction is that microarchitectures and new hybrids of old design patterns are arising to meet the needs of web developers.

    where does this attitude that everything has to be crowbar'd into a web interface to be considered modern these days?

    If you write a C++ program and compile it down to one architecture, how many users do you have? If you write a browser, OS, architecture neutral application and make it available to everyone online, your user base skyrockets dramatically.

    I cry for these languages.

    And these languages cry for you and your closed mindedness towards new ideas. Java was a bad idea at first and yet somehow it has found a niche--more than a niche if you ask me.

    I'll meet you half way, I agree C++ is far faster than anything I've been paid to code in. Now you come the other half of the way and maybe we'll have a discussion here where useful information is exchanged.

    --
    My work here is dung.
    1. Re:History of the Internet (not even close) by mweather · · Score: 1

      You see, I can't even begin to help you until you concede that if a tool gets the job done, it's a good tool.

      I can hammer a nail in with my fist. But I wouldn't call my fist a good tool for hammering nails. It works, but it's not pleasant.

    2. Re:History of the Internet (not even close) by MightyMartian · · Score: 1

      And these languages cry for you and your closed mindedness towards new ideas.

      Distributed computing is not a new idea. It's been around for at least thirty years. AJAX, Web 2.0 or whatever you want to call it, is simply an extremely bad execution of the concept. Trying to defend as "the hip new idea that old-timers just can't accept" is idiotic. It's not a hip new idea, it's just a crappy implementation on a platform that, even before it, was hardly a paramount of efficiency and ease.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    3. Re:History of the Internet (not even close) by eldavojohn · · Score: 1

      You see, I can't even begin to help you until you concede that if a tool gets the job done, it's a good tool.

      I can hammer a nail in with my fist. But I wouldn't call my fist a good tool for hammering nails. It works, but it's not pleasant.

      Come on, man, that's a bit extreme. It's not like any of us are suggesting we should use Microsoft Visual Basic here ...

      --
      My work here is dung.
    4. Re:History of the Internet (not even close) by Lazy+Jones · · Score: 2, Insightful

      I'll meet you half way, I agree C++ is far faster than anything I've been paid to code in. Now you come the other half of the way and maybe we'll have a discussion here where useful information is exchanged.

      It won't be long till some of you "young'uns" writes a C++ to bytecode compiler together with a corresponding browser plugin/VM... The problem isn't the language, it's the fact that a browser is a terrible *OS* for anything else than small, short-lived "applications" and I really hope it doesn't go half way to being a decent one.

      As for the "browsers are so architecture neutral", it's not true and you know it. Nowdays it's easier to compile and run good C++ code on a large number of platforms than it is to get even a tiny Flash or JS app (or even HTML/CSS) to behave identically on all major browsers on 3 platforms (just today I encountered this persistent bug, a major PITA). All you get is a rudimentary cross-platform UI that is terrible for serious work (you know, when every mouse click gives you network latency and hitting backspace on the wrong spot ruins your work).

      Give me a cross-platform language with stable UI and native code compilation and without the design issues of C/C++ (allowing me to write all over the stack/code/memory) over "Web 2.0" any day. ;-)

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    5. Re:History of the Internet (not even close) by Threni · · Score: 0, Flamebait

      I use vb.net. I recently took a look at the way you do java web development. It's a bit pre-.net isn't it? There seems to be an awful lot of fucking around to do the sort of stuff you do with drag and drop or a few lines of code in .net. Yeah yeah, drag and drop isn't real coding. I know. Real coding is what I can get on with doing having first created an app for someone in 30 mins using (largely) drag and drop.

    6. Re:History of the Internet (not even close) by digitalgiblet · · Score: 1

      Come on, man, that's a bit extreme. It's not like any of us are suggesting we should use Microsoft Visual Basic here ...

      And yet Visual Basic "gets the job done"...

      I've worked with lots of languages, and they almost all get the job done. What I find amusing is that virtually everyone has languages they feel defensive about "come on! open your mind!" and others they feel superior to "at least we aren't using X". You really can plug just about any set of languages or technologies into the equation and find someone who will argue the point.

    7. Re:History of the Internet (not even close) by sentientbrendan · · Score: 1

      >>... schooled in the old temple and given a proper
      >>appreciation of a real language like C++?

      >You're going to have to inform us "young'uns" of
      >what is and isn't a "real language." You see, I
      >can't even begin to help you until you concede
      >that if a tool gets the job done, it's a good
      >tool. It might not be the best tool but it's a
      >good tool. Stop making inflammatory statements.

      The original poster was not insulting ruby, or whatever language you use for server side processing. He was saying that the browser itself is not a real platform, which it isn't. The browser is a joke because its capabilities have more or less stagnated at what internet explorer 6 can provide.

      Browsers are a huge pain in the ass to develop real applications for and require all sorts of insane hacks to do things that are trivial if you just write your own C++/Java/Whatever applications to run on the server and client.

      Probably someday the browser will evolve into a great platform for writing clients, but that's maybe 10 years out.

      For the time being, there are still some ease of deployment reasons to code ajax applications, but in a lot of cases there are technologies like java applets, flash, and even C++ and python clients that can be written when more complicated interface and behavior are needed.

    8. Re:History of the Internet (not even close) by sentientbrendan · · Score: 1

      >>>You see, I can't even begin to help you until you concede that if a tool gets the job done, it's a good tool.

      >>I can hammer a nail in with my fist. But I wouldn't call my fist a good tool for hammering nails. It works, but it's not pleasant.

      >Come on, man, that's a bit extreme. It's not like any of us are suggesting we should use Microsoft Visual Basic here ...

      MS basic was actually very successful at what it was designed for, doing very quick GUI development on windows.

      The browser on the other hand is an enormous pain the ass for a lot of the tasks people use it for. Consider the word processor that google is trying unsuccessfully to write. If they put that together as a java applet, it would be trivial. However, since they went the ajax route, they have an application that is feature poor, and still manages to crash so often that it is unusable.

    9. Re:History of the Internet (not even close) by FishWithAHammer · · Score: 1

      These days, there's absolutely nothing wrong with modern editions of Visual Basic. It's essentially C# with different syntax.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    10. Re:History of the Internet (not even close) by thetoadwarrior · · Score: 1

      You don't need to build things within a "neutral" environment like a web browser. Numerous programs that have to be installed have taken off on the web. ICQ, MSN, Email, etc.

      If you make something compelling people will get it and while my line of work is web development I must say so much time is waste making sure you support worthless browsers or so people who don't have whatever plugin can see something.

      There is some sort of mentality that if you bad ass site rocks in IE5 that you're more manly than everyone else. All this mentality has done is give people no reason to upgrade their browsers and as a result hold back web development. Instead of written something new and innovative you have to spend time has to be spent on writing different code to perform the same thing in JavaScript, CSS hacks, etc.

      Yes there are a lot of frameworks that over come these issues but it's a shame that so much time has to be spent over coming problems that shouldn't exist rather than writing some new and inspirational.

    11. Re:History of the Internet (not even close) by Windows_NT · · Score: 1

      If you write a C++ program and compile it down to one architecture, how many users do you have?

      How many architecture CANT you compile C++ code? 90% of the market runs windows anyways .. Allt he same people that think JAVA is a good thing because its neutral? I dont know anyone that runs Google earth on a VAX ...
      You can get away with three binary distrobutions ... MAC, Windows, and Linux ... C++ with GTK works on all three .. problem solved.
      Ok, enough chat i need to get back to my VB code :(

      --
      Go go Gadget Nailgun!
    12. Re:History of the Internet (not even close) by gstoddart · · Score: 1

      I can hammer a nail in with my fist.

      I'd like to see that, because I'm betting you couldn't and still have a hand you could make any further use of.

      Cheers

      --
      Lost at C:>. Found at C.
    13. Re:History of the Internet (not even close) by peragrin · · Score: 2, Insightful

      So design a better version? yes ajax sucks, but it works with what is already existing out there allowing a simple pgrade of features for everyone.

      Silverlight, flash, .NET, even Java all require downloads and installs of some other piece of technology. ajax takes existing tech and does something similar. It isn't pretty but it has been effective.

      Windows should have shown you by now, that ugly but effective still makes millions.

      --
      i thought once I was found, but it was only a dream.
    14. Re:History of the Internet (not even close) by EvilRyry · · Score: 1

      Real coding is what I can get on with doing having first created an unmaintainable, poorly designed, basic app for someone in 30 mins using (largely) drag and drop.

      There, fixed that for you.

      In all seriousness, clicky pointy tools like VS are fine and dandy but they tend to be more limited in their functionality compared to hand coding. And yes, you can get these sorts of tools for various Java web frameworks as well (you never mentioned which one you looked at).

      Personally I prefer to have complete control over the HTML and CSS output when I'm doing anything that will have a life of more than a few months.

    15. Re:History of the Internet (not even close) by EvilRyry · · Score: 1

      That's VB.NET, sharing almost nothing but a syntax similarity with previous versions of VB.

    16. Re:History of the Internet (not even close) by girlintraining · · Score: 1, Interesting

      You see, I can't even begin to help you until you concede that if a tool gets the job done, it's a good tool.

      So you don't mind if I use a butter knife instead of a screwdriver? That's a relief. I haven't found a man yet who doesn't cringe at the prospect.

      What you misunderstand about this change of direction is that microarchitectures and new hybrids of old design patterns are arising to meet the needs of web developers.

      Perhaps in the same way that poor solutions arise to placate poor decisions. Some people have advocated mass-execution of cows to help halt global warming.

      If you write a C++ program and compile it down to one architecture, how many users do you have?

      About the same as the number of people who find that application useful.

      If you write a browser, OS, architecture neutral application and make it available to everyone online, your user base skyrockets dramatically.

      Okay, you can go play Kings of Chaos, while I go play World of Warcraft, since World of Warcraft has fewer players and I like the "small town" feel of it.

      --
      #fuckbeta #iamslashdot #dicemustdie
    17. Re:History of the Internet (not even close) by betterunixthanunix · · Score: 1

      First of all, when did web browser stop requiring downloads and installations? Just because it is built into some -- SOME -- operating systems, does not mean that it is ubiquitous or that it is a good idea to develop software for it. Fedora 9 and 10 demonstrate that it is equally easy for an OS vendor to ship Flash and Java support with their OS, and Windows demonstrates that .NET support can also be built in. There is no reason to think that silverlight is any different. All of these are better platforms for developing distributed applications, far less clunky, heavy, and with lower latency than anything AJAX could ever produce.

      Just because something is popular does not mean it is good. There is a reason that you do not see Windows being used in the most critical environments (satellite control, aircraft control, RADAR system control, etc.) -- there is no room for popular-but-cheap when the cost of failure is measured in hundreds of millions of dollars or in human life, or both. Likewise, AJAX is generally not used in applications where information updates need to propagate very quickly, because the latency is too high and the reliability is too low, and other platforms with all of AJAX's advantages are used instead.

      --
      Palm trees and 8
    18. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      Architecture independence is vastly overrated. The only desktop architecture worth targeting is x86. So my app doesn't run a sparc or powerpc. Maybe a dozen people care...

      I understand the ideal of architecture independence, but honestly it's a wasted effort that ignores reality: x86 is the dominant ISA, and has been for at least 20 years. It's not going anywhere.

      There are times where it makes sense to write for multiple architectures: cell phones, for example. There are times when it makes sense to write for non-x86: supercomputers & high performance clusters. These are obvious.

      But my office suite doesn't need to be written in java for platform independence. It will never run on a non-x86 architecture for the foreseeable future.

      Stop trying to be all things to all people and just try to get it done right on one architecture. Stop using architecture independence as an excuse for bloated virtual machines, interpreters, browsers, and markup languages - the software bureaucracy that makes certain people feel productive solving problems that shouldn't exist in the first place.

      Maybe then my dual core computer will seem as fast as my 486 used to.

    19. Re:History of the Internet (not even close) by MightyMartian · · Score: 1

      It's not a matter of designing a better version. The platform is simply not up to the task. AJAX is like trying to shove a giraffe into a closet; yes, with sufficient application of force, you can do it, but the end result is going to be ugly.

      AJAX isn't a solution to a problem, it's an ugly hack to make what is really simply a non-transactional hypertext navigation system pretend like it's a full-blown UI. I can't imagine any serious developer ten years ago looking at HTML/CSS/DHTML with AJAX as a client-server glue and saying "Yeah, that's the GUI platform I want to develop for", but that's exactly what we're being told. Look at developing a similar application in .Net or Java, and then look at the horror story of Javascript front-ending. It's terrible, it's awful, and you're still forced to either use a framework (yet another layer on top of the slow and unreliable javascript client layer) or do the heavy-lifting yourself. And what do you get out of it? A clunky semi-distributed app that's held prisoner by all the worst aspects of a network.

      AJAX is a goddamned ugly, inefficient solution, but is kept afloat for the same reason that SMTP still lives, because no one is brave enough to hit the books, look at what's been done and do it in a rational fashion.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    20. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      > If you write a C++ program and compile it down to one architecture, how many users do you have?
      > If you write a browser, OS, architecture neutral application and make it available
      > to everyone online, your user base
      > skyrockets dramatically.
      Actually, you have a better chance if you compile.

      Javascript works only on a subset of browsers, and even in that case one has to put in a lot of if's to make it work.

      The real advantage is the lack of installation; I can run my application from a web-caffe as easily as I can from my home computer.
      If we could solve that for languages like C++, there would be very little need for browsers and Javascript.

      My 2c,
          Igor
       

    21. Re:History of the Internet (not even close) by MikeBabcock · · Score: 1

      I'm pretty sure I haven't seen an x86 cell phone or PDA yet, and I know a huge number of people who use those to run applications.

      Or maybe you're just short-sighted.

      --
      - Michael T. Babcock (Yes, I blog)
    22. Re:History of the Internet (not even close) by EllisDees · · Score: 1

      >As for the "browsers are so architecture neutral", it's not true and you know it. Nowdays it's easier to compile and run good C++ code on a large number of platforms than it is to get even a tiny Flash or JS app (or even HTML/CSS) to behave identically on all major browsers on 3 platforms

      With all due respect, you are insane. The whole reason the web has become, and will continue to be, the platform of choice for pretty much everything besides maybe 3d shooters is that I can sit down at basically any computer anywhere in the world, open up a browser, and have basically the same experience with any application I open. The browser can download anything it needs, and I never have to worry about what version of what dll any particular application needs, and I almost never have to install anything. I run linux at home 24/7 and I can't remember the last web page I found that didn't work the same as when I accessed it from Windows. The same cannot be said for many, many Windows applications.

      Like it or not, the web isn't going anywhere.

      --
      -- Give me ambiguity or give me something else!
    23. Re:History of the Internet (not even close) by Hognoxious · · Score: 1

      He didn't say what he was hammering it into. And to be honest, I'd rather not know... ewuwww!

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    24. Re:History of the Internet (not even close) by ultranova · · Score: 1

      I can hammer a nail in with my fist. But I wouldn't call my fist a good tool for hammering nails. It works, but it's not pleasant.

      Some people complain that they have to hammer nails with their fists. Others grab the board, turn it upside down, and pound it against the pavement until the nail's in.

      Just because you can't use your favourite tool in a given task doesn't mean that you have to do it the most painful way possible. Unless, of course, your favourite tool is C++, in which case you presumably like pain ;).

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    25. Re:History of the Internet (not even close) by jbolden · · Score: 1

      Try using Safari vs. firefox. I still regularly have mainstream sites that perform differently between them.

    26. Re:History of the Internet (not even close) by gbjbaanb · · Score: 1

      I'll meet you half way, I agree C++ is far faster than anything I've been paid to code in. Now you come the other half of the way and maybe we'll have a discussion here where useful information is exchanged.

      and this is the point where great things get done. I've always coded my best scalable, maintainable, and generally expandable and flexible apps when I de-couple the GUI from the Application (and often the Data layers too)(without being an architecture nazi about stored procedures and client-side validation).

      So I really think the best way to do applications is to write them like this, whether its a web front end to a VB GUI front end to the same back-end code. The back end is written in C++ for the speed and the power, the front end in whatever looks nice and/or is a good language for manipulating the data that is managed by the back-end code. Once we did write GUIs in VB, now customers want the same applications but with a web GUI. God knows what they'll want next - mobile front ends probably.

      You don't have to think that C++ is the ultimate tool, but it turns out repeatedly that it is the right tool for those back-end applications.

    27. Re:History of the Internet (not even close) by jbolden · · Score: 1

      Have you seen Apple's market share recently? That argument made sense a few years back. It is getting harder and harder to support with time.

    28. Re:History of the Internet (not even close) by Lazy+Jones · · Score: 2, Funny

      is that I can sit down at basically any computer anywhere in the world, open up a browser, and have basically the same experience with any application I open.

      That is not even true with basic HTML/CSS nowdays. Let alone "applications". Not even identical keyboard shortcuts are possible across browsers.

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    29. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      So you don't mind if I use a butter knife instead of a screwdriver? That's a relief. I haven't found a man yet who doesn't cringe at the prospect.

      I don't care if you use a butter knife. I've used knives, spoons, keys, and nail files, mostly because I can never find a damn screwdriver when I need one.

      Sorry ladies... catch that I am, I'm already married.

    30. Re:History of the Internet (not even close) by ozphx · · Score: 1

      The real advantage is the lack of installation; I can run my application from a web-caffe as easily as I can from my home computer.

      .Net clickonce works well if your devs aren't complete asshats and can make verifiable code with appropriate security demands.

      Hell you can even use C++/CLI if you really want to show off your engorged testes vs the VB.Net devs :D

      --
      3laws: No freebies, no backsies, GTFO.
    31. Re:History of the Internet (not even close) by alex4u2nv · · Score: 1

      Also: C++ may be faster, but today hardware is cheap, developers are expensive, and management wants the product yesterday.

    32. Re:History of the Internet (not even close) by colinrichardday · · Score: 1

      How well does Internet Explorer deal with MathML and SVG?

    33. Re:History of the Internet (not even close) by jonaskoelker · · Score: 1

      if a tool gets the job done, it's a good tool

      No. Making nightly copies in date-tagged directories with symlinks for named versions is an adequate version control system. Tools like (cvs|svn|git|hg|bzr|mtn|darcs) are good version control systems.

      If you write a C++ program and compile it down to one architecture, how many users do you have?

      Almost all of them. All the world's an x86. Or it's an ARM. Oh noes I can't play World of Warcraft on my shiny new router :(

      If you want to develop for the ARM, run stuff in an emulator and take the speed hit. Buy the hardware. Run nightly builds to check for architecture compatibility. Run daily unit tests to check for something resembling real portability. [from a cron job, of course].

      If you write a browser, OS, architecture neutral application and make it available to everyone online, your user base skyrockets dramatically.

      Got an example of those? Got an example that works in links? Got an example that works in links that can't be considered "ported"?

      Writing architecture-independent code is fairly easy: don't stuff pointers into your ints and vice versa, let your compiler translate times-two-to-the-n into 1-shift-n for you, and don't assume pointers are always even. The whole API (libc or std::*) is portable.

      Most (and I emphasis that I don't claim all) "real" problems have a natural solution that's architecture independent. OS independence is not quite as trivial; SDL gives you a portable API for sockets and threads. I recall using gaim on windows--it looked fine. I can't speak about using GTK on OS X, but for Windows+Linux you have a portable GUI library. It's not hard to write your own mini-library to handle different kinds of path name rules, and a thin layer around that which gives you the path to your config file(s). Put the rest of the paths in there. And libc can automatically handle newlines for you.

      Writing portable C++ is not too hard if you know what to look out for.

      Writing cross-browser portable code is hard, because the "compilers" (browsers) each accept slightly (or, in some cases, vastly) different languages. The libraries are inconsistently and partially implemented. None of the browsers have "-ansi -pedantic -Wall -Wextra -Werror".

      Most of the portability issues of C++ can be tested in an easy-to-automate way. I don't know how to implement #'looks-rightp, so I can't very well test that.

      You can probably set up and test server that accepts XmlHttpRequests and do some client-server inversion; have the client do a "/begin_test" request, have the server query the client in its response and have the client respond in its next query. Meh, that's ugly.

      Besides: I see shitty-looking (or even worse: shitty-acting) web applications much more often than I see shitty-looking or -acting Linux applications. Look at the Debian project; while portability numbers weren't perfect last I checked, they got an ungodly large number of packages for a large number of architectures. KDE wants to port its applications to Windows.

      In the real world, C++ portability is not a problem. In the real world, web app portability is harder, and as you can predict from that not done as well on average.

    34. Re:History of the Internet (not even close) by peragrin · · Score: 1

      your 70% right. no one is willing to give away to everyone the new rational version. Java while free, is a huge download. .NET only works on windows as MSFT has both patents and copyrights on it, preventing full compatibility whenever they want to release their lawyers.

      --
      i thought once I was found, but it was only a dream.
    35. Re:History of the Internet (not even close) by FishWithAHammer · · Score: 1

      I agree. (Although I would also put forth that VB6 is not all that bad a language, though there are of course far superior tools for most cases.)

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    36. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      Checkout http://www.webtoolkit.eu/wt#/

      It works amazingly well.

    37. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      your 70% right. no one is willing to give away to everyone the new rational version

      No, he's 100% dead on and you're a child. AJAX blows goats. Deal with it.

    38. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      The browser isn't a joke. It's giving a lot of the world more application then they would ever have had before.

      The problem with AJAX isn't elegance, the problem is ADOPTION. People will write their async dynamic apps using whatever is widely deployed.

      Whine all you want, the browser as defined by the end of the Netscape/IE browser wars became the world's most widely available stateless application platform. You want something to run, you have the DOM + JS + HTTP abstraction to play with.

      If you want something better, get in line buddy. You step up with something that gets massive adoption and without client version/state/security management (ActiveX uck) and maybe someone non-academic will give a crap about what you think is 'real'.

    39. Re:History of the Internet (not even close) by ukyoCE · · Score: 1

      I'm not sure I'm following here. Are you trying to suggest C++ would be a better tool for web development than, say, PHP?

      Or are you saying that a C++ client-server GUI app would be a better tool for implementing your typical web application than (for instance) PHP+Apache+MySQL feeding HTML to web browsers?

    40. Re:History of the Internet (not even close) by Anonymous Coward · · Score: 0

      As for the "browsers are so architecture neutral", it's not true and you know it. Nowdays it's easier to compile and run good C++ code on a large number of platforms than it is to get even a tiny Flash or JS app (or even HTML/CSS) to behave identically on all major browsers on 3 platforms

      That's quite an exaggeration. It's certainly legitimate to compare development time on a C++ app using cross-platform libraries with developing a web app and getting the javascript+CSS to function across all the major browsers.

      But never in my time developing have I found getting a website to work across all the major browsers all that difficult. In addition, your cross-platform C++ development eats up additional development resources, whereas most of your CSS nitpicking between browsers can be solved by a (much cheaper) web designer. Add in Javascript toolkits that take care of all the cross platform issues for you, and this is quite a minor hurdle.

    41. Re:History of the Internet (not even close) by mweather · · Score: 1

      I'm not sure I'm following here. Are you trying to suggest C++ would be a better tool for web development than, say, PHP?

      Only if you think faster is better. http://www.webtoolkit.eu/wt

    42. Re:History of the Internet (not even close) by SomeStupidNickName12 · · Score: 1

      Are you mad? That is a shocking way develop web apps, especially with new widget sets like richfaces that have ajax and everything else built in. There is no way it's going to compete with a high performance j2ee application server. Yeah it will probably manage hello world fairly well but as soon as you start throwing complex real world scenario at it, it's not going to scale. It's a cool project though.

    43. Re:History of the Internet (not even close) by Rysc · · Score: 1

      Not well. This is beside the point! Those things largely don't get used. Web developers stick with what works everywhere, or serve different things to different browsers.

      --
      I want my Cowboyneal
    44. Re:History of the Internet (not even close) by Rysc · · Score: 1

      Ever tried getting a user to install something? Web pages are /effortless/ for the end user. They're painful on the order of pulling teeth for the developer, but they're so /easy/ to use for the end user that nothing else matters.

      Do you think gmail would be popular if it required you to download a client to use it? Do you think it would be as popular if it 'allowed' you to use any standard MUA, but required you to pick one? The user who wants to use it in such a scenario has to /configure his application/, which he hasn't the first clue how to do, which he isn't inclined to spend the time to do. Further, he has to do this on every computer he visits!

      Now, you could describe a /hypothetical/ world in which the user's MUA and settings migrate with him to wherever he goes, or a world in which google provides a one-click link which auto-configures whatever local MUA the user has. The problem with such answers is that those things /don't exist/ and are really /difficult/ to create and keep going. The web-based gmail might have been a nightmare to write initially and it might have a crappy UI and it might be orders of magnitude slower than a local desktop equivalent, but these things just do not matter. Web developer time and effort is meaningless against the effort saved for users.

      I could give countless examples like this. Maybe you're down on javascript, or php, or other 'web' languages. That's fine, I'm not much of a PHP fan myself. Maybe you think that there's a better way to write network-centric apps. You're probably right! The /reality/ that we live under today, however, does not give us any adequate alternatives: Web-based apps are too valuable to /not/ use, the more apps that are made available this way the more valuable it becomes and, in case you didn't notice, /the tools are improving/. Ten years ago web 'apps' were a joke, today they're just a pain.

      The browser makes a terrible platform: it's not designed to be one, though the design is evolving, plus incompatibilities between implementations (and even versions) make doing complex things really hard, it's a dumb canvas with dumber knobs and switches you can sometimes get to do the right thing if the stars align just right. As a UI it's awful; everything is async, none of it can be trusted, clients might not behave the way you expect and you usually can't tell when that happens... I'm not saying there aren't bad things that could be better! I'm just saying that a web based app will be "better" than a C++ app in many, many cases, even though the C++ app is much nicer to code. The web, as a delivery mechanism and operating paradigm, along with the web browser as the engine for interaction, is the immediate future. If you think this sucks, get busy replacing it now! In a couple of years it may be too late to replace it soon.

      Alternative interfaces via plugins are no answer, either, before you say "Just write it in java," or some such nonsense. If that were going to be the way we do things we would have it by now. I don't know for sure why it didn't take off, but I think it's some combination of the need to meet the lowest common denominator and the bugginess involved in running a buggy browser + a buggy plugin + a buggy applet, vs. just a buggy browser. These days add in buggy JS which, even when it fails, usually does not crash the browser (unless you're running IE6).

      tl;dr the web sucks but it's here, now and it's evolving to suck less

      --
      I want my Cowboyneal
    45. Re:History of the Internet (not even close) by Lazy+Jones · · Score: 1

      ... effortless installation ...

      Package management wasn't invented yesterday, RPMs/DEBs are as effortless as ever to install and so are the countless common ways of installing stuff on Windows. Why do you think so many people use Firefox already despite it being so terribly hard to install, code for (cross-plattform) and even though MSIE is already preinstalled on all Windows systems? It's not too hard, look at all the spyware crap people can install all by themselves on Windows.

      gmail...

      Gmail is a fine Web application, yes. But it's not an example that can be generalized. Why isn't Winamp a web application? How about Irfanview or other image viewers? Heck, even Google Picasa is an .exe ... Gmail only exists because it's hosted where you *want your data to be kept*. It's a straightforward, unsafe way of managing your email that gets away with it because people don't really care. Ideally, we'd want to have our data in a safe place, accessible from anywhere with a proper UI (why did Google add IMAP to gmail?).

      The web, as a delivery mechanism and operating paradigm, along with the web browser as the engine for interaction, is the immediate future. If you think this sucks, get busy replacing it now! In a couple of years it may be too late to replace it soon.

      The web delivers compiled C applications just fine. It also handles configuration just fine (like e.g. your MUA - nothing is keeping your ISP from offering you a self-installing and -configuring MUA package that takes less effort to setup than Gmail [you don't have to enter another email address]).

      tl;dr the web sucks but it's here, now and it's evolving to suck less

      tl;dr answer: people gave up on writing portable apps because big players made sure the UIs weren't portable, now they are working on the next effort that big players will sabotage. Might as well go back to the older, more efficient path and build a portable C/C++/Pascal/other high performance language framework (like Lazarus if you can find people who still know Pascal) and use the web to deliver and configure apps.

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    46. Re:History of the Internet (not even close) by Rysc · · Score: 1

      Package management wasn't invented yesterday, RPMs/DEBs are as effortless as ever to install and so are the countless common ways of installing stuff on Windows. Why do you think so many people use Firefox already despite it being so terribly hard to install, code for (cross-plattform) and even though MSIE is already preinstalled on all Windows systems? It's not too hard, look at all the spyware crap people can install all by themselves on Windows.

      You miss the point. "Installing" gmail is *always* easier even than using a package manager. I am not dealing in theory, here, I'm talking real world usage. Things can get installed without the user's notice, but the ease of setup for a download-and-install application, even when using a package manager, is greater than that of the ease of setup of a web-based application, to say *nothing* of the time required. The fact that people *can* do install apps and that some things are preinstalled is *irrelevant*. The fact that some software installs itself automatically is irrelevant! Not all software will, so you're back to square one: Dumb, time-constrained users who don't know how to do anything, don't want to spend any time and refuse to learn or remember anything. Web based apps are very nice for those people.

      Gmail is a fine Web application, yes. But it's not an example that can be generalized.

      It *is* generalizable! That's the entire point: The only reasons *so far* that more apps aren't web-based are: (1) developing web apps is really hard on the developer, and (2) performance sucks ass. These problems are slowly being solved and as it is the web app becomes practical for more things.

      Why isn't Winamp a web application?

      Do you know how many people don't use Winamp but instead connect to sites with an embedded flash web radio stream? You may scoff, but I've seen it many times. This may not be ideal for everyone but it *does* happen *even though it sucks*. Imagine if one day it didn't suck? It will only get worse.

      How about Irfanview or other image viewers? Heck, even Google Picasa is an .exe ... Gmail only exists because it's hosted where you *want your data to be kept*

      Local apps for viewing local files makes sense, yes, plus there's that (2) performance thing. I never said web apps were perfect for everything! I'm just trying to answer the question "Why would you ever do a web app instead of writing it in C++?" Web apps are good for the reasons I described before, and will become good enough for more things over time. I doubt they'll ever become the best choice for all things.

      It's a straightforward, unsafe way of managing your email that gets away with it because people don't really care. Ideally, we'd want to have our data in a safe place, accessible from anywhere with a proper UI (why did Google add IMAP to gmail?).

      I have my mail data in a safe place accessible from anywhere with a proper UI: I use gmail! If you are biased against the "bad" UI of a web based app, as you say gmail can be accessed via a standard client. As to safety... everyone will NOT be able to house his own data at his own house, not even in the miraculous future. Too many practical considerations prevent this. What we'll do is buy access to a service which provides it to us from anywhere, keeps it redundant, makes backups, etc.. GMail effectively does this, the only problems being privacy issues, storage format issues and a few things like that. I choose to trust google as one day we will each choose to trust some company to keep our data. I'd prefer it if it were all public key encrypted and accessible only to me, but for now (for email) I choose to not care.

      The web, as a delivery mechanism and operating paradigm, along with the web browser as the engine for interaction, is the immediate future. If you think this sucks

      --
      I want my Cowboyneal
    47. Re:History of the Internet (not even close) by Lazy+Jones · · Score: 1

      Go ahead, suggest Java. I dare you. (...) There are a few zillion issues to work out, but I'd endorse this approach. The problem is that this hasn't happened and, if history has taught me anything, it wont happen

      OK, I'll do it and suggest Java as a good proof of concept. Right now, you can load and run a signed wrapper applet that loads a native .dll or .so (depending on what system you're on). You can provide a user with a web page that contains icons with native applications (using Applets) configured for his system (web-based configuration). Sure, you will need to provide DLLs, various Linux .so's and libs for OSX (depending on what you want to support), but you have the freedom and performance of C/C++/whatever and the comfortable way of delivering/accessing/configuring/updating your applications over the web with a choice of keeping data on an external server or locally. Something like this has been done before: SANE, JNI and Java all in an applet. The Windows-centric alternative is already very popular (and notorious): ActiveX is being used for web-hosted native applications like virus scanners (and viruses).

      Now all we need is to replace the JRE with a simple cross-platform browser plugin that provides rudimentary functions to download and execute native code, but in the mean time, going through JRE/JNI is feasible (with a web-hosted .exe being a crappy alternative for various reasons). People just need to wake up and stop building stuff that runs at a felt 1/100th native speed. I have my hopes that the current popularity of Netbooks will get some developers to take a closer look at application performance again - because Firefox is extremely slow on an Atom CPU and it destroys the "netbook with web apps" concept.

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    48. Re:History of the Internet (not even close) by Rysc · · Score: 1

      All I can say is "security nightmare." ActiveX had the same problem.

      And again, why has this not taken off? You say it could be done, but... it has been years and I don't see adoption. Why not? When you can answer that you will either believe me or will be able to convince me of the merits of doing things the way you describe.

      Netbooks will only accelerate the trend toward web based apps. Smaller disks, slow CPUs... people will optimize the browser, they wont add on additional local components which it will be difficult to guarantee everyone has.

      Question: Why isn't flash the network-centric app platform of choice?

      --
      I want my Cowboyneal
    49. Re:History of the Internet (not even close) by Lazy+Jones · · Score: 1

      All I can say is "security nightmare." ActiveX had the same problem.

      Not worse than having JS apps interact with your local environment...

      it has been years and I don't see adoption. Why not? When you can answer that you will either believe me or will be able to convince me of the merits of doing things the way you describe.

      Because it's an unusual way to distribute an application, because it's faster to develop a pure web app., because companies are looking at the "rent" model instead of giving users some way to keep their data (and apps) on their local disks ...

      Question: Why isn't flash the network-centric app platform of choice?

      Because Flash is full of bugs, proprietary, limited and not even suported on the iPhone ...

      --
      "I love my job, but I hate talking to people like you" (Freddie Mercury)
    50. Re:History of the Internet (not even close) by Rysc · · Score: 1

      It's because web apps are (1) good enough and getting better, (2) available and compatible *now*. Once upon a time every platform had a basic (HTML3) web browser. Suddenly you could access functionality of an app without needing to install it, without local privileges, without worrying about what it was written in, on every platform with a basic web browser. Improvements on top of that have been slow and incremental. Attempting to deliver a replacement at this point is difficult and would likely need to follow a similar model. The need for replacement would need to be great and compelling. To do it for no other reason than providing apps written in 'better' languages like C++ or having 'better' UIs is not sufficient! There would have to be some serious benefits. Even so, adoption would be slow at best.

      And I don't think iphone support makes any difference as to why flash as a platform has not taken off. The iphone is too recent to have mattered.

      --
      I want my Cowboyneal
  13. Does it really blur the idea of MVC? by PCM2 · · Score: 1

    Do the new technologies really do this? Or does it just make it more difficult to see the "obvious" MVC patterns?

    In the Old Days, you could see pretty easily what an MVC Web app might look like: There was a piece of code that generated static HTML pages that displayed data, and this was the View. There was another piece that caught input from the browser and used it to do things, and that was the Controller. And then, perhaps, the Model was represented by the database.

    But did any application really ever have it that easy?

    The thing that makes MVC a more advanced skill than what you might learn in undergrad computer programming classes is that it requires more than a good understanding of a programming languages and related tools. It requires you to think things through, plan ahead, and make choices.

    YES, it is probably possible to implement "even some of the Model," as the article, says, in JavaScript in the browser. Is that a smart idea?

    It's a pretty common to see apps that use the database like it's a big storage closet, ignore stored procedures completely, and implement all data manipulation functions in Java. Is that a smart idea?

    On the other hand, is MVC the right model for every application?

    I think a lot of textbook programming paradigms, including MVC, are ultimately pie-in-the-sky, and somewhere along the line a real-world application is always going to end up making some kind of unfortunate compromise. That doesn't mean you shouldn't be aiming for the sky anyway. If you're actually trying to write well-disciplined, maintainable code, that's always a Good Thing.

    The real problem with the Web development environment is that it makes it very easy for developers to choose not to do that and just knock out solutions to problems quickly, instead, without really thinking things through. That's not MVC's fault, nor should one blame one's tools.

    God help me, I think the real answer might be ... effective management. Christ, did I really just say that?

    --
    Breakfast served all day!
    1. Re:Does it really blur the idea of MVC? by mini+me · · Score: 1

      It's a pretty common to see apps that use the database like it's a big storage closet, ignore stored procedures completely, and implement all data manipulation functions in Java. Is that a smart idea?

      Yes. Especially now that we are starting to move away from the traditional RDBMS.

    2. Re:Does it really blur the idea of MVC? by Anonymous Coward · · Score: 0

      In the Old Days, you could see pretty easily what an MVC Web app might look like: There was a piece of code that generated static HTML pages that displayed data, and this was the View.

      The View? How does Web programming relate to a shitty daytime TV show where women without jobs (this IS daytime TV after all) watch a bunch of postmenopausal turkeynecks and fat lesbians who run their mouths incessantly about the most trivial and inconsequential subjects imaginable? You lost me there.

    3. Re:Does it really blur the idea of MVC? by SanityInAnarchy · · Score: 1

      There was a piece of code that generated static HTML pages that displayed data, and this was the View. There was another piece that caught input from the browser and used it to do things, and that was the Controller. And then, perhaps, the Model was represented by the database.

      That's still not as clear as one might like.

      In particular: Where do URLs fit into that pattern? Rails Routes are neither models, views, nor controllers, from the framework's point of view. Other frameworks draw the lines differently -- Ramaze puts routes inside the controller.

      I've always thought that MVC was a bit too sloppy. I get what the Model is supposed to be, but the controllers and views are always blurring. For example: If I have a bit of repeated code -- find the username, say, or sanitize this chunk of HTML -- where does that go? Technically, it's part of the view, but you don't want to put too much logic in the view. But it certainly doesn't belong to the model -- the model knows about users, but has no idea which is the "current" user.

      As to this particular problem, I've seen two good solutions. One is to throw away MVC for the client side, and use progressive enhancement and AJAH -- that is, HTML instead of XML for the communication. Thus, the client stays lightweight -- it doesn't even have to think about generating HTML, it just pastes HTTP responses from the server right into the document.

      The other is to treat it like a separate application. Thus, the server may well have a full MVC pattern (it has to serve something at some point anyway), but any sufficiently complex client code is also a full MVC pattern. Design it the way you would if it was a "fat" client -- you still use a model, it just happens to be a model which mostly makes calls to the server. But your views and controllers don't have to know or care.

      --
      Don't thank God, thank a doctor!
    4. Re:Does it really blur the idea of MVC? by tyrione · · Score: 1

      WebObjects used Enterprise Object Frameworks to abstract what stored procedures do some of now [people wanted to squeeze every aspect of speed out inside the RDBMS and argued that value of object design wasn't as important] and it seems stuff is beginning to come full circle.

      Too bad Apple hasn't brought WebObjects back to Cocoa and ObjC where it truly was a leader.

    5. Re:Does it really blur the idea of MVC? by Coriolis · · Score: 1

      Yes. Especially now that we are starting to move away from the traditional RDBMS.

      Since when? I see this sentiment repeated a lot, but I don't see much evidence for it. The majority of applications are still written against an RDBMS.

      Sure, Google and other high-profile Internet companies use some special-purpose databases, and their size and the frequency that they're talked about tends to distort people's perception to the point that they forget that they're talking about one company working in one specific field.

      The reason that the RDBMS is still king is that the relational model is a general, mathematically founded abstract model of data that can represent any structure and which allows us to make deductions about the data based on predicate logic. Pretty much all of the pretenders to the crown (including object databases) sacrifice one or all of those elements for convenience.

      --
      Rgasuya aata! : I have been coding Perl and cannot tell where my fingers are now!
    6. Re:Does it really blur the idea of MVC? by prockcore · · Score: 1

      Well, the map-reduce style database is still in its infancy.

      Google and Amazon both use MapReduce databases for the majority of what they do.

      But for me, I basically would have a choice of CouchDB (which is still very beta) or Hadoop (has some crazy cluster requirements). I imagine in a few years, my choices will be wider.

    7. Re:Does it really blur the idea of MVC? by bigtangringo · · Score: 1

      It's a pretty common to see apps that use the database like it's a big storage closet, ignore stored procedures completely, and implement all data manipulation functions in Java. Is that a smart idea?

      Depends on how your database is used, if you ask me. If you have a lot of applications that really need to use the database, then SPs can be a boon. If they just need the occasional object, using web services can be better and SPs could just be an extra step.

      If the company you work for has database programmers, whose job is writing efficient queries, then it might be better to use SPs. If you're a small company, that's not necessarily likely.

      I've worked at both, and really have no preference. Different solutions for different scenarios.

      Then again, lately I'm a Java guy who codes to JPA.

      --
      Yes, I am a smart ass; it's better than the alternative.
  14. Mod parent Insightful by kbrasee · · Score: 1

    This is very true -- it's so easy to get into the mindset of "well I write webapps, so everything I make has to be a webapp".

    Actually, this just happened to me. I was trying to find a way to write a utility that reads and writes in a big directory structure which users can access, but which the app server is not able to see. So I figured I would have to force users to zip up the whole directory and upload it, until my team lead said, "Why don't you just make this a client-side app instead?" Before that it had never even crossed my mind, but it made so much more sense to do it that way.

    It's much better to think about requirements with an open mind about the platform than it is to lock yourself in, either consciously or subconsciously.

  15. haXe by Anonymous Coward · · Score: 0

    And don't forget about haXe as well, which has been designed to be able to output JS, but also PHP, SWF, Neko, and more recently C++

  16. Re:Haha, Python programmers by lkcl · · Score: 0, Flamebait

    that's why i mention RubyJS and GWT as well. all three - RubyJS, Pyjamas and GWT - are javascript compilers.

    there are plenty more: see part-way-down the responses to http://advogato.org/article/985.html for a list which one of the advogatians posted.

  17. Er, so what? by Anonymous Coward · · Score: 1, Insightful

    Model does not mesh with reality, please adjust reality to conform? Having been developing software since long before words like "methodology" and "design pattern" were introduced I'm somewhat skeptical when they're uttered. The Romans were adept at deploying the design pattern for a stone-built semi-circular arch but that doesn't mean that whenever you need to get water across a valley you should rebuild the Pont du Gard.

  18. MOD THIS IDIOT DOWN by Anonymous Coward · · Score: 0

    -1, Predictable Lameass "Joke" Meme

    Really jlowery, you're just like a karma whore except that the +1 Funny you're going after does not even boost your karma. So basically you're just an attention whore.

    1. Re:MOD THIS IDIOT DOWN by Anonymous Coward · · Score: 0

      And leave it to idiots like you to give him attention by calling him an attention whore. At least he takes the hit on his karma like a man, unlike us cowards.

    2. Re:MOD THIS IDIOT DOWN by jlowery · · Score: 0, Offtopic

      Oh settle down...

      Slashdot wouldn't be Slashdot without the drive-by puns.

      My karma is excellent, btw. Is there some super-excellent karma I should be going for?

      --
      If you post it, they will read.
    3. Re:MOD THIS IDIOT DOWN by acidrainx · · Score: 1

      No kidding. This guy is obviously having a shitty day and decided to take it out on your lame (but funny) joke. If I had mod points I'd mod you up.

    4. Re:MOD THIS IDIOT DOWN by Anonymous Coward · · Score: 0

      No kidding. This guy is obviously having a shitty day and decided to take it out on your lame (but funny) joke. If I had mod points I'd mod you up.

      I'm glad your motives for moderation are pure. It's people like you who should not have mod points. They're labels for comments, not great equalizers of justice you moron. He made a very lame joke that wasn't even remotely funny and he got called on it. There is nothing wrong with this. Oh yeah, and you don't have to have a shitty day to see a steaming pile of shit like jlowery's joke and call it a steaming pile of shit ("someone said something I wouldn't say, therefore something must be wrong with him!" you fucking arrogant prick). All you need for that is an unwillingness to lie to yourself.

    5. Re:MOD THIS IDIOT DOWN by acidrainx · · Score: 1

      It couldn't possibly be that you're the same anonymous coward that's calling for him to be modded down, is it? Your foul mouth is astonishing.

  19. Its a mess because.... by Anonymous Coward · · Score: 0

    Its a mess because it was never planned. The browser has evolved as a application as more content producers want to use it in ways not originally planned. The browser (and by extension, the web) is the best case study of feature creep and bloat anyone can ask for. It was never made to do what it does, hell, I dont think anyone was ever sure what the hell the purpose of the web and the browser ever was, besides a end-all be-all type of application, and probably the only such application that ever succeeded (yes, even EMACS is not good (or bad) enough to compete in this regard).

    1. Re:Its a mess because.... by thetoadwarrior · · Score: 1

      This is true and as I recall the creator of HTML had said, in the past, there wasn't really any intention of people having to delve into the code and presumably he envisioned web page creation like using Word.

      Secondly the web has been built up by a lot of people that learned to program through other means. Which is fine for the most part but I think peoples lack of care over things like MVC, nicely written code, etc has really ruined the web. I think the early browser wars didn't help this. After all why should someone code with standards when the big guys don't even do thing to one standard?

      I'm not a huge fan of Javascript and to be honest it would be nice to see it go away. There has to be a better way to do things. In fact I think everyone should be forced to sit down and agree on one standard for HTML, CSS, and every other fauly web language (ie PHP and it's very sloppy and poor naming conventions) and we start from scratch.

      Browsers are free these days so starting from scratch won't be a huge loss to anyone and by using one standard companies should have the decency to share code to help spread the cost around and I think companies will be surprised how fast people are willing to upgrade their lame old browser when they have to.

    2. Re:Its a mess because.... by diskofish · · Score: 2, Insightful

      Which is fine for the most part but I think peoples lack of care over things like MVC, nicely written code, etc has really ruined the web.

      I disagree. I've been using the web since the Mosaic days, and I must say - it's better than ever! You can find what you're looking for more quickly, the content is richer and there is more of it.

      A particular design pattern is NOT a silver bullet. I've used M$ Ajax/.NET to develop some websites and applications, and I was very pleased. Sure, it could use improvement, but what cant? Using it was way better than try to do some of the things manually. If the application works well and the code is maintainable, you have succeeded. As long as you plan out your application properly before you start writing it, things will go smoothly down the road.

      I've worked on a project with C code that dates back to the 80's. It's not OO and doesn't knowingly follow any strict design patterns, but guess what? It's easy to follow, well documented, and above all, it does it's job!

      I will say it again: If the application works well and the code is maintainable, you have succeeded.

    3. Re:Its a mess because.... by K.+S.+Kyosuke · · Score: 1

      "...and presumably he envisioned web page creation like using Word."

      He did not envision it - he implemented the thing, back in 1990. It was called WorldWideWeb, before they renamed it for an obvious reason.

      --
      Ezekiel 23:20
  20. Not really an MVC problem by shutdown+-p+now · · Score: 5, Insightful

    After quickly skimming the article, it seems that the "problem" isn't so much with MVC itself as it is with people not understanding what it is. Apparently, a lot of web developers have thought that "model/controller = server-side, view = client-side". This is obviously wrong, and, of couse, JS and AJAX become extremely confusing to categorize in such a system. No surprise there. Also, article makes a big deal out of the "problem" that JavaScript can be used to work around the requirement that "server generates the view" - but of course, it was never a requirement of MVC, either, and indeed, the original MVC did not imply any sort of "generation" of the views.

    Of course, the something-to-JS compilers that are so popular these days won't help, either. JS-the-language is good enough, replacing it with Java (or Python, or Ruby) on the client doesn't really help much, so long as the dividing line between the client and the server remains.

    1. Re:Not really an MVC problem by cjonslashdot · · Score: 1
      I disagree. I feel that the model should be server-side.

      Yet I agree that MVC is often implemented incorrectly. The client can have multiple views, each a kind of 'model' in its own right (but not the 'model' as defined by MVC), depicting some aspect of the central, shared (authoritative) model. The shared model should be on a server, since it is shared. That is the only way to ensure proper concurrency control. The shared model is usually a database, or a facade provided by an app server.

      What people often do wrong is they don't handle the error conditions that the server model can produce when concurrent access causes conflicts.

      Another thing people do wrong is they update the client view directly in response to user actions, but in the MVC model all view updates should come from the server.

      There is a slight modification to this pattern, in which updates to a client view are made immediately by the client, but on a tentative basis, and the server can veto the change, in which case the client needs to be prepared to invalidate or restore the view to the correct state, as defined by the server.

      The pure MVC pattern is more of an idea, rather than a full design pattern, since there are many complex issues that must still be decided, such as what types of objects will be sent between client and server (view and model), how invalid elements will be marked as such and refreshed, how the client should be notified of changes to the model made concurrently by other users, how the client will keep track of which view objects correspond to which model (server) objects, and how to ensure that corrupt client-side objects (e.g., object changes cancelled by the user) do not propagate to the server.

    2. Re:Not really an MVC problem by acidrainx · · Score: 1

      People use the something-to-JS compilers because it lets them remain in their comfort zone. While things are changing, a lot of programmers have no respect for JavaScript as a language and that's mostly due to the crappy scripts that are floating around that web.

      Most people don't know that JavaScript is an incredible language with features like lambdas and closures; features that are found in functional languages like Scheme and Lisp. It's also one of the most object-oriented languages I've ever worked with where objects can be defined inline with properties added and removed at runtime. It actually gets quite complex with its prototypal inheritance pattern which is a real mind bender for people who were trained to use classical inheritance.

      I'm not saying that it's perfect but there's a great deal of depth in it that's made it one of the most interesting languages I've ever learnt.

    3. Re:Not really an MVC problem by Jack9 · · Score: 1

      MVC has always been shorthand for a number of methodologies. The view is a kind of model, just conceptualized slightly differently. After a short while, you find MVC is not enough. MPVC, using a presentation layer to remove the view logic from the model results in cleaner code with additional complexity, although what additional layer(s) you use is a matter of pragmatism, personal preference, and sometimes language. Rewriting spaghetti is always a matter of convincing people there needs to be more complexity and/or strictness in methodology for clarity, imo.

      "the Web browser application itself is the Controller"

      This is ambiguous. The web application is all executable code. The controller routes. The handlers do the work. The article goes on to talk about a Pandora's Box when view generation can be dynamic. Oh the horror! If only you already included a presentation layer *slaps forehead* There's nothing special about multiple dispatchers (AJAX/JS, Flash/Flex, Java, etc) as every dispatched method/message then has a handler/receiver, you maintain the framework.

      Here is the "ideal" world scenario, which does actually exist, in the form of a very simple but currently proprietary project called "Unity":

      * A developer writes front-end "View" code in classes and modules, in python code, in specially-marked sections.
      * The Model "business logic" rules are also written in python, in separate classes and functions, again in specially-marked sections.
      * Functions whose purpose is to submit data, after it has been validated by Model "business logic" rules, are similarly marked.
      * The Model "data-driven" code are separated out into classes and functions, in specially-marked sections of the same source code file.
      * a "compiler" pre-analyses the source code file, looking for the special markers:
      o "Views" and "Model Business Logic" are split out into one file, which is handed to the Pyjamas Compiler and turned into Javascript (for execution in the Web Browser). The "data submission" functions are turned into JSONRPC client functions, which, again, are turned into Javascript AJAX and JSON Javascript functions, by the compiler.
      o "Model data-driven" code is separated out into another file, and stub templates are added which turn the data functions into a fully-operational cherrypy JSONRPC-enabled Web Server application.
      * The compiled Javascript is made available to the Web Server.
      * On execution in the user's Web browser, the application performs AJAX-based JSONRPC client calls to the cherrypy Web Server to load the application "Model Data" into the "View".

      And there it is, what the article is REALLY about, we're not even talking about abstract frameworks. Aside from random bashing of PHP, which is irrelevant, this is about Unity as a "better" MVC implementation on the web using Python and Javascript. While you can't have a discussion about MVC on the web without talking about Javascript, why is it so spectacularly important to use Python? Unity likes using 3rd party tools like the Pyjamas Compiler and cherrypy. That's nice, but is a very specific implementation instead of a "best practice" this article started about.

      "Functions whose purpose is to submit data, after it has been validated by Model "business logic" rules, are similarly marked."

      Keep the logic that isnt data manipulation out of the damn model. The functions are handlers (called "commands" in Cairngorm, for example).

      On execution in the user's Web browser, the application performs AJAX-based JSONRPC client calls to the cherrypy Web Server to load the application "Model Data" into the "View".

      Synchronization, but that

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    4. Re:Not really an MVC problem by syousef · · Score: 1

      After quickly skimming the article, it seems that the "problem" isn't so much with MVC itself as it is with people not understanding what it is. Apparently, a lot of web developers have thought that "model/controller = server-side, view = client-side". This is obviously wrong

      Yes the entire article is simply bollox.

      MVC is about separating your Model - the entities that make up your business domain - from the logic to View them - ie your screens and reports shouldn't depend on the business model directly. Instead a controller sits in the middle and all logic that ties the two together - what to view and when, how to retrieve the information.

      This can indeed be done in any language and any decent architecture. Each business domain (model) can be tied to one or more views or controllers. The trouble is Web 2.0 is about regurgitating old ideas in the guise of new buzzwords and part of the art of selling it is to confuse people into believing that the way they've been doing it all along isn't good and that there's a better way.

      Even the MVC paradigm is just a model which may or may not be appropriate at different times. If your application isn't suited to being broken up this way there are alternatives. That's not blurring the lines, it's using a different approach.

      --
      These posts express my own personal views, not those of my employer
    5. Re:Not really an MVC problem by Anonymous Coward · · Score: 0

      Look at the Google tech-talk on GWT. They explain how some of the stuff their able to do is impossible (or much more difficult and impractical) with regular Javascript. With GWT, they have axes of rotation (I can't remember if that's the exact terminology they use) generated automatically for the user configuration (i.e if you want to have IE8 specific behavior for a Chinese user, it's easier to do and there's no performance overhead (i.e. Javascript having to check the IE version, language, etc or having an extra level of indirection).

      So JS-the-language is good enough for most things. But for high-performance websites, these compilers offer the possibility for much better performance across the board: faster JS execution because the configuration-specific compiled code is sent to the client, fewer portability issues because most of it is already abstracted and documented in the library, and better responsiveness because the Javascript is bundled into a single file with a version ID and then a smaller script determines whether or not it needs to update the cache. Additionally, the compiler removes all the comments and the variables are renamed into much smaller names.

    6. Re:Not really an MVC problem by Anonymous+Brave+Guy · · Score: 1

      I had a similar reaction to you. The MVC idea came about when Smalltalkers wanted to bring some structure to programming interactive UIs, and the separation of concerns matched the way their interactions worked. Web applications have different requirements, particularly because of the performance/safety/security trade-offs inherent in the server/browser separation. Why should an architecture such as MVC be expected to hold up in its original form? It's designed to solve a different problem.

      I was also somewhat surprised by article's fairly black-and-white position that using multiple languages when developing a large-scale project is a bad thing. Sure, using multiple general-purpose programming languages when each has similar characteristics is a bit pointless, and other things being equal it would be better if we didn't have to. But I don't think the problem is using one language on the server and another on the client; it's just that as web development gets more serious, web developers are discovering the same things that desktop and server-side developers learned a while ago: most programming languages are far from ideal in one respect or another, and make it surprisingly difficult to do your job efficiently while still generating correct, fast, safe code. For example, adopting languages that emphasize lightweight syntax and dynamic typing can help you to build quickly on a simple prototype. However, it also means you're also going to take the hit on things like not converting strings properly, where a language with a stronger, static type system would have provided tools to prevent such errors ever reaching production and showing garbage in your client's browser.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    7. Re:Not really an MVC problem by anomalous+cohort · · Score: 1

      I agree. The article implies that you always generate the HTML from the server side. An MVC compliant web browser app could easily be hand written HTML (view) and javascript (controller) making AJAX calls to server side scripts (model).

      It seems pretty straight forward to me but that may be because I administer an open source project with this architecture.

    8. Re:Not really an MVC problem by Shados · · Score: 1

      Why should an architecture such as MVC be expected to hold up in its original form? It's designed to solve a different problem.

      It shouldn't and it doesn't: the smalltalk MVC has about as much in common with the MVC used on the web than javascript has in common with java: the name, and thats about it.

  21. Idealism in the programming world by erroneus · · Score: 1, Interesting

    It can almost never happen that a project could ever adhere 100% to idealistic notions such as MVC, which in a nutshell is the separation or containment of business logic from the user interface. The communication can almost never been isolated into a one-way path of communication for any given type of communications. So the fact that the server doing the business logic might also need to change the javascript code on the client side in order to refine or adjust behavior is simply to be expected.

    These sorts of compromises are necessary unless we change the minds of users everywhere to appreciate and be willing to work within the limitations of the MVC model. So yeah, we already know that users, especially executive users, management users and especially consumer users, are not prepared to sacrifice their preconceived notions about the way things are expected to look, feel and behave... the systems need to deliver to expectations and that quite often requires numerous compromises to programming idealism.

    I have "soap boxed" on this topic especially where Microsoft's backward compatibility "bloat" is concerned. With each new release of Windows, Microsoft misses an opportunity to shed itself of backward compatibility bloat through a variety of means many of which would be completely invisible to the end user... especially solutions that have to do with virtualization and emulation. But instead, they keep supporting old bugs and behaviors and the bloat simply builds leading to the results we see in XP and Vista. While I can state that I completely understand why Microsoft does it, I cannot agree with their perpetuation of this model since thing are coming to a head and the public disapproval of Vista [and Mojave?] is testament to the fact that people are no longer just going to swallow whatever Microsoft serves up and that the power of common, off-the-shelf PCs are not generally sufficient to conceal the bloat and poor performance of Vista.

    Okay, I somehow made this about Microsoft. Apologies to those offended. They are simply a very convenient example of a compromise of programming idealism to enable a project to fulfil user expectations... the user expectation of backward compatibility is a large part of why Windows is so bloated and unreliable and I will be the first to admit that Microsoft has done a pretty amazing job of managing the situation as much as they have... think about the enormity and scale Microsoft's maintaining of backward compatibility and you will have to agree.

    1. Re:Idealism in the programming world by erroneus · · Score: 1

      ...sorry to reply to my own post but re-reading what I wrote made me think of one other point I wanted to make:

      There comes a point for everyone at which the work we do trying to be lazy is greater than the work that would have been done being "not lazy" or otherwise not doing what *should* be done. I would assert that Microsoft has gone beyond this point with the Windows API.

    2. Re:Idealism in the programming world by ljw1004 · · Score: 1

      I hate all the talk of "your write code which can run on the server, or the client, it doesn't matter".

      We should be striving to make apps where the server-side code is clearly delineated, tiny, and carefully audited. The client can communicate it through AJAX. The client-side code doesn't have to be audited anywhere near as carefully. The only guarantee you can make is that if you have https, and no google analytics or ads, then your page guarantees not to broadcast sensitive data to places it could be intercepted.

      And we should be carefully and explicitly aware of every single clientserver communication that's taking place, and audit it for what happens when communication fails or a message is lost or intercepted.

      Everything that blurs these boundaries is a mistake. The ideal of MVC is fine, but the way it's traditionally been divied up for webserver/client apps is a mistake. And as for writing a single piece of code which controls both client and server? or which can run on either of them without effort? AWFUL.

    3. Re:Idealism in the programming world by jbolden · · Score: 1

      Where have you soap boxed on this? I'd be interested in reading examples.

    4. Re:Idealism in the programming world by erroneus · · Score: 1

      Here... look for anything I have posted where Microsoft and compatibility are included in the content.

  22. Hello, my name is Inigo Montoya.... by Kitanin · · Score: 1, Troll

    ... necessary introduction of Javascript and AJAX.

    You keep using that word. I do not think it means, what you think it means.

    --


    Teach your kids: "C++ made baby Jesus cry."
  23. The old refrain is not as true anymore by NinthAgendaDotCom · · Score: 1

    For awhile people were saying, "Any cheap computer these days is powerful enough to do web surfing, email, and word processing." But given how AJAXified everything is now and how big web apps are getting, this isn't as true anymore. For example, my Pentium 4 at home will sometimes show a popup when leaving Gmail.com that says something like, "Process still running, leave the page anyway?" Then again, the new browsers like FF 3.1 are supposed to have blazing fast Javascript processing, so who knows?

    --
    -- http://ninthagenda.com/
    1. Re:The old refrain is not as true anymore by prockcore · · Score: 1

      That's not caused by slowness on your computer.. that's caused by a request to google which hasn't completed yet.

      IOW, your network is what's causing that error, not the speed of your computer.

  24. Oh, come on... by Abuzar · · Score: 0

    ... like that's news?
    Slashdot: News that mattered.

  25. Anyone Seen JavaScriptMVC by Justin+Meyer · · Score: 1

    JavaScriptMVC is the perfect solution for MVC on the client. The server still can be MVC. It provides services using an MVC like architecture. Here's a good post about the double MVC architecture. http://javascriptmvc.com/blog/?p=68

  26. Machines that can run web but not C++ by tepples · · Score: 1, Informative

    Is there ever a point where a web developer will concede that the web is not the Best Platform for Everything in The Universe(tm)? Or is it just that they were never schooled in the old temple and given a proper appreciation of a real language like C++?

    There are a lot of computers that are capable of running arbitrary HTML, CSS, JavaScript, and sometimes even ActionScript, yet incapable of running arbitrary C++ without the developer spending beaucoup bucks to obtain the platform owner's certification. These include the Internet terminal in the break room at work, the Internet terminal at the public library, an unmodded game console, an unmodded smartphone, etc.

    1. Re:Machines that can run web but not C++ by weicco · · Score: 1

      Yes but many requirement specs say that software must run on Windows (and IE) and other operating systems (and browsers) are really out of the question. Still these applications are written on ASP.NET with horrible kludge to make them act like a normal Windows Forms application. So what the user really want is rich Windows Forms client but what (s)he gets is total peace of ... well, HTML, JavaScript and a heck load of kludge.

      So I can really understand Girlintraining's point here. Browser interface adds nothing to the picture except development costs.

      --
      You don't know what you don't know.
  27. Re:Haha, Python programmers by Anonymous Coward · · Score: 0

    You still didn't mention the shortcomings of python - no language is perfect and to so thouroughly trounce two you obviously don't have a deep enough understanding of doesn't make for a very balanced or credible article. Javascript is a pure object orientated (prototype based) language. When tackled with disclipline you can create very elegant and well structured code - just like with every other programming language.

    Similarly to claim that it's impossible to produce a workable MVC framework with PHP is laughable, it is possible (and many have done it very well indeed). Decent php programmers know not to mix logic and presentation (i.e. embed code in html files - except when that file is simply a very basic template and the only php used is simple variable echo'ing), just like decent c programmers know to use buffer overflow safe string functions. Despite what your short sighted vitriole may assume, there are a large number of professional PHP programmers who can put together a very well architected piece of software.

    Don't get me wrong, PHP has it's shortcomings, but you have basically picked on the PEBKAC one - that because it's easy to produce bad code the language must be bad - it's possible to write bad, insecure code in almost ANY language. As far as your gripe about character sets, ruby has problems with unicode until the next version comes out and far too many programmers are ignorant to producing decent internationalised software.

  28. of course by circletimessquare · · Score: 1

    any freshman computer science major can recognize this problem. its just that no one amongst us has the power to do anything about it. its the network effect, we are already entrenched in a bad model no one has the power to extricate us from. or, more accurately, we are entrenched in a perfectly good model, circa 1993

    how we move away from messy ajax, which is nothing more than stretching the limits of a world of static html pages to the furthest extreme, is again something any computer science freshman can describe. but the only better models that matter are those that are backed by a large influential force in the marketplace

    i give you google chrome

    google chrome will serve as the bridge from the old static html world to the mvc model talked about here. and its probably been discussed at google hq for the last 3 years

    --
    intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
    1. Re:of course by mrboyd · · Score: 1

      I agree with paragraph 1 and 2 but how exactly do you think google chrome is going to do anything about the issue? So far it's nothing more than yet another browser with a slightly faster javascript engine in some corner case. It doesn't do anything than IE, Firefox and Safari can't already do.

  29. Also worth mentioning by Keyper7 · · Score: 1

    Aptana Jaxer goes the opposite way: use Javascript to do everything, both on client side and server side.

  30. Libraries are a problem in both C and JS by tepples · · Score: 1

    Code written in [ECMAScript over the HTML and CSS DOM] needs to run on multiple different implementations with no properly accepted standards. Contrast that to C, which yeah, has a number of various flavors, but it only matters that you have a compiler that understands that dialect.

    You need 1. the compiler, 2. the libraries, and 3. the loader. Even if you have a compiler for the architecture, that doesn't mean you have the libraries. Windows home editions doesn't come with POSIX and X11 libraries, nor does GNU/Linux come with Win32 libraries unless you install Winelib. Missing libraries are to C as missing DOM elements are to JavaScript. And even with a compiler and libraries, it may still be impossible to run your program because a lot of platforms' executable loaders throw an exception if the executable isn't correctly signed by the platform owner.

    1. Re:Libraries are a problem in both C and JS by Xphile101361 · · Score: 1

      I'll definitely agree with the comparison between JS and C.

      It is probably why I dislike both of them too. Yes I'm about to slander the world of programming by saying that C/C++ isn't the best tool for everything under the heavens. I use C/C++ when I want to do programming that depends on speed, running algorithms via CUDA for example, but I'd easily argue that it isn't the best tool for many other things. For those I fall back onto C# and Java.

      How long are we going to have to wait until someone builds a better "javascript". JS served its use, but more and more it is becoming a pile of hacks ontop of hacks to make it work as people want it to. What I wouldn't give to have an open, portable, type strong language built for web browsers that is based upon Client/Server interface instead of having to hack it all to work properly.

    2. Re:Libraries are a problem in both C and JS by ozphx · · Score: 1

      How long are we going to have to wait until someone builds a better "javascript".

      See the DLR.

      --
      3laws: No freebies, no backsies, GTFO.
  31. MVC Everywhere? Why? by Anonymous Coward · · Score: 0

    Who says that MVC has to be the only way to build a web app?

    It fits sometimes - sometimes it does not.

  32. Re:Haha, Python programmers by mangu · · Score: 1

    I almost don't even consider Python a scripting language because it's so verbose. Writing Python is almost like writing C/C++ code or whatever.

    You obviously have never used Python. I used to do scripts in Perl in the past, but one day I did an interesting experiment: I wrote a 200 lines program in Perl and Python, and compared them side by side. The Python code was slightly larger than the Perl code, but I actually needed about the same number of keystrokes for each, since Perl uses so many characters that need the shift key.

  33. And yet, you're posting in English by HotButteredHampster · · Score: 1

    I just thought I'd point out that the problems that you are ascribing to JavaScript + HTML could be leveled at the English language. And yet you are comfortable posting with it. Let's face it, as long as things work and have well-defined interfaces, complaining about aesthetics is not productive. Beautiful cathedrals are just that: beautiful. But also cold and uncomfortable.

    We're a messy species of semi-evolved apes.

    HBH

    --
    "Smart is sexy." -- D. Scully ("War of the Coprophages")
    1. Re:And yet, you're posting in English by Sloppy · · Score: 1

      I just thought I'd point out that the problems that you are ascribing to JavaScript + HTML could be leveled at the English language.

      We all know spoken languages are evolved, but we still have the illusion that software is designed.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    2. Re:And yet, you're posting in English by MightyMartian · · Score: 1

      English's problems are largely a really nasty spelling system. For the most part, adopted words have pretty much been syntactically modified, and because English is all but non-inflected since the rise of Early Modern English, it's not too bad.

      Or, to put it another way, your analogy sucks save on one specific point.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    3. Re:And yet, you're posting in English by HotButteredHampster · · Score: 1

      An excellent point. I'm not a linguist, but I believe these issues to be related. It is my opinion that the expressiveness of the medium (software, language) determines its success or failure. Design and robustness are key for data management but for user interaction, it is the most flexible solution that wins out. English is an unholy mix of different, completely separate languages and thousands of idioms, and growing every year. It grew from a simple street language to the third most spoken language in the world.

      One could argue that the web platform is doing the same thing. Just a musing for a Friday.

      HBH

      --
      "Smart is sexy." -- D. Scully ("War of the Coprophages")
    4. Re:And yet, you're posting in English by Hognoxious · · Score: 1

      I'm not a linguist

      Indeed, or you'd be able to spell "hamster" or "hamper", whichever it's supposed to be.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:And yet, you're posting in English by MightyMartian · · Score: 1

      The nature of English's adoptions of other languages has been grossly misstated by those who don't understand what linguists means. English has been very good at adopting words out of other languages, and certainly it's own word-making powers (like the other Germanic languages) is pretty strong.

      But let's be clear here, structurally and syntactically, English is still very much in the West Germanic branch of the German languages. English may have stolen the larger part of its vocabulary from other sources, but the vast majority of every-day words in use in English are still Germanic, and in particular, Anglo-Saxon (Old English) in origin. The major shift from Anglo-Saxon to Modern English has been the loss of noun inflection and a decrease in verb tenses, but that's seen to one degree or another in most of the modern Germanic languages.

      At one time, it was believed that the major shift from Old to Middle English was due to the arrival of Norman French, but a better understanding of sound and inflection changes in the Germanic languages has pretty much killed that theory. The evidence suggests that Old English was already changing and the roots of Middle English were already in place by the time of the Norman French, and the Norman's contribution to English was the bringing over of large numbers of words from the Continent.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    6. Re:And yet, you're posting in English by prockcore · · Score: 1

      Or, to put it another way, your analogy sucks save on one specific point.

      His analogy creates a vacuum?

    7. Re:And yet, you're posting in English by davolfman · · Score: 1

      I've tried Esperanto, but the compatibility's abysmal.

    8. Re:And yet, you're posting in English by micheas · · Score: 1

      I would guess it is a reference to The Hampster Dance (warning not safe for people with taste.).

    9. Re:And yet, you're posting in English by lysergic.acid · · Score: 2, Interesting

      while you may be right about some aspects of the Middle English creole hypothesis, the Norman conquest of England certainly had a profound effect on the evolution of the English language. language is a social/cultural construct. subsequently, its evolution is inextricably tied to the social & cultural development of a region. after all, a diachronic analysis is meaningless without historic context.

      the fact of the matter is, the Norman conquest was a vital chapter in the historic narrative of the British isles. i would be very surprised if 300-odd-years of Norman rule had no effect whatsoever on the development of modern English. i mean, the Normans basically supplanted the English ruling class, replacing the entire English nobility with new Anglo-Norman-speaking Norman nobility.

      it's true that the (disproportionately large number of) French and Norman loanwords used in the English language were largely borrowed after 1400, by which time English had returned to use in government and in the king's court. and the grammatical changes in English followed a pattern shared by many other Germanic languages. but the Great Vowel Shift was almost certainly influenced by Norman occupation in some way or another.

      it should be noted that this (1200-1600) was the time when the language of the aristocracy was gradually shifting from French to English. this likely changed the prestige accent of English by making it sound more French in style. another possibility is that due to England being at war with France throughout much of this period, the French-speaking nobility may have been more susceptible to hypercorrection in an attempt to change pronounciation to something sounding "more English."

      in fact, the shift from French to English as the language of the aristocracy/ruling-class may have contributed more to the rapid changes undergone by the English language to form modern English than the period of Norman rule immediately after William's conquest of England. firstly, William and his successors up to, and including, the early Plantagenets, such as Angevin kings, were all absentee rulers for the most part. the administrative system William set up allowed he and his successors to rule from France by writ. similarly, the early Anglo-Norman barons were also largely absentee landowners, who consider France their true home, and spent the majority of their time in France.

      so it would make sense that it wasn't until much later, after the Anglo-Norman nobility had begun assimilating and interacting directly with the native English population, that these transformations in the English language began to take place. this was also the time of the Great Plague, which drove mass migrations to the South East of England causing different dialects and accents to intermingle and modify each other in order to standardize pronounciation. the rise of the middle class in London and upward social mobility caused by the pandemic hitting the aristocracy could also have driven (or accelerated) social interactions between the Anglo-Norman aristocracy and the English masses.

    10. Re:And yet, you're posting in English by Anonymous Coward · · Score: 0

      Your shift key is STILL broken

    11. Re:And yet, you're posting in English by kelnos · · Score: 1

      Being (or not being) a linguist isn't particularly indicative of one's ability to spell.

      --
      Xfce: Lighter than some, heavier than others. Just right.
  34. MVC is a broken paradigm by Anonymous Coward · · Score: 0

    MVC is a broken paradigm, its time to get over it. So please, can we let the broken frameworks designed to enforce it while crippling good engineering practices, like Struts, just die.

  35. Java - Javascript = bloat by Animats · · Score: 1

    Cross-compiling Java into Javascript seems undesirable. You'll get bloated Javascript as Java constructs are decomposed into Javascript primitives. Then you get to debug the emitted code, which is not going to be fun. Writing Javascript is a pain, but there are libraries. Look for libraries that aren't too big, can't be changed remotely by some vendor, and don't try to be "frameworks".

    Most browsers can run Java applets, after all. If you really want to use Java on the client, you can use Java on the client. It will execute faster than Java compiled into Javascript. You can even hide that stupid Sun ad that appears as the JVM loads.

    1. Re:Java - Javascript = bloat by not+already+in+use · · Score: 1

      People say writing javascript is a pain. I disagree completely. Perhaps maintaining old javascript is a pain, but if you're starting from scratch it's all lovely. The problem is people can't seem to wrap their head around the "right" way to do javascript, and therefore want to program in a familiar paradigm and let some compiler whittle a square peg to fit in a round hole.

      --
      Similes are like metaphors
    2. Re:Java - Javascript = bloat by Shados · · Score: 1

      Then you get to debug the emitted code, which is not going to be fun

      Yet we do it all the time by not using raw machine code. Works fine. If there's issues, its because the tools aren't powerful enough. Many are starting to be though, and it becomes really rare to have to debug the emitted code. I don't know about GWT (though I did hear decent things about it), but I've tried Visual WebGUI for example, and while it had flaws, having to debug emitted code was NOT one of them.

    3. Re:Java - Javascript = bloat by TheSunborn · · Score: 1

      You get much more effective javascript in most cases. For one it don't include functions/objects which are not used. Compare this with for example the prototype library, where you include the entire library even if you only use half of it.

      And GWT compiles a special version for each of IE/Firefox so the user don't have to download work-acounds for bugs in a browser he is not using.
      The gwt compiler is really good at generating small javascript.

      And why the hell would you ever have to debug the "emitted code"? With GWT you just debug the java code in a special browser with full debug support(Including full java stacktrace).
       

  36. History of a pain-in-the-ass by Windows_NT · · Score: 1

    Parent has a good point. I work for a software company that Develops GIS (geopgraphical Information Software). and all of our clients want theor programs to be web based. this means VB or C# with AJAX/JAVA. For complexity of these programs, and the time that goes into them, the logical thing to do would make it a windows based application. the clients dont like the fact that they then have to install software, and put more problems on their IT staff. (User policies, hardware/software conflicts). so we bould everything to work based on IE6 (alot of people still use Windows 2000). Its a fricken nightmare. There are no standards that are standard, and the whole web based framework is a mess.
    I know i cant be that old school, but why cant people use C++ and and GUI APIs? there are already protocols for talking to your SQL server and app engine via network, and using a windows Application framwork has many benifits. Ive argued this time and time again with my boss, but thats how they want it.
    BTW: when i first Read MVC i thought they ment Microsoft Visual C, not Model View controller .. wtf?

    --
    Go go Gadget Nailgun!
    1. Re:History of a pain-in-the-ass by rufus+t+firefly · · Score: 1

      Parent has a good point. I work for a software company that Develops GIS (geopgraphical Information Software). and all of our clients want theor programs to be web based. this means VB or C# with AJAX/JAVA.

      How does that follow? I don't see how web-based applications (or, judging from the context, the services which run these applications) have to be VB or C#. There are a number of other choices, be it scripted languages like Perl, Python, Ruby or PHP, or compiled languages like Java, C++ or C. Also, you said "AJAX/JAVA"... I would assume you're referring to JavaScript, which isn't the same as java.

      Writing web-based applications isn't intrinsically tied to one particular language or set of particular languages. It only requires being able to read the HTTP headers that it is given and responding in a certain way. Most languages have toolkits which allow this. I'd go so far as to say that VB and C# would be *poor* choices for that sort of thing. Servlets or JSP with Java is a pretty easy way of going about it, and you get your choice of server (Jetty, Tomcat, J2EE server like jboss, etc).

      In the end, it's more about the toolkit, not the language, and your choices seem to lean towards vendor lockin (since VB and C# more or less run on one platform, discounting Mono implementations) instead of something a bit more OS-agnostic.

      I know i cant be that old school, but why cant people use C++ and and GUI APIs?

      Perhaps not C++ GUI APIs, but things like GWT use very similar APIs to classic GUI toolkits, so it is indeed possible to do this in that sort of way to cut down on the slope of that learning curve.

      --
      "He may look like an idiot, and talk like an idiot, but don't let that fool you. He really is an idiot." - Duck Soup
    2. Re:History of a pain-in-the-ass by Windows_NT · · Score: 1

      First off, Yes: when i said JAVA i ment JS.
      I wont trash any language, because i havent used most of them, and they all have their purpose.
      The point I was getting at is people seemed to want more and more out of a web app, and its comes to a point where you cannot make a stable web app, without "duct-tape".
      These app that we make are highly server dependent. Not only do they require security (which JS doesnt help, since the code is client side) they require operations that are cobbled together so they run in a browser.
      Stuff like point-click-drag-drop are a client side operation. And doing something as simple as clicking a button, requires a postback, a run through the page life cycle, and the sent back to the client in a way that isnt reliable, or effiencient.
      I was using C# and VB as examples because thats what i am paid to program in. (believe me when i say i feel stupid using them). But there are better ways of doing things. Just because it can be done one way, doesnt mean its a very lgical method. So, pictures and text fine .. web based. but when your want basically a full blown Application on your web browser, why not just use an GUI API and any language you see fit, and do it right.
      Another thing: you can write a OS based App in one language, how many languages does it take to create a web app? (xhtml, css(i know not a lnaguage, but you get what i mean) JS/AJAX, T-SQL or pl/SQL(RDBMS), C# VB Python php CGI whatever) .. It takes a lot of knowledge and time and bugs to make something like that work.
      Then again, maybe im in the wrong field, maybe i should be doing OS devel instead of Web based applications ...

      --
      Go go Gadget Nailgun!
    3. Re:History of a pain-in-the-ass by fimbulvetr · · Score: 1

      So your clients want you to bear the costs of overhead, administration, hosting, etc. while all they have to do is maintain ie6, which is probably what they had to do anyway?
      I can empathize with your resistance to pursue that path but economically, it makes perfect sense why your company is pursuing that. You could come up with 100 million technical reasons to NOT do it over the web, but the only language that counts for businesses to do/not do something is: money.

    4. Re:History of a pain-in-the-ass by Windows_NT · · Score: 1

      yea, pretty much. we dont care if we have the burden of support as long as they pay for it. Also, since we (I) built the programs, we have the most knowledge of them, so inheritably, we also serve as technicians (for a price, of course)

      --
      Go go Gadget Nailgun!
    5. Re:History of a pain-in-the-ass by rufus+t+firefly · · Score: 1

      First off, Yes: when i said JAVA i ment JS. I wont trash any language, because i havent used most of them, and they all have their purpose. The point I was getting at is people seemed to want more and more out of a web app, and its comes to a point where you cannot make a stable web app, without "duct-tape". These app that we make are highly server dependent. Not only do they require security (which JS doesnt help, since the code is client side) they require operations that are cobbled together so they run in a browser. Stuff like point-click-drag-drop are a client side operation. And doing something as simple as clicking a button, requires a postback, a run through the page life cycle, and the sent back to the client in a way that isnt reliable, or effiencient.

      The normal event model used by pretty much every windowing system in use now has some sort of callback initiated from the button press, which executes code. Other than the serialization/deserialization of the request and the HTTP transport, you're not looking at much of a difference in terms of process.

      And if you're talking client/server, HTTP is a pretty nice stateless protocol. Any client/server application is going to have to communicate between the client and server, which can potentially result in issues stemming from loss of data, so I'm not sure how this is worse in a "web 2.0" app than it would be in a traditional client/server app communicating via some sort of RPC.

      I was using C# and VB as examples because thats what i am paid to program in. (believe me when i say i feel stupid using them). But there are better ways of doing things. Just because it can be done one way, doesnt mean its a very lgical method. So, pictures and text fine .. web based. but when your want basically a full blown Application on your web browser, why not just use an GUI API and any language you see fit, and do it right.

      Because of a few simple things. First is portability... if you use a toolkit or compiler, the chances are that your code will run on most machines remotely if the browser was put out in the last few years. Second is simplicity of deployment... if you don't want to have to deploy a whole toolkit or assume a universally homogeneous deployment base (which is less and less likely given the proliferations of different OSes and versions of those OSes), you're going to have to rely on something like a web-based application to allow it to be used by the widest possible audience.

      Another thing: you can write a OS based App in one language, how many languages does it take to create a web app? (xhtml, css(i know not a lnaguage, but you get what i mean) JS/AJAX, T-SQL or pl/SQL(RDBMS), C# VB Python php CGI whatever) .. It takes a lot of knowledge and time and bugs to make something like that work. Then again, maybe im in the wrong field, maybe i should be doing OS devel instead of Web based applications ...

      Perhaps. If you like sticking with VB and C#, core operating system development probably wouldn't be your strong suit. If you want to stick with rich client applications and avoid the entire client/server architecture and its set of problems, go right ahead. For those people who need to write client/server apps which require a wide audience, web-based applications (especially rich ones with javascript/dhtml) are very useful.

      --
      "He may look like an idiot, and talk like an idiot, but don't let that fool you. He really is an idiot." - Duck Soup
    6. Re:History of a pain-in-the-ass by Shados · · Score: 1

      Then just propose the middle ground? A C# app with WPF will run in a browser, will not require installation (well, ok, they'll have to run Windows update if they're not using Vista...), and bing bada boom, you have a thick client in a browser that doesn't need to be installed, wee! Now, if platform independence is required, just look for the non-Microsoft equivalent of these technologies...

      Using C++ for a typical data driven business app's front end though? May as well put your money on fire.

  37. Here is a POV by __aalnoi707 · · Score: 1
    I am currently updating a very archaic administration system. It was written back in the days of PHP 3 and has not been touched since then. I am now developing this using AJAX and PHP 5. I started by developing all the different web services that this administration environment controls. It ranges from Login to Retrieving/Editing data. All PHP is doing is checking security and making database calls. Using AJAX, the application pulls in all the data and displays it on the page. By following this method, I have been able to improve the load time of each page from 6 seconds to ~
    1. Check the users authentication
    2. Get a list of all the "accounts" the user has access to
    3. Build the list of avialable functions the user has access to
    4. Check if the user has submitted data
    5. validate the data and process
    6. If the submitted user data is valid and has been processed successfully then go and include the success php page.
    7. build the html for the navigation
    8. build the html for the forms on the page

    by following this approach of web services, now all a given php needs to do is: If this is a page to process data:

    1. Check authencation
    2. process data
    3. return success or error

    If the page is to reterieve data:

    1. Check authenciation
    2. Read data from the data base
    3. format the XML

    As you can see since there is less for php to process, the execution for those pages has increased greatly. What makes this process even better is that now all this data can then be cached on some kind of CDN which means fewer calls to your servers and thus lower latency.
    If I were to break down each lanuage into the MVC it would be along these lines:
    Model: very little JS (I just make sure there is data to submit back to the server. This saves on making calls that will definitely fail) PHP validates all the time.
    View: JS and AJAX
    Controller: PHP
    Hope this helps some clear up some of the confusion

    1. Re:Here is a POV by prestomation · · Score: 1

      By following this method, I have been able to improve the load time of each page from 6 seconds to ~

      ...6 seconds to....?

      You can't leave us hanging bro!

    2. Re:Here is a POV by __aalnoi707 · · Score: 1

      Sorry ~ 600 Ms

  38. Does duck typing count? by Giant+Electronic+Bra · · Score: 1

    Burn her!

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
  39. Javascript/AJAX change nothing by BigGerman · · Score: 1

    AJAX programming simply reverts to two-decade-old client-server paradigm: high-level client side language operating on "views" sent by server-side "controller". Okay in the early 90s it was VB on the client and Oracle DB on the server, now it is Javascript on the client and Web Service on the server. It is conceptually the same thing. Why we need to complicate the picture with issue of compiling Javascript from even higher level language - I got no clue. I hate to sound old dude but we, programmers, as a whole have very short memory.

  40. most scripting languages discourage abstraction by peter303 · · Score: 1

    Because they arent set up to enforce OOP concepts. There are exceptions like Python, Javafx, etc. They end up with BASIC-like spaghetti then.

  41. Client side javascript is terrible by Dan667 · · Score: 1

    I have yet to see a client side solution that worked well. There is just too much to consider to ever do it right. There was even an application I ran one time that did not like the version of the java engine installed on my machine, but another application that wanted a different version so neither application would work without re-installation every time.

    1. Re:Client side javascript is terrible by SanityInAnarchy · · Score: 1

      Repeat after me:

      Javascript is not Java.
      Java is not Javascript.

      --
      Don't thank God, thank a doctor!
    2. Re:Client side javascript is terrible by Dan667 · · Score: 1

      They are talking about compiling languages into javascript so it is still a valid point.

  42. Re:Haha, Python programmers by tolan-b · · Score: 2, Insightful

    Yeah I'm pretty tired of people crapping on PHP and by extension those of us who use it (by choice or necessity).

    Yes it has its problems (not the ones mentioned in the article which are either out of date (magic quotes) or PEBKAC (most of the rest), but there's nothing that major.

    Like anything, use it improperly and you'll come out with crap.

    Also to be honest there's no problem with AJAX and MVC, your Javascript should be making requests to your server-side controller(s) in the same way your generated HTML does (the only difference is your requests and responses are async in comparison to your regular HTML initiated GETs and POSTs). Any application logic in Javascript beyond interface manipulation just means you're doing it wrong.

    There's always going to be some processing going on for the view layer (whether it's during HTML generation, or at 'run time' in the browser as JS).

    HTML + JS suck for making applications, but not for the reasons in the article.

    Incidentally if you're after an event driven widget framework for PHP then Prado looks interesting. Seems similar to Tapestry for Java. Far less restrictive than horrors like GWT. I've not used it myself though as I don't think it's really compatible with my homegrown MVC framework, so I can't vouch for it.

  43. Applications that work together?! by betterunixthanunix · · Score: 1

    You talk about application from different vendors working together as if it is some kind of new trend in computing that has never been seen before, which could not be further from the truth. Text-mode Unix programs could usually be strung together using scripts and pipes, and it was common and routine to do so. Some even wrote scripts that ran processes on multiple systems.

    The only thing that one needs to get this sort of behavior is a common interface. In the Unix command line, stdin/stdout was a common interface, and as long as a program was reading its input from stdin and writing its output to stdout, it worked together with other programs. On the web, the interface is a bit more complex, involving various languages and protocols, but it is still a common interface that everyone is programming to, which allows the applications to be strung together.

    It is not the "semantic web." The software has no insights into the semantics of what I want to do, and routinely I need to go 5 or 6 pages deep to find anything relevant in any of my searches, on Google, on Yahoo!, on my university's library search system, and so forth.

    --
    Palm trees and 8
  44. Accessibility? by The+Evil+Twin · · Score: 1

    Something completely ignored by this author is accessibility.

    There is no current solution for AJAX and people with disabilities. Creating this ideal client side view is completely shutting out anyone using a screen reader. Ideally, your view is built in such a way that it is easily rendered in both the server and client.

    Template Toolkit with Jemplate is an example of a solution to this issue. Using server side detection you can see if your client needs a server rendered view and if not, your templates are rendered on the client side.

    --
    --- tracer.ca
    1. Re:Accessibility? by SanityInAnarchy · · Score: 1

      Are you telling me that screenreaders are incapable of handling generated HTML?

      --
      Don't thank God, thank a doctor!
    2. Re:Accessibility? by The+Evil+Twin · · Score: 1

      I have not found one yet. Mind you I havn't looked hard. There is one open source one and Jaws (the most popular commercial one). Neither of which handle dynamic page content last I tested.

      --
      --- tracer.ca
  45. What's new is old is new again?! by FlyingGuy · · Score: 1

    I have been watching the web grow for years now. I have seen the pain and delight of several models for transacting things on the web, everything from movies to to down and dirty data entry.

    The problem is that I have yet to see an implementation through a browser that can challenge a native GUI implementation and yes this includes Sales Force, Google Mail, Google Docs and all the rest of them.

    The hugest problem is latency. Even sitting on a T1 they are still clunky and due to browser limitations and incompatibilities they all suffer from the most bizarre and twisted coding problems I have ever seen.

    CSS is STILL fundamentally broken and behaves erratically as evidenced by the box model, which you cannot to behave correctly browser to browser platform to platform.

    DOM still has really niggling and dumb problems after all these years as well.

    In the final analysis what we all want is a set of tools that will allow us to design a screen with a particular look and feel that will be presented exactly the same no matter where it is displayed.

    Back in the day we had dumb terminals that did little more then accept X,Y print it here commands and handled it pretty well. The advent of the GUI show the promise of what could be accomplished and much of it was realized by using the native components that were designed, text boxes, pull down lists, buttons, radio boxes, check boxes etc.

    Today you have to combine three very different styles of design and coding, they are HTML, CSS and Java Script to come up with anything that is remotely useful for doing anything more then displaying text.

    We need to glue all those together in a coherent manner that brings it to a true object model.

    Take for example the Box Model, these are normally represented by the DIV tag. Now the DIV tag has many modifiable properties, the border, the margins, the background, lots of stuff. But the problem is that many are those properties cannot be modified on the fly without having to make a modification in one or more of the three separate parts. To change the background I have to use Java Script to interrogate DOM to get to the right CSS selector and change that and my god what a pain that is! Would it not be simpler to just do this?

    ImgBox = Box.New([styleReference]);

    Further all since java scipt is loaded when the page is loaded it should be trivial to have static events pre-built for each component eg:

    function ValidateText(){
    if(value == NULL){
    Alert("This is a required field!");
    This.SetFocus();
    }
    }
    LastName = TextInput.New([StyleReference]);
    LastName.OnExit = ValidateText ;


    Then as the user goes along doing whatever it is they are doing, some even triggers a background change, which for this example is an image, then would it not follow that that the following call would be far more appropriate then what we do now?

    ImgBox.Background("/webroot/images/mygreatcorpimage.png");

    I understand that designers want things to be limitlessly fluid, but at some point you have to go back to the point of making proper objects and remove the utter randomness from it. ALL of this should be built into DOM instead of scattered across three desperate coding styles.

    Everything ends up in DOM but the problem is most of it is far to loosely coupled and cannot access the display engines of the platform as it should. I know this notion goes against what we have all grown used to but I feel that it must be accomplished if we really want the browser to function as it should or can.

    --
    Hey KID! Yeah you, get the fuck off my lawn!
    1. Re:What's new is old is new again?! by lkcl · · Score: 2, Informative

      The problem is that I have yet to see an implementation through a browser that can challenge a native GUI implementation and yes this includes Sales Force, Google Mail, Google Docs and all the rest of them.

      that's why i ported pyjamas to the desktop:

          http://pyjs.org/

      pyjamas-desktop basically rips out all of the javascript, and replaces every single javascript-based function with exact same corresponding functionality that manipulates the DOM model of the underlying technology.

      and i chose http://webkit.org/ as the DOM-manipulating technology.

      i _could_ have chosen XUL / Gecko, but it took so damn long to find Hulahop - http://wiki.laptop.org/go/HulaHop - that i had to go for webkit.

      i could have chosen PyKDE / KHTMLPart but it has very subtle bugs that require the entire KDE library to be compiled with c++ RTTI switched on. if it's switched off, the whole thing falls over.

      by porting pyjamas to the desktop, it's possible to make the same application run as EITHER a desktop application (and i don't mean "running as javascript under Adobe AIR") OR a web application.

      same source code. unmodified.

      it's very cool.

    2. Re:What's new is old is new again?! by lkcl · · Score: 1

      Would it not be simpler to just do this?


      ImgBox = Box.New([styleReference]);

      this is _exactly_ what GWT, Pyjamas and RubyJS/rwt allow you to do.

      actually it would, in pyjamas, be:

      from pyjamas.ui import Image

      i = Image("./icon.png")
      i.setStyleName("name-of-icon-css-style")

    3. Re:What's new is old is new again?! by SanityInAnarchy · · Score: 1

      The hugest problem is latency.

      Surely you jest. I use Gmail every day, and it's lightning fast on pretty much any connection. About as fast as I could ask for with the keyboard shortcuts.

      they all suffer from the most bizarre and twisted coding problems I have ever seen.

      Be specific.

      CSS is STILL fundamentally broken and behaves erratically as evidenced by the box model, which you cannot to behave correctly browser to browser platform to platform.

      Are you going to tell me that a native app has it any easier with cross-platform compatibility?

      If you're going to talk about a library, that's fine -- consider that there are plenty of libraries out there for javascript-as-a-client which make the CSS issue mostly go away.

      DOM still has really niggling and dumb problems after all these years as well.

      Like what? Any which aren't already abstracted away by things like jQuery?

      In the final analysis what we all want is a set of tools that will allow us to design a screen with a particular look and feel that will be presented exactly the same no matter where it is displayed.

      Incorrect.

      What I want is a set of tools that will allow me to design a screen with an independent look and feel, that will be presented exactly the way the user wants it to be.

      If I use ctrl+mousewheel to change the font size, your app should be able to handle it. That's actually a feature that's sorely missing from a lot of desktop applications.

      Today you have to combine three very different styles of design and coding, they are HTML, CSS and Java Script to come up with anything that is remotely useful for doing anything more then displaying text.

      It's called a domain-specific language. On the server, you most likely have to combine some form of SQL with your application, and when things go wrong, you'll want to be able to understand HTTP.

      HTML, Javascript, and CSS all do fundamentally different things.

      HTML is a markup language -- it does markup much better than Javascript does (with the DOM). Well enough, in fact, that at least a couple GUI toolkits allow you to use some HTML-like syntax for rich text.

      We need to glue all those together in a coherent manner that brings it to a true object model.

      You're making another large assumption -- that Object-Oriented Programming is the be-all and end-all of methodologies.

      To change the background I have to use Java Script to interrogate DOM to get to the right CSS selector and change that and my god what a pain that is!

      That's why we have jQuery.

      Would it not be simpler to just do this?

      ImgBox = Box.New([styleReference]);

      What's Box, and where does it get defined? How about styleReference -- how does that get defined? And how do I then take my ImgBox and insert it into the document? How do I assign all of the children of the old box to this new one?

      If styleReference was defined in CSS, then we have something that does what you want already. It's just as simple, but unlike your example, it actually works, and does cover all of the above:

      $('#my_div').removeClass('foo').addClass('bar');

      Further all since java scipt is loaded when the page is loaded it should be trivial to have static events pre-built for each component

      Depending what you mean by "OnExit", this does, in fact, exist already. Slightly different names and syntax, but the idea is the same.

      would it not follow that that the following call would be far more appropriate then what we do now?

      Not really. Again:

      $('#some_div').style('backgroundImage', 'url(/webroot/images/mygreatcorpimage.png)'{;

      I can save that initial reference and do it your way:

      var ImgBox = $('#som

      --
      Don't thank God, thank a doctor!
    4. Re:What's new is old is new again?! by Blakey+Rat · · Score: 1

      To change the background I have to use Java Script to interrogate DOM to get to the right CSS selector and change that and my god what a pain that is! Would it not be simpler to just do this?

      Or you could write:

      var obj = document.getElementById( 'desiredDiv' );
      obj.style.border = "3px solid black";

      Is that really so hard? If you have the border attached to a class, modify the second line to:

      obj.className += ' ' + 'desiredClass';

      And of course, using a library like prototype.js or jquery.js, both of those operations can ditch the first step and become even easier.

      Further all since java scipt is loaded when the page is loaded it should be trivial to have static events pre-built for each component eg:

      You can do that. Are you sure it's Javascript/DOM you're thinking of and not something else?

  46. Offtopic? by Anonymous Coward · · Score: 0

    Why is the parent post considered offtopic? Some moderator didn't read the article because it's obvious the author is a Python fanatic.

  47. Not even MVC by GrouchoMarx · · Score: 3, Interesting

    I have long argued that MVC doesn't even make sense on the web to begin with. MVC is a great architectural model for live interactive systems, but a web site or web app is not a live interactive system. It's an asynchronous challenge/response system.

    I blame Sun for completely abusing the term in their Java stacks (I think they called it "model 2"?), and Ruby on Rails for popularizing the wrong impression. MVC by definition requires a direct observer connection from View to Model. All web-MVC frameworks I've seen start with the initial statement that the Controller, not the View, is responsible for handling user interaction and communicating with the Model. Sorry, that's not MVC. It's not a bad model for the web, but it's not MVC. If anything it's closer to PAC.

    See the link above for a lengthier analysis and links to Wikipedia. :-)

    Really, the whole point of design patterns is to have a common vocabulary. How is that useful if you're going to bastardize your terminology due to stubborn ignorance?

    --

    --GrouchoMarx
    Card-carrying member of the EFF, FSF, and ACLU. Are you?

    1. Re:Not even MVC by Shados · · Score: 3, Interesting

      (I think they called it "model 2"?),

      Lets make things clear first: MVC model 2 has nothing to do with the original MVC, as you already pointed out. The original MVC isn't used much, not even in live interactive system anymore, so they reused the term, and clearly documented it (it made sense at the time: there is a model, a view and a controller, and its a strict design pattern, and the original MVC is rarely seen outside of legacy system and 4G tools that die faster than they pop up).

      Otherwise, you end up with a lot of terms that eventually all mean the same thing but not, and it is even more confusing. The main issue came with people thinking that MVC is ANYTHING with a model, a view, and a controller. That put aside, there's no abuse of language here. There's MVC, and MVC Type 2, and if you're talking about the web, aside in extremely rare scenarios, you're always talking about Type 2, so its redundant.

      Still, that doesn't change much... MVC, because of frameworks like Struts and Rails is seen by the unwashed mass of developers as the "end all be all: if its not MVC, its not a well architecture application", totally ignoring all of the alternatives. Now THAT is a problem. MVC Type 2 is only good for a subset (large, but still just a subset) of web apps.

    2. Re:Not even MVC by glitch23 · · Score: 1

      Really, the whole point of design patterns is to have a common vocabulary. How is that useful if you're going to bastardize your terminology due to stubborn ignorance?

      I agree but I'm not sure if we can make a difference. The same thing happened with measuring data capacity. We now have bibytes to measure data capacity in base 2 and regular bytes to measure in base 10 just because people had trouble with the original. They bastardized the terminology and ironically, what changed was the original terms now refer to the bastardized form (base 10 instead of base 2) and the new terms refer to the original base 2 form.

      --
      this nation, under God, shall have a new birth of freedom. -- Lincoln, Gettysburg Address
    3. Re:Not even MVC by booch · · Score: 1

      Um, actually the SI units (kilo, mega, etc.) existed before computer geeks started using them in the base-2 sense. So the computer geeks are the ones who bastardized the terminology in that case.

      --
      Software sucks. Open Source sucks less.
  48. I'm confused. by SanityInAnarchy · · Score: 1

    most scripting languages discourage abstraction because they aren't set up to enforce OOP concepts.

    Wait, what? It's not possible to encourage something without enforcing it?

    Javascript doesn't force anything, and yes, you can create BASIC-like spaghetti. But a bad programmer can create BASIC-like spaghetti in any language. A good programmer will take the time to learn Javascript's prototypal model.

    --
    Don't thank God, thank a doctor!
    1. Re:I'm confused. by badkarmadayaccount · · Score: 1

      I dare you to try that in Ada. *ducks*

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  49. bigger discussion by Yonkeltron · · Score: 1

    this topic merits a bigger discussion! toolkits like sproutcore and objective-j are changing the game, not just blurring the lines...

    --
    Keep the faith, share the code
  50. Real Programmers by A12m0v · · Score: 1

    program right down on the bare metal.

    --
    GENERATION 25: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
  51. I developed a framework to avoid this problem by Anonymous Coward · · Score: 0

    It is an opens source project and could be ported to any language around : http://arv-wf.org/

  52. Yawn... by mrboyd · · Score: 1

    I stopped reading when I realized the author believed the MVC pattern was the one and only true way and that PHP was the only "web programming" language.

    The authors is confusing architecture issues with language issues. Javascript has serious shortcoming, xmlhttp blows due to left and right incompatibilities, and PHP's API design by committee makes it a chores to work with but seriously I can't see the difference between a full blown "AJAX" interface doing JSON call to a web-service and a fat client doing RPC call with CORBA or some proprietary tcp/ip interface*.

    Aside from the fact that all this is nothing more than a rape of the HyperText Transfer Protocol and the HyperText Markup Language which were never designed for it in the first place there is absolutely nothing new. If anything xml rpc at least helps bringing the architecture almost back in sync with what we already had 30 years ago with fat clients...

    If I still had them around I'd get my CS book from 15 years ago and show you that all the patterns you need are already in there.

    (* CORBA is dead thanks god! )

  53. wow, cool! by lkcl · · Score: 1

    i think.... i think if you turned every assumption about what you _believe_ i believe into its opposite, you'd come close to what i think.

    can i suggest, respectfully, that you re-read it without making any assumptions, and then, perhaps, give us the benefit of your experience by mentioning what alternatives there are to MVC?

    i would be delighted to analyse the alternatives.

    l.

    1. Re:wow, cool! by Shados · · Score: 1

      give us the benefit of your experience by mentioning what alternatives there are to MVC?

      You...you're joking right? You're not seriously asking that I hope?

    2. Re:wow, cool! by Anonymous Coward · · Score: 0

      Joking is not the word. But I'm sure it comes close. Have you read his reponse to the 'Yawn' post at all?

      I'd read lkcl's response very much as the polite way to say: "If you can get all te messages backwards, you must be braindead. I'm curious whether you'd even be able to substantiate that vague complaint about MVC anyway"

      Anyway... Britts and their dry whits

    3. Re:wow, cool! by lkcl · · Score: 1

      i have to give him the benefit of the doubt that he genuinely has something to contribute. wouldn't be fair otherwise.

    4. Re:wow, cool! by lkcl · · Score: 1

      kinda... but in a politely ambiguous way, that doesn't slam the door in the guy's face :)

    5. Re:wow, cool! by Shados · · Score: 1

      Ok good :) I wasn't sure if that question was following the rest of the post, or if you were among those who seriously thinks there is nothing beyond MVC. Almost got a heart attack. Thanks for the clarification :)

    6. Re:wow, cool! by lkcl · · Score: 1

      *grin*.

      it was a bit of a shock that the article was accepted, that _never_ happens.

      i genuinely actually wanted to hear what alternatives there were to MVC: i just picked MVC as a good "hook" against which to hang the issue of having to do duplication of input validation, and how if you have it written in a language that can be compiled to javascript, it takes away that pain.

      if it wasn't MVC, i would have picked whatever-it-was.

  54. Re:MOD THIS IDIOT UP!! by jlowery · · Score: 1

    Okay, I admit that your post is much funnier than my original. Feel better now?

    Please, moderators: let's give this man the attention he deserves!

    --
    If you post it, they will read.
  55. Blurred understanding: MVC is recursive, not flat by One+Photon · · Score: 5, Informative
    I don't understand this concept of MVC "blurring".

    For every instance of MVC, the View component itself can be a complete, nested MVC unit or even a collection of MVC units. This is the nature of the MVC design pattern.

    For example, take the humble HTML button. It is its own complete MVC machine. It has a Model (button state, color, size, etc) and controller logic that responds to events (render "down" state, "focus" state, etc.). And of course it has a graphical View.

    This MVC button machine can delegate events and control to a parent MVC machine, such as an HTML table.

    Delegation continues to parent MVCs at ever higher abstraction layers until finally we're at the level of browser-as-complete MVC machine. The next higher layer involves the server back end, and now the browser is the view component of the server/browser abstraction layer.

    If the server implements its GUI interface layer as servlets, for example, then the servlet/browser is a complete MVC machine. But this layer still does not contain the core business logic, since for any well-designed (non-trival) server it should be possible to completely replace the GUI layer (such as Struts, etc) with another GUI framework without affecting the core business logic/data. And so the browser/servlet layer becomes the view component of the highest MVC layer, which has the core business logic as the model and controller.

    The MVC pattern supports a recursive tree of MVC state machines, typically managed as parent-child relationships. Low level business logic, such as preventing alpha characters from being entered into a SSN text input field, can be implemented directly in the input field widget's MVC machine. High level business logic/data, such as validating and submitting a complex shopping order, takes place on the highest level MVC state machine.

    Business logic/data, like any complex computer science problem, can consist of many different levels of abstraction. It is absurd to think that the business logic of a non-trivial business application can be neatly separated into just three components of a single MVC state machine existing at a single level of abstraction. And so I just don't get this idea of blurring, unless it is just one person's understanding of hierarchal abstraction layers that is blurred, which has nothing to do with a limitation of MVC.

    The challenge is in how to create code on the browser that fully leverages the MVC pattern. If code is to be as well organized, refactorable, and maintainable on the browser side as it is on the server side, an MVC machine needs the full OOP paradigm for expression. That's why tools such as GWT have become so attractive. Tools as these make it practical and affordable to distribute all business logic, high and low, to the proper layer of abstraction -- be it at the widget level, tile level, page level, server level, system level, or enterprise level.

  56. JavaScript is incredible by rodentia · · Score: 1

    I agree that JS is an incredible language. It is incredible that it has survived all the twists and turns of its development and dubious implementations. JS is frankly ass. Its DOM is an abomination and its semantics are cluttered and redundant. The scripts are crappy by necessity.

    It continues thanks to inertia in browser development and the determination of fresh-minted programmers to remind themselves how smart they are by making their work hard. The toolkits exist because the work is soul-killing without them. They don't represent interest in JS so much as interest in making it go away.

    I don't quite understand the role of lambda calculus for an ostensibly object-oriented language like JS, either. If it is a functional programming paradigm you are after, XSLT is an order of magnitude more coherent a language, in spite of its verbosity.

    --
    illegitimii non ingravare
    1. Re:JavaScript is incredible by acidrainx · · Score: 1

      The DOM isn't part of the language. It's an API and a poorly implemented one for that matter. I'm talking purely about the language.

      Your argument is bridged entirely on the inadequacies and shortcomings of various browser (primarily Internet Explorer) implementations of an API. You have no argument against the language itself other than your dislike of lambda calculus in object-oriented languages. Yes, the DOM sucks, but don't blame the language.

      Besides, with things like Rhino around, the language has a chance to move beyond the browser and be appreciated for what it is instead of its messy roommate (the DOM).

    2. Re:JavaScript is incredible by Anonymous Coward · · Score: 0

      I see.

      So if somebody implemented a crappy library for your programming language, your programming language will automatically become crappy.

      So if somebody doesn't understand how anonymous functions are saving time for JavaScript programmers, the "functional program" part of JavaScript becomes automatically useless. And for added bonus, since JavaScript is allowing you to write in functional style, OO style and structural style, this programming language is impure and is unworthy of existence. By the same argument, the Linux kernel is also unworthy of existence because it's written in C, also an impure language.

      You really do learn something new every day.

  57. Must I ... by PPH · · Score: 1

    ...turn on Javascript to read TFA?

    --
    Have gnu, will travel.
  58. dotNET and silverlight is getting there by cheekyboy · · Score: 1

    I know most people would not agree, but MS goal was to create one language/apiset for the dekstop app / server code / client side browser interfaces. dotNet and Silverlight2 which uses .net in under 8meg does all this.

    If only sun made a fully featured, but small foot print, less than 4meg download JVM, it could have done it and be standard in all browsers, but no, now people had only viable choices because JS was the only choice.

    Just having ONE language across all three wide layers is a great ideal.

    --
    Liberty freedom are no1, not dicks in suits.
  59. So interface designers need to know Python? by Nycran · · Score: 1

    If the entire view is designed in a proper language like Python, doesn't that mean that interface architects and graphic designers (who like creating interfaces) will also need to know Python? I thought one of the most important aspects of the MVC approach was that programmers could focus on the data and logic, and interface people could focus on the view. I say no to this approach.

  60. MVC is good for outsourcing by Anonymous Coward · · Score: 0

    If you're going to have a third party make write code for you and you have no idea what kind of crap code you're going to get in return, setting requirements like following the MVC model is important. Otherwise, endless frustration and delay in schedule can ensue.

  61. well duh by circletimessquare · · Score: 1

    like they are going to stop there

    why do you think google wants to build anothr browser? what's the point?

    --
    intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
  62. Huh? by symbolset · · Score: 1

    It's a common misconception that people are trying to shoehorn everything into browsers. They're not.

    The heck they're not. And for good reason.

    The browser has all of the display goodness most programs need, and the network makes a nice channel to throw it all through. If your user-centric program (not a driver, kernel or os-specific utility) isn't testing the limits of 3d hardware there's no excuse to not have the backend be a web server and the application itself being a link to the specific port on localhost.

    Operating systems are cute and all, but local apps are not cross platform and they're hard to port. Apps that dish a web interface are tons more portable.

    --
    Help stamp out iliturcy.
  63. it's a poor workman who blames his tools by mt1955 · · Score: 2, Insightful

    php being knocked like a GOTO statement *sigh* the problem is not the language but how it's used.

    1. Re:it's a poor workman who blames his tools by Nycran · · Score: 1

      Agreed. I had the same reaction. Python and ruby fanatics are like religious zealots and can't see the forest for the trees. I love PHP and I'm not ashamed of it. It's fast, flexible, rich and diverse. Sure, a bad coder will make a mess, but then a bad tradesman will make a mess with a hacksaw too. It's not the hacksaw's fault. You can use PHP for pretty much anything. That being said, I wouldn't use it to code a website for a bank, but for 99% of websites, PHP does that job well and that's why it's so damn popular.

  64. Analogies of this discussion by mahadiga · · Score: 1

    JSP versus Servlets
    Static binding versus Dynamic binding
    XML Attributes versus XML Elements

    --
    I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
  65. MVC Useless as EJB by startxxx · · Score: 0

    MVC was just a hyped way to do simple things to sophisticated that the end result would have to be something very simple. Just like EJB. It's the cognitive fallacy of believing your code has more value when it has more functionality (more than your mind can hold) Keep it simple, stupid! I never bothered to develop in both ugly environments.

  66. I hate to say it: To many n00bs voicing semi-facts by Qbertino · · Score: 1

    This meta-article and the whole style of discussion proves it once again in so many ways: To many n00bs claim to much of a say in Web-developenent. Especially among the ones programming a lot but actually knowing squat about web-developement and it's specialties. That something like this goes as an expertise story shows the downside of the field. It's like the entire imature discussion, indifferent raving and bashing about Ajax or RoR or some other recent fad in the field.

    To clear a few things up

    1) MVC is a construct to describe the most basic setup when using a seperate persistance layer in an end-user application. The concept has been around for at least 15 years and is most certainly *not* limited to web-developement. On contrary, it's basically a relatively simple model for 90ies style GUI DB Apps. For modern web-developement fanatically sticking to MVC is a severe restriction, as in a web-app with seperate persistance, the controller - due to stateless connection to the UI (Browser) - needs to be seperated into at least 2 tiers to make any sense at all, thus turning a pure 3-tier MVC approach into more of a hinderance than a support in webapps.

    2) Moving the view layer into client-side logic (if it's in MVC or something else is of no concern) is nothing new. The concept has been around since the dawn of computer networking and is - of course - also a natural progression for web-apps and a growing availability of umbiquious zero-fuss rich-client funtionality (read: non-trivial standardised JavaScript client-server stuff (aka 'Ajax') nowadays works in most Browsers). In many ways the pure server side stuff in web-logic of the last 10 years was an exception and intermediate solution paid for with huge server overhead in order to offer statefull sorta-kinda-GUI-apps in software purpose built for something completely different: Reading documents (aka 'Browsers'). Java was an attempt to get the real thing but it didn't catch on for various reasons. The main being crappy plattform deployment to end-users. That's why - strangely enough for Java enthusiasts - Java still is competing with Flash in that respect.

    3) Client-side logic doesn't break MVC. As explained above, MVC has nothing to do wether the app resides on the client, the server or is spread out between. In fact, the most sophisticated frameworks that rely on rich-client functionality do that seperation as the most natural result. Openlaszlo (that which Adope ripped off in Flex) and Tibco GI come to mind as prime examples for that. And both have been around for quite some time now.

    As a senior web-developer with solid experience I love the fact that the entire field is very good at regularly offering solid ripostes of result oriented work to any academic arrogance the field of computer science and programming. Thus the ongoing success of PHP-based web-apps. However, it appears that this is taken as an excuse - by professionals just as much as novices - to babble out and present anything they ran accross and haven't fully looked into yet as the newest insight in the field. I sometimes wish people would stop, do some research and then think before they post an opinion that isn't even thought through to the end. Customers and novices interested in the field for whatever reason are confused enough as it is.

    My 2 cents.

    --
    We suffer more in our imagination than in reality. - Seneca
  67. Cross-platform, Cross-Desktop by lkcl · · Score: 1

    One thing i specifically left out of the article was Pyjamas-Desktop - http://pyjd.org/

    it's a port of the pyjamas API to "straight" python, and so the EXACT same app, from the exact same source code, runs natively under the standard python interpreter.

    there's no reason why GWT's libraries should not, likewise, be ported to the desktop.

    there's no reason why pyjamas should not be ported to c++.

    there's no reason why rubyjs / rwt should not be ported to the desktop.

    the nice thing that pyjamas-desktop shows is that, thanks to the abstraction layer using webkit underneath, and webkit being available for qt, gkt, wx-widgets and also (as shown in google chrome) google's "silk" drawing API, the pyjamas API is toolkit-independent.

    and, again, it can also sit on top of gecko, thanks to Hulahop.

    in this way, you get a user-interface applications development widget set and framework that is os-independent, language-independent, browser-independent, platform-independent and widget-set-independent.

    i don't know of *any* UI framework that comes *remotely* close to being able to claim that, yet pyjamas + GWT + rwt is *well* on the way.

    also, regarding the "incompatibilities" issue: pyjamas, GWT and rwt all support a mechanism to "overload" classes and class functions with browser-specific code, on a per-class and on a per-function basis. so, it *can* be done.

  68. nice, but ... by Lazy+Jones · · Score: 1
    It's a nice simple UI/API, but still way behind the capabilities of current native desktop systems/UIs (e.g. 3D) and much slower.

    We were so close to being reasonably cross-platform-capable at very high performance with gcc, POSIX, OpenGL and UI toolkits like Qt. Then AJAX happened, *sigh* ... Now everyone is betting on clunky interpreted languages (= more bugs visible only at runtime and 10-50x slowdown) in- or outside browsers and whatever stripped-down UI libraries are available for them.

    The tragicomical highlight is the fact that FF itself works rather fine and is reasonably fast on all platforms (plugin bugs like Adobe's notwithstanding) and still people apparently don't see it as a good example for cross-platform coding.

    I don't know anymore what drives this industry. Can it really be the fact that with whatever-on-rails you can code the 1000th blog or social networking site in 15 minutes? Instant gratification and zero accomplishment being the new trend in programming?

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  69. This could work for you by Anonymous Coward · · Score: 0

    Solves a LOT of the issues you mentioned above...
    Rails(or php/asp..etc) + RubyAMF + Flex - deploy to browser... or Desktop via Air. Yes - I know.. great isn't it.

  70. Re: Is this Revalation by Douglas+Goodall · · Score: 1

    "three heads breathing fire, half a dozen plugins", sounds like something Daniel saw in a dream/vision. It just precedes the end of the known world. I guess I am joking, but I was a fan of the KISS principle and it seems flexibility leads to infectibility these days. HTML had a certain elegance, and Dynamic HTML started a slippery slope that has brought us to a web made of gobbletigoop.

  71. AJAX SUX by Anonymous Coward · · Score: 0

    AJAX and javascript suck. Only no-programming hacks use them. Convert to the Server Side!

    1. Re:AJAX SUX by Anonymous Coward · · Score: 0

      Real programmers don't write AJAX, real programmers use a butterfly.

  72. Native Client by Lazy+Jones · · Score: 1
    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
    1. Re:Native Client by Rysc · · Score: 1

      This looks interesting. I've only taken a quick look so I could be off-base here, but

      1: This doesn't solve the security problem

      2: This still suffers the cross-platform compatibility problem.

      3: No matter how perfect a solution this is, the web UI remains the reality today. Perhaps if this is as good as the link suggests it will one day supplant the web UI for network centric apps, but today it is nothing and makes no difference to my earlier comments.

      I'll look at it more after I've read the pdf. It's certainly cool and I like cool, new things.

      --
      I want my Cowboyneal