Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!us.feeder.erje.net!news.linkpendium.com!news.linkpendium.com!news.iecc.com!.POSTED!nerds-end From: glen herrmannsfeldt Newsgroups: comp.compilers Subject: Re: history of C, was Is multi-level function return possible? Date: Thu, 27 Mar 2014 00:05:36 +0000 (UTC) Organization: Aioe.org NNTP Server Lines: 38 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <14-03-064@comp.compilers> References: <14-03-020@comp.compilers> <14-03-022@comp.compilers> <14-03-025@comp.compilers> <14-03-030@comp.compilers> <14-03-044@comp.compilers> <14-03-046@comp.compilers> <14-03-047@comp.compilers> <14-03-048@comp.compilers> <14-03-053@comp.compilers> <14-03-057@comp.compilers> <14-03-061@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: miucha.iecc.com 1395881673 16469 2001:470:1f07:1126:0:676f:7373:6970 (27 Mar 2014 00:54:33 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Thu, 27 Mar 2014 00:54:33 +0000 (UTC) Keywords: C, history Posted-Date: 26 Mar 2014 20:54:33 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1186 Andy Walker wrote: (snip) > But B and C are different languages, with differing design aims > and criteria. Having a feature in C that was absent from B is not the > same as adding to C a feature that had previously been removed. K&R C > was not B Mk 2, but a new language with inputs [conscious or unconscious] > from many languages, including (B)(CPL) and Algol 68. (snip) > [C was influenced by PL/I. C++ is where the Algol68 got mixed > in, and some of the C++ stuff was backported into C. -John] I always believe that until a recent comp.lang.c discussion convinced me otherwise. The question related to the C conditional operator, which I remembered in a different form from ALGOL-10 (on TOPS-10) some years ago. I then looked up in ALGOL-60 and ALGOL-68 manuals to find out how it changed. Seems that ALGOL-68 also has the assign/arithmetic operators, such as +:=, -:=, x:- (where that should be a multiply sign, not an x or *), and some more that I also don't have on the keyboard. PL/I doesn't (or at least didn't, could have changed by now) have the conditional operator or the assign/arithmetic operators. Both of those, at least, go back to K&R C, and before C++. PL/I is from around 1964 or so, but I don't know the timing (what happened when) for ALGOL-68 at all. The two differences I always remember between K&R C and ANSI C are struct as argument (instead of struct pointer) and initialized auto arrays. -- glen