1. 14
  1.  

  2. 3

    Some corrections:

    • AbDTs are from CLU, not simula 67.
    • While simula 67 introduced objects, certain qualities of OOP first appeared with Smalltalk-72.
    • PL/I had overloading before Algol 68.

    And a few I’m less sure of:

    • References first appeared in CPL, not Algol 68.
    • PL/I had user defined datatypes before Algol 68.
    1. 2

      COMTRAN (1960, see e.g. page 103) pretty much had user-defined datatypes which were adopted into COBOL and then PL/I picked up things from there. There’s probably still a predecessor to that, though!

      FLOW-MATIC maybe sorta did but the DDL is pretty obtuse (but the FLOW-MATIC manual is really nice).

      1. 1

        Deleted (replied to the incorrect comment)

        1. 1

          While simula 67 introduced objects, certain qualities of OOP first appeared with Smalltalk-72

          Which qualities?

          1. 1

            Treating primitives as objects is the big one. In Simula, the number 26 is a primitive, not an object.

            1. 3

              I contend that “everything is an object” is not a “quality” of OOP. Are Java, C# or C++ limited in terms of object-oriented programming by not doing so?

              1. 2

                They certainly are, since the distinction between an “object” and a “primitive” is an artificial one, made for the compiler implementer’s sake rather than the user’s.

                1. 2

                  You’re right and I’m wrong.

                  1. 0

                    Yes.

            2. 3

              I’d be interested in:

              • coroutines
              • pipes (shell)
              • interfaces
              • scoped init and destroy (C++, Python with, shell redirects have this flavor)
              1. 2

                Some links don’t work:

                http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=continuation+passing+style
                http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=closure
                
                1. 2

                  Recursion should be on this list. Lisp is considered the first language to have supported it, according to McCarthy’s History of Lisp: http://www-formal.stanford.edu/jmc/history/lisp/lisp.html

                  1. 1

                    I think that’s true. Recursion was a contentious subject in the ALGOL conference, and I think it was McCarthy and some of the European committee members who insisted on it, whereas Backus thought it superfluous.