I have seen some absolutely terrible and incorrect explanations of web application layer separation. Most of them are illogical and filled with mixed ideas due to semantics and trendy terminology used by "gurus". Many are propagated by lack of knowledge and understanding of PHP, the most popular server-side language for the web today. The design and architecture of open source content management systems is also responsible since they are how many get their start in web development.
Even Wikipedia is filled with stupidity like this:
There are three layers to be concerned with and nothing more. You can get as granular as you'd like but for the web these three are the only ones worth talking about.
Content = strings, binary media eg. images video
Presentation = html, css, javascript, custom template language
Business logic = code, programming language, SQL, datastore
"Structure" is an abstract and not necessary because it brings with it other necessities like "page" or "document", things that are abstracts in a web browser. It's old thinking to use this type of semantic difference for something as simple as presentation. It confuses designers and developers into thinking that there is another layer, something called a "layout" or "page", terminology that comes from the print industry.
CMS's even the popular ones are built incorrectly because of these poor explanations. They do not properly end tasks and hand off the processes from one layer to the next correctly. This is why you find HTML in code and business logic. There are programming patterns like Model-View-Controller that help control the process and exchanges. But all too frequently the design pattern gets lost or buried in the complications and complexities of over-engineering. Over-engineering is when the software creators seek to include every possible scenario for requirements now and in the future. They heap on the "flexibilities" and leave it up to the end-user to later sort them.
PHP confuses the entire web developer community because it is both a programming language for business logic and a custom template language. This makes developers wonder why they are not seeing separation in their processes. Worse is that they cannot see mistakes made in those processes and the mistakes are seen as harmless because of the nature and characteristics of the PHP language. Developers coming from other languages usually see this as a problem that needs to be fixed. They are responsible for many efforts to remove this confusion with creation of overlaying template languages like Smarty, Twig and dozens of others. These fixes are not necessary and the web would be better served if their creators would spend more time educating themselves and others about PHP's roots as a template solution.
The situation is exacerbated by poorly written and ill conceived Wikipedia pages that are obviously written by old school computer scientists that conflate print media semantics with computer programming and the web browsers environment.
https://en.wikipedia.org/wiki/Separation_of_presentation_and_content
https://en.wikipedia.org/wiki/Presentation_logic
One of the easiest ways to get proper separation is to practice minimalism in design and architecture. This is what I have done with the Content Connection Kit and why it's different from other content management solutions.
Dated and Confused
Even Wikipedia is filled with stupidity like this:
HTML is mainly used for organization of webpage content, CSS is used for definition of content presentation style, and JS defines how the content interacts and behaves with the user. Historically, this was not the case though. Prior to the introduction of CSS, HTML performed both duties of defining semantics and style.See how the use of "webpage content" and then following with "presentation style" and then "content interacts" is conflating and confusing web browser environment and events with the presentation of content and the content itself. How this obvious web programming paragraph made it into a computer programming section is also a bit suspect.
It's Simple
There are three layers to be concerned with and nothing more. You can get as granular as you'd like but for the web these three are the only ones worth talking about.
Content = strings, binary media eg. images video
Presentation = html, css, javascript, custom template language
Business logic = code, programming language, SQL, datastore
What's in a name?
"Structure" is an abstract and not necessary because it brings with it other necessities like "page" or "document", things that are abstracts in a web browser. It's old thinking to use this type of semantic difference for something as simple as presentation. It confuses designers and developers into thinking that there is another layer, something called a "layout" or "page", terminology that comes from the print industry.
Content Management Systems
CMS's even the popular ones are built incorrectly because of these poor explanations. They do not properly end tasks and hand off the processes from one layer to the next correctly. This is why you find HTML in code and business logic. There are programming patterns like Model-View-Controller that help control the process and exchanges. But all too frequently the design pattern gets lost or buried in the complications and complexities of over-engineering. Over-engineering is when the software creators seek to include every possible scenario for requirements now and in the future. They heap on the "flexibilities" and leave it up to the end-user to later sort them.
PHP
PHP confuses the entire web developer community because it is both a programming language for business logic and a custom template language. This makes developers wonder why they are not seeing separation in their processes. Worse is that they cannot see mistakes made in those processes and the mistakes are seen as harmless because of the nature and characteristics of the PHP language. Developers coming from other languages usually see this as a problem that needs to be fixed. They are responsible for many efforts to remove this confusion with creation of overlaying template languages like Smarty, Twig and dozens of others. These fixes are not necessary and the web would be better served if their creators would spend more time educating themselves and others about PHP's roots as a template solution.
Bad information
The situation is exacerbated by poorly written and ill conceived Wikipedia pages that are obviously written by old school computer scientists that conflate print media semantics with computer programming and the web browsers environment.
https://en.wikipedia.org/wiki/Separation_of_presentation_and_content
https://en.wikipedia.org/wiki/Presentation_logic
Minimalist design
One of the easiest ways to get proper separation is to practice minimalism in design and architecture. This is what I have done with the Content Connection Kit and why it's different from other content management solutions.
Comments
Post a Comment