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:a37:809:: with SMTP id 9mr9465128qki.93.1587739357879; Fri, 24 Apr 2020 07:42:37 -0700 (PDT) X-Received: by 2002:a9d:337:: with SMTP id 52mr7929913otv.178.1587739357565; Fri, 24 Apr 2020 07:42:37 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.linkpendium.com!news.linkpendium.com!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Fri, 24 Apr 2020 07:42:37 -0700 (PDT) In-Reply-To: <87imhp5161.fsf@nightsong.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=47.185.215.60; posting-account=zwxLlwoAAAChLBU7oraRzNDnqQYkYbpo NNTP-Posting-Host: 47.185.215.60 References: <87muca3vgd.fsf@nightsong.com> <57d49047-0a61-4d13-8822-d004732a3acc@googlegroups.com> <007895f7-b923-4267-9801-d0caaaa30838@googlegroups.com> <41ef6a77-3b14-43ff-b6ae-510000a33ad4@googlegroups.com> <877dy5j4h7.fsf@nightsong.com> <104195c8-c162-4d0c-a600-d2a2d233bf03@googlegroups.com> <87imhp5161.fsf@nightsong.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: Beginning Ada Programming, by Andrew T. Shvets (2020) From: Optikos Injection-Date: Fri, 24 Apr 2020 14:42:37 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: reader01.eternal-september.org comp.lang.ada:58483 Date: 2020-04-24T07:42:37-07:00 List-Id: On Thursday, April 23, 2020 at 4:42:48 PM UTC-5, Paul Rubin wrote: > Optikos writes: > > 1) Someone who is a beginner at programming in any imperative > > programming language. >=20 > This is what I meant by beginner ;) >=20 > > 2) Someone who is versed to an adequate degree of proficiency in > > another imperative programming language and who is now learning Ada as > > a 2nd =E2=80=A6 Nth imperative programming language added to their repe= rtoire. >=20 > Yes, this is imho a more suitable audience for Ada. >=20 > > Conversely, category #1's time has unfortunately passed is by in 2 > > phases Autocorrect burned me. It should have been: pass us by. > I'm not sure what you mean by this: imho, either category #1's time > never existed, or else it existed once but is now thankfully (not > unfortunately) in the past. IMHO a beginner language should have > automatic memory management, and its basic integer datatype should be > unbounded aka bignums. Python is like this, though it has its own > deficiencies. I think that there are 2 kinds of beginners to programming: 1) mathematicians at heart: beginners that start from mathematics concepts= and move downward to sequential execution of mathematics (as opposed to de= signing soft logic circuits in FPGAs) versus 2) electrical engineers at heart: beginners that start from hardware conce= pts and move upward a little to controlling that hardware then move up to a= bstracting that control. There is something quite satisfying in #2 that assembly language and C typi= cally provide to #2's adherents, hence C's popularity as =E2=80=9CGee whiz,= mom, look at what I made the computer do=E2=80=9D when ultimately interfac= ing with actual registers on an IC. Ada-for-beginners fits best here in #2= because of its focus on need for the programmer to be aware of resource al= location (e.g., finite-sized storage pool allocation). Soon after the gee = whiz phase, some people yearn fairly early on for the greater intellectual = discipline and direct rich expressiveness that Ada provides instead of doin= g it all by wink-wink-nudge-nudge idioms in C. There is something quite satisfying in #1 that functional languages provide= to #1's adherents, hence Haskell's popularity and to a lesser extent ML in= a certain older age group. The automatic memory management and arbitraril= y-large bignum integers fit here, I think, because of the avoidance of thin= king about the hardware very much at all. And there might be a 3rd distinct category of beginner: those that yearn t= o see the world as Mealy or Moore state machines and get frustrated that ne= ither imperative nor functional programming languages put finite state mach= ines as the true 1st-class citizens and everything else as cascading-ramifi= cation details hanging off as ornaments from an FSM Christmas tree. This g= roup of beginner gets frustrated and stays frustrated for an extended time = (as they muddle through both imperative & functional paradigms, wondering a= t what year will they finally get to the good stuff among all this endless = dreck); they become attracted to Erlang and Shlaer-Mellor eventually. Thes= e people tend to reach a degree of now-this-is-what-I'm-talking-about satis= faction of sorts if they ever learn VHDL or Verilog for FPGAs, but few ever= go that direction, so Erlang and Shlaer-Mellor is what they up embracing a= s the true maturity of their initial beginner starting point. I have alway= s thought that both tight Ada and loose C have been an especially uphill ba= ttle for this category of FSMphile beginner, because if FSMs are covered at= all in Ada or C, it is as a passing thought in the 7th or 11th book that t= hey read, perhaps even buried as a mere interested-reader exercise at the e= nd of the chapter. These people are expecting FSMs to be the Hollywood sta= r in chapter 1 of the 1st book that they read on computer programming, as f= undamental stimulus-response concept.