</p> is Retarded

20140427     TerraHertz     http://everist.org
(A continuation of Retarded ideas in Computing science)

This is refering to the Paragraph closing element </p> in HTML.
More generally, the insistence that all block elements of HTML must have explicit closing tags.

Refs:

  1. http://www.w3schools.com/html/html_paragraphs.asp
  2. http://www.w3schools.com/TAGS/tag_p.asp

  The <p> tag defines a paragraph.
  Browsers automatically add some space (margin) before and after each <p> element.
  The margins can be modified with CSS (with the margin properties).

  HTML Paragraphs
  Paragraphs are defined with the <p> tag.
  Example
    <p>This is a paragraph</p>
    <p>This is another paragraph</p>

  Don't Forget the End Tag
  Most browsers will display HTML correctly even if you forget the end tag:
  Example
    <p>This is a paragraph
    <p>This is another paragraph
  The example above will work in most browsers, but don't rely on it.
  Forgetting the end tag can produce unexpected results or errors.
  Note: Future version of HTML will not allow you to skip end tags.
"Future version of HTML will not allow you to skip end tags."
They wish! And will attempt to force on us.

In earlier HTML standards, the <p> tag was a marker for the start of a paragraph. There was no need for any 'end of paragraph' tag, since obviously the next paragraph terminated the current one. Also when typing HTML by hand, who wants to have to put in (or even see) all those superfluous </p> tags?

Now the W3 group is saying that paragraphs are a block element, and no blocks are allowed to be implicitly terminated. Elements can be either 'empty' (act exactly where they are encountered) or define a block that must have explicitly tagged start and end points.
Therefore we must now end all paragraphs with </p>.

Yet intuitively, 'new paragraph' should be an immediate acting element, right where it occurs.
The origin of the misconception arises from one small detail in the definition of '<p>' — "add some space (margin) before and after each <p>". So there's something that has to be done at the end of the paragraph (even though usually this would be nothing, since in good practice following elements would take care of their own spacing needs.)

Apparently the idea that there may be action to be taken at the end of a paragraph, was (mistakenly) conflated to an insistence that paragraphs therefore should be explicitly delimited at their end. Instead of simply allowing implicit termination at the occurence of another paragraph or the document end.

This insistence is retarded, and pointless. It's not as if 'paragraph' is a member of some list of paragraph-like entities, resulting in ambiguity of when an actual paragraph may end. There's just paragraphs - a unique entity type. Each paragraph continues until the next paragraph begins. Don't try to pretend it's more complicated, and the code can't tell exactly when a paragraph ends.

Trying to insist that paragraph markers are really block delimiters is also a fundamental misunderstanding of what text actually is. It's a consequence of trying to impose a hard dividing line between the 'text' and the format control elements. There's also a (miss-)conceptual connection here to the avoidance of Tab, Newline and white space functionality via single characters.

Really, there's no such sharp divide. In practice the boundary is fuzzy, so much so that one can argue it's all format control, or all text. The fuzzyness is a benefit, not some flaw that has to be rigorously defined out of the standards.

Consider: is the byte 0x61 simply the letter 'a' that occurs at one point in the text stream, or is 0x61 announcing the beginning of the block that consists of the glyph 'a'?
So by the reasoning that blocks should be delimited at start and end, shouldn't all characters consist of start and end markers?

Of course not, that's an absurd and impractical idea. But so is insisting 'new paragraph' must be delimited at both start and end.

Perhaps that stupidity arises from the lack of a 'new paragraph' code in the ASCII table, so in HTML it exists only as the code syntax "<p>". But it could equally well have been implimented as an extended character like '&mdash;' or a command like '&nbsp;', or something behaving more like the 'new line' '<br>'.

In fact '&nbsp;' and '<br>' are exactly what '<p>' should have been implemented as — an immediate-acting atomic text formatting element. Anyone who tries to argue that HTML should not contain such things, had better insist that '&nbsp;' and '<br>' should be removed as well.

Really the syntax of insertion is irrelevant - 'new paragraph' is a text element that acts at the point where it is encountered.

Same as the '<br>' element: (Same refs as previous quotes)

  HTML Line Breaks
  Use the <br> tag if you want a line break (a new line) without starting a new paragraph:
  Example: 
    <p>This is<br>a para<br>graph with line breaks</p> 
  The <br> element is an empty HTML element. It has no end tag.

If a paragraph start tag is also used to impose block formatting (eg <p align=right> ) then that block can simply be assumed to continue until either the next <p> or the end of document.
The same as 0x61 means 'display an 'a', until the next character.'

The </p> stupidity is a case of letting the syntax fool you about the philosophy.
Single letters naturally appear to be atomic elements because the syntax doesn't allow any block-like adornments within the the coding of the characters. You can't say "color=red" some part of the way through the code for 'a'. That some people somehow began to think paragraph markers are not atomic, is perhaps mostly due to omissions in the underlying (ASCII/Unicode) character encoding scheme — there are no such atomic representations for 'new paragraph' (and several other things that should be atomic.)

Aside: Ah but it turns out you can define layout changes within single characters. See: Is it possible to apply CSS to half of a character?
So now how is a character logically different from a block?
A: it isn't really. We just agree to not bother with explicit block-end syntax for characters. Thank God. Because to insist on 'character-end' tags in the syntax would be monumentally retarded. Though to allow such a syntax optionally, could be quite useful. Something that said 'actually, that character hasn't ended yet, and meanwhile here is some more code that modifies it.'

Same thing for <li> list items. It's stupid to insist on a terminating </li>, and in traditional HTML there's no such need. But of course as the madness of nit-picking academia creeps further into HTML and ruins it more, in the HTML5 standard list-items are supposed to be terminated with </li>.

That's no reason to pretend that <p>, <li>, etc, elements can not be accepted as being naturally atomic, ie able to act at a single point in the text stream. Even if that involves beginning a new block. Any persistent effects related to starting a new block can simply be terminated on encountering the next block that obviously terminates the current one.

In fact there are quite a few format control elements that are (or should be) considered as 'point of occurence' actions, just the same as all the printable characters are. Even though in actual fact, the printable characters really do create 'blocks', containing specific non-zero size graphic elements, that implicitly self-terminate.

But I won't list them here, as that's another topic — the question of what should be included in an underlying text encoding scheme.

Anyway, my suggestion: everyone who hand-codes HTML should simply refuse to use </p> tags. Anyone writing software that auto-generates HTML should remove </p> from their code's output. Same with </li>. Also could coders building web browsers please, please ignore demands to make browsers drop support for implicitly terminated <p> and <li> elements.
Let the W3C committies blow their silly </p> soap bubbles to no effect.

Just say no to nit-picking moronic academia.


PS. If I were to put on my conspiracy theory glasses, I'd say the </p> idea has a lot in common with the movement to obfuscate and ultimately eliminate accessibility of raw URLs from browser address bars, and Google's attempts to depreciate simple linking from web pages to other sites. All of these changes have a similar effect — they make the web less functional as a medium of free information exchange, less usable by ordinary people to publish, exchange and seek ideas and opinions. Anything that moves HTML away from a syntax that can be relatively easily typed up directly by humans, and instead into something fit only for automated generation by software tools, is such a bad idea that one has to consider the motivation may be hostile.
And unfortunately these days, it's clear there are powerful groups hostile to the continued functioning of the Net as we know it.

Burying the URL
http://www.allenpike.com/2014/burying-the-url/
https://news.ycombinator.com/item?id=7679575

Google trying to stop people posting links to other sites
http://jeremypalmer.com/post/86123982870/google-is-breaking-the-internet
https://news.ycombinator.com/item?id=7763923 (A Google-PR-droid says it isn't so. Few agree.)
https://news.ycombinator.com/item?id=7766296