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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,81bb2ce65a3240c3 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Received: by 10.68.232.42 with SMTP id tl10mr2227104pbc.7.1335345920963; Wed, 25 Apr 2012 02:25:20 -0700 (PDT) Path: r9ni96345pbh.0!nntp.google.com!news1.google.com!goblin2!goblin.stu.neva.ru!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: What would you like in Ada202X? Date: Wed, 25 Apr 2012 11:24:18 +0200 Organization: cbb software GmbH Message-ID: References: <3637793.35.1335340026327.JavaMail.geo-discussion-forums@ynfi5> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: FbOMkhMtVLVmu7IwBnt1tw.user.speranza.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Date: 2012-04-25T11:24:18+02:00 List-Id: On Wed, 25 Apr 2012 10:59:02 +0200, Yannick Duch�ne (Hibou57) wrote: > Le Wed, 25 Apr 2012 10:36:41 +0200, Dmitry A. Kazakov > a �crit: >> 11) Package interfaces, transitive "use." I.e. an ability to make things >> visible in some package visible in another without repeating all its with >> and use clauses. And, of course, "use" should imply "with" where >> applicable. > Why this one? (I agree with all, but this single one) Because Ada is a language for software engineering. It was no problem back in 80s when a project had 10 or so units. It became a huge problem now with thousands of units especially when generics are used with instances of packages scattered all over the project. Typically instances are bound by common parameters, e.g. the actual types used for formal types. There is no way to put these related instances together in a third package, make visible what you all need to, and then reuse the result. The most simple example is: package P is package Q is new Foo; end P; There is no means to flatten P making declarations of Q be directly visible for clients of P. E.g. something like package P is package Q is new Foo (...); use all Q; -- Make things from Q declared directly in P end P; Note that this is a next level of software developing. Instantiations of some generics is just an implementation detail. The goal is to obtain a new package of desired properties unconstrained by arbitrary details like incidental names of instances They should not contaminate the result, e.g. package P is use all new Foo (...); -- I don't need the instance name end P; -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de