One 704 to rule them all

Discussion in 'Perl Misc' started by Rainer Weikusat, Jul 26, 2013.

  1. Tidbit of LISP history I came across recently:

    The erasure problem also had to be considered, and it was
    clearly unaesthetic to use explicit erasure as did IPL. There
    were two alternatives. The first was to erase the old contents
    of a program variable whenever it was updated. Since the car
    and cdr operations were not to copy structure, merging list
    structure would occur, and erasure would require a system of
    reference counts. Since there were only six bits left in a
    word, and these were in separated parts of the word, reference
    counts seemed infeasible without a drastic change in the way
    list structures were represented. (A list handling scheme
    using reference counts was later used by Collins (1960) on a
    48 bit CDC computer).

    The second alternative is garbage collection in which storage
    is abandoned until the free storage list is exhausted, the
    storage accessible from program variables and the stack is
    marked, and the unmarked storage is made into a new free
    storage list. Once we decided on garbage collection, its
    actual implementation could be postponed, because only toy
    examples were being done.
    http://www-formal.stanford.edu/jmc/history/lisp/node3.html#SECTION00030000000000000000

    'Erasure' refers to 'freeing allocated memory'. This implies that 'the
    tracing garbage collector' wasn't invented by McCarthy because he
    considered it a superior method of automatic memory management but was
    a makeshift approach chosen because limitations of the IBM 704
    hardware made using reference counting 'infeasible', given the
    cons cell implementation which already existed at the time the 'memory
    management problem' was starting to be considered with "We don't
    absolutely have to solve this now, but do it 'somehow' in future"
    being a secondary concern (according to other sources, the actual
    garbage collector was later developed by a student who had to work
    within the constraints of the existing system).

    Isn't it amazing that - until today - automatic resource management is
    held back by deficiencies inherent in a workaround for the word size
    of a computer which looked like this?

    http://en.wikipedia.org/wiki/File:IBM_Electronic_Data_Processing_Machine_-_GPN-2000-001881.jpg

    To be fair to 'the Perl 6 people': The problem with reference
    counting is that while it is convenient for language users because it
    implies that all kinds of resources can be managed automatically in a
    'lexically scoped way', it does exactly nothing for language
    implementors as the pairs (<allocate memory>, <free memory>) and
    (<increment ref count>, <decrement refcount>) are obviously
    equivalent.
    Rainer Weikusat, Jul 26, 2013
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Anonieko

    HttpHandlers - Learn Them. Use Them.

    Anonieko, Jun 15, 2006, in forum: ASP .Net
    Replies:
    5
    Views:
    517
    tdavisjr
    Jun 16, 2006
  2. Dave Harris

    Tkinter - One Canvas to Rule Them All?

    Dave Harris, May 25, 2004, in forum: Python
    Replies:
    1
    Views:
    288
    Peter Otten
    May 25, 2004
  3. Carl Cerecke
    Replies:
    2
    Views:
    832
    Carl Cerecke
    Jan 25, 2006
  4. Replies:
    0
    Views:
    1,358
  5. Replies:
    10
    Views:
    998
    Joseph Kesselman
    Mar 20, 2008
Loading...

Share This Page