Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #1183

Re: Is multi-level function return possible?

From Andy Walker <news@cuboid.co.uk>
Newsgroups comp.compilers
Subject Re: Is multi-level function return possible?
Date 2014-03-26 12:16 +0000
Organization Not very much
Message-ID <14-03-061@comp.compilers> (permalink)
References (5 earlier) <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>

Show all headers | View raw


On 24/03/14 17:06, Anton Ertl wrote:
>>> Keeping a feature may just be loyalty, but adding it back after it had
>>> been removed says something about what the language designer thought
>>> about the usefulness of the feature.
>> 	Well, it certainly implies that the designer [or the committee!]
>> is admitting to a mistake.
> In the case of the C branch of the Algol family, I very much doubt
> that the designers see it that way.  B had a reduced feature set not
> because the language designer did not like the features they removed,
> but because B had to work on a very small machine.  They added some
> features back in C, which ran on larger machines.

	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.

	OTOH, modern versions of C have several features missing from
K&R C but present in [eg] Algol.  Presumably the committee at least
feels that their omission had been a mistake;  I don't know whether K&R
felt the same way.

>						   The designers of
> C++, Java and C# are different persons than the designers of B and C,
> so if they add a feature, why would they see it as "admitting to a
> mistake"?

	Again, these are different languages and it's one thing to design
a new language with new aims [which may include being leaner and meaner
than earlier languages], and quite another to revise a language to include
features previously dropped.

>> [...]
>>> "Parameters have a run-time cost": So has access to non-local
>>> variables.
>> 	That depends on the machine and compiler.  The first compiler I
>> used extensively [for Atlas Autocode] accessed variables at lexical
>> depth N by offsetting from register N, so all variables were accessed
>> at exactly the same cost.
> So this compiler maintained a display in the registers.  The costs here are:
> 1) Accessing the variable in memory, whereas a parameter can be passed
> in a register and accessed in a register.

	As above, it depends on the machine and compiler.  On Atlas, the
registers were 24 bits whereas most parameters were 48 bits.  Integers
were usually stored as denormalised reals [ie, also 48 bits] because
multiplications and divisions had to be done in the accumulator anyway
[and there were only very limited shift instructions].

> 2) Maintaining the display.  AFAIK it turned out that maintaining the
> display is more costly in typical uses than the access cost it saves,
> so displays fell out of favour.

	Well, it's one instruction on entry to a procedure and one on
exit, so it's not exactly expensive.  It's certainly cheaper than passing
several parameters around all the time, so the overall balance depends on
how many and how often intermediate variables are used.  I thought that
displays fell out of favour more because of a paucity of registers?  Not
many minis and micros had the 100+ available to the general user on Atlas.

	But in any case, you are again looking only at the cost in terms
of computing resources, and not at the programmer's view.  The notions of
"literate" or "top-down" programming may have fallen out of favour, but
in the pre-Unix era [after which the emphasis switched to tools and to
libraries] it was natural to write programs in the form of nested
procedures, each of which was expanded in turn as the program developed.
Functions also were naturally written within the procedures where they
were used, and variables were declared at the most natural level for
their life-times.  It's not impossible to write C programs that way, but
it's much harder than the equivalent [eg] Pascal.

> [We do forget that Ritchie's C compiler ran in 12K bytes of RAM,
> two passes plus assembler, and generated quite respectable code
> for the PDP-11. -John]

	12K?  Luxury.  Why, in my day, ....  But some early compilers ran
in ridiculously small computers by modern standards.

--
Andy Walker,
Nottingham.
[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]

Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Is multi-level function return possible? noitalmost <noitalmost@cox.net> - 2014-03-10 15:46 -0400
  Re: Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-11 05:20 +0000
  Re: Is multi-level function return possible? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-03-11 13:04 +0000
    Re: Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-11 22:15 +0000
      Re: Is multi-level function return possible? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-03-13 17:05 +0000
        Re: Is multi-level function return possible? Bill Findlay <yaldnif.w@blueyonder.co.uk> - 2014-03-14 01:28 +0000
        Re: Is multi-level function return possible? Ivan Godard <ivan@ootbcomp.com> - 2014-03-13 18:32 -0700
          Re: Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-14 20:27 +0000
      Re: Is multi-level function return possible? George Neuner <gneuner2@comcast.net> - 2014-03-14 02:39 -0400
        Re: Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-14 21:34 +0000
          Re: Is multi-level function return possible? Marco van de Voort <marcov@toad.stack.nl> - 2014-03-14 22:59 +0000
        Re: Is multi-level function return possible? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-03-16 17:19 +0000
          Re: Is multi-level function return possible? Marco van de Voort <marcov@toad.stack.nl> - 2014-03-16 18:39 +0000
          Re: Is multi-level function return possible? Andy Walker <news@cuboid.co.uk> - 2014-03-16 19:45 +0000
            Re: Is multi-level function return possible? Bill Findlay <yaldnif.w@blueyonder.co.uk> - 2014-03-17 16:15 +0000
              Re: Is multi-level function return possible? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-03-18 17:36 +0000
                Re: Is multi-level function return possible? Andy Walker <news@cuboid.co.uk> - 2014-03-21 02:04 +0000
                Re: Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-21 02:50 +0000
                Re: design of PL/I, was Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-21 06:43 +0000
                Re: design of PL/I, was Is multi-level function return possible? noitalmost <noitalmost@cox.net> - 2014-03-26 14:16 -0400
                Re: exception catching in PL/I, was Is multi-level function return possible? "Robin Vowels" <robin51@dodo.com.au> - 2014-03-27 21:08 +1100
                Re: Is multi-level function return possible? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2014-03-24 17:06 +0000
                Re: Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-24 20:01 +0000
                Re: Is multi-level function return possible? George Neuner <gneuner2@comcast.net> - 2014-03-26 04:00 -0400
                Re: Is multi-level function return possible? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2014-03-27 01:58 +0100
                Re: Is multi-level function return possible? Stefan Monnier <monnier@iro.umontreal.ca> - 2014-04-07 14:48 -0400
                Re: Is multi-level function return possible? Andy Walker <news@cuboid.co.uk> - 2014-03-26 12:16 +0000
                Re: Is multi-level function return possible? Andy Walker <news@cuboid.co.uk> - 2014-03-26 17:34 +0000
                Re: history of C, was Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-27 00:05 +0000
      Re: Is multi-level function return possible? Bakul Shah <usenet@bitblocks.com> - 2014-03-15 10:28 -0700
    Re: Is multi-level function return possible? George Neuner <gneuner2@comcast.net> - 2014-03-14 02:44 -0400
      Re: Is multi-level function return possible? Marco van de Voort <marcov@toad.stack.nl> - 2014-03-14 19:38 +0000
      Re: Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-14 21:36 +0000
      Re: Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-14 21:47 +0000
        Re: Is multi-level function return possible? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2014-03-15 13:34 +0100
      Re: Is multi-level function return possible? Ian Lance Taylor <ian@airs.com> - 2014-03-14 16:55 -0700
  Re: Is multi-level function return possible? George Neuner <gneuner2@comcast.net> - 2014-03-11 13:56 -0400
    Re: Is multi-level function return possible? federation2005@netzero.com - 2014-03-26 17:39 -0700
      Re: catch and throw, was Is multi-level function return possible? rpw3@rpw3.org (Rob Warnock) - 2014-03-27 04:23 +0000
        Re: catch and throw, was Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-27 05:44 +0000
        Re: catch and throw, was Is multi-level function return possible? Bakul Shah <usenet@bitblocks.com> - 2014-03-26 23:20 -0700
          Re: catch and throw, was Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-27 19:21 +0000
          Re: exception catching in PL/I "Robin Vowels" <robin51@dodo.com.au> - 2014-03-28 10:50 +1100
            Re: exception catching in PL/I Martin Ward <martin@gkc.org.uk> - 2014-04-16 14:32 +0100
          Re: catch and throw, was Is multi-level function return possible? mac <acolvin@efunct.com> - 2014-03-28 23:08 +0000
            Re: catch and throw, was Is multi-level function return possible? Ivan Godard <ivan@ootbcomp.com> - 2014-03-28 18:24 -0700
              Re: catch and throw, was Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-29 02:47 +0000
                Re: catch and throw, was Is multi-level function return possible? Ivan Godard <ivan@ootbcomp.com> - 2014-03-28 21:32 -0700
              Re: catch and throw, was Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-29 03:38 +0000
                Re: precise and imprecise, was catch and throw, was Is multi-level function return possible? Ivan Godard <ivan@ootbcomp.com> - 2014-03-28 22:12 -0700
            Re: catch and throw, was Is multi-level function return possible? Kaz Kylheku <kaz@kylheku.com> - 2014-03-29 02:07 +0000
              Re: catch and throw, was Is multi-level function return possible? Alan Bawden <alan@scooby-doo.csail.mit.edu> - 2014-03-29 02:44 -0400
            Re: PL/I exceptions, was catch and throw, was Is multi-level function return possible? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-29 02:40 +0000
              Re: PL/I exceptions "Robin Vowels" <robin51@dodo.com.au> - 2014-03-30 01:58 +1100
      Re: catch and throw, was Is multi-level function return possible? George Neuner <gneuner2@comcast.net> - 2014-03-28 03:52 -0400
  Re: Is multi-level function return possible? Louis Krupp <lkrupp@pssw.com> - 2014-03-11 15:16 -0600
  Re: Is multi-level function return possible? noitalmost <noitalmost@cox.net> - 2014-03-15 12:21 -0400

csiph-web