1. 44

  2. 26

    I find the use of “formal” here fairly disturbing; as far as I can tell there is nothing “formal” about this document, it is just an informal specification that is backed up by a careful experimentation and experiments. Words have a meaning, a “formal specification” is a mathematical description, and we have much to loose by blurring the distinction between formal and informal specifications.

    1. 24

      This word in relation to engineering specs has looong since departed from its scientific meaning, so there’s hardly any confusion. To an engineer the word “formal” means “normative” and “complete enough to build an independent implementation”.

      1. 2

        I am unable to find any support for this mode of use of “formal specification” by, say, doing a google search – they all point to the “mathematical description” notion, for example Wikipedia or the C2 Wiki. Do you have examples online of engineering communities using the sentence “formal specification” in the sense you propose?

        1. 11

          You won’t find any support of such sort precisely because “formal spec” is not a formal term in engineering. As soon as you start looking for a definition, of course you’ll only find the formal mathematical one. Which shows the difference in approach rather neatly, doesn’t it? :-)

          The best I can offer is the very fact that you have an article from an engineer using these words without any second thoughts and another engineer saying he’s not confused in the slightest.

          1. 4

            It is precisely the role of dictionaries to list the meanings of a word according to their usage, and not some abstract notion of what it should mean. Admittedly, dictionaries that are informed of specialized usage in specific professional areas are less common. But even without dictionary entries, you could hope to find examples of uses of the word in the wild, in online discussions between engineers – and I didn’t, but I may not have looked for the right thing. Discussion forums, or maybe articles in technical magazines for example, which should reflect the way communities speak – I have briefly looked for technical articles aimed a engineers rather than scientists, but again “formal spec” was always used in the mathematical sense above.

            That said, the anecdotal evidence you provide is already interesting, thanks.

            1. 3

              Technical jargon has a way of becoming colloquialized over time. I’ve always found it interesting, and even more interesting are the ones that bother me. But not all of them do. This “formal” one doesn’t (although I probably would have just written “A specification for …” and dropped the adjectives), but the colloquialism “NFA” does, for example. (“NFA” in popular usage can mean “an implementation strategy for a backtracking regex engine that attempts to solve a NP-complete problem.” Which is completely nonsensical, but like with most jargon-turned-colloquial, it’s pretty easy to see how this may have evolved.) I tend not to go out of my way to correct usage unless I think there’s a key misunderstanding at work. Otherwise, it’s almost always a waste of time in my experience. Words will evolve and change meaning whether we like it or not.

              What are some other examples?

              1. 3

                the role of dictionaries to list the meanings of a word according to their usage

                at the specific time the dictionary was written

                Language evolves; Old English, Middle English, and modern English are all different. Words and meanings change and evolve over time. A dictionary is not a perfectly correct list of meanings now and for all time.

        2. 12

          I hope you can forgive our word choice; formal here was contrastive to the original Markdown specification, such as it is, and wasn’t meant to imply mathematical rigour or purity.

          1. 11

            What about just changing the choice it to say “precise” instead?

            1. [Comment removed by author]

              1. 10

                I downvoted you because I found your comment to be extremely uncharitable and unkind.

                A grammar appears desirable. If you know how to do it, it seems like they’d be open to it: https://talk.commonmark.org/t/commonmark-formal-grammar/46/32

                1. 4

                  Wow. The effort to specify the syntax unambiguously enough that people can write implementations that don’t produce different output is CommonMark. If someone writes an implementation that conforms to the spec (i.e. produces the same outputs given the same inputs), then it’ll be that much more compatible with anyone else using a CommonMark-compliant Markdown implementation. That’s why we’ve adopted it.

                  I rest my case.

                  Feel free to take it to the CommonMark discussion boards if you have such a big issue with this existing.

              2. 5

                I wanted the make the same comment :)

                Not that I think the Markdown spec has to be formal, but it isn’t in the current form. Precise would indeed been a better choice of words.

                1. 1

                  “Formal specification” has never meant a mathematical description in the software world, except maybe in academia and CS research where they’re borrowing the term from math.

                  Furthermore, no reasonable person would expect the markdown “formal specification” to be a mathematical definition of markdown, so there’s no confusion here.

                  Word and phrase meanings adapt and change, and this one changed a long time ago.

                  1. 2

                    Again, would you have any sources to support this claim about widespread usage? If I google “formal verification”, the only occurrences I can find are related to the usage as “mathematical description” – except for the Github blog post itself which seems to be showing up in some cases.

                    1. 1

                      Furthermore, no reasonable person would expect the markdown “formal specification” to be a mathematical definition of markdown, so there’s no confusion here.

                      How often do you work with formalizations? Formal specification of a language means to me a grammar is provided. Some examples:

                      Javascript grammar

                      Python grammar

                      Rust grammar

                      C# grammar

                  2. [Comment removed by author]