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,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,23c0de5a42cf667e X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,UTF8 Path: g2news2.google.com!news3.google.com!feeder.news-service.com!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!gegeweb.org!aioe.org!not-for-mail From: =?utf-8?Q?Yannick_Duch=C3=AAne_=28Hibou57?= =?utf-8?Q?=29?= Newsgroups: comp.lang.ada Subject: Re: GNAT packages in Linux distributions Date: Tue, 11 May 2010 18:39:52 +0200 Organization: Ada At Home Message-ID: References: <87mxw9x7no.fsf@ludovic-brenta.org> <16bz9kvbqa8y9$.155ntpwpwl29d.dlg@40tude.net> <4be97bea$0$2966$ba4acef3@reader.news.orange.fr> <4be98123$0$27617$ba4acef3@reader.news.orange.fr> <4be9814d$0$27617$ba4acef3@reader.news.orange.fr> NNTP-Posting-Host: EFpv4lnpRyjbMhM0po550g.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes Content-Transfer-Encoding: Quoted-Printable X-Complaints-To: abuse@aioe.org X-Notice: Filtered by postfilter v. 0.8.2 User-Agent: Opera Mail/10.53 (Win32) Xref: g2news2.google.com comp.lang.ada:11504 Date: 2010-05-11T18:39:52+02:00 List-Id: Le Tue, 11 May 2010 19:08:16 +0200, a = =C3=A9crit: > I am curious. Would you be willing to share some of your experience an= d > tell us about the advantages and disadvantages of both approaches? > > Stefan Well, as noted above, Eiffel is far more popular than SPARK, and there i= s = a reason for that : as Eiffel is runtime oriented, it is less strict tha= n = SPARK, which is static analysis oriented. Let say there is the same differences between SPARK and Eiffel than the = = ones you may have between typed and non-typed language. A non-type language does not require you to validate any thing until = runtime, and runtime (and to reach a specific branch, which is important= = to note) to raise an error (providing it is as least able to raise an = error in such circumstance). The same comment apply with SPARK vs Eiffel : Eiffel allow you to run a = = program without any other requirement, it just interpret the pre- and = post- and invariant conditions you've written (Yes, although it is a = compiled language, this features of Design by Contract are still = interpreted in Eiffel, just like pragma Assertion are in Ada by the way)= . Hey... you know, untyped language seems far easier at first glance : you= = write, you run, it crash... you modify some this-and-that, you run = again... it don't crash (I mean you don't when and why it will crash the= = next time, which may wait for some weeks, months or year, who know ...) Just think about the amount of time you may spent before making a progra= m = proof with SPARK, and compare that to the Eiffel way, where you will nev= er = know your implementation is wrong (so you will not have reason to be = disappointed, although things are still wrong what ever is your feeling = = about it). If you want to enjoy your language, Eiffel is probably the best. ... hmmmm.... after some though, this may depends on what to =E2=80=9Cen= joy=E2=80=9D = requires to you ; so the above sentence may or may not be true finally. Seriously, given two languages, one which allow you to run you applicati= on = the sooner, which one do you think many body will prefer ? ;) Guess what is most famous and popular : JavaScript or Ada ? I think this draw the big line. TBH, there is also some important restriction which SPARK applies to wha= t = you may use with Ada : you will not be allowed to use generics and = polymorphic dispatching as two examples. Why ? Just because SPARK cannot= = make some proof based on these materials. So is SPARK useful for more = complex application. The answer is Yes, as you are not required to = validate all of your application with SPARK, and you can validate some = part of it. Think about SPARK as a step above typing. Typing just make = proofs on components of your application, not on the application. SPARK = = may be used the same way, to make proofs on some component as well... an= d = it is able to make proofs which cannot be expressed with type definition= s. -- = pragma Asset ? Is that true ? Waaww... great