On Jul 1, 2010, at 8:59 PM, Alan BRASLAU wrote:
This is a very good answer.
Now, think about robustness. So called sloppy writing can easily happen in a very big project, or more likely by an inexperienced user. ConTeXt is pretty good in handling this, but not perfect. How many times have we tried options that do not exist and which are simply ignored in silence.
Now try: \input knuth \starttext What about this? \stoptext
Sometimes our errors, ignored in silence, end up having strange side effects that are long to debug. I came across this, for example, using by mistake \cite{reference} rather then \cite[reference].
Back to robustness, I once wrote a very big system used to run expriments. It *had* to be robust. Luckly, to insure this, I had a collegue who was very good in doing every thing wrong. For example, if the program asked "how many cycles" to run, he was capable of typing "yes". Why not? The program still had to handle this correctly. Should be the same for typesetting.
I hope that you all *never* make mistakes. Remember, *real* unix users only use cat; All other text editors are for "sissys".
Hope this isn't too long and not too off-topic... It all depends on what you call "robustness." I'm a classicist, not a computer scientist or programmer, so I view software only from a user's perspective. But here's what I think about this: a system is robust when it behaves in a predictable and consistent manner. Maybe it's because I have begun writing some of my stuff in xml, or maybe it's because I'm an anal-retentive guy by nature, but I find the tree image of documents compelling: everything has to be part of a branch. And I read the examples you provide as proving me right: if a program asks "how many cycles?" and the user input is "yes," the only consistent and predictable behavior is throwing an error and reporting it to the user - "integer number expected" or some such. Processing "yes" will not allow the user to learn how to do this right. Everything else ("The program still had to handle this correctly") is just going to leave the user at the mercy of what someone somewhere defined for her/him. Moreover: maybe as a classicist, I find it natural to look at documents in the perspective of the "longue durée" - after all, we handle stuff that has been around for several millennia. Which means I see my TeX or whatever file not primarily as an instruction to typeset stuff in a certain way, but as a container to preserve information. Which means: ideally, I want my documents so well-structured that someone in the year 3010 will be able to extract the same information from them. The better they are structured, the more they respect a consistent model, the better the chances that this will happen. Again, I would argue that this means an example like somestuff \starttext morestuff \stoptext just should be flagged as invalid because it makes it difficult to parse this document for the information it contains. Lastly, Hraban has given a very good analogy when he pointed to the difference between the old-style html with its convenient, but sloppy syntax à la stuff<p>, whereas x(ht)ml is more strict with <p>stuff</p>. The old way was convenient when you saw your document merely as a set of instructions for a browser to display your stuff. But in today's world, you have to see that your document may be viewed and processed in hundreds of ways: in a web browser on a computer, on a cell phone, an e-reader, a tablet, etc. Which means you should think of your document as structured information, not as instructions for a certain device. Again, the better the document is structured, the more independent and reliable its transmission will be. So: I find the new \startchapter ... \stopchapter code much superior to the old way of organizing chapters. And I would argue that a program which discourages and flags incorrect input (like what you describe in your examples) is much superior to a program which somehow processes this input. This has nothing to do with using cat as an editor (btw: cat is for sissys, REAL programmers use a magnetized needle and a steady hand), but is a matter of organizing information in the best way. Thomas