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=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,ee1a8b8db84c88f X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!news.glorb.com!border1.nntp.dca.giganews.com!wn13feed!worldnet.att.net!bgtnsc05-news.ops.worldnet.att.net.POSTED!53ab2750!not-for-mail From: Dave Thompson Newsgroups: comp.lang.ada Subject: Re: Ada exception block does NOT work? Message-ID: References: <1639727.IzdcfkcRx7@linux1.krischik.com> <1227518.U5hWOOGjT8@linux1.krischik.com> <5192868.ameRvq1EvN@linux1.krischik.com> X-Newsreader: Forte Agent 1.93/32.576 English (American) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Sat, 27 Aug 2005 21:09:17 GMT NNTP-Posting-Host: 12.76.7.164 X-Complaints-To: abuse@worldnet.att.net X-Trace: bgtnsc05-news.ops.worldnet.att.net 1125176957 12.76.7.164 (Sat, 27 Aug 2005 21:09:17 GMT) NNTP-Posting-Date: Sat, 27 Aug 2005 21:09:17 GMT Organization: AT&T Worldnet Xref: g2news1.google.com comp.lang.ada:4314 Date: 2005-08-27T21:09:17+00:00 List-Id: On Tue, 23 Aug 2005 20:09:06 +0200, Martin Krischik wrote: > Dennis Lee Bieber wrote: > > > On Mon, 22 Aug 2005 19:32:01 -0500, Larry Elmore > > declaimed the following in comp.lang.ada: > > > >> > >> I'm not sure that's necessarily the case. After all, Unix predates K&R > >> and K&R C was certainly not the first version of C. > >> > > Pardon? > > > > As I recall, Kernighan and Ritchie /defined/ the original C > > language... The original UNIX was Ritchie and Thompson (and some > > others)... > > Well, K&R where programmers - so they likely first wrote the program (C > compiler) and and then the book. If you go to Amazon now they will offer > you the 2nd edition with ANSI-C. > > So I guess that looking at he book won't tell you about the very first C. > AIUI Kernighan was a tech writer then, although I believe by the time of awk he moved into programming, and AFAICT had nothing to do with the first compilers. It's true K&R1-thebook was several years after C was created; others have already pointed to the HOPL2 article available along with other historical information on dmr's website. > The one without function prototypes - you just had to hope the parameters > are right (or use lint). > > Just to remind you, main looked like this at the time > > main (argn, argv, env) > int argn, > char** argv, > char** env > { > puts ("Hello World"); > } > Not quite. The parameter/formal declarations are (and were) like normal variable declarations terminated by semicolon not separated by comma; the default int could be used for argc which I believe was the conventional (though not mandatory) spelling even back to the beginning; and I'm pretty sure env was never mandatory: [int] main (argc, argv [,env] ) [int argc;] char **argv; [char **env;] /* or (yuckier?) char **argv, **env; */ /* change spacing to taste */ { body } And I believe even the first Unix C had main() returning an exit code, for which the (accidental) return value of puts() would not be suitable, so a 'return 0;' is necessary. > And yes: no include, the compiler would guess for you how to call puts. > True the preprocessor was not as early as the first compiler, but it was by the first outside Unix distributions (well before the book) and thus I believe before stdio, so there were declarations to #include if you wanted. If not, the compiler doesn't guess, it takes fixed and simple defaults, and most of the standard library routines including puts() were not so accidentally designed so this default was correct. > > One would think Ritchie, at least, might have had some insights into > > the potential access problems Even if there was a time-gap between > > the two roles. > > No he would not. Otherwise he would not have added: > > * implicit type conversion. Most other languages of the time convert numeric types at least as freely as C -- FORTRAN and COBOL definitely; PL/I even more so; I don't recall for algol. Pascal some but less, and I don't think there were yet BASICs that distinguished integer from float. Pascal did have enums distinct from integers. C was unusual, AFAIK unique still, in treating char as just a small integer, and string as just a char array with sentinel, which allows some conversions other languages don't. > * implicit declaration of external functions. > * implicit convertion from array to pointer. That third was not really added, it was effectively carried forward from BCPL and never removed. Implicit int and implicit function declaration were also apparently driven by BCPL-B-NB compatibility. (AFAICT they don't simplify the compiler at all, if anything the reverse, and don't simplify learning or using the language.) > * implicit convertion from ponter to array. > That doesn't exist. Unless you mean access from a pointer to an array _element_. > And he might have added: > > * an optimiser > > K&R probably where good assember programmers but they where lousy compiler > builders. There was better (Algol, PL/1 etc. pp.) at the time. > Not on machines the size (and cost) of a PDP-11, I don't think. Pascal with fairly minor restrictions was done on -11 (UCSD) but AIR not until some years later. (Original Pascal, and later the standard, don't include all the low-level bit-bashing stuff C needed as a SIL, but that could easily enough have been added; heck, there were Fortrans with enough extensions for that.) - David.Thompson1 at worldnet.att.net