From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,c406e0c4a6eb74ed X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit From: Brian May Newsgroups: comp.lang.ada Subject: Re: ADA Popularity Discussion Request References: <49dc98cf.0408110556.18ae7df@posting.google.com> <1092233689.719755@master.nyc.kbcfp.com> <2nutq5F4sdqqU1@uni-berlin.de> Date: Fri, 13 Aug 2004 12:29:34 +1000 Message-ID: User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) Cancel-Lock: sha1:HaxIk8e7x/FlpBdGDUi9aotB+z4= MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii NNTP-Posting-Host: dsl-202-173-153-89.vic.westnet.com.au X-Trace: news.melbourne.pipenetworks.com 1092364173 202.173.153.89 (13 Aug 2004 12:29:33 +1000) X-Complaints-To: abuse@pipenetworks.com X-Abuse-Info: Please forward all headers to enable your complaint to be properly processed. Path: g2news1.google.com!news1.google.com!newshub.sdsu.edu!logbridge.uoregon.edu!arclight.uoregon.edu!enews.sgi.com!news.xtra.co.nz!news.mel.connect.com.au!news.alphalink.com.au!news.melbourne.pipenetworks.com!not-for-mail Xref: g2news1.google.com comp.lang.ada:2706 Date: 2004-08-13T12:29:34+10:00 List-Id: >>>>> "Marc" == Marc A Criley writes: Marc> Ada's enforcement of strong typing and runtime checks points Marc> out when a programmer has made a mistake, whether as a Marc> result of requirements, design, or coding error. (Of course Marc> no one is suggesting that Ada would catch all requirements Marc> or design errors--that's a ridiculous Marc> mischaracterization--but when errant reqs or design lead to Marc> a particular implementation, internal contradictions may Marc> result in type conflicts or constraint errors.) Ada has a lot of rules which you have to comply with when programming. I suspect some programmers find these rules obscure, weird and limiting[1]. These people prefer the freedom in other languages like Perl where there is infinity+1 ways of doing the same thing. Personally, if I make a mistake, I want to find out sooner rather then later, and this requires good compiler time checking. Even if the program is not a mission critical program. Ada is the language I know with the highest level of checks at compile time. There is the argument that languages like PHP are best for quick&dirty prototypes. The counter argument is that these quick&dirty prototypes often evolve into the one complicated mess of code that everyone relies on. I can't understand the trend in the other direction towards languages like PHP, if you make a typo in a function name for instance, you won't realize until that like of code is executed, and even then you might miss the error message (for instance if it is not on screen). Worst case scenario I have had is if you accidently change low-usage code (e.g. error handling) unintentionally (e.g. by typing in wrong window), you may not realize (although a good version control system may help, if you check every commit) until months later. You have no need to retest this code either, it was working last time... I have also seen cases when the programmer (myself) included have considered the C compiler broken because it says undefined variable when it looks identical, when in actual fact it is mistyped - the same thing is much more confusing if you just get random results instead of an error. Examples: "OK" instead of "Ok" and "Saved_XYZ" vs "Save_XYZ". Then in another extreme, while the SPIM program (MIPS emulator) is very fussy about program code, on certain errors it won't generate any messages, but instead ignore all code past that point. Any symbols defined beyond that point will be flagged as undefined. Now this is pure evil... Ada is also seen as a procedural language as opposed to an object orientated language. I don't know why, I believe it has all the key features of an OO language, eg. inheritance, run-time binding to functions, etc. Sure it doesn't have the "object->function" syntax, but none of my notes on OO programming say this is required. As stated elsewhere, Ada2005 will be even better. Notes: [1] It is interesting to note that the same arguments of "rules" vs. "flexibility" don't only apply to programming. For instance, in aviation, I have heard some pilots prefer flying in USA compared with Australia because airspace rules are more flexible. At the same time, there are air traffic controllers in USA who complain that the rules are too flexible, and this limits safety. -- Brian May