Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!uwm.edu!psuvax1!news From: schwartz@groucho.cs.psu.edu (Scott Schwartz) Newsgroups: comp.lang.misc Subject: Re: Formal definitions (Re: ada-c++ productivity) Message-ID: Date: 7 Apr 91 06:55:25 GMT References: <27F78021.1829@tct.com> <4ebGltlf1@cs.psu.edu> <27FB56D8.6176@tct.com> Sender: news@cs.psu.edu (Usenet) Followup-To: comp.lang.misc Organization: PSU CS Lines: 42 In-Reply-To: chip@tct.com's message of 4 Apr 91 16:39:51 GMT Nntp-Posting-Host: groucho.cs.psu.edu According to Chip Salzenberg: | According to Scott Schwartz: | >How do you know that the validation suit tests for the language that | >ANSI specified? | | I don't. I suppose that should worry me. *yawn* It worries me. It also worries me that you aren't worried. | >Some languages, like Turing, were formally specified from the time | >of inception; you can run a program and mechanically decide if it | >did what the language definition said it should do. | | How do you know that the program that makes that decision doesn't have | a bug in it? It might, but that's just one program, not 50 different compilers with 5,000 test cases. It's easier to feel sure about. Consider this... * Because the language was unambiguously specified I have more confidence in the people writing the software. For one thing, if you know what the mission is in advance, it is that much easier to accomplish it. For another, having a mechanically interpretable formal specification means you can build software tools to help the entire process along, just as having a yacc grammer for some language makes it easier and more reliable to write a parser. There may be bugs, but debugging small well specified tools is easier and more effective than debugging large ill-specified final products. * If a formal description of a programming language is available it makes it _possible_ to decide the question you ask. Absent such a description the best you can do is flame about it on usenet for a few weeks. | At some point, you have to stop assuring and start doing. Sure. That's the argument in favor of dynamic typing that has been so well received here recently. What I'm suggesting is that providing a formal specification of a language is the software engineering analog of using things like parser generators and static type checking. Yes, no system is perfect, but gee, why make it harder on everyone?