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=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: =?UTF-8?Q?Re:_How_to_get_Ada_to_=e2=80=9ccross_the_chasm=e2=80=9d?= =?UTF-8?Q?=3f?= Date: Sat, 14 Jul 2018 17:04:53 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <1c73f159-eae4-4ae7-a348-03964b007197@googlegroups.com> <878t9nemrl.fsf@nightsong.com> <62df3c25-057c-4cc5-a899-b91413613b83@googlegroups.com> <7306c5a4-7810-4e5d-9896-124b9841832b@googlegroups.com> NNTP-Posting-Host: 3CrKQyqWAJZHy6zYVP/kUg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:53809 Date: 2018-07-14T17:04:53+02:00 List-Id: On 2018-07-14 16:28, Shark8 wrote: > On Saturday, July 14, 2018 at 4:07:16 AM UTC-6, Dmitry A. Kazakov wrote: >> >> I doubt there is any real problem in Ada that cannot be resolved keeping >> *everything* backward compatible. > > There are some things that can't be fixed while keeping backwards compatibility and *NOT* adding yet-another-way-to-do-this; which is what C++ did with it's myriad of pointers and references. > > A couple of good examples: > * Anonymous access types, Ada needs a proper abstract access type interface. Built-in anonymous access will become its a library implementation of with certain properties. No problem. Blow the library, keep the language small. > * Protected objects (What's in the private section ought to be the body, IMO.) > protected type Signal_Object is > entry Wait; > procedure Signal; > function Is_Open return Boolean; > private > Open : Boolean := False; -- WHY ARE WE EXPOSING THIS? > end Signal_Object; Same as above. Protected and task types must be interfaces. There is nothing wrong leaving depreciated syntax for a specific implementation of. Newer programs will simply inherit from abstract task or abstract protected interface using normal Ada syntax and normal privacy rules. No new syntax, no new constructs, just making the type system to do its job. One of few issues that cannot be fixed is this: X : Integer; -- Must be illegal, immutable should have been default >>> Ada experts don't want to change anything, and non Ada experts create Go, Rust, Swift, Erlang, Nim... >> >> Everybody has his pet ideas. In order to change anything there must be a >> consensus or somebody extremely influential with iron will and fists. > This is true. > And there is some merit to the complaint of enshrining backwards compatibility; there is also merit to the ARG's default position of prioritizing backwards compatibility. Unless used as an excuse not to address language problems. >> Non Ada experts, being non experts, keep on creating yet another garbage >> language of the day... > To be fair, some of these languages have some interesting ideas and I'd be hesitant to cal them 'garbage', Erlang for example is quite interesting: being functional and embracing the actor model for concurrency. (I had wanted to build an Erlang in Ada, but its problem is that the only language standard I could find is REALLY old/outdated.) The only problem is that such languages are typically built around a single idea, usefulness of which likely exaggerated to the point of the opposite or not useful at all, tried and dropped 40 years ago, tied again 20 years ago ... -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de