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=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:a05:620a:15e9:: with SMTP id p9mr1390308qkm.147.1587097663666; Thu, 16 Apr 2020 21:27:43 -0700 (PDT) X-Received: by 2002:a9d:364b:: with SMTP id w69mr1160491otb.332.1587097663386; Thu, 16 Apr 2020 21:27:43 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Thu, 16 Apr 2020 21:27:43 -0700 (PDT) In-Reply-To: <80bcdfd1-b1e5-4ebf-aa8a-4beaba5ec3c2@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=2601:18f:982:19b0:2b2:dcfe:2ee3:7563; posting-account=3pYsyQoAAACcI-ym7XtMOI2PDU8gRZS5 NNTP-Posting-Host: 2601:18f:982:19b0:2b2:dcfe:2ee3:7563 References: <87muca3vgd.fsf@nightsong.com> <57d49047-0a61-4d13-8822-d004732a3acc@googlegroups.com> <3b1b248b-43d0-4762-b1f5-1c5460d24c8b@googlegroups.com> <5e222e6c-7afe-4349-ac66-d9b78ca40ec6@googlegroups.com> <27b11294-d628-4118-8328-a4a9a3946937@googlegroups.com> <80bcdfd1-b1e5-4ebf-aa8a-4beaba5ec3c2@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <98f92454-404b-4500-b5e8-5e3048304f96@googlegroups.com> Subject: Re: Beginning Ada Programming, by Andrew T. Shvets (2020) From: Andrew Shvets Injection-Date: Fri, 17 Apr 2020 04:27:43 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: reader01.eternal-september.org comp.lang.ada:58388 Date: 2020-04-16T21:27:43-07:00 List-Id: On Tuesday, December 3, 2019 at 11:26:55 AM UTC-5, Optikos wrote: > On Tuesday, December 3, 2019 at 10:06:58 AM UTC-6, Lucretia wrote: > > On Tuesday, 3 December 2019 15:29:15 UTC, Optikos wrote: > >=20 > > > There is a wise middle ground between the 2 extremes between what you= & AdaMagica are saying. > > >=20 > > > strict) AdaMagica appears to be saying that rock-solid analysis of fi= nding the upper & lower bounds of the integer's range (or fixed or floating= point or BCD for that matter) is of crucial insight & importance to unders= tanding the problem. > > >=20 > > > loose) You appear to be saying that for rapid prototyping that that d= eep analysis can be postponed. > >=20 > > That's not what I'm saying at all! > >=20 > > I'm saying to get someone used to the language, there is no problem wit= h starting them off with the > > ready defined types, but explaining ranges a little later on, literally= , within pages of themselves. >=20 > Oh, then I agree with AdaMagica wholeheartedly if restricted to only lear= ning a new language. I once worked for a long-time Fortran programmer who = self-taught himself C; every line of code that he wrote was 110% pure Fortr= an-think without any resemblance (other than surface syntax) to anything mo= re modern: PL/I, C, Ada, Pascal. Just about the only way that it was C co= de beyond force-fitting his thinking into C syntax minimally was that he ev= entually refrained from keeping the caps-lock key on all the time for all i= dentifiers. Full immersion in the new language's own better way of thinkin= g from the very start is the only productive way to learn a new programming= language. Learning Ada the way that you describe is likely to perpetuate = C-think or C++-think or Python-think in Ada, due to the new learner falsely= believing =E2=80=9CI got this!=E2=80=9D far far too soon. 1 - Well, to look at this another way, bringing in ideas from other languag= es can have a benefit as well. After all, just about every language has it= s roots in a different programming language. 2 - In regards to the Fortran programmer that wanted to make Fortran in C, = that does happen, but that is not the case with most people. > Learning a new programming language needs to have exciting revelatory =E2= =80=9Coh, wow! I've never been able to do =E2=80=A2that=E2=80=A2 before in= any prior language!=E2=80=9D moments early on to quell ho-hum boredom. Th= is ho-hum boredom is caused by nearly all the mainstream programming langua= ges (with the exception of ML family) being minor variations on Algol 60's = syntax and relatively minor extensions of Algol 60's control-flow construct= s, so differentiating the newly-learned language from all other Algol60-esq= ue fellow languages ASAP is crucial. Burying the revelatory differences la= ter in the book does a mind-numbing disservice to the reader by falsely lul= ling the reader into thinking Ada's key contributions are in syntax & beaut= y, not in semantic-meaning expressivity & crisp well-ordered-mind thinking. *shrug* The way I look at my book is that it's an on-ramp. There's this wo= nderful Ada highway, but due to the lack of up to date and relevant intro A= da books, it's pretty much impossible for others to get on the said road. = Once you're on it, there are other books that can help you become more prof= icient in Ada. So what's the best way to interest someone new, while not ignoring the cruc= ial parts of Ada that make it so good? I'm honestly not 100% sure, but my = book is a damn good stab at this issue. I mean, I have "Chapter 2: Basic Types" where it talks about the primitives= that exist in Ada. Then there is "Chapter 12: Advanced Types" where I tal= k about creating your own types and subtypes and etc. Chapter 3 to 11 talk= about Ada so that you can get started and feel comfortable in the language= .