Hacker News new | ask | show | jobs
by camwest 5242 days ago
I'm confused. MVC wasn't created for web 1.0 page/post programming. It was created for Desktop applications which are very similar to todays front-end heavy applications.

I think the pattern you're referring to is more like a Model2 (JSP/Rails) style pattern.

2 comments

MVC, to my knowledge, was created for Desktop Application but the original scoped was limited to one widget.

For example: There is one widget (let's call it a Table) that displays data. The breakdown is as follow:

Model => Data View => Table Controller => Something that updates view based on changes in model (undefined originally)

Even if it wasn't limited to one widget, it was limited to a one simple View of the app (the other popular example is to use the DocumentWidget and DocumentModel "real-life" sample).

The original MVC was definitely not well-thought for rich desktop application PLUS automated testing with limited dependency to the Presentation layer (or view).

I believe Java SWING library utilizes MVC model at the widget levels.

Yes I understand that MVC predates the web, but it's surge in popularity was definitely from it's adoption as a best practice for web development and the web for the most part took the traditional view of MVC. That being said it did see some popularity in many imperative languages for desktop application but nowhere near it's popularity after the web. But I would say it and Event/Widget style UI's where neck and neck until the web's explosion.

The thing is now we try to explain evented systems in terms of MVC and I believe that we are trying to force the definition when what we are really trying to say is separation of concerns. Here is a good thread from that period that goes over how the two became jumbled together: http://c2.com/cgi/wiki?WhatsaControllerAnyway it's long the tldr; is smalltalk took the traditional view that controllers are independent of UI, they don't even know what the UI will look like. Where widget based systems such as swing where utilizing the same definition, but yet widgets where tightly coupled to the view they control by being the intelligent manipulators of a discreet view, but proper separation is observed in that all view elements exist in a HTML (or other UI) files, and the controller is a code-behind file, together they represent a discreet element.

Traditionally, this has not been considered MVC until the web UI started moving back to the client and now due to MVC achieving almost religious omnipotence people are wary of something not being MVC even if they have to make the definition match the practice.

on an interesting side note, I often wonder had MVC been as popular before the web, as it was after the web, would an event model have been chosen for the browser?

but yet widgets where tightly coupled to the view they control by being the intelligent manipulators of a discreet view, but proper separation is observed in that all view elements exist in a HTML (or other UI) files

Sorry to reply to my comment but it is too late to edit it, on the above quote, I realized that I jumped around and it reads like I am implying that swing uses HTML, that was not my intent, I jumped to HTML in my mind because I was thinking about a pure view technology which HTML is probably the best example, I mixed thoughts there but it was not my intent it would have been more proper to say like HTML not HTML as it reads like swing utilizes HTML as it's view technology which was not the concept I was trying to convey.