Changeset e229c22 for doc/bibliography


Ignore:
Timestamp:
Jun 4, 2016, 12:34:24 PM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
57aa6f5, b8387fc
Parents:
31eed869
Message:

change gitignore with respect to latex-generated files, small updates to manuals, replace bibtex link with actual file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/bibliography/cfa.bib

    • Property mode changed from 120000 to 100644
    r31eed869 re229c22  
    1 /usr/local/bibliographies/pl.bib
     1% Conventions: uncross-referenced entries appear first, then
     2%    cross-referenced entries.  In both groups, entries are sorted by their
     3%    title field.  Lines like "% A" exist to speed searches.  The main
     4%    paper on a language uses the language name as the citation key.  Other
     5%    papers use ``<language name>:'' as a prefix.  Please consider leaving
     6%    keyword lists and an abstract or comment for future generations, and
     7%    put some identification in a contributer field.
     8
     9%    Predefined journal names:
     10%  acmcs: Computing Surveys             acta: Acta Infomatica
     11%  cacm: Communications of the ACM
     12%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
     13%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
     14%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
     15%  ipl: Information Processing Letters  jacm: Journal of the ACM
     16%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
     17%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
     18%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
     19%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
     20%  toplas: ACM Trans. on Prog. Lang. & Sys.
     21%  tcs: Theoretical Computer Science
     22@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
     23@string{ieeese="IEEE Transactions on Software Engineering"}
     24@string{spe="Software---\-Practice and Experience"}
     25@string{sigplan="SIGPLAN Notices"}
     26@string{joop="Journal of Object-Oriented Programming"}
     27@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
     28@string{osr="Operating Systems Review"}
     29@string{pldi="Programming Language Design and Implementation"}
     30
     31% A
     32
     33@incollection{ABC++,
     34    keywords    = {concurrency, parallel, distributed, C++},
     35    contributer = {pabuhr@plg},
     36    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
     37    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     38    editor      = {Gregory V. Wilson and Paul Lu},
     39    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     40    publisher   = {MIT Press},
     41    series      = {Scientific and Engineering Computation Series},
     42    year        = 1996,
     43    pages       = {1-42},
     44}
     45
     46@techreport{CL90abstract,
     47    keywords    = {},
     48    contributer = {gjditchfield@plg},
     49    author      = {Luca Cardelli and Xavier Leroy},
     50    title       = {Abstract Types and the Dot Notation},
     51    institution = {Systems Research Center},
     52    year        = 1990,
     53    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
     54    number      = 56,
     55    summary     = {
     56        The existential types of Mitchell and Plotkin \cite{atet} model
     57        abstract types, but their ``open'' notation is unlike the usual dot
     58        notation used in programming languages.  This paper gives
     59        translations between the ``open'' and ``dot'' forms, and suggests
     60        extensions for nested and for parameterized abstractions.
     61    }
     62}
     63
     64@article{atet,
     65    keywords    = {lambda calculus, polymorphism},
     66    contributer = {gjditchfield@plg},
     67    author      = {John C. Mitchell and Gordon D. Plotkin},
     68    title       = {Abstract Types have Existential Type},
     69    journal     = toplas,
     70    year        = 1988,
     71    month       = jul, volume = 10, number = 3, pages = {470-502},
     72    abstract    = {
     73        Abstract data type declarations appear in typed programming
     74        languages like Ada, Alphard, CLU and ML.  This form of declaration
     75        binds a list of identifiers to a type with associated operations, a
     76        composite ``value'' we call a {\em data algebra}.  We use a
     77        second-order typed lambda calculus SOL to show how data algebras
     78        may be given types, passed as parameters, and returned as results of
     79        function calls.  In the process, we discuss the semantics of
     80        abstract data type declarations and review a connection between
     81        typed programming languages and constructive logic.
     82    }
     83}
     84
     85@article{alphard:intro,
     86    keywords    = {encapsulation, data abstraction},
     87    contributer = {gjditchfield@plg},
     88    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
     89    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
     90    journal     = ieeese,
     91    year        = 1976,
     92    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
     93    note        = {Reprinted in \cite{alphard}.},
     94    abstract    = {
     95        Alphard is a programming language whose goals include supporting
     96        both the development of well-structured programs and the formal
     97        verification of these programs.  This paper attempts to capture the
     98        symbiotic influence of these two goals on the design of the
     99        language.  To that end the language description is interleaved with
     100        the presentation of a proof technique and discudssion of
     101        programming methodology.  Examples to illustrate both the language
     102        and the verification technique are included.
     103    }
     104}
     105
     106@book{Hilfinger83,
     107    keywords    = {ada},
     108    author      = {Paul N. Hilfinger},
     109    title       = {Abstraction Mechanisms and Language Design},
     110    publisher   = {MIT Press},
     111    series      = {ACM Distinguished Dissertations},
     112    year        = 1983,
     113}
     114
     115@incollection{Lavender96,
     116    author      = {R. Greg Lavender and Douglas C. Schmidt},
     117    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
     118    title       = {Pattern Languages of Program Design 2},
     119    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
     120    year        = 1996,
     121    pages       = {483-499},
     122    publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
     123    address     = {Boston, MA, USA},
     124}
     125
     126@article{Nierstrasz87,
     127    keywords    = {Hybrid, active objects, object-oriented languages,
     128                  object-based languages, delegation, concurrency},
     129    contributer = {pabuhr@plg},
     130    author      = {O. M. Nierstrasz},
     131    title       = {Active Objects in {Hybrid}},
     132    journal     = sigplan,
     133    volume      = 22,
     134    number      = 12,
     135    month       = dec,
     136    year        = 1987,
     137    pages       = {243-253},
     138    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
     139    abstract    = {
     140        Most object-oriented languages are strong on reusability or on
     141        strong-typing, but weak on concurrency.  In response to this gap,
     142        we are developing {\it Hybrid}, an object-oriented language in which
     143        objects are the active entities.  Objects in Hybrid are organized
     144        into {\it domains}, and concurrent executions into {\it activities}.
     145        All object communications are based on remote procedure calls.
     146        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
     147        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
     148        are added to enable switching and triggering of activities.
     149        Concurrent subactivities and atomic actions are provided for
     150        compactness and simplicity.  We show how solutions to many important
     151        concurrent problems [sic], such as pipelining, constraint management
     152        and ``administration'' can be compactly expressed using these
     153        mechanisms.
     154   },
     155   comment      = {Mentions Thoth in reference to delegation}
     156}
     157
     158@book{Actors,
     159    keywords    = {actors, concurrency},
     160    contributer = {pabuhr@plg},
     161    author      = {Gul A. Agha},
     162    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
     163    publisher   = {MIT Press, Cambridge, Mass.},
     164    year        = 1986
     165}
     166
     167@article{polymorphImpl,
     168    keywords    = {Napier88},
     169    contributer = {gjditchfield@plg},
     170    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
     171    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
     172    journal     = toplas,
     173    year        = 1991,
     174    month       = jul,
     175    volume      = 13,
     176    number      = 3,
     177    pages       = {342-371},
     178    abstract    = {
     179        Polymorphic abstraction provides the ability to write programs that
     180        are independent of the form of the data over which they operate.
     181        There are a number of different categories of polymorphic
     182        expression---ad hoc and universal, which includes parametric and
     183        inclusion---all of which have many advantages in terms of code
     184        reuse and software economics.  It has proved difficult to provide
     185        efficient implementations of polymorphism.  Here, we address this
     186        problem and describe a new technique that can implement all forms
     187        of polymorphism, use a conventional machine architecture, and
     188        support nonuniform data representations.  Furthermore, the method
     189        ensures that any extra cost of implementation applies to
     190        polymorphic forms only, and allows such polymorphic forms to
     191        persist over program invocations.
     192    },
     193    summary     = {
     194        They give three ways to implement polymorphism: {\em textual
     195        polymorphism}, which seems to be template instantiation, {\em
     196        uniform polymorphism}, which they explain badly, and {\em tagged
     197        polymorphism}, where object code performs type tests.
     198
     199        They use first-class procedures to implement polymorphism: routines
     200        with type parameters are implemented as curried routines that
     201        return a nested routine that refers to the type parameter.
     202    }
     203}
     204
     205@article{dim:ada,
     206    keywords    = {Dimensional Analysis, Ada},
     207    contributer = {gjditchfield@plg},
     208    author      = {Paul N. Hilfinger},
     209    title       = {An {Ada} Package for Dimensional Analysis},
     210    journal     = toplas,
     211    month       = apr,
     212    year        = 1988,
     213    volume      = 10,
     214    number      = 2,
     215    pages       = {189-203},
     216}
     217
     218@mastersthesis{Younger91,
     219    keywords    = {concurrency, C++, postponing requests},
     220    contributer = {pabuhr@plg},
     221    author      = {Brian M. Younger},
     222    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     223    school      = {University of Waterloo},
     224    year        = 1991,
     225    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     226}
     227
     228@inproceedings{Buhr92c,
     229    keywords    = {concurrency},
     230    contributer = {pabuhr@plg},
     231    author      = {Peter A. Buhr and Glen Ditchfield},
     232    title       = {Adding Concurrency to a Programming Language},
     233    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
     234    organization= {USENIX Association},
     235    address     = {Portland, Oregon, U.S.A.},
     236    month       = aug,
     237    year        = 1992,
     238    pages       = {207-224},
     239}
     240
     241@article{Buhr89b,
     242    keywords    = {concurrency, C++},
     243    contributer = {pabuhr@plg},
     244    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
     245    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
     246    journal     = sigplan,
     247    volume      = 24,
     248    number      = 4,
     249    month       = apr,
     250    year        = 1989,
     251    pages       = {18-21},
     252    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
     253}
     254
     255@article{Knuth66,
     256    keywords    = {N-thread software-solution mutual exclusion},
     257    contributer = {pabuhr@plg},
     258    author      = {Donald E. Knuth},
     259    title       = {Additional Comments on a Problem in Concurrent Programming Control},
     260    journal     = cacm,
     261    month       = may,
     262    year        = 1966,
     263    volume      = 9,
     264    number      = 5,
     265    pages       = {321-322},
     266    note        = {Letter to the Editor}
     267}
     268
     269@article{DeBruijn67,
     270    keywords    = {N-thread software-solution mutual exclusion},
     271    contributer = {pabuhr@plg},
     272    author      = {Nicolaas Govert de Bruijn},
     273    title       = {Additional Comments on a Problem in Concurrent Programming Control},
     274    journal     = cacm,
     275    month       = mar,
     276    year        = 1967,
     277    volume      = 10,
     278    number      = 3,
     279    pages       = {137-138},
     280    note        = {letter to the Editor}
     281}
     282
     283@phdthesis{Krischer10,
     284    author      = {Roy Krischer},
     285    title       = {Advanced Concepts in Asynchronous Exception Handling},
     286    school      = {University of Waterloo},
     287    year        = 2010,
     288    month       = dec,
     289    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     290    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
     291    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
     292}
     293
     294@article{Buhr00a,
     295    keywords    = {exception handling},
     296    contributer = {pabuhr@plg},
     297    author      = {Peter A. Buhr and W. Y. Russell Mok},
     298    title       = {Advanced Exception Handling Mechanisms},
     299    journal     = ieeese,
     300    volume      = 26,
     301    number      = 9,
     302    month       = sep,
     303    year        = 2000,
     304    pages       = {820-836},
     305}
     306
     307@book{Richter97,
     308    keywords    = {Win32, threads},
     309    author      = {Jeffrey M. Richter},
     310    title       = {Advanced Windows},
     311    publisher   = {Microsoft Press},
     312    year        = 1997,
     313    edition     = {third},
     314}
     315
     316@article{Francez77,
     317    keywords    = {parameter passing, named/positional arguments},
     318    contributer = {pabuhr@plg},
     319    author      = {Nissim Francez},
     320    title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
     321    journal     = cacm,
     322    volume      = 20,
     323    number      = 8,
     324    month       = aug,
     325    year        = 1977,
     326    pages       = {604-605},
     327}
     328
     329@article{Algol60,
     330    keywords    = {Algol60},
     331    contributer = {pabuhr@plg},
     332    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
     333                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
     334                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
     335    title       = {Revised Report on the Algorithmic Language Algol 60},
     336    editor      = {Peter Nauer},
     337    journal     = cacm,
     338    volume      = 6,
     339    number      = 1,
     340    month       = jan,
     341    year        = 1963,
     342    pages       = {1-17},
     343}
     344
     345@article{Mellor-Crummey91,
     346    keywords    = {spin locks, compare-and-swap, barriers},
     347    contributer = {pabuhr@plg},
     348    author      = {John M. Mellor-Crummey and Michael L. Scott},
     349    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
     350    journal     = tocs,
     351    volume      = 9,
     352    number      = 1,
     353    month       = feb,
     354    year        = 1991,
     355    pages       = {21-65},
     356}
     357
     358@article{Cor:overload,
     359    keywords    = {},
     360    contributer = {gjditchfield@plg},
     361    author      = {Gordon V. Cormack},
     362    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
     363    journal     = sigplan,
     364    year        = 1981,
     365    month       = feb, volume = 16, number = 2, pages = {48-52},
     366    comment     = {
     367        A one-pass, top-down algorithm for overload resolution.  Input is a
     368        parse tree and the desired result type, and output is the number of
     369        solutions.  For each overloading of the root identifier with a
     370        matching parameter list, recursively solve for each parameter for
     371        the corresponding argument type---there should be one solution.
     372    }
     373}
     374
     375@book{Raynal86,
     376    keywords    = {mutual exclusion, locks},
     377    contributer = {pabuhr@plg},
     378    author      = {M. Raynal},
     379    title       = {Algorithms for Mutual Exclusion},
     380    publisher   = {The MIT Press},
     381    address     = {Cambridge, Massachusetts},
     382    series      = {Scientific Computation Series},
     383    year        = 1986,
     384    note        = {Translated by D. Beeson},
     385}
     386
     387@incollection{Gidenstam05,
     388    keywords    = {lock free, dynamic memory allocation},
     389    contributer = {pabuhr@plg},
     390    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
     391    title       = {Allocating Memory in a Lock-free Manner},
     392    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
     393    booktitle   = {Algorithms -- ESA 2005},
     394    pages       = {329-342},
     395    publisher   = {Springer},
     396    year        = 2005,
     397    volume      = 3669,
     398    series      = {Lecture Notes in Computer Science},
     399}
     400
     401@book{Sites92,
     402    keywords    = {computers, Alpha},
     403    contributer = {pabuhr@plg},
     404    editor      = {Richard L. Sites},
     405    title       = {Alpha Architecture Reference Manual},
     406    publisher   = {Digital Press, One Burlington Woods Drive, Burlington, MA, U. S. A., 01803},
     407    year        = 1992,
     408}
     409
     410@book{alphard,
     411    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
     412    contributer = {gjditchfield@plg},
     413    editor      = {Mary Shaw},
     414    title       = {{ALPHARD}: Form and Content},
     415    publisher   = {Springer-Verlag},
     416    year        = 1981,
     417    comment     = {Collection of papers about Alphard.}
     418}
     419
     420@article{Kessels77,
     421    keywords    = {monitors},
     422    contributer = {pabuhr@plg},
     423    author      = {Joep L. W. Kessels},
     424    title       = {An Alternative to Event Queues for Synchronization in Monitors},
     425    journal     = cacm,
     426    volume      = 20,
     427    number      = 7,
     428    month       = jul,
     429    year        = 1977,
     430    pages       = {500-503},
     431    annote      = {
     432    }
     433}
     434
     435@article{descr,
     436    keywords    = {X2, subclasses, inheritance, parameterized classes},
     437    contributer = {gjditchfield@plg},
     438    author      = {David Sandberg},
     439    title       = {An Alternative to Subclassing},
     440    journal     = sigplan,
     441    volume      = {21},    number = {11},
     442    pages       = {424-428},
     443    month       = nov, year = 1986,
     444    comment     = {
     445        The Smalltalk class hierarchy has three uses: factoring out code;
     446        ``Abstraction superclasses'' such as Collection; rapid construction
     447        of new classes by incremental change.
     448
     449        ``A descriptive class specifies a partial behavior by specifying a
     450        set of procedure headings that describe what can be done with
     451        instances of classes that belong to the descriptive class.''  An
     452        ``instance'' statement declares a class to be an instance of a
     453        descriptive class and defines the correspondence between
     454        operations.  Procedures with descriptive class parameters take any
     455        instance as arguments.  Descriptive classes can describe relations
     456        like ``c is a collection with element type e'', but how such things
     457        are used isn't explained.
     458       
     459        For each descriptive class used in a parameter list, an implicit
     460        parameter is created that is passed a vector of procedures.
     461    }
     462}
     463
     464@incollection{Matsuoka93,
     465    keywords    = {inheritance anomaly},
     466    contributer = {pabuhr@plg},
     467    author      = {Satoshi Matsuoka and Akinori Yonezawa},
     468    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
     469    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
     470    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
     471    publisher   = {MIT Press},
     472    year        = 1993,
     473    pages       = {107-150},
     474}
     475
     476@article{Sinha00,
     477    author      = {Saurabh Sinha and Mary Jean Harrold},
     478    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
     479    journal     = ieeese,
     480    year        = 2000,
     481    month       = sep,
     482    volume      = 26,
     483    number      = 9,
     484    pages       = {849--871},
     485}
     486
     487@inproceedings{Robillard99,
     488    author      = {Martin P. Robillard and Gail C. Murphy},
     489    title       = {Analyzing Exception Flow in {J}ava Programs},
     490    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
     491                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
     492    year        = 1999,
     493    pages       = {322--337},
     494    isbn        = {3-540-66538-2},
     495    location    = {Toulouse, France},
     496    doi         = {http://doi.acm.org/10.1145/318773.319251},
     497    publisher   = {Springer-Verlag},
     498    address     = {London, UK},
     499}
     500
     501@book{C++,
     502    keywords    = {C++, ANSI},
     503    author      = {Margaret A. Ellis and Bjarne Stroustrup},
     504    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
     505    publisher   = {Addison-Wesley},
     506    year        = 1990,
     507    edition     = {first},
     508}
     509
     510@book{APL,
     511    keywords    = {APL},
     512    contributer = {pabuhr@plg},
     513    author      = {K. E. Iverson},
     514    title       = {A Programming Language},
     515    publisher   = {Wiley, New York},
     516    year        = 1962
     517}
     518
     519@article{PS-Algol:old,
     520    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
     521    title       = {An Approach to Persistent Programming},
     522    journal     = {The Computer Journal},
     523    year        = 1983,
     524    volume      = 26,
     525    number      = 4,
     526    pages       = {360-365},
     527}
     528
     529@article{Kessels82,
     530    keywords    = {concurrency, critical section},
     531    contributer = {pabuhr@plg},
     532    author      = {Joep L. W. Kessels},
     533    title       = {Arbitration Without Common Modifiable Variables},
     534    journal     = acta,
     535    volume      = 17,
     536    number      = 2,
     537    month       = jun,
     538    year        = 1982,
     539    pages       = {135-141},
     540}
     541
     542@article{Buhr95a,
     543    keywords    = {concurrency, library approach},
     544    contributer = {pabuhr@plg},
     545    author      = {Peter A. Buhr},
     546    title       = {Are Safe Concurrency Libraries Possible?},
     547    journal     = cacm,
     548    month       = feb,
     549    year        = 1995,
     550    volume      = 38,
     551    number      = 2,
     552    pages       = {117-120},
     553}
     554
     555@book{ARMv7,
     556    key         = {ARM processor},
     557    title       = {ARM Architecture Reference Manual},
     558    publisher   = {ARM},
     559    volume      = {ARM DDI 0406C.b (ID072512)},
     560    year        = 2012,
     561}
     562
     563@book{Herlihy08,
     564    contributer = {pabuhr@plg},
     565    author      = {Herlihy, Maurice and Shavit, Nir},
     566    title       = {The Art of Multiprocessor Programming},
     567    year        = 2008,
     568    isbn        = {0123705916, 9780123705914},
     569    publisher   = {Morgan Kaufmann Publishers Inc.},
     570    address     = {San Francisco, CA, USA},
     571}
     572
     573@inproceedings{Chung10,
     574    keywords    = {transactional memory, lock-free programming, x86 architecture},
     575    contributer = {pabuhr@plg},
     576    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
     577    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
     578    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
     579    series      = {MICRO '43},
     580    year        = 2010,
     581    pages       = {39--50},
     582    numpages    = {12},
     583    publisher   = {IEEE Computer Society},
     584    address     = {Washington, DC, USA},
     585}
     586
     587@article{Buhr94a,
     588    keywords    = {assignment, parameter passing, multiple assignment},
     589    contributer = {pabuhr@plg},
     590    author      = {P. A. Buhr and David Till and C. R. Zarnke},
     591    title       = {Assignment as the Sole Means of Updating Objects},
     592    journal     = spe,
     593    month       = sep,
     594    year        = 1994,
     595    volume      = 24,
     596    number      = 9,
     597    pages       = {835-870},
     598}
     599
     600@inproceedings{Krischer08,
     601    keywords    = {exception handling, asynchronous, blocked tasks},
     602    contributer = {pabuhr@plg},
     603    author      = {Roy Krischer and Peter A. Buhr},
     604    title       = {Asynchronous Exception Propagation in Blocked Tasks},
     605    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
     606    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
     607    address     = {Atlanta, U.S.A},
     608    month       = nov,
     609    year        = 2008,
     610    pages       = {8-15},
     611}
     612
     613@article{oop:modpascal,
     614    keywords    = {ModPascal},
     615    contributer = {gjditchfield@plg},
     616    author      = {Walter G. Olthoff},
     617    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
     618    journal     = sigplan,
     619    volume      = 21,
     620    number      = 11,
     621    pages       = {429-443},
     622    month       = nov,
     623    year        = 1986
     624}
     625
     626@inproceedings{Shen91,
     627    keywords    = {Ada, polymorphism},
     628    contributer = {pabuhr@plg},
     629    author      = {Jun Shen and Gordon V. Cormack},
     630    title       = {Automatic instantiation in Ada},
     631    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
     632    organization= {ACM},
     633    address     = {San Jose, California, U.S.A},
     634    month       = oct,
     635    year        = 1991,
     636    pages       = {338-346},
     637}
     638
     639@article{Havender68,
     640    keywords    = {deadlock},
     641    contributer = {pabuhr@plg},
     642    author      = {J. W. Havender},
     643    title       = {Avoiding Deadlock in Multitasking Systems},
     644    journal     = ibmsj,
     645    volume      = 7,
     646    number      = 2,
     647    year        = 1968,
     648    pages       = {74-84},
     649}
     650
     651% B
     652
     653@incollection{beta:old,
     654    keywords    = {beta, patterns, virtual types},
     655    contributer = {gjditchfield@plg},
     656    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
     657    title       = {The BETA Programming Language},
     658    booktitle   = {Research Directions in Object-Oriented Programming},
     659    publisher   = {MIT Press},
     660    series      = {Computer Systems Series},
     661    year        = 1987,
     662    pages       = {7-48},
     663    editor      = {Bruce Shriver and Peter Wegner}
     664}
     665
     666@article{Knudsen87,
     667    keyword     = {static exception handling mechanism, BETA, sequel},
     668    contributor = {wyrmok@plg},
     669    author      = {J{\o}rgen Lindskov Knudsen},
     670    title       = {Better Exception Handling in Block Structured Systems},
     671    journal     = {IEEE Software},
     672    year        = 1987,
     673    month       = may,
     674    volume      = 4,
     675    number      = 3,
     676    pages       = {40-49},
     677    comments    = {
     678        Going up the call hierarchy to look for a handler does not fit an
     679        otherwise statically scoped language. Also, not knowing which handler
     680        to be used when raising an abnormal event is seen as a weakness of the
     681        (dynamic) exception handling mechanism. Knudsen believed that raising
     682        an exception should specify the handler for the exception -- the
     683        handler is chosen when the exception is raised.  However, I don't think
     684        his scheme can solve the problem, especially with all the callback
     685        routines commonly found in OO programming.
     686
     687        BETA exception handling mechanism uses his work as a foundation.
     688        However, I don't see any benefits BETA has over other language that is
     689        a direct consequence of Knudsen's work. On the other hand, my knowledge
     690        on BETA is very limited.
     691        }
     692}
     693
     694@book{BCPL,
     695    keywords    = {BCPL},
     696    contributer = {pabuhr@plg},
     697    author      = {M. Richards and C. Whitby-Strevens},
     698    title       = {{BCPL} -- The Language and Its Compiler},
     699    publisher   = {Cambridge University Press, Cambridge},
     700    year        = 1979,
     701}
     702
     703@incollection{Madsen87,
     704    keywords    = {nested classes},
     705    contributer = {pabuhr@watmsg},
     706    author      = {Ole Lehrmann Madsen},
     707    title       = {Block Structure and Object Oriented Languages},
     708    booktitle   = {Research Directions in Object-Oriented Programming},
     709    editor      = {Bruce Shriver and Peter Wegner},
     710    publisher   = {MIT Press},
     711    series      = {Computer Systems Series},
     712    year        = 1987,
     713    pages       = {113-128}
     714}
     715
     716@inproceedings{booleanClasses,
     717    keywords    = {specifications},
     718    contributer = {gjditchfield@plg},
     719    author      = {David McAllester and Ramin Zabih},
     720    title       = {Boolean Classes},
     721    crossref    = "OOPSLA86",
     722    pages       = {417-423},
     723    abstract    = {
     724        We extend the notion of class so that any Boolean combination of
     725        classes is also a class.  Boolean classes allow greater precision
     726        and conciseness in naming the class of objects governed a
     727        particular method [sic].  A class can be viewed as a predicate
     728        which is either true or false of any given object.  Unlike
     729        predicates however classes have an inheritance hierarchy which is
     730        known at compile time.  Boolean classes extend the notion of class,
     731        making classes more like predicates, while preserving the compile
     732        time computable inheritance hierarchy.
     733    },
     734    comment = {
     735        Classes are predicates; if object {\tt o} is in class {\tt C}, then
     736        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
     737        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
     738        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
     739        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
     740        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
     741        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
     742        c)}, can't be given methods or members because almost all classes
     743        would inherit them, violating modularity.  The rules for spotting
     744        these problems are complex.  Determining if one class inherits from
     745        another needs an exponential algorithm.
     746    }
     747}
     748
     749@mastersthesis{Krischer02,
     750    author      = {Roy Krischer },
     751    title       = {Bound Exceptions in Object-Oriented Programming Languages},
     752    school      = {Universit\"at Mannheim},
     753    address     = {Mannheim, Deutschland},
     754    year        = 2002,
     755    month       = oct,
     756    type        = {Diplomarbeit},
     757    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-KrischerThesis.ps.gz}}},
     758}
     759
     760@inproceedings{Buhr03,
     761    keywords    = {exception handling, bound handler},
     762    contributer = {pabuhr@plg},
     763    author      = {Peter A. Buhr and Roy Krischer},
     764    title       = {Bound Exceptions in Object Programming},
     765    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
     766                  Towards Emerging Application Areas and New Programming Paradigms},
     767    organization= {ECOOP},
     768    address     = {Darmstadt, Germany},
     769    month       = jul,
     770    year        = 2003,
     771    pages       = {20-26},
     772}
     773%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
     774
     775@inproceedings{Buhr06b,
     776    keywords    = {exception handling, bound exceptions},
     777    author      = {Peter A. Buhr and Roy Krischer},
     778    title       = {Bound Exceptions in Object-Oriented Programming},
     779    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
     780    booktitle   = {Advanced Topics in Exception Handling Techniques},
     781    publisher   = {Springer-Verlag},
     782    series      = {Lecture Notes in Computer Science},
     783    volume      = 4119,
     784    year        = 2006,
     785    pages       = {1-21}
     786}
     787
     788% C
     789
     790@book{C,
     791    keywords    = {C},
     792    contributer = {pabuhr@plg},
     793    author      = {Brian W. Kernighan and Dennis M. Ritchie},
     794    title       = {The {C} Programming Language},
     795    publisher   = {Prentice Hall},
     796    year        = 1988,
     797    edition     = {second},
     798    series      = {Prentice Hall Software Series},
     799    comment     = {
     800         based on draft-proposed ANSI C
     801    }
     802}
     803
     804@book{C:old,
     805    keywords    = {C},
     806    contributer = {pabuhr@plg},
     807    author      = {Brian W. Kernighan and Dennis M. Ritchie},
     808    title       = {The {C} Programming Language},
     809    publisher   = {Prentice Hall},
     810    year        = 1978,
     811    edition     = {first},
     812}
     813
     814@manual{ANSI89:C,
     815    keywords    = {ANSI C 89},
     816    contributer = {gjditchfield@plg},
     817    title       = {American National Standard for Information Systems -- Programming Language -- {C}},
     818    organization= {American National Standards Institute},
     819    address     = {1430 Broadway, New York, New York  10018},
     820    month       = dec,
     821    year        = 1989,
     822    note        = {X3.159-1989}
     823}
     824
     825@manual{C11,
     826    keywords    = {ISO/IEC C 11},
     827    contributer = {pabuhr@plg},
     828    key         = {C11},
     829    title       = {American National Standard Information technology -- Programming Languages -- {C}},
     830    organization= {International Standard ISO/IEC 9899-2011[2012]},
     831    publisher   = {International Standard Organization},
     832    address     = {http://www.iso.org},
     833    year        = 2012,
     834}
     835
     836@mastersthesis{Esteves04,
     837    keywords    = {Cforall, parametric polymorphism, overloading},
     838    contributer = {pabuhr@plg},
     839    author      = {Rodolfo Gabriel Esteves},
     840    title       = {C$\forall$, a Study in Evolutionary Design in Programming Languages},
     841    school      = {School of Computer Science, University of Waterloo},
     842    year        = 2004,
     843    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     844    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
     845}
     846
     847@inproceedings{c++scheme,
     848    keywords    = {},
     849    contributer = {gjditchfield@plg},
     850    author      = {Vincent F. Russo and Simon M. Kaplan},
     851    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
     852    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
     853    year        = 1988,
     854    pages       = {95-108},
     855    summary     = {
     856        The SIOD interpreter for a Scheme subset, written in C, has a
     857        tagged union representing data objects, and read(), eval(), and
     858        print() functions that are basically large switch statements that
     859        switch based on the tag.  The authors rewrote it to use a class
     860        with virtual read(), eval(), and print() members, without changing
     861        any algorithms.  The result was more modular, more easily
     862        extensible, more reliable, and slightly faster.
     863    },
     864    comment     = {
     865        The evidence given is thin.
     866        }
     867}
     868
     869@article{doskernel,
     870    keywords    = {light weight processes},
     871    contributer = {gjditchfield@plg},
     872    author      = {Tom Green},
     873    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
     874    journal     = {Dr. Dobb's Journal of Software Tools},
     875    year        = 1989,
     876    month       = feb, volume = 14, number = 2, pages = {45-51},
     877    comment     = {
     878       A light-weight multitasking kernel for MS-DOS.  A task\_control
     879       object holds task objects, which may block themselves on signal
     880       objects.  Task switching is normally preemptive, but tasks can turn
     881       off preemption before calling non-reentrant routines.  Source code
     882       is given.
     883    }
     884}
     885
     886@inproceedings{Doeppner87,
     887    keywords    = {concurrency},
     888    contributer = {pabuhr@plg},
     889    author      = {Thomas W. Doeppner and Alan J. Gebele},
     890    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
     891    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
     892    organization= {USENIX Association},
     893    address     = {Santa Fe, New Mexico, U.S.A},
     894    month       = nov,
     895    year        = 1987,
     896    pages       = {94-107},
     897}
     898
     899@book{Lippman91,
     900    keywords    = {C++},
     901    contributer = {pabuhr@plg},
     902    author      = {Stanley B. Lippman},
     903    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
     904    publisher   = {Addison-Wesley},
     905    year        = 1991,
     906    edition     = {second},
     907    note        = {QA76.73.C15L57},
     908}
     909
     910@book{c++:v1,
     911    keywords    = {C++},
     912    contributer = {gjditchfield@plg},
     913    author      = {Bjarne Stroustrup},
     914    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
     915    publisher   = {Addison-Wesley},
     916    year        = 1986,
     917    edition     = {first},
     918    series      = {Addison-Wesley Series in Computer Science}
     919}
     920
     921@book{c++:v2,
     922    keywords    = {C++},
     923    contributer = {pabuhr@plg},
     924    author      = {Bjarne Stroustrup},
     925    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
     926    publisher   = {Addison-Wesley},
     927    year        = 1991,
     928    edition     = {second},
     929}
     930
     931@book{c++:v3,
     932    keywords    = {C++},
     933    contributer = {pabuhr@plg},
     934    author      = {Bjarne Stroustrup},
     935    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
     936    publisher   = {Addison-Wesley},
     937    year        = 1997,
     938    edition     = {third},
     939}
     940
     941@manual{Csharp,
     942    keywords    = {C#},
     943    contributer = {pabuhr@plg},
     944    title       = {C\# Language Specification, Standard ECMA-334},
     945    organization= {ECMA International Standardizing Information and Communication Systems},
     946    month       = jun,
     947    year        = 2006,
     948    edition     = {4th},
     949}
     950
     951@article{Buhr85,
     952    keywords    = {goto, multi-exit loop},
     953    contributer = {pabuhr@plg},
     954    author      = {P. A. Buhr},
     955    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
     956    journal     = sigplan,
     957    volume      = 20,
     958    number      = 11,
     959    month       = nov,
     960    year        = 1985,
     961    pages       = {14-22}
     962}
     963
     964@techreport{cforall-ug,
     965    keywords    = {cforall, user guide},
     966    contributer = {pabuhr@plg},
     967    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
     968    title       = {\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}\ Users Guide, Version 0.1},
     969    institution = {Department of Computer Science, University of Waterloo},
     970    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     971    month       = oct,
     972    year        = 2001,
     973    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-\char`\~cforall/\-cfa.ps}},
     974}
     975
     976@manual{cforall,
     977    keywords    = {polymorphism},
     978    contributer = {gjditchfield@plg},
     979    author      = {Glen Ditchfield},
     980    title       = {Cforall Reference Manual and Rationale},
     981    edition     = {Revision 1.82},
     982    month       = jan,
     983    year        = 1998,
     984    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
     985}
     986
     987@book{Yourdon79,
     988    keywords    = {software engineering},
     989    contributer = {pabuhr@plg},
     990    editor      = {Edward Nash Yourdon},
     991    title       = {Classics in Software Engineering},
     992    publisher   = {Yourdon Press},
     993    year        = 1979,
     994}
     995
     996@inproceedings{Crnogorac98,
     997    keywords    = {inheritance anomaly},
     998    contributer = {pabuhr@plg},
     999    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
     1000    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
     1001    editor      = {Eric Jul},
     1002    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
     1003    series      = {Lecture Notes in Computer Science},
     1004    publisher   = {Springer},
     1005    volume      = 1445,
     1006    year        = 1998,
     1007    pages       = {571-601},
     1008    ISBN        = {3-540-64737-6},
     1009    ISSN        = {0302-9743},
     1010    abstract    = {
     1011        Inheritance is one of the key concepts in object-oriented rogramming. However, the
     1012        usefulness of inheritance in concurrent object-oriented programming is greatly
     1013        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
     1014        by undesirable re-definitions of inherited code. The problem is aggravated by the
     1015        lack of a formal analysis, with a multitude of differing proposals and conflicting
     1016        opinions causing the current state of research, and further directions, to be
     1017        unclear. In this paper we present a formal analysis of inheritance anomaly in
     1018        concurrent object-oriented programming. Starting from a formal definition of the
     1019        problem we develop a taxonomy of the anomaly, and use it to classify the various
     1020        proposals. As a result, the major ideas, trends and limitations of the various
     1021        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
     1022        exposition of its causes and implications are the pre-requisites for a successful
     1023        integration of inheritance and concurrency.
     1024    },
     1025}
     1026
     1027@book{CLU,
     1028    keywords    = {CLU},
     1029    contributer = {gjditchfield@plg},
     1030    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
     1031                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
     1032    title       = {CLU Reference Manual},
     1033    publisher   = {Springer-Verlag},
     1034    year        = 1981,
     1035    volume      = 114,
     1036    series      = {Lecture Notes in Computer Science}
     1037}
     1038
     1039@manual{Cobol14,
     1040    keywords    = {ISO/IEC Cobol 14},
     1041    contributer = {pabuhr@plg},
     1042    key         = {Cobol14},
     1043    title       = {Programming Languages -- {Cobol}},
     1044    edition     = {second},
     1045    organization= {International Standard ISO/IEC 1989:2014},
     1046    publisher   = {International Standard Organization},
     1047    address     = {http://www.iso.org},
     1048    year        = 2014,
     1049}
     1050
     1051@article{coagulation,
     1052    keywords    = {register allocation, instruction selection, jello},
     1053    contributer = {gjditchfield@plg},
     1054    author      = {Michael Karr},
     1055    title       = {Code Generation by Coagulation},
     1056    journal     = sigplan,
     1057    year        = 1984,
     1058    month       = jun, volume = 19, number = 6, pages = {1-12},
     1059    note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
     1060    abstract    = {
     1061        This paper describes a new approach to code-generation.  The
     1062        central tenet is that there must be a more intimate coupling
     1063        between register allocation and instruction selection than exists
     1064        in present-day technology.  This is achieved by generating code in
     1065        very small regions and gradually coalescing the part of the program
     1066        that is ``compiled''.
     1067    },
     1068    comment     = {
     1069        Imagine the program, including the subroutines, spread out over a
     1070        table, with the compiler dropping Jello on the parts as they are
     1071        compiled.  At first little drops appear in seemingly random places.
     1072        These get bigger and combine with other drops to form growing
     1073        globs.  When two globs meet, ripples will go out through each as
     1074        they adjust to each other's presence, although the parts of the
     1075        globs that formed first are less affected by the ripples.  When
     1076        compilation is complete, there is one congealed mass.
     1077    }
     1078}
     1079
     1080@article{Soloway83,
     1081    keywords    = {goto, structure programming},
     1082    contributer = {pabuhr@plg},
     1083    author      = {E. Soloway and J. Bonar and K. Ehrlich},
     1084    title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
     1085    journal     = cacm,
     1086    month       = nov,
     1087    year        = 1983,
     1088    volume      = 26,
     1089    number      = 11,
     1090    pages       = {853-860},
     1091}
     1092
     1093@book{sml:commentary,
     1094    author      = {Robin Milner and Mads Tofte},
     1095    title       = {Commentary on Standard {ML}},
     1096    publisher   = {MIT Press},
     1097    address     = {Cambridge, Massachusetts, U.S.A.},
     1098    year        = 1991
     1099}
     1100
     1101@article{Hyman66,
     1102    keywords    = {mutual exclusion, software solution, incorrect},
     1103    contributer = {pabuhr@plg},
     1104    author      = {Harris Hyman},
     1105    title       = {Comments on a Problem in Concurrent Programming Control},
     1106    journal     = cacm,
     1107    month       = jan,
     1108    year        = 1966,
     1109    volume      = 9,
     1110    number      = 1,
     1111    pages       = {45},
     1112    note        = {Letter to the Editor}
     1113}
     1114
     1115@inproceedings{clos,
     1116    keywords    = {},
     1117    contributer = {gjditchfield@plg},
     1118    author      = {Linda G. DeMichiel and Richard P. Gabriel},
     1119    title       = {The Common Lisp Object System: An Overview},
     1120    booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
     1121    year        = 1987,
     1122    pages       = {151-170},
     1123    publisher   = {Springer-Verlag}
     1124}
     1125
     1126@book{CommonLisp,
     1127    keywords    = {common lisp},
     1128    contributer = {pabuhr@plg},
     1129    author      = {G. Steele},
     1130    title       = {COMMON LISP: The Language},
     1131    publisher   = {Digital Press},
     1132    year        = 1984
     1133}
     1134
     1135@article{CommonLoops,
     1136    author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
     1137    title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
     1138    address     = {Portland, Oregon, U.S.A.},
     1139    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
     1140    year        = 1986,
     1141    month       = sep,
     1142    pages       = {17-29},
     1143}
     1144
     1145@article{co-overview,
     1146    keywords    = {CommonObjects, implementation, encapsulation},
     1147    contributer = {gjditchfield@plg},
     1148    author      = {Alan Snyder},
     1149    title       = {CommonObjects: An Overview},
     1150    journal     = sigplan,
     1151    year        = 1986,
     1152    month       = oct, volume = 21, number = 10, pages = {19-28},
     1153    note        = {Object Oriented Programming Workshop}
     1154}
     1155
     1156@article{CSP,
     1157    keywords    = {CSP, concurrency},
     1158    contributer = {pabuhr@plg},
     1159    author      = {C. A. R. Hoare},
     1160    title       = {Communicating Sequential Processes},
     1161    journal     = cacm,
     1162    month       = aug,
     1163    year        = 1978,
     1164    volume      = 21,
     1165    number      = 8,
     1166    pages       = {666-677}
     1167}
     1168
     1169@book{Hoare85,
     1170    author      = {C. A. R. Hoare},
     1171    title       = {Communicating Sequential Processes},
     1172    year        = 1985,
     1173    isbn        = {0-13-153271-5},
     1174    publisher   = {Prentice-Hall, Inc.},
     1175    address     = {Upper Saddle River, NJ, USA},
     1176    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
     1177}
     1178
     1179@article{Hansen72a,
     1180    keywords    = {monitors, automatic signal},
     1181    contributer = {pabuhr@plg},
     1182    author      = {Per {Brinch Hansen}},
     1183    title       = {A Comparison of Two Synchronizing Concepts},
     1184    journal     = acta,
     1185    volume      = 1,
     1186    year        = 1972,
     1187    pages       = {190-199},
     1188}
     1189
     1190@book{Aho06,
     1191    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
     1192    title       = {Compilers: Principles, Techniques, and Tools},
     1193    edition     = {second},
     1194    year        = {2006},
     1195    publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
     1196    address     = {Boston, MA, USA},
     1197}
     1198
     1199@article{Bacon94,
     1200    keywords    = {parallelizing compiler},
     1201    contributer = {pabuhr@plg},
     1202    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
     1203    title       = {Compiler Transformations for High-Performance Computing},
     1204    journal     = acmcs,
     1205    volume      = 26,
     1206    number      = 4,
     1207    month       = dec,
     1208    year        = 1994,
     1209    pages       = {345-420},
     1210}
     1211
     1212@inproceedings{Berger01,
     1213    author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
     1214    title       = {Composing High-Performance Memory Allocators},
     1215    booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
     1216    pages       = {114-124},
     1217    year        = 2001,
     1218    url         = {http://citeseer.ist.psu.edu/berger01composing.html}
     1219}
     1220
     1221@article{Andrews83,
     1222    keywords    = {general concurrency},
     1223    contributer = {pabuhr@plg},
     1224    author      = {Gregory R. Andrews and Fred B. Schneider},
     1225    title       = {Concepts and Notations for Concurrent Programming},
     1226    journal     = acmcs,
     1227    volume      = 15,
     1228    number      = 1,
     1229    month       = mar,
     1230    year        = 1983,
     1231    pages       = {3-43},
     1232}
     1233
     1234@mastersthesis{Mok97,
     1235    author      = {Wing Yeung Russell Mok},
     1236    title       = {Concurrent Abnormal Event Handling Mechanisms},
     1237    school      = {University of Waterloo},
     1238    year        = 1997,
     1239    month       = sep,
     1240    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1241    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-MokThesis.ps.gz}}},
     1242}
     1243
     1244@article{Gehani86,
     1245    keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
     1246    contributer = {dgharriss@plg},
     1247    author      = {N. H. Gehani and W. D. Roome},
     1248    title       = {{Concurrent C}},
     1249    journal     = spe,
     1250    volume      = 16,
     1251    number      = 9,
     1252    month       = sep,
     1253    year        = 1986,
     1254    pages       = {821-844},
     1255    abstract    = {
     1256        Our objective is to enhance C so that it can be used to write
     1257        concurrent programs that can run efficiently on both single computers
     1258        and multicomputers.  Our concurrent programming extensions to C are
     1259        based on the {\it rendezvous\/} concept.  These extensions include
     1260        mechanisms for the declaration and creation of processes, for process
     1261        synchronization and interaction, for process termination and abortion.
     1262        We give a rationale for our decisions and compare Concurrent C
     1263        extensions with the concurrent programming facilities in Ada.
     1264        Concurrent C has been implemented on the UNIX system running on a
     1265        single processor.  A distributed version of Concurrent C is being
     1266        implemented.
     1267   },
     1268   comment      = {
     1269        Select with guarded and screened accepts.  Typed processes.
     1270        Process-valued expressions and process variables.  Processes have
     1271        execution priority: Create {\em process-type-name}(args) [with
     1272        priority(p)],
     1273        and the priority can be changed on the fly.  Complicated guard/
     1274        screen structure on accept: accept {\em transaction}(param names)
     1275        [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
     1276        appear in functions!  Can specify timeouts on transaction calls.
     1277        Code examples: buffer process, dining philosophers, lock manager.
     1278        Section on diffs between Concurrent C and Ada.
     1279   }
     1280}
     1281
     1282@article{ConcurrentC++,
     1283    keywords    = {concurrency, C++},
     1284    contributer = {pabuhr@plg},
     1285    author      = {N. H. Gehani and W. D. Roome},
     1286    title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
     1287    journal     = spe,
     1288    month       = dec,
     1289    year        = 1988,
     1290    volume      = 18,
     1291    number      = 12,
     1292    pages       = {1157-1177}
     1293}
     1294
     1295@article{Courtois71,
     1296    keywords    = {reader and writer, p and v},
     1297    contributer = {pabuhr@plg},
     1298    author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
     1299    title       = {Concurrent Control with Readers and Writers},
     1300    journal     = cacm,
     1301    volume      = 14,
     1302    number      = 10,
     1303    month       = oct,
     1304    year        = 1971,
     1305    pages       = {667-668},
     1306    annote      = {
     1307                Many errors in the two solutions.
     1308    }
     1309}
     1310
     1311@incollection{Reppy93,
     1312    keywords    = {ML, concurrency, continuation passing},
     1313    contributer = {pabuhr@plg},
     1314    author      = {John H. Reppy},
     1315    title       = {Concurrent {ML}: Design, Application and Semantics},
     1316    booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
     1317    editor      = {P. E. Lauer},
     1318    pages       = {165-198},
     1319    publisher   = {Springer-Verlag},
     1320    address     = {Berlin, DE},
     1321    year        = 1993,
     1322    ISBN        = {3-540-56883-2},
     1323    abstract    = {
     1324        Concurrent ML (CML) is a high-level language for concurrent
     1325        programming. It is an extension of Standard ML (SML) and is implemented
     1326        on top of Standard ML of New Jersey (SML/NJ). CML is a practical
     1327        language and is being used to build real systems. It demonstrates that
     1328        one need not sacrifice high-level notation in order to have good
     1329        performance. CML is also a well-defined language. In the tradition of
     1330        SML, it has a formal semantics and its type-soundness has been
     1331        proven.},
     1332    note        = {
     1333        Proceedings of International Lecture Series 1991-92, McMaster
     1334        UniversityLecture Notes in Computer Science 693.},
     1335}
     1336
     1337@article{BLASE-2,
     1338    keywords    = {concurrency, BLASE-2},
     1339    contributer = {pabuhr@plg},
     1340    author      = {Piyush Mehrotra and John Van Rosendale},
     1341    title       = {Concurrent Object Access in BLASE~2},
     1342    journal     = sigplan,
     1343    volume      = 24,
     1344    number      = 4,
     1345    month       = apr,
     1346    year        = 1989,
     1347    pages       = {40-42},
     1348    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
     1349                   Sept. 26--27, 1988, San Diego, California, U.S.A},
     1350}
     1351
     1352@techreport{Kafura88,
     1353    keywords    = {objects, concurrency},
     1354    contributer = {pabuhr@plg},
     1355    author      = {Dennis Kafura},
     1356    title       = {Concurrent Object-Oriented Real-Time Systems Research},
     1357    institution = {Department of Computer Science, Virginia Polytechnic},
     1358    number      = {TR 88-47},
     1359    year        = 1988
     1360}
     1361
     1362@article{Buhr92a,
     1363    keywords    = {C++, concurrency, light-weight process, shared memory},
     1364    contributer = {pabuhr@plg},
     1365    author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
     1366    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     1367    journal     = spe,
     1368    volume      = 22,
     1369    number      = 2,
     1370    month       = feb,
     1371    year        = 1992,
     1372    pages       = {137-172},
     1373}
     1374
     1375@techreport{uC++,
     1376    keywords    = {C++, concurrency, light-weight process, shared memory},
     1377    contributer = {pabuhr@plg},
     1378    author      = {Peter A. Buhr},
     1379    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 6.1.0},
     1380    institution = {School of Computer Science, University of Waterloo},
     1381    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1382    month       = jul,
     1383    year        = 2015,
     1384    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
     1385}
     1386
     1387@book{Burns93,
     1388    keywords    = {concurrency, Pascal},
     1389    contributer = {pabuhr@plg},
     1390    author      = {Alan Burns and Geoff Davies},
     1391    title       = {Concurrent Programming},
     1392    publisher   = {Addison-Wesley},
     1393    year        = 1993,
     1394}
     1395
     1396@article{Hansen73a,
     1397    keywords    = {monitors},
     1398    contributer = {pabuhr@plg},
     1399    author      = {Per {Brinch Hansen}},
     1400    title       = {Concurrent Programming Concepts},
     1401    journal     = spe,
     1402    month       = dec,
     1403    year        = 1973,
     1404    volume      = 5,
     1405    number      = 4,
     1406    pages       = {223-245},
     1407}
     1408
     1409@book{Lea97,
     1410    keywords    = {concurrency, Java},
     1411    contributer = {pabuhr@plg},
     1412    author      = {Doug Lea},
     1413    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
     1414    publisher   = {Addison-Wesley},
     1415    year        = 1997,
     1416    edition     = {first},
     1417}
     1418
     1419@book{Hartley98,
     1420    keywords    = {concurrency, Java},
     1421    contributer = {pabuhr@plg},
     1422    author      = {Stephen J. Hartley},
     1423    title       = {Concurrent Programming: The {J}ava Programming Language},
     1424    publisher   = {Oxford University Press},
     1425    year        = 1998,
     1426    edition     = {first},
     1427}
     1428
     1429@book{Lea00,
     1430    keywords    = {concurrency, Java},
     1431    contributer = {pabuhr@plg},
     1432    author      = {Doug Lea},
     1433    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
     1434    publisher   = {Addison-Wesley},
     1435    year        = 2000,
     1436    edition     = {second},
     1437}
     1438
     1439@book{ConcurrentC,
     1440    keywords    = {concurrency, C},
     1441    contributer = {pabuhr@plg},
     1442    author      = {N. H. Gehani and W. D. Roome},
     1443    title       = {The {Concurrent C} Programming Language},
     1444    publisher   = {Silicon Press, NJ},
     1445    year        = 1989,
     1446}
     1447
     1448@book{Andrews91:book,
     1449    keywords    = {concurrency},
     1450    contributer = {pabuhr@plg},
     1451    author      = {Gregory R. Andrews},
     1452    title       = {Concurrent Programming: Principles and Practice},
     1453    publisher   = {Benjamin/Cummings Publishing Company, Inc., Redwood City, California},
     1454    year        = 1991,
     1455}
     1456
     1457@article{Buhr05a,
     1458    keywords    = {concurrency, myths},
     1459    contributer = {pabuhr@plg},
     1460    author      = {Peter A. Buhr and Ashif S. Harji},
     1461    title       = {Concurrent Urban Legends},
     1462    journal     = {Concurrency and Computation: Practice and Experience},
     1463    month       = aug,
     1464    year        = 2005,
     1465    volume      = 17,
     1466    number      = 9,
     1467    pages       = {1133-1172},
     1468}
     1469
     1470@techreport{Buhr90,
     1471    keywords    = {objects, concurrency},
     1472    contributer = {gjditchfield@plg},
     1473    author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke},
     1474    title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     1475    institution = {Department of Computer Science, University of Waterloo},
     1476    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1477    number      = {CS-90-18},
     1478    month       = may,
     1479    year        = 1990
     1480}
     1481
     1482@book{Burns98,
     1483    keywords    = {concurrency, Ada},
     1484    author      = {Alan Burns and Andy Wellings},
     1485    title       = {Concurrency in {Ada}},
     1486    publisher   = {Cambridge University Press},
     1487    year        = 1998,
     1488    edition     = {second},
     1489}
     1490
     1491@book{Bernstein93,
     1492    keywords    = {concurrency},
     1493    author      = {Arthur J. Bernstein and Philip M. Lewis},
     1494    title       = {Concurrency in Programming and Database Systems},
     1495    publisher   = {Jones and Bartlett},
     1496    year        = 1993,
     1497}
     1498
     1499@inproceedings{Pitman01,
     1500    keywords    = {LISP, exception handling},
     1501    contributer = {pabuhr@plg},
     1502    author      = {Kent M. Pitman},
     1503    title       = {Condition Handling in the Lisp Language Family},
     1504    booktitle   = {Exception Handling},
     1505    publisher   = {Springer-Verlag},
     1506    volume      = 2022,
     1507    series      = {LNCS},
     1508    year        = 2001,
     1509    pages       = {39-59}
     1510}
     1511
     1512@inbook{enhancement,
     1513    keywords    = {bounded polymorphism, Comandos},
     1514    contributer = {gjditchfield@plg},
     1515    author      = {Chris Horn},
     1516    title       = {Conformace, Genericity, Inheritance and Enhancement},
     1517    pages       = {223-233},
     1518    publisher   = {Springer-Verlag},
     1519    year        = 1987,
     1520    volume      = 276,
     1521    series      = "Lecture Notes in Computer Science",
     1522    note        = "ECOOP '87 European Conference on Object-Oriented Programming",
     1523    summary     = {
     1524        Considers effect of conformance on Meyer's conclusions in
     1525        \cite{polymorphism}.
     1526
     1527        Implementing a swap function as a member of a type {\cd Swappable}
     1528        with {\cd in out Top} parameters doesn't work, because conformance
     1529        requires arguments to be of type {\cd Top}.
     1530
     1531        An enhancive type has a type parameter, bounded by some type, and
     1532        defines members.  Types conforming to the bound can be passed as
     1533        arguments to create types with the extra members.  The signature of
     1534        the enhanced type is based on the signature of the argument, not the
     1535        bound, as if enhancive types were macros.  Hence enhanced types do not
     1536        necessarily conform to each other.  Types conforming to the bound
     1537        conform to enhanced types, which allows new functions to be applied
     1538        to old types.
     1539
     1540        Enhancive types are not generic types.  If the argument is omitted,
     1541        the bound is used as a default.  Assignment of enhanced types to
     1542        default-enhanced types is allowed (enhanced types conform to the
     1543        default-enhanced type).  This is (probably) statically type-safe,
     1544        because arguments must conform to the bound, and the new members
     1545        only use operations defined for the bound.
     1546
     1547        With facilities for member renaming and deletion, enhancive types
     1548        provide the equivalent of constrained generic types.
     1549    }
     1550}
     1551
     1552@phdthesis{Ditchfield92,
     1553    keywords    = {C, parametric polymorphism, overloading},
     1554    contributer = {pabuhr@plg},
     1555    author      = {Glen Jeffrey Ditchfield},
     1556    title       = {Contextual Polymorphism},
     1557    school      = {Department of Computer Science, University of Waterloo},
     1558    year        = 1992,
     1559    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1560    note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
     1561}
     1562
     1563@inproceedings{frameworks:HHG90,
     1564    keywords    = {formal},
     1565    contributer = {pabuhr@plg},
     1566    author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
     1567    title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
     1568    booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
     1569    year        = 1990,
     1570    pages       = {169-180},
     1571}
     1572
     1573@article{Wand80,
     1574    keywords    = {concurrency, continuation},
     1575    contributer = {pabuhr@plg},
     1576    author      = {Mitchell Wand},
     1577    title       = {Continuation-Based Multiprocessing},
     1578    publisher   = {The Lisp Conference},
     1579    journal     = {Conference Record of the 1980 Lisp Conference},
     1580    pages       = {19-28},
     1581    year        = 1980,
     1582}
     1583
     1584@article{Hieb90,
     1585    keywords    = {continuations, concurrency},
     1586    contributer = {pabuhr@plg},
     1587    author      = {Robert Hieb and R. Kent Dybvig},
     1588    title       = {Continuations and Concurrency},
     1589    journal     = sigplan,
     1590    volume      = 25,
     1591    number      = 3,
     1592    month       = mar,
     1593    year        = 1990,
     1594    pages       = {128-136},
     1595    note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
     1596                   March. 14--16, 1990, Seattle, Washington, U.S.A},
     1597}
     1598
     1599@inproceedings{Haynes84,
     1600    keywords    = {continuations, coroutines, Scheme},
     1601    contributer = {pabuhr@plg},
     1602    author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
     1603    title       = {Continuations and Coroutines},
     1604    booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
     1605    organization= {Association for Computing Machinery},
     1606    month       = aug,
     1607    year        = 1984,
     1608    pages       = {293-298},
     1609    abstract    = {
     1610        The power of first class continuations is demonstrated by implementing
     1611        a variety of coroutine mechanisms using only continuations and
     1612        functional abstraction. The importance of general abstraction
     1613        mechanisms such as continuations is discussed.},
     1614}
     1615
     1616@inproceedings{Zahn74,
     1617    keywords    = {goto, structured programming},
     1618    contributer = {pabuhr@plg},
     1619    author      = {C. T. Zahn},
     1620    title       = {Control Statement for Natural Top-down Structured Programming},
     1621    booktitle   = {Symposium on Programming Languages},
     1622    address     = {Paris, France},
     1623    year        = 1974,
     1624}
     1625
     1626@techreport{Dijkstra65,
     1627    keywords    = {concurrency, Dekker's algorithm, semaphores},
     1628    contributer = {pabuhr@plg},
     1629    author      = {Edsger W. Dijkstra},
     1630    title       = {Cooperating Sequential Processes},
     1631    institution = {Technological University},
     1632    address     = {Eindhoven, Netherlands},
     1633    year        = 1965,
     1634    note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
     1635}
     1636
     1637@book{Marlin80,
     1638    keywords    = {coroutines},
     1639    contributer = {pabuhr@plg},
     1640    author      = {Christopher D. Marlin},
     1641    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
     1642    publisher   = {Springer-Verlag},
     1643    year        = 1980,
     1644    volume      = 95,
     1645    series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
     1646}
     1647 
     1648@article{Wang71,
     1649    keywords    = {coroutines},
     1650    contributer = {pabuhr@plg},
     1651    author      = {Arne Wang and Ole-Johan Dahl},
     1652    title       = {Coroutine Sequencing in a Block Structured Environment},
     1653    journal     = "BIT",
     1654    volume      = 11,
     1655    month       = nov,
     1656    year        = 1971,
     1657    pages       = {425-449},
     1658}
     1659 
     1660@article{Castagna95,
     1661    keywords    = {type-systems, covariance, contravariance},
     1662    contributer = {pabuhr@plg},
     1663    author      = {Giuseppe Castagna},
     1664    title       = {Covariance and Contravariance : Conflict without a Cause},
     1665    journal     = toplas,
     1666    volume      = 17,
     1667    number      = 3,
     1668    month       = may,
     1669    year        = 1995,
     1670    pages       = {341-447},
     1671}
     1672
     1673@book{Fischer88,
     1674    keywords    = {compiler construction},
     1675    author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
     1676    title       = {Crafting a Compiler},
     1677    publisher   = {Benjamin Cummings},
     1678    year        = 1991,
     1679}
     1680
     1681@inproceedings{Jim02,
     1682    keywords    = {C dialect, parametric polymorphic, safe memory allocation},
     1683    contributer = {pabuhr@plg},
     1684    author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
     1685    title       = {{C}yclone: A Safe Dialect of {C}},
     1686    booktitle   = {USENIX Annual Technical Conference},
     1687    organization= {USENIX Association},
     1688    address     = {Monterey, California, U.S.A.},
     1689    month       = jun,
     1690    year        = 2002,
     1691    pages       = {275-288},
     1692}
     1693
     1694% D
     1695
     1696@manual{D,
     1697    keywords    = {D programming language},
     1698    contributer = {pabuhr@plg},
     1699    title       = {{D} Programming Language},
     1700    author      = {Walter Bright and Andrei Alexandrescu},
     1701    organization= {Digital Mars},
     1702    year        = 2016,
     1703    note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
     1704}
     1705
     1706@techreport{Cui90,
     1707    keywords    = {exception handling},
     1708    contributer = {pabuhr@plg},
     1709    author      = {Qian Cui},
     1710    title       = {Data-Oriented Exception Handling},
     1711    institution = {Department of Computer Science, University of Maryland},
     1712    address     = {College Park, Maryland, U.S.A., 20742},
     1713    number      = {CS-TR-2384},
     1714    month       = jan,
     1715    year        = 1990,
     1716}
     1717
     1718@article{Cui92,
     1719    contributer = {rkrische@plg},
     1720    author      = {Qian Cui and John Gannon},
     1721    title       = {Data-oriented Exception Handling},
     1722    journal     = {IEEE Transactions on Software Engineering},
     1723    month       = may,
     1724    year        = 1992,
     1725    volume      = 18,
     1726    number      = 5,
     1727    pages       = {393-401},
     1728}
     1729
     1730@manual{SIMULA87,
     1731    keywords    = {Simula standard},
     1732    contributer = {gjditchfield@plg},
     1733    title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
     1734    organization= {Standardiseringskommissionen i Sverige},
     1735    note        = {Svensk Standard SS 63 61 14},
     1736    year        = 1987,
     1737    abstract    = {
     1738        Standard for the programming language SIMULA.  Written in English.
     1739    }
     1740}
     1741
     1742@article{Liskov75,
     1743    keywords    = {abstract data types, encapsulation, verification},
     1744    contributer = {gjditchfield@plg},
     1745    author      = {Barbara H. Liskov},
     1746    title       = {Data Types and Program Correctness},
     1747    journal     = sigplan,
     1748    year        = 1975,
     1749    month       = jul,
     1750    volume      = 10,
     1751    number      = 7,
     1752    pages       = {16-17},
     1753    summary     = {
     1754        Type definitions should contain the implementation of the type and
     1755        its operations.  The grouping makes programs simpler and more
     1756        understandable.  Encapsulating the definition aids verification and
     1757        forces a precise specification of the interface.
     1758    }
     1759}
     1760
     1761@article{dtav,
     1762    keywords    = {Russell, types},
     1763    contributer = {gjditchfield@plg},
     1764    author      = {James Donahue and Alan Demers},
     1765    title       = {Data Types are Values},
     1766    journal     = toplas,
     1767    month       = jul,
     1768    year        = 1985,
     1769    volume      = 7,
     1770    number      = 3,
     1771    pages       = {426-445},
     1772    comment     = {
     1773        Data types are sets of operations providing interpretations of
     1774        values from a meaningless, typeless universal value space.  Types
     1775        and operations are also contained in this value space.
     1776
     1777        Functions returning types replace generic types.
     1778
     1779        Polymorphic functions have type parameters.  Evaluation is not
     1780        macro expansion:
     1781        \begin{verbatim}
     1782            R == func [n:val integer; T:type[]] val integer
     1783                {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
     1784        \end{verbatim}
     1785    }
     1786}
     1787
     1788@article{Holt72,
     1789    keywords    = {concurrency, deadlock},
     1790    contributer = {pabuhr@plg},
     1791    author      = {Richard C. Holt},
     1792    title       = {Some Deadlock Properties of Computer Systems},
     1793    journal     = acmcs,
     1794    volume      = 4,
     1795    number      = 3,
     1796    month       = sep,
     1797    year        = 1972,
     1798    pages       = {179-196},
     1799}
     1800
     1801@misc{debug-malloc,
     1802    keywords    = {memory allocation debugger},
     1803    contributer = {gjditchfield@plg},
     1804    author      = {Conor P. Cahill},
     1805    title       = {debug\_malloc},
     1806    howpublished= {comp.sources.unix, volume 22, issue 112},
     1807    abstract    = {
     1808        This package is a collection of routines which are a drop-in
     1809        replacement for the malloc(3), memory(3), string(3), and bstring(3)
     1810        library functions.
     1811    }
     1812}
     1813
     1814@book{sml,
     1815    keywords    = {},
     1816    contributer = {pabuhr@plg},
     1817    author      = {Robin Milner and Mads Tofte and Robert Harper},
     1818    title       = {The Definition of Standard {ML}},
     1819    publisher   = {MIT Press},
     1820    address     = {Cambridge, Massachusetts, U.S.A.},
     1821    year        = 1990
     1822}
     1823
     1824@techreport{sml:old,
     1825    keywords    = {},
     1826    contributer = {gjditchfield@plg},
     1827    author      = {Robert Harper and Robin Milner and Mads Tofte},
     1828    title       = {The Definition of Standard {ML}, Version 2},
     1829    institution = {Department of Computer Science, University of Edinburgh},
     1830    year        = 1988,
     1831    address     = {The King's Buildings, Edinburgh EH9 3JZ},
     1832    type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
     1833}
     1834
     1835@inproceedings{Reynolds72,
     1836    keywords    = {continuation},
     1837    contributer = {pabuhr@plg},
     1838    author      = {John Reynolds},
     1839    title       = {Definitional Interpreters for Higher Order Programming Languages},
     1840    booktitle   = {ACM Conference Proceedings},
     1841    organization= {ACM},
     1842    year        = 1972,
     1843    pages       = {717-740}
     1844}
     1845
     1846@article{Buhr16,
     1847    keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
     1848    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
     1849    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
     1850    journal     = {Concurrency and Computation: Practice and Experience},
     1851    volume      = 28,
     1852    number      = 1,
     1853    pages       = {144-165},
     1854    month       = jan,
     1855    year        = 2016,
     1856}
     1857
     1858@misc{steelman,
     1859    keywords    = {Ada},
     1860    contributer = {gjditchfied@plg},
     1861    author      = {High Order Language Working Group},
     1862    title       = {Department of Defense Requirements for High Order Computer Programming Languages},
     1863    month       = jun, year = 1978,
     1864    note        = {Reprinted in \cite{pldesign}.}
     1865}
     1866
     1867@incollection{Tsay98,
     1868    keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
     1869    author      = {Yih-Kuen Tsay},
     1870    title       = {Deriving a scalable algorithm for mutual exclusion},
     1871    booktitle   = {Distributed Computing},
     1872    editor      = {Shay Kutten},
     1873    volume      = {1499},
     1874    series      = {LNCS},
     1875    publisher   = {Springer},
     1876    address     = {Berlin Heidelberg},
     1877    year        = {1998},
     1878    pages       = {393-407},
     1879}
     1880
     1881@article{Conway63,
     1882    keywords    = {coroutine, original},
     1883    contributer = {pabuhr@plg},
     1884    author      = {Melvin E. Conway},
     1885    title       = {Design of a Separable Transition-Diagram Compiler},
     1886    journal     = cacm,
     1887    month       = jul,
     1888    year        = 1963,
     1889    volume      = 6,
     1890    number      = 7,
     1891    pages       = {396-408},
     1892}
     1893
     1894@book{Stroustrup94,
     1895    keywords    = {C++},
     1896    contributor = {wyrmok@plg},
     1897    author      = {Bjarne Stroustrup},
     1898    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     1899    publisher   = {Addison-Wesley},
     1900    year        = 1994
     1901}
     1902
     1903@inproceedings{st:concurrent,
     1904    keywords    = {concurrency, Smalltalk, futures},
     1905    contributer = {gjditchfield@plg},
     1906    author      = {Yasuhiko Yokote and Mario Tokoro},
     1907    title       = {The Design and Implementation of {ConcurrentSmalltalk}},
     1908    crossref    = "OOPSLA86",
     1909    pages       = {331-340},
     1910    comment     = {
     1911        Objects are ordinary Smalltalk objects or ``atomic'' objects, which
     1912        process messages one at a time in FIFO order.  Asynchronous method
     1913        calls are made by appending ``\&'' at the call site.  The sender does
     1914        not wait for a reply.  If the method returns a value, it
     1915        (immediately?) returns a CBox object, which is like a future.  The
     1916        sender can send the ``receive'' message to the CBox, which blocks
     1917        until the CBox contains a value.
     1918
     1919        A method can execute the ``\verb|^|'' statement to return an object
     1920        and terminate, or it can execute ``\verb|^^|'' to return an object
     1921        and continue execution.  If ``\verb|^^foo|'' is executed after
     1922        ``\verb|^^bar|'', foo is discarded, since bar has already been
     1923        returned.
     1924
     1925        The article does not say whether asynchronous messages can be sent
     1926        to ordinary objects, or whether ordinary messages can be sent to
     1927        atomic objects.
     1928    }
     1929}
     1930
     1931@inproceedings{Ichbiah83,
     1932    keywords    = {Ada, packages, generics},
     1933    contributer = {gjditchfield@plg},
     1934    author      = {Jean D. Ichbiah},
     1935    title       = {On the Design of {Ada}},
     1936    booktitle   = {Information Processing 83},
     1937    year        = 1983,
     1938    month       = sep, pages = {1-10},
     1939    editor      = {R. E. A. Mason},
     1940    organization= {IFIP},
     1941    publisher = {North-Holland},
     1942    summary = {
     1943        Packages group related declarations or subprograms, and encapsulate
     1944        data types.  Separate interfaces and bodies promotes information
     1945        hiding by removing the need to scan the body, allows the body to be
     1946        confidential, and provides a better specification of the contract
     1947        between client and implementor.  Generics are an efficient way to
     1948        factor out parts of similar definitions.
     1949    }
     1950}
     1951
     1952@book{Motet96,
     1953    keywords    = {Ada, exception handling},
     1954    contributer = {wyrmok@plg},
     1955    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
     1956    title       = {Design of Dependable {A}da Software},
     1957    publisher   = {Prentice Hall},
     1958    year        = 1996,
     1959}
     1960 
     1961@article{Richardson93,
     1962    keywords    = {C++, persistence, database},
     1963    contributer = {pabuhr@plg},
     1964    author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
     1965    title       = {The Design of the {E} Programming Language},
     1966    journal     = toplas,
     1967    month       = jul,
     1968    year        = 1993,
     1969    volume      = 15,
     1970    number      = 3,
     1971    pages       = {494-534},
     1972}
     1973
     1974@article{Hansen81b,
     1975    keywords    = {concurrency, monitor, critical region},
     1976    contributer = {pabuhr@plg},
     1977    author      = {Per {Brinch Hansen}},
     1978    title       = {The Design of {E}dison},
     1979    journal     = spe,
     1980    volume      = 11,
     1981    number      = 4,
     1982    month       = apr,
     1983    year        = 1981,
     1984    pages       = {363-396},
     1985}
     1986
     1987@book{Gamma95,
     1988    keywords    = {design patterns},
     1989    author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
     1990    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
     1991    publisher   = {Addison-Wesley},
     1992    year        = 1995,
     1993    series      = {Professional Computing Series},
     1994}
     1995
     1996@inproceedings{Wirth74,
     1997    keywords    = {},
     1998    contributer = {gjditchfield@plg},
     1999    author      = {Niklaus Wirth},
     2000    title       = {On the Design of Programming Languages},
     2001    booktitle   = {Information Processing 74},
     2002    year        = 1974,
     2003    pages       = {386-393},
     2004    publisher   = {North Holland Publishing Company},
     2005    note        = {Reprinted in \cite{pldesign}.}
     2006}
     2007
     2008@techreport{forceone,
     2009    keywords    = {Parametric polymorphism, ForceOne},
     2010    contributer = {gjditchfield@plg},
     2011    author      = {Andrew K. Wright},
     2012    title       = {Design of the Programming Language {ForceOne}},
     2013    institution = {University of Waterloo},
     2014    month       = feb, year = 1987,
     2015    number      = {CS-87-10}
     2016}
     2017
     2018@techreport{x-2,
     2019    keywords    = {object based},
     2020    contributer = {gjditchfield@plg},
     2021    author      = {David W. Sandberg},
     2022    title       = {The Design of the Programming Language {X-2}},
     2023    institution = {Oregon State University},
     2024    year        = 1985,
     2025    address     = {Department of Computer Science, Corvallis, Oregon, 97331},
     2026    number      = {85-60-1}
     2027}
     2028
     2029@article{design,
     2030    keywords    = {Smalltalk, designing classes},
     2031    contributer = {gjditchfield@plg},
     2032    author      = {Ralph E. Johnson and Brian Foote},
     2033    title       = {Designing Reusable Classes},
     2034    journal     = {Journal of Object-Oriented Programming},
     2035    year        = 1988,
     2036    volume      = 1, number = 2, pages = {22-35},
     2037    comment     = {
     2038        Abstract classes represent standard protocols.  ``It is better to
     2039        inherit from an abstract class than from a concrete class''.
     2040        Frameworks are collections of related abstract classes.  Successful
     2041        abstractions are discovered, not designed.
     2042
     2043        Protocols: ``If an operation X is implemented by performing a
     2044        similar operation on the components of the receiver, then that
     2045        operation should also be named X''.  Eliminate case analysis by
     2046        creating classes with the same operations.  Create classes to
     2047        represent bundles of parameters.  Shrink methods larger than 30
     2048        lines.
     2049
     2050        Hierarchies should be deep and narrow.  Subclasses should be
     2051        specializations.
     2052
     2053        Frameworks: split large classes.  Factor implementation differences
     2054        into subcomponents.  Separate methods that do not share instance
     2055        variables into components that reflect the different views of the
     2056        object.  Send messages to components, not self.  Reduce implicit
     2057        parameter passing through instance variables.
     2058    }
     2059}
     2060
     2061@article{dim:c++,
     2062    keywords    = {Dimensional Analysis, C++},
     2063    contributer = {gjditchfield@plg},
     2064    author      = {Robert F. Cmelic and Narain Gehani},
     2065    title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     2066    journal     = {IEEE Software},
     2067    month       = may, year = 1988,
     2068    volume      = 5, number = 3, pages = {21-29}
     2069}
     2070
     2071@article{Wegner87,
     2072    contributer = {pabuhr@plg},
     2073    author      = {Peter Wegner},
     2074    title       = {Dimensions of Object--Based Language Design},
     2075    journal     = sigplan,
     2076    volume      = 22,
     2077    number      = 12,
     2078    month       = dec,
     2079    year        = 1987,
     2080    pages       = {168-182},
     2081    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
     2082}
     2083
     2084@book{Dijkstra76,
     2085    keywords    = {concurrent assignment},
     2086    author      = {E. W. Dijkstra},
     2087    title       = {A Discipline of Programming},
     2088    publisher   = {Prentice-Hall},
     2089    year        = 1976,
     2090}
     2091
     2092@book{Lynch96,
     2093    keywords    = {distributed algorithms},
     2094    author      = {Nancy A. Lynch},
     2095    title       = {Distributed Algorithms},
     2096    publisher   = {Morgan Kaufmann},
     2097    year        = 1996,
     2098}
     2099
     2100@book{Tanenbaum02,
     2101    keywords    = {distributed programming},
     2102    author      = {Andrew S. Tanenbaum and Maarten van Steen},
     2103    title       = {Distributed Systems: Principles and Paradigms},
     2104    publisher   = {Prentice-Hall},
     2105    year        = 2002,
     2106}
     2107
     2108@inproceedings{Cargill90,
     2109    keywords    = {concurrency},
     2110    contributer = {pabuhr@plg},
     2111    author      = {Tom A. Cargill},
     2112    title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
     2113    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
     2114    organization= {USENIX Association},
     2115    address     = {San Francisco, California, U.S.A.},
     2116    month       = apr,
     2117    year        = 1990,
     2118    pages       = {315-323}
     2119}
     2120
     2121@unpublished{Duff83,
     2122    keywords    = {C, switch statement, control flow},
     2123    contributer = {pabuhr@plg},
     2124    author      = {Tom Duff},
     2125    title       = {Duff's Device},
     2126    month       = nov,
     2127    year        = 1983,
     2128    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
     2129}
     2130
     2131@manual{dwarf2,
     2132    keywords    = {Debugging DWARF2 specification},
     2133    contributer = {rkrische@plg},
     2134    title       = {DWARF Debugging Information Format},
     2135    organization= {Unix International Programming Languages SIG},
     2136    publisher   = {Unix International},
     2137    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
     2138    year        = {1993}
     2139}
     2140
     2141@article{classicada,
     2142    keywords    = {Classic Ada},
     2143    contributer = {gjditchfield@plg},
     2144    author      = {Cameron M. Donaldson},
     2145    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
     2146    journal     = {Journal of Pascal, {Ada} \& Modula-2},
     2147    year        = 1990,
     2148    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
     2149    comment     = {
     2150        Classes are like packages: they can contain subprograms, types,
     2151        variables, generic instantiations, and exceptions.  They can also
     2152        contain class methods, instance methods, and instance variables,
     2153        and define creation and initialization subprograms or methods for
     2154        instances.  Single inheritance provides inheritance of
     2155        implementations. Dynamic binding is done with a {\em send}
     2156        statement that invokes a class or instance method.  A preprocessor
     2157        converts Classic Ada to normal Ada.
     2158    }
     2159}
     2160
     2161@article{Costanza03,
     2162    keywords    = {dynamic call},
     2163    contributer = {pabuhr@plg},
     2164    author      = {Pascal Costanza},
     2165    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
     2166    journal     = sigplan,
     2167    volume      = 38,
     2168    number      = 8,
     2169    month       = aug,
     2170    year        = 2003,
     2171    pages       = {29-35},
     2172}
     2173
     2174% E
     2175
     2176@inproceedings{Wegbreit71,
     2177    keywords    = {polymorphism},
     2178    contributer = {pabuhr@plg},
     2179    author      = {B. Wegbreit},
     2180    title       = {The ECL Programming System},
     2181    booktitle   = {Proceedings of AFIPS 1971 FJCC},
     2182    publisher   = {AFIPS Press, vol. 39},
     2183    address     = {Montvale, New Jersey, U.S.A},
     2184    year        = 1971,
     2185    pages       = {253-262},
     2186}
     2187
     2188@manual{JavaScript,
     2189    keywords    = {JavaScript},
     2190    contributer = {pabuhr},
     2191    title       = {ECMAScript 2015 Language Specification {JavaScript}},
     2192    organization= {ECAM International},
     2193    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
     2194    month       = jun,
     2195    year        = 2015,
     2196    note        = {6th Edition}
     2197}
     2198
     2199@inproceedings{Peterson77,
     2200    keywords    = {N-thread software-solution mutual exclusion},
     2201    contributer = {pabuhr@plg},
     2202    author      = {Gary L. Peterson and Michael J. Fischer},
     2203    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
     2204    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
     2205    series      = {STOC '77},
     2206    year        = 1977,
     2207    location    = {Boulder, Colorado, USA},
     2208    pages       = {91--97},
     2209    numpages    = {7},
     2210    publisher   = {ACM},
     2211    address     = {New York, NY, USA},
     2212}
     2213
     2214@article{Hansen81a,
     2215    keywords    = {concurrency, monitor, critical region},
     2216    contributer = {pabuhr@plg},
     2217    author      = {Per {Brinch Hansen}},
     2218    title       = {{E}dison---a Multiprocessor Language},
     2219    journal     = spe,
     2220    volume      = 11,
     2221    number      = 4,
     2222    month       = apr,
     2223    year        = {1981},
     2224    pages       = {325-361},
     2225}
     2226
     2227@book{Eiffel,
     2228    keywords    = {Eiffel},
     2229    contributer = {pabuhr@plg},
     2230    author      = {Bertrand Meyer},
     2231    title       = {Eiffel: The Language},
     2232    publisher   = {Prentice-Hall},
     2233    year        = 1992,
     2234    series      = {Prentice Hall Object-Oriented Series},
     2235}
     2236
     2237@article{WS:overload,
     2238    keywords    = {compilation},
     2239    contributer = {gjditchfield@plg},
     2240    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
     2241    title       = {Efficient Implementation of the {Ada} Overloading Rules},
     2242    journal     = ipl,
     2243    year        = 1980,
     2244    month       = apr, volume = 10, number = 3, pages = {120-123},
     2245    comment     = {
     2246        The ``two-pass'' algorithm.  An upward pass over a parse tree
     2247        calculates the set of possible result types of operators.  The
     2248        root must have exactly one type, produced in one way.  A
     2249        downward pass selects the version of the operator that produces the
     2250        desired result type, thus setting the result types of subtrees.
     2251        See \cite{D:overload}.
     2252    }
     2253}
     2254
     2255@techreport{Habermann80,
     2256    keywords    = {Ada, threads},
     2257    contributer = {pabuhr@plg},
     2258    author      = {A. N. Habermann and I. R. Nassi},
     2259    title       = {Efficient Implementation of {Ada} Tasks},
     2260    institution = {Carnegie-Mellon University},
     2261    number      = {CMU-CS-80-103},
     2262    year        = 1980
     2263}
     2264
     2265@article{Emerald,
     2266    keywords    = {concurrency, polymorphism},
     2267    contributer = {pabuhr@plg},
     2268    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
     2269    title       = {Emerald: A General-Purpose Programming Language},
     2270    journal     = spe,
     2271    month       = jan,
     2272    year        = 1991,
     2273    volume      = 21,
     2274    number      = 1,
     2275    pages       = {91-118}
     2276}
     2277
     2278@InProceedings{chambers89a,
     2279    keywords    = {maps, delegation},
     2280    author      = "Craig Chambers and David Ungar and Elgin Lee",
     2281    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
     2282                 Object-Oriented Language Based on Prototypes",
     2283    crossref    = "OOPSLA89",
     2284    pages       = {49-70}
     2285}
     2286
     2287@article{oop:encapsulation,
     2288    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
     2289    contributer = {gjditchfield@plg},
     2290    author      = {Alan Snyder},
     2291    title       = {Encapsulation and Inheritance in Object-Oriented Programming
     2292        Languages},
     2293    journal     = sigplan,
     2294    volume      = {21},    number = {11},
     2295    pages       = {38-45},
     2296    month       = nov, year = 1986,
     2297    comment     = {
     2298        Client, child interfaces should be distinct.  Child interface
     2299        shouldn't grant total access to parent.
     2300
     2301        Rules for redefining parent variable name in a child affect
     2302        re-implementation of the parent.
     2303
     2304        Inheritance can be a promise to obey the semantics of the parent,
     2305        or code reuse; the two may be contradictory.  Unification
     2306        exposes use of inheritance: a child can not be re-implemented
     2307        without breaking code that assumes that it is a subclass of the
     2308        original parent.  If a class uses the names of its parents'
     2309        ancestors, then inheritance is part of the parent's child
     2310        interface.
     2311
     2312        Linearizing a multiple inheritance tree means that a class's use of
     2313        calls on super need to be understood before it is used as a parent.
     2314        Merging repeated ancestors exposes inheritance if an ancestor is
     2315        re-implemented.  Forbidding inheritance of distinct methods with
     2316        the same name exposes implementation of ancestors.  Proposed
     2317        solution treats the set of ancestors as a tree.
     2318    }
     2319}
     2320
     2321@article{st:encapsulator,
     2322    keywords    = {encapsulator, Smalltalk, monitor},
     2323    contributer = {gjditchfield@plg},
     2324    author      = {Geoffrey A. Pascoe},
     2325    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
     2326    journal     = sigplan,
     2327    volume      = {21},    number       = {11},
     2328    pages       = {341-346},
     2329    month       = nov, year = 1986,
     2330    comment     = {
     2331        Encapsulators are objects that surround other objects.
     2332        Pre- and post-actions are performed when messages are sent to the
     2333        encapsulated object.  They are created here by sending the message
     2334        object: to an encapsulator class.  Examples given are monitors,
     2335        atomic objects, and Model (for model-view-controller interfaces).
     2336
     2337        Encapsulator classes use a family of selectors that the
     2338        encapsulated object will not respond to.  Messages for the
     2339        encapsulated object are passed on by trapping them with the
     2340        doesNotUnderstand method.  Various fiddles were needed when setting
     2341        up the class and metaclass hierarchies.  A few selectors (==,
     2342        class) always directly invoke primitive methods; they can't be
     2343        used.
     2344
     2345        Can an encapsulated object be an encapsulator?  Probably, but the
     2346        middle object's selectors are inaccessible.
     2347    }
     2348}
     2349
     2350@manual{EPT,
     2351    keywords    = {concurrency, light-weight threads},
     2352    contributer = {pabuhr@plg},
     2353    key         = {Encore},
     2354    title       = {Encore Parallel Thread Manual, 724-06210},
     2355    organization= {Encore Computer Corporation},
     2356    month       = may,
     2357    year        = 1988,
     2358}
     2359
     2360@manual{Erlang,
     2361    keywords    = {Erlang},
     2362    contributer = {pabuhr},
     2363    title       = {Erlang Reference Manual User's Guide, Vertion 7.0},
     2364    organization= {Erlang/OTP System Documentation},
     2365    address     = {1430 Broadway, New York, New York  10018},
     2366    month       = jun,
     2367    year        = 2015,
     2368    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}}},
     2369}
     2370
     2371@inproceedings{MH88,
     2372    keywords    = {modules, general sums, general products},
     2373    contributer = {gjditchfield@plg},
     2374    author      = {John C. Mitchell and Robert Harper},
     2375    title       = {The Essence of {ML}},
     2376    booktitle   = popl,
     2377    year        = 1988,
     2378    pages       = {28-46}
     2379}
     2380
     2381@book{LeVerrand,
     2382    keywords    = {},
     2383    author      = {D. Le Verrand},
     2384    title       = {Evaluating {Ada}},
     2385    publisher   = {North Oxford Academic},
     2386    year        = 1985
     2387}
     2388
     2389@inproceedings{Bloom79,
     2390    keywords    = {concurrency},
     2391    contributer = {pabuhr@plg},
     2392    author      = {Toby Bloom},
     2393    title       = {Evaluating Synchronization Mechanisms},
     2394    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
     2395    organization= {ACM SIGOPS},
     2396    address     = {Pacific Grove, California, U.S.A},
     2397    month       = dec,
     2398    year        = 1979,
     2399    pages       = {24-32}
     2400}
     2401
     2402@article{Buhr06a,
     2403    keywords    = {concurrency, C++, uC++},
     2404    contributer = {pabuhr@plg},
     2405    author      = {Peter A. Buhr and Richard C. Bilson},
     2406    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
     2407                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     2408    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
     2409    month       = feb,
     2410    year        = 2006,
     2411    volume      = 31,
     2412    number      = 2,
     2413    pages       = {36-40},
     2414}
     2415
     2416@article{ExceptionalC,
     2417    keywords    = {exception handling, asynchronous events},
     2418    contributer = {wyrmok@plg},
     2419    author      = {N. H. Gehani},
     2420    title       = {Exceptional {C} or {C} with Exceptions},
     2421    journal     = spe,
     2422    year        = 1992,
     2423    month       = oct,
     2424    volume      = 22,
     2425    number      = 10,
     2426    pages       = {827-848},
     2427    comment     = {
     2428        It is the most extensive exceptional handling mechanism thus
     2429        far. Though it doesn't have Mesa resumption, it has
     2430        asynchronous signal which is more general and abstract than
     2431        the unix signal mechanism.  It has an Eiffel like retry
     2432        mechanism. Consequently, the scope of guarded region is not
     2433        immediately terminated when an exception is raised. In fact,
     2434        an exception handler creates a scope under its guarded
     2435        region.
     2436        }
     2437}
     2438
     2439@incollection{Buhr02,
     2440    keywords    = {exception handling},
     2441    contributer = {pabuhr@plg},
     2442    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
     2443    title       = {Exception Handling},
     2444    editor      = {Marvin V. Zelkowitz},
     2445    booktitle   = {Advances in COMPUTERS},
     2446    publisher   = {Academic Press},
     2447    volume      = 56,
     2448    year        = 2002,
     2449    pages       = {245-303},
     2450}
     2451
     2452@article{Cargill94,
     2453    keywords    = {exception handling},
     2454    contributer = {pabuhr@plg},
     2455    author      = {Tom Cargill},
     2456    title       = {Exception Handling: a False Sense of Security},
     2457    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
     2458    year        = 1994,
     2459    month       = nov,
     2460    volume      = 6,
     2461    number      = 9,
     2462    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
     2463}
     2464
     2465@article{Knudsen84,
     2466    keywords    = {static exception handling, BETA, sequel},
     2467    contributer = {wyrmok@plg},
     2468    author      = {J{\o}rgen Lindskov Knudsen},
     2469    title       = {Exception Handling --- A Static Approach},
     2470    journal     = spe,
     2471    year        = 1984,
     2472    month       = may,
     2473    volume      = 14,
     2474    number      = 5,
     2475    pages       = {429-449},
     2476}
     2477
     2478@article{Drew94,
     2479    keywords    = {exceptions, exception handling},
     2480    contributer = {wyrmok@plg},
     2481    author      = {Steven J. Drew and K. John Gough},
     2482    title       = {Exception Handling: Expecting the Unexpected},
     2483    journal     = {Computer Languages},
     2484    year        = 1994,
     2485    month       = may,
     2486    volume      = 20,
     2487    number      = 2,
     2488    comment     = {
     2489        A recent and good survey on various exception handling mechanisms found
     2490        in imperative programming languages. It classifies various mechanism in
     2491        terms of flow control and scopes. Asynchronous exceptions and signals
     2492        are also covered as Exceptional C is in the survey.
     2493        }
     2494}
     2495
     2496@article{Koenig90,
     2497    keywords    = {exception handling},
     2498    contributer = {pabuhr@plg},
     2499    author      = {Andrew Koenig and Bjarne Stroustrup},
     2500    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     2501    journal     = joop,
     2502    month       = {July/August},
     2503    year        = 1990,
     2504    volume      = 3,
     2505    number      = 2,
     2506    pages       = {16-33},
     2507}
     2508
     2509@article{Lee83,
     2510    keywords    = {exception handling, C},
     2511    contributer = {pabuhr@plg},
     2512    author      = {P. A. Lee},
     2513    title       = {Exception Handling in {C} Programs},
     2514    journal     = spe,
     2515    volume      = 13,
     2516    number      = 5,
     2517    month       = may,
     2518    year        = 1983,
     2519    pages       = {389-405},
     2520}
     2521
     2522@article{Liskov79,
     2523    keywords    = {exception handling},
     2524    contributer = {pabuhr@plg},
     2525    author      = {Barbara H. Liskov and Alan Snyder},
     2526    title       = {Exception Handling in {CLU}},
     2527    journal     = ieeese,
     2528    month       = nov,
     2529    year        = 1979,
     2530    volume      = {SE-5},
     2531    number      = 6,
     2532    pages       = {546-558},
     2533}
     2534
     2535@article{Szalas85,
     2536    keywords    = {concurrency, C++},
     2537    contributer = {pabuhr@plg},
     2538    author      = {Andrzej Szalas and Danuta Szczepanska},
     2539    title       = {Exception Handling in Parallel Computations},
     2540    journal     = sigplan,
     2541    volume      = 20,
     2542    number      = 10,
     2543    month       = oct,
     2544    year        = 1985,
     2545    issn        = {0362-1340},
     2546    pages       = {95-104},
     2547    url         = {http://doi.acm.org/10.1145/382286.382385},
     2548    doi         = {http://doi.acm.org/10.1145/382286.382385},
     2549    acmid       = {382385},
     2550    publisher   = {ACM},
     2551    address     = {New York, NY, USA},
     2552}
     2553
     2554@article{MacLaren77,
     2555    keywords    = {exception handling, PL/I},
     2556    contributer = {pabuhr@plg},
     2557    author      = {M. Donald MacLaren},
     2558    title       = {Exception Handling in {PL/I}},
     2559    journal     = sigplan,
     2560    volume      = 12,
     2561    number      = 3,
     2562    month       = mar,
     2563    year        = 1977,
     2564    pages       = {101-104},
     2565    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
     2566                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
     2567}
     2568
     2569@article{Goodenough75,
     2570    keywords    = {exception handling},
     2571    contributer = {pabuhr@plg},
     2572    author      = {J. B. Goodenough},
     2573    title       = {Exception Handling: Issues and a Proposed Notation},
     2574    journal     = cacm,
     2575    month       = dec,
     2576    year        = 1975,
     2577    volume      = 18,
     2578    number      = 12,
     2579    pages       = {683-696},
     2580}
     2581
     2582@article{Lampson80,
     2583    keywords    = {monitors},
     2584    contributer = {pabuhr@plg},
     2585    author      = {B. W. Lampson and D. D. Redell},
     2586    title       = {Experience with Processes and Monitors in Mesa},
     2587    journal     = cacm,
     2588    volume      = 23,
     2589    number      = 2,
     2590    month       = feb,
     2591    year        = 1980,
     2592    pages       = {105-117},
     2593}
     2594
     2595@inproceedings{Shopiro87,
     2596    keywords    = {concurrency},
     2597    contributer = {pabuhr@plg},
     2598    author      = {Jonathan E. Shopiro},
     2599    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
     2600    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
     2601    organization= {USENIX Association},
     2602    address     = {Santa Fe, New Mexico, U.S.A},
     2603    month       = nov,
     2604    year        = 1987,
     2605    pages       = {77-94}
     2606}
     2607
     2608@article{Modula-2+,
     2609    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
     2610    contributer = {gjditchfield@plg},
     2611    author      = {Paul Rovner},
     2612    title       = {Extending Modula-2 to Build Large, Integrated Systems},
     2613    journal     = {IEEE Software},
     2614    month       = nov, year = 1986,
     2615    volume      = 3, number = 6, pages = {46-57},
     2616    comment     = {
     2617        Exceptions can have a parameter.  Procedures can declare the
     2618        exceptions they can propagate; others are converted to {\tt
     2619        SYSTEM.Fail}.  If they don't, all exceptions propagate.
     2620        Block cleanup statements execute no matter how control leaves the
     2621        block.
     2622
     2623        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
     2624        assigned any {\tt REF t}.  Open array types can be used in
     2625        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
     2626        dynamically determined size.
     2627
     2628        The {\tt THREAD} module provides lightweight processes, semaphores,
     2629        and conditions.  A statement {\tt LOCK {\em semaphore} DO
     2630        {\em statements} END} is built in.
     2631
     2632        {\tt SAFE} modules do run-time checks, and only import {\tt
     2633        SAFE} modules.  One implementation module can implement several
     2634        definition modules.  Opaque type implementations can be
     2635        repeated in modules that import its definition, so implementation
     2636        modules can collaborate.  The linker checks that all
     2637        implementations are the same.
     2638    }
     2639}
     2640
     2641@inproceedings{BNRPascal,
     2642    keywords    = {concurrency, rendezvous},
     2643    contributer = {pabuhr@plg},
     2644    author      = {R. Kamel and N. Gammage},
     2645    title       = {Experience with Rendezvous},
     2646    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
     2647    month       = oct,
     2648    year        = 1988,
     2649    pages       = {143-149}
     2650}
     2651
     2652% F
     2653
     2654@inproceedings{Knudsen01,
     2655    keywords    = {Beta, exception handling},
     2656    contributer = {pabuhr@plg},
     2657    author      = {J{\o}rgen Lindskov Knudsen},
     2658    title       = {Fault Tolerance and Exception Handling in {BETA}},
     2659    booktitle   = {Exception Handling},
     2660    publisher   = {Springer-Verlag},
     2661    volume      = 2022,
     2662    series      = {Lecture Notes in Computer Science},
     2663    year        = 2001,
     2664    pages       = {1-17}
     2665}
     2666
     2667@article{Lamport87,
     2668    keywords    = {software solutions, mutual exclusion, fast},
     2669    contributer = {pabuhr@plg},
     2670    author      = {Leslie Lamport},
     2671    title       = {A Fast Mutual Exclusion Algorithm},
     2672    journal     = tocs,
     2673    volume      = 5,
     2674    number      = 1,
     2675    month       = jan,
     2676    year        = {1987},
     2677    pages       = {1--11},
     2678    publisher   = {ACM},
     2679    address     = {New York, NY, USA},
     2680}
     2681
     2682@inproceedings{F-bound,
     2683    keywords    = {},
     2684    contributer = {gjditchfield@plg},
     2685    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
     2686    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
     2687    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
     2688    year        = 1989,
     2689    month       = sep,
     2690    pages       = {273-280}
     2691}
     2692
     2693@mastersthesis{Wasik08,
     2694    author      = {Ayelet Wasik},
     2695    title       = {Features of a Multi-Threaded Memory Allocator},
     2696    school      = {University of Waterloo},
     2697    year        = 2008,
     2698    month       = jan,
     2699    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     2700    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
     2701}
     2702
     2703@article{Holzmann94,
     2704    keywords    = {semaphore, flags},
     2705    contributer = {pabuhr@plg},
     2706    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
     2707    title       = {The First Data Networks},
     2708    journal     = {Scientific American},
     2709    month       = jan,
     2710    year        = 1994,
     2711    volume      = 12,
     2712    number      = 1,
     2713    pages       = {124-129},
     2714}
     2715
     2716@article{Bohm66,
     2717    keywords    = {goto, structured programming},
     2718    contributer = {pabuhr@plg},
     2719    author      = {C. B\"{o}hm and G. Jacopini},
     2720    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
     2721    journal     = cacm,
     2722    month       = may,
     2723    year        = 1966,
     2724    volume      = 9,
     2725    number      = 5,
     2726    pages       = {366-371},
     2727}
     2728
     2729@manual{Fortran95,
     2730    keywords    = {Fortran 95},
     2731    contributer = {pabuhr@plg},
     2732    key         = {Fortran95},
     2733    title       = {Fortran 95 Standard, ISO/IEC 1539},
     2734    organization = {Unicomp, Inc.},
     2735    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
     2736    month       = jan,
     2737    year        = 1997,
     2738}
     2739
     2740@manual{Fortran08,
     2741    keywords    = {ISO/IEC Fortran 08},
     2742    contributer = {pabuhr@plg},
     2743    key         = {Fortran08},
     2744    title       = {Programming Languages -- {Fortran} Part 1},
     2745    organization= {International Standard ISO/IEC 1989:2014},
     2746    publisher   = {International Standard Organization},
     2747    address     = {http://www.iso.org},
     2748    year        = 2010,
     2749}
     2750
     2751@book{Andrews00:book,
     2752    keywords    = {concurrency},
     2753    contributer = {pabuhr@plg},
     2754    author      = {Gregory R. Andrews},
     2755    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
     2756    publisher   = {Addison--Wesley},
     2757    year        = 2000,
     2758}
     2759
     2760@article{Agha89,
     2761    keywords    = {actors, concurrency},
     2762    contributer = {pabuhr@plg},
     2763    author      = {Gul A. Agha},
     2764    title       = {Foundational Issues in Concurrent Computing},
     2765    journal     = sigplan,
     2766    month       = apr,
     2767    year        = 1989,
     2768    volume      = 24,
     2769    number      = 4,
     2770    pages       = {60-65},
     2771    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
     2772                   Sept. 26--27, 1988, San Diego, California, U.S.A},
     2773}
     2774
     2775@article{ool,
     2776    keywords    = {},
     2777    contributer = {gjditchfield@plg},
     2778    author      = {Douglas T. Ross},
     2779    title       = {Toward Foundations for the Understanding of Type},
     2780    journal     = sigplan,
     2781    year        = 1976,
     2782    volume      = 11, pages = {63-65},
     2783    note        = {Conference on Data: Abstraction, Definition and Structure},
     2784    summary     = {
     2785        Possibly the first use (without definition, alas) of the phrase
     2786        "object oriented language".  Metaphysical to the point of incoherence.
     2787    }
     2788}
     2789
     2790@article{frames,
     2791    keywords    = {frames},
     2792    contributer = {gjditchfield@plg},
     2793    author      = {Paul G. Basset},
     2794    title       = {Frame-Based Software Engineering},
     2795    journal     = {IEEE Software},
     2796    month       = jul, year = 1987,
     2797    volume      = 4, number = 4, pages = {9-16}
     2798}
     2799
     2800@article{Sutter05,
     2801    keywords    = {concurrency, C++},
     2802    contributer = {pabuhr@plg},
     2803    author      = {Herb Sutter},
     2804    title       = {A Fundamental Turn Toward Concurrency in Software},
     2805    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
     2806    month       = mar,
     2807    year        = 2005,
     2808    volume      = 30,
     2809    number      = 3,
     2810    pages       = {16-22},
     2811}
     2812
     2813@inproceedings{Dony01,
     2814    keywords    = {Smalltalk, exception handling},
     2815    contributer = {pabuhr@plg},
     2816    author      = {Chistophe Dony},
     2817    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
     2818    booktitle   = {Exception Handling},
     2819    publisher   = {Springer-Verlag},
     2820    volume      = 2022,
     2821    series      = {Lecture Notes in Computer Science},
     2822    year        = 2001,
     2823    pages       = {18-38}
     2824}
     2825
     2826@misc{FW,
     2827    key         = {FW},
     2828    contributer = {gjditchfield@plg},
     2829    title       = {Funk \& Wagnalls Standard Desk Dictionary},
     2830    year        = 1980
     2831}
     2832
     2833@book{Knuth73V1,
     2834    contributer = {pabuhr@plg},
     2835    author      = {Donald E. Knuth},
     2836    title       = {Fundamental Algorithms},
     2837    series      = {The Art of Computer Programming},
     2838    publisher   = {Addison-Wesley},
     2839    year        = 1973,
     2840    volume      = 1,
     2841    edition     = {second},
     2842}
     2843
     2844@inproceedings{Strachey,
     2845    keywords    = {polymorphism},
     2846    contributer = {gjditchfield@plg},
     2847    author      = {C. Strachey},
     2848    title       = {Fundamental Concepts in Programming Languages},
     2849    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
     2850    year        = 1967,
     2851    month       = aug,
     2852    address     = {Copenhagen},
     2853    comment     = {
     2854        Defines ad-hoc and parametric polymorphism.
     2855    }
     2856}
     2857
     2858@article{Eisenberg72,
     2859    keywords    = {concurrency, N-Process solution, O(N)},
     2860    contributer = {pabuhr@plg},
     2861    author      = {Murray A. Eisenberg and Michael R. McGuire},
     2862    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
     2863    journal     = cacm,
     2864    month       = nov,
     2865    year        = 1972,
     2866    volume      = 15,
     2867    number      = 11,
     2868    pages       = {999},
     2869}
     2870
     2871% G
     2872
     2873@article{Boehm88,
     2874    keywords    = {conservative garbage collection, C},
     2875    contributer = {gjditchfield@plg},
     2876    author      = {Hans-Juergen Boehm and Mark Weiser},
     2877    title       = {Garbage Collection in an Uncooperative Environment},
     2878    journal     = spe,
     2879    month       = sep,
     2880    year        = 1988,
     2881    volume      = 18,
     2882    number      = 9,
     2883    pages       = {807-820}
     2884}
     2885
     2886@manual{gcc,
     2887    keywords    = {},
     2888    contributer = {gjditchfield@plg},
     2889    title       = {GCC},
     2890    author      = {Richard M. Stallman},
     2891    organization= {Free Software Foundation},
     2892    address     = {Cambridge, MA}
     2893}
     2894
     2895@article{doUpon,
     2896    keywords    = {formal verification, axiomatic semantics, control structures},
     2897    contributer = {gjditchfield@plg},
     2898    author      = {Ed Anson},
     2899    title       = {A Generalized Iterative Construct and Its Semantics},
     2900    journal     = toplas,
     2901    volume      = {9},    number = {4},
     2902    pages       = {567-581},
     2903    month       = oct, year = 1987,
     2904    comment     = {
     2905        \begin{verbatim}
     2906            do
     2907                   P1 -> L1
     2908               [] P2 -> L2
     2909            ...
     2910               [] Pm -> Lm
     2911            upon
     2912                   Q1 -> M1
     2913               [] Q2 -> M2
     2914            ...
     2915               [] qn -> mn
     2916            od
     2917        \end{verbatim}
     2918
     2919        If there is an i such that Qi is true, execute Mi and terminate.
     2920        Otherwise, if there is an i such that Pi is true, execute Li and
     2921        repeat the loop.  Otherwise, fail.
     2922    }
     2923}
     2924
     2925@article{Haskell,
     2926    keywords    = {lazy evaluation, type class},
     2927    contributer = {pabuhr},
     2928    author      = {Paul Hudak and Joseph H. Fasel},
     2929    title       = {A Gentle Introduction to Haskell},
     2930    journal     = sigplan,
     2931    volume      = 27,
     2932    number      = 5,
     2933    month       = may,
     2934    year        = 1992,
     2935    pages       = {T1-53},
     2936}
     2937
     2938@manual{Go,
     2939    keywords    = {Go programming language},
     2940    contributer = {pabuhr@plg},
     2941    title       = {{Go} Programming Language},
     2942    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
     2943    organization= {Google},
     2944    year        = 2009,
     2945    note        = {\href{http://golang.org/ref/spec}{http://golang.org/\-ref/\-spec}},
     2946}
     2947
     2948@article{Dijkstra68a,
     2949    keywords    = {goto},
     2950    contributer = {pabuhr@plg},
     2951    author      = {Edsger W. Dijkstra},
     2952    title       = {Go To Statement Considered Harmful},
     2953    journal     = cacm,
     2954    month       = mar,
     2955    year        = 1968,
     2956    volume      = 11,
     2957    number      = 3,
     2958    pages       = {147-148},
     2959    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
     2960}
     2961
     2962@article{Choi91,
     2963    keywords    = {contra-variance, functions},
     2964    contributer = {pabuhr@plg},
     2965    author      = {Injun Choi and Michael V. Mannino},
     2966    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
     2967    journal     = {OOPS Messenger},
     2968    volume      = 2,
     2969    number      = 1,
     2970    month       = jan,
     2971    year        = 1991,
     2972    pages       = {38-54},
     2973}
     2974
     2975@misc{GNU-C,
     2976    keywords    = {C, ANSI C},
     2977    contributer = {pabuhr@plg},
     2978    author      = {Richard Stallman},
     2979    title       = {The Free Software Foundation's Gnu {C} Compiler},
     2980    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
     2981    year        = 1989,
     2982}
     2983
     2984@article{Dijkstra:green,
     2985    keywords    = {ada},
     2986    contributer = {gjditchfield@plg},
     2987    author      = {Edsger W. Dijkstra},
     2988    title       = {On the GREEN Language submitted to the DoD},
     2989    journal     = sigplan,
     2990    year        = 1978,
     2991    month       = oct,
     2992    volume      = 13,
     2993    number      = 10,
     2994    pages       = {16-21}
     2995}
     2996
     2997@inproceedings{Miller02,
     2998    keywords    = {exception handling},
     2999    contributer = {pabuhr@plg},
     3000    author      = {Robert Miller and Anand Tripathi},
     3001    title       = {The Guardian Model for Exception Handling in Distributed Systems},
     3002    booktitle   = {21st Symposium on Reliable Distributed Systems},
     3003    organization= {IEEE},
     3004    address     = {Suita, Japan},
     3005    year        = 2002,
     3006    month       = oct,
     3007    pages       = {304-313}
     3008}
     3009
     3010@phdthesis{Chen09,
     3011    author      = {Jun Chen},
     3012    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
     3013    school      = {University of Waterloo},
     3014    year        = 2009,
     3015    month       = sep,
     3016    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     3017    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
     3018}
     3019
     3020@misc{GNU-C++,
     3021    keywords    = {C++, GNU C},
     3022    contributer = {pabuhr@plg},
     3023    author      = {Michael D. Tiemann},
     3024    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     3025    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
     3026    month       = mar,
     3027    year        = 1990,
     3028}
     3029
     3030% H
     3031
     3032@article{Michael04a,
     3033    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
     3034    author      = {Maged M. Michael},
     3035    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
     3036    journal     = ieeepds,
     3037    volume      = 15,
     3038    number      = 6,
     3039    month       = jun,
     3040    year        = 2004,
     3041    pages       = {491-504},
     3042    publisher   = {IEEE Press},
     3043    address     = {Piscataway, NJ, USA},
     3044}
     3045
     3046@techreport{Hermes90,
     3047    keywords    = {processes, distributed computing},
     3048    contributer = {pabuhr@plg},
     3049    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
     3050    title       = {Hermes: A Language for Distributed Computing},
     3051    institution = {IBM T. J. Watson Research Center},
     3052    address     = {Yorktown Heights, New York, U.S.A., 10598},
     3053    month       = oct,
     3054    year        = 1990,
     3055}
     3056
     3057@book{Hermes91,
     3058    keywords    = {processes, distributed computing},
     3059    contributer = {pabuhr@plg},
     3060    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
     3061    title       = {Hermes: A Language for Distributed Computing},
     3062    publisher   = {Prentice Hall},
     3063    series      = {Innovative Technology},
     3064    year        = 1991,
     3065}
     3066
     3067@article{katzenelson83b,
     3068    contributer = {gjditchfield@plg},
     3069    author      = "Jacob Katzenelsen",
     3070    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
     3071    journal     = spe,
     3072    year        = 1983,
     3073    volume      = 13,
     3074    number      = 7,
     3075    pages       = {577-596},
     3076    month       = jul
     3077}
     3078
     3079@techreport{Hoare73,
     3080    keywords    = {},
     3081    contributer = {gjditchfield@plg},
     3082    author      = {C. A. R. Hoare},
     3083    title       = {Hints on Programming Language Design},
     3084    institution = {Stanford University Computer Science Department},
     3085    year        = 1973,
     3086    month       = dec,
     3087    number      = {CS-73-403},
     3088    note        = {Reprinted in \cite{pldesign}.}
     3089}
     3090
     3091@article{Dijkstra71,
     3092    keywords    = {monitor, secretary},
     3093    contributer = {pabuhr@plg},
     3094    author      = {E. W. Dijkstra},
     3095    title       = {Hierarchical Ordering of Sequential Processes},
     3096    journal     = acta,
     3097    volume      = 1,
     3098    pages       = {115-138},
     3099    year        = 1971,
     3100}
     3101
     3102@article{Buhr15a,
     3103    keywords    = {software solution, mutual exclusion, performance experiment},
     3104    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
     3105    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
     3106    journal     = {Concurrency and Computation: Practice and Experience},
     3107    volume      = 27,
     3108    number      = 3,
     3109    pages       = {651-701},
     3110    month       = mar,
     3111    year        = 2015,
     3112}
     3113
     3114@article{Ackermann28,
     3115    keywords    = {recursion, Ackermann function},
     3116    contributer = {pabuhr@plg},
     3117    author      = {Wilhelm Ackermann},
     3118    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
     3119    publisher   = {Springer},
     3120    journal     = {Mathematische Annalen},
     3121    number      = 1,
     3122    volume      = 99,
     3123    pages       = {118-133},
     3124    month       = dec,
     3125    year        = 1928,
     3126}
     3127
     3128@inproceedings{typeclass,
     3129    keywords    = {Hindley/Miller type systems, Haskell},
     3130    contributer = {gjditchfield@plg},
     3131    author      = {Philip Wadler and Stephen Blott},
     3132    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
     3133    booktitle   = popl,
     3134    year        = 1989,
     3135    pages       = {60-76},
     3136    organization= {Association for Computing Machinery}
     3137}
     3138
     3139% I
     3140
     3141@book{IBM370,
     3142    keywords    = {370, IBM},
     3143    contributer = {pabuhr@plg},
     3144    key         = {IBM370},
     3145    title       = {{IBM} System/370 Principles of Operation},
     3146    publisher   = {IBM},
     3147    number      = {GA22-7000-8},
     3148    month       = oct,
     3149    year        = 1981,
     3150    edition     = {9th}
     3151}
     3152
     3153@book{Icon,
     3154    keywords    = {Icon},
     3155    contributer = {pabuhr@plg},
     3156    author      = {Ralph E. Griswold and Madge T. Griswold},
     3157    title       = {The Icon Programming Language},
     3158    publisher   = {Prentice-Hall},
     3159    year        = 1983,
     3160}
     3161
     3162@inproceedings{Valois94,
     3163    keywords    = {lock free, queue},
     3164    contributer = {pabuhr@plg},
     3165    author      = {John D. Valois},
     3166    title       = {Implementing Lock-Free Queues},
     3167    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
     3168    address     = {Las Vegas, Nevada, U.S.A.},
     3169    year        = {1994},
     3170    pages       = {64-69},
     3171}
     3172
     3173@article{Hehner81,
     3174    keywords    = {concurrency, critical section, bakery algorithm},
     3175    contributer = {pabuhr@plg},
     3176    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
     3177    title       = {An Implementation of {P} and {V}},
     3178    journal     = ipl,
     3179    year        = 1981,
     3180    month       = aug,
     3181    volume      = 12,
     3182    number      = 4,
     3183    pages       = {196-198},
     3184}
     3185
     3186@incollection{Steenkiste91,
     3187    keywords    = {lisp},
     3188    contributer = {gjditchfield@plg},
     3189    author      = {Peter A. Steenkiste},
     3190    title       = {The Implementation of Tags and Run-Time Checking},
     3191    booktitle   = {Topics in Advanced Language Implementation},
     3192    pages       = {3-24},
     3193    year        = 1991,
     3194    editor      = {Peter Lee},
     3195    chapter     = {1},
     3196    publisher   = {The MIT Press}
     3197}
     3198
     3199@techreport{Roberts89,
     3200    keywords    = {},
     3201    contributer = {pabuhr@plg},
     3202    author      = {Eric S. Roberts},
     3203    title       = {Implementing Exceptions in {C}},
     3204    institution = {Digital Systems Research Center},
     3205    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
     3206    number      = {40},
     3207    month       = mar,
     3208    year        = 1989,
     3209}
     3210
     3211@mastersthesis{Bilson03,
     3212    keywords    = {Cforall, parametric polymorphism, overloading},
     3213    contributer = {pabuhr@plg},
     3214    author      = {Richard C. Bilson},
     3215    title       = {Implementing Overloading and Polymorphism in Cforall},
     3216    school      = {School of Computer Science, University of Waterloo},
     3217    year        = 2003,
     3218    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     3219    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
     3220}
     3221
     3222@article{Buhr05b,
     3223    keywords    = {monitor, automatic signal, implicit signal},
     3224    contributer = {pabuhr@plg},
     3225    author      = {Peter A. Buhr and Ashif S. Harji},
     3226    title       = {Implicit-signal monitors},
     3227    journal     = toplas,
     3228    volume      = 27,
     3229    number      = 6,
     3230    month       = nov,
     3231    year        = 2005,
     3232    issn        = {0164-0925},
     3233    pages       = {1270--1343},
     3234    doi         = {http://doi.acm.org/10.1145/1108970.1108975},
     3235    publisher   = {ACM Press},
     3236    address     = {New York, NY, USA},
     3237}
     3238
     3239@article{Baker77,
     3240    author      = {Henry C. Baker, Jr. and Carl Hewitt},
     3241    title       = {The Incremental Garbage Collection of Processes},
     3242    journal     = {SIGART Bulletin},
     3243    publisher   = {ACM},
     3244    address     = {New York, NY, USA},
     3245    month       = aug,
     3246    year        = 1977,
     3247    pages       = {55-59},
     3248    issn        = {0163-5719},
     3249    doi         = {http://doi.acm.org/10.1145/872736.806932},
     3250 }
     3251
     3252@book{Algol68,
     3253    keywords    = {Algol68},
     3254    contributer = {pabuhr@plg},
     3255    author      = {C. H. Lindsey and S. G. van der Meulen},
     3256    title       = {Informal Introduction to ALGOL 68},
     3257    publisher   = {North-Holland},
     3258    address     = {London},
     3259    year        = 1977,
     3260}
     3261
     3262@inproceedings{Cook90,
     3263    keywords    = {f-bounded polymorhpism, lambda calculus},
     3264    contributer = {gjditchfield@plg},
     3265    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
     3266    title       = {Inheritance is Not Subtyping},
     3267    booktitle   = popl,
     3268    year        = 1990,
     3269    pages       = {125-135},
     3270    organization= {Association for Computing Machinery},
     3271    abstract    = {
     3272        In typed object-oriented languages the subtype relation is
     3273        typically based on the inheritance hierarchy.  This approach,
     3274        however, leads either to insecure type-systems or to restrictions
     3275        on inheritance that make it less flexible than untyped Smalltalk
     3276        inheritance.  We present a new typed model of inheritance that
     3277        allows more of the flexibility of Smalltalk inheritance within a
     3278        statically-typed system.  Significant features of our analysis are
     3279        the introduction of polymorphism into the typing of inheritance and
     3280        the uniform application of inheritance to objects, classes and
     3281        types.  The resulting notion of {\em type inheritance} allows us to
     3282        show that the type of an inherited object is an inherited type but
     3283        not always a subtype.
     3284    }
     3285}
     3286
     3287@inproceedings{MMR92,
     3288    keywords    = {},
     3289    contributer = {gjditchfield@plg},
     3290    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
     3291    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
     3292                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
     3293    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
     3294    year        = 1992,
     3295    month       = aug,
     3296    pages       = {295-312},
     3297    organization= {USENIX Association},
     3298    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
     3299    abstract    = {
     3300        This paper reports our experiences integrating the Sun Microsystems
     3301        RPC and XDR protocol specifications into the C++ model of
     3302        input/output streams.  As part of the {\it Renaissance} operating
     3303        system project, we wish to construct network servers and clients,
     3304        written in C++, which interoperate with existing UNIX clients
     3305        and servers.  We discovered that, although it would be possible to
     3306        re-implement the procedural based XDR/RPC implementation
     3307        distributed by Sun Microsystems in C++, it is far cleaner to
     3308        integrate the protocols with the C++ I/O stream model.  We
     3309        feel the resulting model provides a cleaner way of implementing RPC
     3310        clients and servers without losing functionality or compatibility
     3311        with existing clients and servers.
     3312    }
     3313}
     3314
     3315@inproceedings{Zuo08,
     3316    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
     3317    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
     3318    title       = {An Intelligent Multi-Port Memory},
     3319    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
     3320    month       = dec,
     3321    year        = 2008,
     3322    pages       = {251-254},
     3323    publisher   = {IEEE Computer Society},
     3324    address     = {Los Alamitos, CA, USA},
     3325}
     3326
     3327@book{Francez96,
     3328    keywords    = {await, formal},
     3329    contributer = {pabuhr@plg},
     3330    author      = {Nissim Francez and Ira R. Forman},
     3331    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
     3332    publisher   = {Addison-Wesley},
     3333    series      = {ACM Press Books},
     3334    year        = 1996,
     3335}
     3336
     3337@article{Labreche90,
     3338    keywords    = {concurrency, C++},
     3339    contributer = {pabuhr@plg},
     3340    author      = {Pierre Labr{\`{e}}che},
     3341    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     3342    journal     = sigplan,
     3343    volume      = 25,
     3344    number      = 4,
     3345    month       = apr,
     3346    year        = 1990,
     3347    pages       = {20-32},
     3348}
     3349
     3350@inproceedings{interfaces,
     3351    keywords    = {parameterized interfaces, classes, recursion/inheritance},
     3352    contributer = {gjditchfield@plg},
     3353    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
     3354        Walter G. Olthoff},
     3355    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
     3356    crossref    = "OOPSLA89",
     3357    pages       = {457-467},
     3358    abstract    = {
     3359        This paper develops a system of explicit interfaces for
     3360        object-oriented programming.  The system provides the benefits of
     3361        module interfaces found in languages like Ada and Modula-2 while
     3362        preserving the expressiveness that gives untyped object-oriented
     3363        languages like Smalltalk their flexibility.  Interfaces are
     3364        interpreted as polymorphic types to make the system sufficiently
     3365        powerful.  We use interfaces to analyze the properties of
     3366        inheritance, and identify three distinct kinds of inheritance in
     3367        object-oriented programming, corresponding to objects, classes, and
     3368        interfaces, respectively.  Object interfaces clarify the
     3369        distinction between interface containment and inheritance and give
     3370        insight into limitations caused by equating the notions of type and
     3371        class in many typed object-oriented programming languages.
     3372        Interfaces also have practical consequences for design,
     3373        specification, and maintenance of object-oriented systems.
     3374    }
     3375}
     3376
     3377@phdthesis{Girard72,
     3378    keywords    = {universal quantification},
     3379    contributer = {gjditchfield@plg},
     3380    author      = {J.-Y. Girard},
     3381    title       = {Interpretation fonctionelle et elimination des coupures de
     3382        l'arithmetique d'ordre superieur},
     3383    school      = {Universite Paris},
     3384    year        = {1972}
     3385}
     3386
     3387@article{Karaorman93,
     3388    keywords    = {Eiffel, concurrency libraries},
     3389    contributer = {pabuhr@plg},
     3390    author      = {Murat Karaorman and John Bruno},
     3391    title       = {Introducing Concurrency to a Sequential Language},
     3392    journal     = cacm,
     3393    month       = sep,
     3394    year        = 1993,
     3395    volume      = 36,
     3396    number      = 9,
     3397    pages       = {103-116}
     3398}
     3399
     3400@book{Corman92,
     3401    keywords    = {PRAM, parallel algorithms},
     3402    contributer = {pabuhr@plg},
     3403    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
     3404    title       = {Introduction to Algorithms},
     3405    publisher   = {MIT Press/McGraw-Hill},
     3406    series      = {Electrical Engineering and Computer Science Series},
     3407    year        = 1992,
     3408}
     3409
     3410@book{Hopcroft79,
     3411    keywords    = {finite-state machine, push-dowm automata},
     3412    contributer = {pabuhr@plg},
     3413    author      = {John E. Hopcroft and Jeffrey D. Ullman},
     3414    title       = {Introduction to Automata Theory, Languages and Computation},
     3415    publisher   = {Addison-Wesley},
     3416    year        = 1979,
     3417}
     3418
     3419@techreport{walker87,
     3420    keywords    = {CCS},
     3421    contributer = {gjditchfield@plg},
     3422    author      = {David Walker},
     3423    title       = {Introduction to a Calculus of Communicating Systems},
     3424    institution = {Laboratory for Foundations of Computer Science},
     3425    year        = 1987,
     3426    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
     3427    month       = jun,
     3428    number      = {ECS-LFCS-87-22},
     3429}
     3430
     3431@article{katzenelson83a,
     3432    author      = {Jacob Katzenelson},
     3433    title       = {Introduction to Enhanced C (EC)},
     3434    journal     = spe,
     3435    volume      = 13,
     3436    number      = 7,
     3437    year        = 1983,
     3438    month       = jul,
     3439    pages       = {551-576},
     3440}
     3441
     3442@book{Deitel90,
     3443    keywords    = {concurrency, operating systems},
     3444    contributer = {pabuhr@plg},
     3445    author      = {Harvey M. Deitel},
     3446    title       = {An Introduction to Operating Systems},
     3447    publisher   = {Addison-Wesley},
     3448    year        = 1990,
     3449    edition     = {second},
     3450}
     3451
     3452@techreport{Birrell89,
     3453    keywords    = {threads, monitors},
     3454    contributer = {pabuhr@plg},
     3455    author      = {Andrew D. Birrell},
     3456    title       = {An Introduction to Programming with Threads},
     3457    institution = {Digital Systems Research Center},
     3458    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
     3459    number      = {35},
     3460    month       = jan,
     3461    year        = 1989,
     3462    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
     3463
     3464}
     3465
     3466@article{t/o,
     3467    keywords    = {Trellis/Owl},
     3468    contributer = {gjditchfield@plg},
     3469    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
     3470    title       = {An Introduction to Trellis/Owl},
     3471    journal     = sigplan,
     3472    volume      = 21,
     3473    number      = 11,
     3474    year        = 1986,
     3475    month       = nov,
     3476    pages       = {9-16},
     3477}
     3478
     3479@inproceedings{Hibbard77,
     3480    keywords    = {algol-68, concurrency},
     3481    contributer = {pabuhr@plg},
     3482    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
     3483    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
     3484    booktitle   = {Proceedings of the 5th Annual iii Conference},
     3485    address     = {Guidel, France},
     3486    month       = may,
     3487    year        = 1977,
     3488    pages       = {203-221}
     3489}
     3490
     3491@inproceedings{Miller97,
     3492    keywords    = {exception handling, software-engineering},
     3493    contributer = {pabuhr@plg},
     3494    author      = {Robert Miller and Anand Tripathi},
     3495    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
     3496    booktitle   = {ECOOP'97},
     3497    publisher   = {Springer-Verlag},
     3498    volume      = 1241,
     3499    series      = {Lecture Notes in Computer Science},
     3500    year        = 1997,
     3501    pages       = {85-103}
     3502}
     3503   
     3504@article{Murer96,
     3505    keywords    = {interators, generators, cursors},
     3506    contributer = {pabuhr@plg},
     3507    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
     3508    title       = {Iteration Abstraction in Sather},
     3509    journal     = toplas,
     3510    month       = jan,
     3511    year        = 1996,
     3512    volume      = 18,
     3513    number      = 1,
     3514    pages       = {1-15},
     3515}
     3516
     3517% J
     3518                 
     3519@book{Java,
     3520    keywords    = {Java},
     3521    contributer = {pabuhr@plg},
     3522    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
     3523    title       = {The {Java} Language Specification},
     3524    publisher   = {Addison-Wesley},
     3525    year        = 2000,
     3526    edition     = {second},
     3527}
     3528
     3529@manual{Java8,
     3530    keywords    = {Java SE 8},
     3531    contributer = {pabuhr@plg},
     3532    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
     3533    title       = {The {Java} Language Specification},
     3534    publisher   = {Oracle},
     3535    year        = 2015,
     3536    edition     = {Java SE 8},
     3537}
     3538
     3539@manual{JUC,
     3540    keywords    = {Java concurrency library},
     3541    contributer = {pabuhr@plg},
     3542    title       = {java.util.concurrency},
     3543    author      = {Doug Lea},
     3544    organization= {Oracle},
     3545    year        = 2014,
     3546    note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{\textsf{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}}},
     3547}
     3548
     3549% K
     3550
     3551@article{Duggan96,
     3552    keywords    = {concurrency, critical section},
     3553    contributer = {pabuhr@plg},
     3554    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
     3555    title       = {Kinded Type Inference for Parametric Overloading},
     3556    journal     = acta,
     3557    volume      = 33,
     3558    number      = 1,
     3559    year        = 1996,
     3560    pages       = {21-68},
     3561}
     3562
     3563@article{Peter35,
     3564    keywords    = {recursion, Ackermann function},
     3565    contributer = {pabuhr@plg},
     3566    author      = {R{\'{o}}zsa P{\'{e}}ter},
     3567    title       = {Konstruktion nichtrekursiver Funktionen},
     3568    publisher   = {Springer},
     3569    journal     = {Mathematische Annalen},
     3570    number      = 111,
     3571    volume      = 1,
     3572    pages       = {42-60},
     3573    month       = dec,
     3574    year        = 1935,
     3575}
     3576
     3577% L
     3578
     3579@TechReport{WVWR88:L,
     3580    contributer = {gjditchf@plg},
     3581    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
     3582    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
     3583    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
     3584    year        = 1988,
     3585    number      = {88-3},
     3586    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
     3587                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
     3588                   ED Nijmegen, The Netherlands},
     3589    month       = apr,
     3590    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
     3591                   \item A trivial type, ``!'', with a single element.
     3592                   \item Labelled types, distinct from each other.
     3593                   ``!False'' and ``!True'' are distinct types, each
     3594                   containing a single value serving as boolean false and
     3595                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
     3596                   type containing only 2.
     3597                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
     3598                   types are abbreviations for disjunctions.
     3599                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
     3600                   ``Re'' and ``Im'' are type labels that distinguish between the
     3601                   fields.
     3602                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
     3603                   and dyadic infix functions.
     3604                   \item Function types, universal types, existential types,
     3605                   and subtyping (viewed as coercion), as in Fun.
     3606                   \end{itemize}
     3607                   Disjunctions and conjunctions types are associative and
     3608                   commutative (i.e. flat).  Each type has a matching
     3609                   constructor.  Functions use pattern matching on type
     3610                   labels to strip labels and extract conjunction fields:
     3611                   \begin{verbatim}
     3612                   \lambda n {0...1000000 Guilders}. ... n ...
     3613                   -- both argument and n are amounts in Guilders.
     3614                   \lambda n {0...1000000} Guilders. ... n ...
     3615                   -- argument in Guilders, but n is in 0...1000000.
     3616                   \end{verbatim}
     3617                   ``Function bundles'' (conjunctions of functions), applied
     3618                   to arguments, replace Dijkstra's guarded if...fi, but the
     3619                   bundles are first-class and the guards are part of their
     3620                   type.
     3621
     3622                   The same trick used to define the type ``2'' is used to
     3623                   move absolute times into the type system, to allow static
     3624                   checking. ``0`'' denotes a time before the system begins
     3625                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
     3626                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
     3627                   of a value of type a that will be available no later
     3628                   (earlier) than time t.  Universals and existentials use
     3629                   subtyping to parameterize functions by start time:
     3630                   \begin{verbatim}
     3631                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
     3632                   f{then} y -- argument y must be available at time ``then''.
     3633                   \end{verbatim}
     3634                   Functions can return before their arguments are available
     3635                   if they don't use them.  However, function {\em bundles}
     3636                   can't return until their result type is known, so the
     3637                   lower and upper time bounds of the bundle are the
     3638                   second-last upper bound of the component functions: at
     3639                   that time, there is only one alternative left.
     3640
     3641                   Explicit time parameterization allows slack in time
     3642                   specification.  Tools could point out slack or determine
     3643                   degree of parallelism.}
     3644}
     3645
     3646@mastersthesis{Clarke90,
     3647    keywords    = {concurrency, postponing requests},
     3648    contributer = {pabuhr@plg},
     3649    author      = {Charles L. A. Clarke},
     3650    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
     3651    school      = {University of Waterloo},
     3652    year        = 1990,
     3653    address     = {Waterloo, Ontario, Canada, N2L 3G1}
     3654}
     3655
     3656@article{Tennent77,
     3657    keywords    = {abstraction, correspondence, Pascal},
     3658    contributer = {gjditchfield@plg},
     3659    author      = {R. D. Tennent},
     3660    title       = {Language Design Methods Based on Semantic Principles},
     3661    journal     = acta,
     3662    year        = 1977,
     3663    volume      = 8,
     3664    number      = 2,
     3665    pages       = {97-112},
     3666    note        = {reprinted in \cite{pldesign}},
     3667    abstract    = {
     3668        Two language design methods based on principles derived from the
     3669        denotational approach to programming language semantics are
     3670        described and illustrated by an application to the language Pascal.
     3671        The principles are, firstly, the correspondence between parametric
     3672        and declarative mechanisms and secondly, a principle of abstraction
     3673        for programming languages adapted from set theory.  Several useful
     3674        extensions and generalizations of Pascal emerge by applying these
     3675        principles, including a solution to the array parameter problem,
     3676        and a modularization facility.
     3677    },
     3678}
     3679
     3680@article{Liskov86,
     3681    keywords    = {synchronous communication, concurrency},
     3682    contributer = {pabuhr@plg},
     3683    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
     3684    title       = {Limitations of Synchronous Communication with Static
     3685                   Process Structure in Languages for Distributed Computing},
     3686    journal     = {},
     3687    volume      = {},
     3688    number      = {},
     3689    month       = {},
     3690    year        = {},
     3691    pages       = {},
     3692}
     3693
     3694@article{Linda,
     3695    keywords    = {Linda, concurrency},
     3696    contributer = {pabuhr@plg},
     3697    author      = {Nicholas Carriero and David Gelernter},
     3698    title       = {Linda in Context},
     3699    journal     = cacm,
     3700    volume      = 32,
     3701    number      = 4,
     3702    month       = apr,
     3703    year        = 1989,
     3704    pages       = {444-458}
     3705}
     3706
     3707@book{Weissman67,
     3708    keywords    = {lisp},
     3709    author      = {Clark Weissman},
     3710    title       = {Lisp 1.5 Primer},
     3711    publisher   = {Dickenson Publishing},
     3712    year        = 1967,
     3713}
     3714
     3715@article{Sundell08,
     3716    keywords    = {lock free, deque},
     3717    contributer = {pabuhr@plg},
     3718    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
     3719    title       = {Lock-free Deques and Doubly Linked Lists},
     3720    journal     = {J. Parallel Distrib. Comput.},
     3721    volume      = 68,
     3722    number      = 7,
     3723    year        = 2008,
     3724    pages       = {1008-1020},
     3725}
     3726
     3727@article{Cormack89,
     3728    keywords    = {parsing, LR, error recovery},
     3729    contributer = {pabuhr@plg},
     3730    author      = {Gordon V. Cormack},
     3731    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
     3732    journal     = sigplan,
     3733    volume      = 24,
     3734    number      = 7,
     3735    month       = jul,
     3736    year        = 1989,
     3737    pages       = {161-169},
     3738    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
     3739}
     3740
     3741% M
     3742
     3743@book{M68K,
     3744    keywords    = {M680XX, Motorola},
     3745    contributer = {pabuhr@plg},
     3746    key         = {Motorola},
     3747    title       = {M68000 Family Programmer's Reference Manual},
     3748    publisher   = {Motorola},
     3749    year        = 1992,
     3750}
     3751
     3752@article{c++libs,
     3753    keywords    = {directory structure},
     3754    contributer = {gjditchfield@plg},
     3755    author      = {J. M. Coggins and G. Bollella},
     3756    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
     3757    journal     = sigplan,
     3758    year        = 1989,
     3759    month       = jun, volume = 24, number = 6, pages = {37-48},
     3760    abstract    = {
     3761        This paper describes a scheme we have used to manage a large
     3762        library written in the C++ language.  The scheme imposes a
     3763        directory structure, and represents dependency hierarchy in a
     3764        globally accessible file we call the 'prelude' file.  We also
     3765        discuss the structure of the description files (makefiles) used
     3766        with the UNIX options we have found to be useful in reducing the
     3767        size of the library, and how to minimize recompilation time after
     3768        trivial changes to the source code of the library.
     3769    }
     3770}
     3771
     3772@inproceedings{mprof,
     3773    keywords    = {malloc},
     3774    contributer = {gjditchfield@plg},
     3775    author      = {Benjamin Zorn and Paul Hilfinger},
     3776    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
     3777    booktitle   = {Summer 1988 {USENIX} proceedings},
     3778    year        = 1988
     3779}
     3780
     3781@manual{MMTk,
     3782    keywords    = {Java memory management},
     3783    contributer = {pabuhr@plg},
     3784    title       = {MMTk: The Memory Management Toolkit},
     3785    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
     3786    month       = sep,
     3787    year        = 2006,
     3788    note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
     3789}
     3790
     3791@article{Adve10,
     3792    keywords    = {Java memory management},
     3793    contributer = {pabuhr@plg},
     3794    author      = {Sarita V. Adve and Hans-J. Boehm},
     3795    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
     3796    journal     = cacm,
     3797    volume      = 53,
     3798    number      = 8,
     3799    month       = aug,
     3800    year        = 2010,
     3801    pages       = {90-101},
     3802    publisher   = {ACM},
     3803    address     = {New York, NY, USA},
     3804}
     3805@techreport{Mesa,
     3806    keywords    = {monitors, packages},
     3807    contributer = {pabuhr@plg},
     3808    author      = {James G. Mitchell and William Maybury and Richard Sweet},
     3809    title       = {Mesa Language Manual},
     3810    institution = {Xerox Palo Alto Research Center},
     3811    number      = {CSL--79--3},
     3812    month       = apr,
     3813    year        = 1979
     3814}
     3815
     3816@article{Andrews89,
     3817    keywords    = {semaphore, split-binary, baton},
     3818    contributer = {pabuhr@plg},
     3819    author      = {Gregory R. Andrews},
     3820    title       = {A Method for Solving Synronization Problems},
     3821    journal     = scp,
     3822    volume      = 13,
     3823    number      = 4,
     3824    month       = dec,
     3825    year        = 1989,
     3826    pages       = {1-21},
     3827}
     3828
     3829@inproceedings{Mitchell78,
     3830    keywords    = {Mesa},
     3831    contributer = {pabuhr@plg},
     3832    author      = {James G. Mitchell},
     3833    title       = {Mesa: A Designer's User Perspective},
     3834    booktitle   = {Spring CompCom 78},
     3835    organization= {Sixteenth IEEE Computer Society International Conference},
     3836    address     = {San Francisco, California, U.S.A.},
     3837    month       = feb,
     3838    year        = 1978,
     3839    pages       = {36-39},
     3840    note        = {IEEE Catalog No. 78CH1328-4C},
     3841}
     3842
     3843@article{Gentleman81,
     3844    keywords    = {messages, concurrency},
     3845    contributer = {pabuhr@plg},
     3846    author      = {W. Morven Gentleman},
     3847    title       = {Message Passing between Sequential Processes:
     3848                   the Reply Primitive and the Administrator Concept},
     3849    journal     = spe,
     3850    month       = may,
     3851    year        = 1981,
     3852    volume      = 11,
     3853    number      = 5,
     3854    pages       = {435-466}
     3855}
     3856
     3857@article{Cormack88,
     3858    keywords    = {concurrency},
     3859    contributer = {pabuhr@plg},
     3860    author      = {G. V. Cormack},
     3861    title       = {A Micro Kernel for Concurrency in C},
     3862    journal     = spe,
     3863    month       = may,
     3864    year        = 1988,
     3865    volume      = 18,
     3866    number      = 4,
     3867    pages       = {485-491}
     3868}
     3869
     3870@article{Buhr90a,
     3871    keywords    = {concurrency, light-weight process, shared memory},
     3872    contributer = {pabuhr@plg},
     3873    author      = {Peter A. Buhr and Richard A. Stroobosscher},
     3874    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
     3875    journal     = spe,
     3876    volume      = 20,
     3877    number      = 9,
     3878    month       = sep,
     3879    year        = 1990,
     3880    pages       = {929-963},
     3881}
     3882
     3883@techreport{uSystem,
     3884    keywords    = {C, concurrency, light-weight process, shared memory},
     3885    contributer = {pabuhr@plg},
     3886    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
     3887    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
     3888    institution = {Department of Computer Science, University of Waterloo},
     3889    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     3890    month       = sep,
     3891    year        = 1994,
     3892    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
     3893}
     3894
     3895@book{Mips4000,
     3896    key         = {Mips4000},
     3897    title       = {MIPS R4000 Microprocessor User's Manual},
     3898    publisher   = {MIPS Computer Systems Inc},
     3899    year        = 1991,
     3900}
     3901
     3902@inproceedings{Mjolner,
     3903    keywords    = {Mjolner, hierarchical windows},
     3904    contributer = {pabuhr@plg},
     3905    author      = {G\"{o}rel Hedin and Boris Magnusson},
     3906    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
     3907    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
     3908    organization= {ECOOP'88},
     3909    publisher   = {Springer-Verlag},
     3910    volume      = 322,
     3911    editor      = {S. Gjessing and K. Nygaard},
     3912    address     = {Oslo, Norway},
     3913    month       = aug,
     3914    year        = 1988,
     3915    pages       = {41-54},
     3916    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
     3917}
     3918
     3919@article{Skillicorn98,
     3920    keywords    = {parallel models},
     3921    contributer = {pabuhr@plg},
     3922    author      = {David B. Skillicorn and Domenico Talia},
     3923    title       = {Models and Languages for Parallel Computation},
     3924    journal     = acmcs,
     3925    volume      = 30,
     3926    number      = 2,
     3927    month       = jun,
     3928    year        = 1998,
     3929    pages       = {123-169},
     3930}
     3931
     3932@article{Werther96,
     3933    keywords    = {C++, language syntax},
     3934    contributer = {pabuhr@plg},
     3935    author      = {Ben Werther and Damian Conway},
     3936    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
     3937    journal     = sigplan,
     3938    volume      = 31,
     3939    number      = 11,
     3940    month       = nov,
     3941    year        = 1996,
     3942    pages       = {74-82},
     3943}
     3944
     3945@book{Alexandrescu01,
     3946    keywords    = {c design-patterns programming},
     3947    contributer = {pabuhr@plg},
     3948    author      = {Andrei Alexandrescu},
     3949    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
     3950    publisher   = {Addison-Wesley Professional},
     3951    month       = feb,
     3952    year        = 2001,
     3953    isbn        = {0201704315},
     3954}
     3955
     3956@book{Tanenbaum92,
     3957    keywords    = {concurrency, operating systems},
     3958    contributer = {pabuhr@plg},
     3959    author      = {Andrew S. Tanenbaum},
     3960    title       = {Modern Operating Systems},
     3961    publisher   = {Prentice-Hall},
     3962    year        = 1992,
     3963}
     3964
     3965@article{Wirth77,
     3966    keywords    = {modules, coroutines},
     3967    contributer = {pabuhr},
     3968    author      = {Niklaus Wirth},
     3969    title       = {Modula: a Language for Modular Multiprogramming},
     3970    journal     = spe,
     3971    month       = {January--February},
     3972    year        = 1977,
     3973    volume      = 7,
     3974    number      = 1,
     3975    pages       = {3-35},
     3976}
     3977
     3978@book{Harbison92,
     3979    contributer = {mhcoffin},
     3980    author      = {Samuel P. Harbison},
     3981    title       = {Modula-3},
     3982    publisher   = {Prentise Hall, Inc.},
     3983    year        = {1992},
     3984    comment     = {This is a textbook for learning Modula-3.}
     3985}
     3986
     3987@techreport{Modula-3:old,
     3988    keywords    = {Modula-3, inheritance, type extension},
     3989    contributer = {gjditchfield@plg},
     3990    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
     3991                   Jordan and Bill Kalsow and Greg Nelson},
     3992    title       = {Modula-3 Report},
     3993    institution = {Systems Research Center},
     3994    address     = {130 Lytton Avenue, Palo Alto, California  94301},
     3995    month       = aug,
     3996    year        = 1988,
     3997    number      = 31
     3998}
     3999 
     4000@article{Dueck90,
     4001    keywords    = {attribute grammars},
     4002    contributer = {pabuhr@plg},
     4003    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
     4004    title       = {Modular Attribute Grammars},
     4005    journal     = {The Computer Journal},
     4006    month       = apr,
     4007    year        = 1990,
     4008    volume      = 33,
     4009    number      = 2,
     4010    pages       = {164-172},
     4011}
     4012
     4013@article{Yemini85,
     4014    keywords    = {exception handling},
     4015    contributer = {pabuhr@plg},
     4016    author      = {Shaula Yemini and Daniel M. Berry},
     4017    title       = {A Modular Verifiable Exception-Handling Mechanism},
     4018    journal     = toplas,
     4019    month       = apr,
     4020    year        = 1985,
     4021    volume      = 7,
     4022    number      = 2,
     4023    pages       = {214-243},
     4024}
     4025
     4026@article{Buhr95b,
     4027    keywords    = {concurrency, monitors, classification},
     4028    contributer = {pabuhr@plg},
     4029    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
     4030    title       = {Monitor Classification},
     4031    journal     = acmcs,
     4032    volume      = 27,
     4033    number      = 1,
     4034    month       = mar,
     4035    year        = 1995,
     4036    pages       = {63-107},
     4037}
     4038
     4039@article{Hoare74,
     4040    keywords    = {monitor},
     4041    contributer = {pabuhr@plg},
     4042    author      = {C. A. R. Hoare},
     4043    title       = {Monitors: An Operating System Structuring Concept},
     4044    journal     = cacm,
     4045    volume      = 17,
     4046    number      = 10,
     4047    month       = oct,
     4048    year        = 1974,
     4049    pages       = {549-557},
     4050    annote      = {
     4051    }
     4052}
     4053
     4054@inbook{Buhr99a,
     4055    keywords    = {concurrency, monitors, classification},
     4056    contributer = {pabuhr@plg},
     4057    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
     4058    title       = {Encyclopedia of Computer Science and Technology},
     4059    chapter     = {Monitor Taxonomy},
     4060    publisher   = {Marcel Dekker, Inc},
     4061    volume      = {40, supplement 25},
     4062    year        = 1999,
     4063    pages       = {191-212},
     4064}
     4065%    editor     = {Allen Kent and James G. Williams},
     4066
     4067@manual{MPI,
     4068    keywords    = {MPI},
     4069    contributer = {pabuhr@plg},
     4070    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
     4071    organization= {Message Passing Interface Forum},
     4072    address     = {University of Tennessee, Knoxville, Tennessee},
     4073    month       = jun,
     4074    year        = 2015,
     4075    note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{\textsf{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}}},
     4076}
     4077
     4078@article{multilisp,
     4079    keywords    = {futures, scheme},
     4080    contributer = {gjditchfield@plg},
     4081    author      = {Halstead, Jr.,Robert H.},
     4082    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
     4083    journal     = toplas,
     4084    volume      = 7,
     4085    number      = 4,
     4086    pages       = {501-538},
     4087    month       = oct,
     4088    year        = 1985,
     4089    comment     = {
     4090        (future E) begins evaluating the expression E, and
     4091        returns a ``future'' representing the value.  When evaluation is
     4092        finished, the value of E replaces the future.  Operations that need
     4093        the future's value suspend until it is available.  Assignment and
     4094        parameter passing do not suspend.  Future introduces concurrency
     4095        between the calculation of a value and its use; reference to
     4096        futures is a synchronization mechanism.
     4097
     4098        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
     4099        applies F to the arguments.  pcall can be built from future and a
     4100        ``touch'' operation.  pcall is included because it may not be easy
     4101        to determine that there are no critical sections between the future
     4102        expression and the code between the future call and the value's
     4103        first use.
     4104
     4105        (delay E) is like future, but E's process does not begin until its
     4106        value is needed.  It provides lazy evaluation.  Replacing delay
     4107        with future would launch an infinite number of processes.
     4108    }
     4109}
     4110
     4111@techreport{Bretthauer89,
     4112    keywords    = {multiple inheritance},
     4113    contributer = {pabuhr@plg},
     4114    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp},
     4115    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
     4116    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
     4117    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
     4118    number      = {Arbeitspapiere der GMD 415},
     4119    month       = nov,
     4120    year        = 1989,
     4121}
     4122
     4123@inproceedings{c++:multinh,
     4124    keywords    = {C++, multiple inheritance, implementation},
     4125    contributer = {gjditchfield@plg},
     4126    author      = {Bjarne Stroustrup},
     4127    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4128    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
     4129    month       = may, year = 1987
     4130}
     4131
     4132@inproceedings{st:mult,
     4133    keywords    = {smalltalk, multiple inheritance, implementation},
     4134    contributer = {gjditchfield@plg},
     4135    author      = {Daniel H. H. Ingalls and A. H. Borning},
     4136    title       = {Multiple Inheritance in Smalltalk-80},
     4137    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
     4138    month       = aug,
     4139    year        = 1982,
     4140    pages       = {234-238},
     4141    organization= {American Association for Artificial Intelligence},
     4142    comment     = {
     4143        Methods are looked up in the current class, the superclasses, the
     4144        supersuperclasses, etc.  The same method can be inherited
     4145        repeatedly, but having different methods for the same message is an
     4146        error.  Only one copy is made for multiply-inherited fields.
     4147
     4148        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
     4149        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
     4150        super m}.  {\tt all.m} invokes all inherited versions of m.
     4151
     4152        Methods on the first-superclass chain are found as usual.  Methods
     4153        from other superclasses are copied into the class dictionary.  An
     4154        error method is created if inherited methods conflict.  The parser
     4155        is changed to allow compound selectors.  {\tt Object
     4156        messageNotUnderstood} is changed to look for compound selectors and
     4157        dynamically add a method with the right name and body to the class.
     4158        When methods are edited, they are copied into subclasses and
     4159        compound selector versions are deleted, as appropriate.
     4160    }
     4161}
     4162
     4163@article{Lamport86I,
     4164    keywords    = {software solutions, N-thread, mutual exclusions},
     4165    contributer = {pabuhr@plg},
     4166    author      = {Leslie Lamport},
     4167    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
     4168    journal     = jacm,
     4169    volume      = 33,
     4170    number      = 2,
     4171    month       = apr,
     4172    year        = 1986,
     4173    pages       = {313--326},
     4174    numpages    = {14},
     4175    publisher   = {ACM},
     4176    address     = {New York, NY, USA},
     4177}
     4178
     4179@article{Lamport86II,
     4180    keywords    = {software solutions, N-thread, mutual exclusions},
     4181    contributer = {pabuhr@plg},
     4182    author      = {Leslie Lamport},
     4183    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
     4184    journal     = jacm,
     4185    volume      = 33,
     4186    number      = 2,
     4187    month       = apr,
     4188    year        = 1986,
     4189    pages       = {327--348},
     4190    numpages    = {22},
     4191    publisher   = {ACM},
     4192    address     = {New York, NY, USA},
     4193}
     4194
     4195@article{Burns78,
     4196    keywords    = {hardware, N-process solution, O(N)},
     4197    contributer = {pabuhr@plg},
     4198    author      = {James E. Burns},
     4199    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
     4200    journal     = {SIGACT News},
     4201    volume      = 10,
     4202    number      = 2,
     4203    month       = {Summer},
     4204    year        = 1978,
     4205    pages       = {42-47},
     4206}
     4207
     4208@inproceedings{Burns80,
     4209    keywords    = {N-process software solution},
     4210    contributer = {pabuhr@plg},
     4211    author      = {James E. Burns and Nancy A. Lynch},
     4212    title       = {Mutual Exclusion using Indivisible Reads and Writes},
     4213    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
     4214    year        = 1980,
     4215    pages       = {833-842},
     4216    note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}} [Accessed on March 2014]},
     4217    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
     4218}
     4219
     4220@article{Peterson81,
     4221    keywords    = {concurrency, critical section},
     4222    contributer = {pabuhr@plg},
     4223    author      = {G. L. Peterson},
     4224    title       = {Myths About the Mutual Exclusion Problem},
     4225    journal     = ipl,
     4226    year        = 1981,
     4227    month       = jun,
     4228    volume      = 12,
     4229    number      = 3,
     4230    pages       = {115-116},
     4231}
     4232
     4233% N
     4234
     4235@article{Haddon77,
     4236    keywords    = {monitors, nested monitor calls},
     4237    contributer = {pabuhr@plg},
     4238    author      = {Bruce K. Haddon},
     4239    title       = {Nested Monitor Calls},
     4240    journal     = osr,
     4241    volume      = 11,
     4242    number      = 4,
     4243    month       = oct,
     4244    year        = 1977,
     4245    pages       = {18-23},
     4246}
     4247
     4248@inproceedings{nesting,
     4249    keywords    = {},
     4250    contributer = {gjditchfield@plg},
     4251    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
     4252    title       = {Nesting in {Ada} Programs is for the Birds},
     4253    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
     4254        Programming Language},
     4255    year        = 1980,
     4256    month       = dec, pages = {139-145},
     4257    note        = {SIGPLAN Notices, v. 15, n. 11},
     4258    abstract    = {
     4259        Given a data abstraction construct like the Ada package and in the
     4260        light of current thoughts on programming methodology, we feel that
     4261        nesting is an anachronism.  In this paper we propose a nest-free
     4262        program style for Ada that eschews nested program units and
     4263        declarations within blocks and instead heavily utilizes packages
     4264        and context specifications as mechanisms for controlling
     4265        visibility.  We view this proposal as a first step toward the
     4266        development of programming methods that exploit the novel language
     4267        features available in Ada.  Consideration of this proposal's
     4268        ramifications for data flow, control flow, and overall program
     4269        structure substantiates our contention that a tree structure is
     4270        seldom a natural representation of a program and that nesting
     4271        therefore generally interferes with program development and
     4272        readability.
     4273    }
     4274}
     4275
     4276@inproceedings{Buhr88,
     4277    keywords    = {nested classes, persistence},
     4278    contributer = {pabuhr@plg},
     4279    author      = {P. A. Buhr and C. R. Zarnke},
     4280    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
     4281    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
     4282    publisher   = {Springer-Verlag},
     4283    volume      = 322,
     4284    editor      = {S. Gjessing and K. Nygaard},
     4285    address     = {Oslo, Norway},
     4286    month       = aug,
     4287    year        = 1988,
     4288    pages       = {128-145},
     4289    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
     4290}
     4291
     4292@inproceedings{Thompson90new,
     4293    keywords    = {Plan 9},
     4294    contributer = {pabuhr@plg},
     4295    title       = {A New C Compiler},
     4296    author      = {Ken Thompson},
     4297    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
     4298    year        = 1990,
     4299    pages       = {41--51},
     4300    url         = {http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}
     4301}
     4302
     4303@article{Trono94,
     4304    author      = {John A. Trono},
     4305    title       = {A New Exercise in Concurrency},
     4306    journal     = {SIGCSE Bulletin},
     4307    volume      = {26},
     4308    number      = {3},
     4309    month       = sep,
     4310    year        = {1994},
     4311    pages       = {8-10},
     4312    publisher   = {ACM},
     4313    address     = {New York, NY, USA},
     4314}
     4315
     4316@article{Lamport74,
     4317    keywords    = {concurrency, N-Process solution, O(N)},
     4318    contributer = {pabuhr@plg},
     4319    author      = {Leslie Lamport},
     4320    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
     4321    journal     = cacm,
     4322    month       = aug,
     4323    year        = 1974,
     4324    volume      = 17,
     4325    number      = 8,
     4326    pages       = {453-455},
     4327}
     4328
     4329@article{landin,
     4330    keywords    = {},
     4331    contributer = {gjditchfield@plg},
     4332    author      = {P. J. Landin},
     4333    title       = {The Next 700 Programing Languages},
     4334    journal     = cacm,
     4335    year        = 1966,
     4336    volume      = 9,
     4337    pages       = {157-164},
     4338}
     4339
     4340@article{Herlihy05,
     4341    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
     4342    contributer = {pabuhr@plg},
     4343    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
     4344    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
     4345    journal     = tocs,
     4346    volume      = 23,
     4347    number      = 2,
     4348    month       = may,
     4349    year        = 2005,
     4350    pages       = {146-196},
     4351    numpages    = {51},
     4352    publisher   = {ACM},
     4353    address     = {New York, NY, USA},
     4354}
     4355
     4356% O
     4357
     4358@inproceedings{oop:abcl/1,
     4359    keywords    = {concurrency, OOPL, futures},
     4360    contributer = {gjditchfield@plg},
     4361    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
     4362    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
     4363    crossref    = "OOPSLA86",
     4364    pages       = {258-268},
     4365    comment     = {
     4366        Actions for messages sent to an object are executed concurrently
     4367        iff the object has no members.  A select construct specifies a set
     4368        of message patterns.
     4369
     4370        Express messages have priority.  If an express message arrives
     4371        while an ordinary message is being processed, the action for the
     4372        ordinary message is suspended or aborted and the action for the
     4373        express message is executed.  The sender decides which class a
     4374        message belongs in.  Non-interruptible sections can be defined.
     4375
     4376        Message sends can be non-blocking, or can block until a reply is
     4377        received, at the sender's option.  The receiver can continue to
     4378        execute after sending the reply.
     4379
     4380        Replies can send back ``futures'', and put values in them later.
     4381        Futures are queues of values, not single values.  The caller can
     4382        use a ``ready?'' predicate to test for empty queue, or can use
     4383        operations to get the first or all queue elements; these operations
     4384        block if the queue is empty.
     4385    }
     4386}
     4387
     4388@techreport{Schmidt95,
     4389    keywords    = {ACE, concurrency, library},
     4390    contributer = {pabuhr@plg},
     4391    author      = {Douglas C. Schmidt},
     4392    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
     4393    institution = {Washington University in St. Louis},
     4394    year        = 1995,
     4395    number      = 31,
     4396    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
     4397}
     4398
     4399@inproceedings{OOEx,
     4400    keywords    = {Exceptions, object-oriented programming languages},
     4401    contributer = {gjditchfield@plg},
     4402    author      = {Christophe Dony},
     4403    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
     4404    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
     4405    year        = 1988,
     4406    pages       = {146-161},
     4407    editor      = {S. Gjessing and K. Nygaard},
     4408    organization= {DND, The Norwegian Computer Society},
     4409    publisher   = {Springer-Verlag},
     4410    comment     = {
     4411           Objectives:
     4412           - Users can define new exceptions.
     4413           - Default handlers can be attached to exceptions.
     4414           - Handlers can be attached to classes.
     4415           - Handlers can be attached to dynamic entities (expressions).
     4416           - Exceptions propagate first along the invocation chain.
     4417           - Exceptions should be hierarchically organized classes.
     4418           - Handlers should take into account the exception hierarchy (i.e.,
     4419             should handle raising of sub-exceptions).
     4420           The ``exceptional-event'' class has two subclasses.  ``Warning''
     4421           has a ``resume'' method, and ``error'' has ``exit'' and
     4422           ``retry'' methods.  Signalling an exception creates an instance
     4423           of the exception, whose members are used to pass information
     4424           back to the handler.  Handlers are instances of class
     4425           ``protect-handler'' with a method ``protect {\em expression}'',
     4426           or are methods defined for the class or the exception.
     4427    }
     4428}
     4429
     4430@article{CommonObjects,
     4431    author      = {A. Snyder},
     4432    title       = {Object-Oriented Programming for Common Lisp},
     4433    address     = {Palo Alto CA},
     4434    year        = 1985,
     4435    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
     4436    journal     = {Report ATC-85-1},
     4437}
     4438
     4439@book{objective-c,
     4440    keywords    = {},
     4441    author      = {Brad J. Cox},
     4442    title       = {Object-oriented programming; an evolutionary approach},
     4443    publisher   = {Addison-Wesley},
     4444    year        = 1986
     4445}
     4446
     4447@book{Beta,
     4448    keywords    = {Beta, object oriented, concurrency, exceptions},
     4449    contributer = {pabuhr@plg},
     4450    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
     4451    title       = {Object-oriented Programming in the {BETA} Programming Language},
     4452    publisher   = {Addison-Wesley},
     4453    year        = 1993,
     4454}
     4455
     4456@article{Flavors,
     4457    author      = {D. A. Moon},
     4458    title       = {Object-Oriented Programming with Flavors},
     4459    address     = {Portland OR},
     4460    month       = sep,
     4461    year        = 1986,
     4462    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
     4463}
     4464
     4465@article{Buhr00b,
     4466    keywords    = {concurrency, C++, real-time},
     4467    contributer = {pabuhr@plg},
     4468    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
     4469    title       = {Object-Oriented Real-Time Concurrency},
     4470    journal     = sigplan,
     4471    volume      = 35,
     4472    number      = 10,
     4473    month       = oct,
     4474    year        = 2000,
     4475    pages       = {29-46},
     4476    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
     4477}
     4478
     4479@book{Meyer88,
     4480    keywords    = {Eiffel},
     4481    contributer = {pabuhr@plg},
     4482    author      = {Bertrand Meyer},
     4483    title       = {Object-oriented Software Construction},
     4484    publisher   = {Prentice Hall},
     4485    year        = {1988},
     4486    series      = {Prentice Hall International Series in Computer Science},
     4487}
     4488
     4489@article{objectPascal,
     4490    keywords    = {objects, modules},
     4491    contributer = {gjditchfield@plg},
     4492    author      = {Larry Tesler},
     4493    title       = {Object Pascal Report},
     4494    journal     = {Structured Language World},
     4495    year        = 1985,
     4496    volume      = 9,
     4497    number      = 3,
     4498}
     4499
     4500@misc{obj-c:next,
     4501    keywords    = {categories, protocols, Objective C},
     4502    contributor = {gjditchfield@angus},
     4503    author      = {NeXT Computer, Inc.},
     4504    title       = {Objective C Extensions},
     4505    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
     4506    year        = 1993
     4507}
     4508
     4509@book{Galletly96,
     4510    keywords    = {occam},
     4511    author      = {John Galletly},
     4512    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
     4513    publisher   = {{UCL} (University College London) Press Ltd.},
     4514    edition     = {second},
     4515    year        = 1996,
     4516}
     4517
     4518@techreport{Morrison88,
     4519    keywords    = {objects, concurrency, persistence},
     4520    contributer = {pabuhr@plg},
     4521    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
     4522    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
     4523    institution = {Department of Computational Science, University of St. Andrews, Scotland},
     4524    number      = {PPRR 57},
     4525    month       = jan,
     4526    year        = 1988,
     4527}
     4528
     4529@article{Peterson73,
     4530    keywords    = {goto, structured programming},
     4531    contributer = {pabuhr@plg},
     4532    author      = {W. W. Peterson and T. Kasami and N. Tokura},
     4533    title       = {On the Capabilities of While, Repeat, and Exit Statements},
     4534    journal     = cacm,
     4535    month       = aug,
     4536    year        = 1973,
     4537    volume      = 16,
     4538    number      = 8,
     4539    pages       = {503-512}
     4540}
     4541
     4542@article{Bak:overload,
     4543    keywords    = {compilation},
     4544    contributer = {gjditchfield@plg},
     4545    author      = {Theodore P. Baker},
     4546    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
     4547    journal     = toplas,
     4548    year        = 1982,
     4549    month       = oct,
     4550    volume      = 4,
     4551    number      = 4,
     4552    pages       = {601-614},
     4553    abstract    = {
     4554        A simple method is presented for detecting ambiguities and finding
     4555        the correct interpretations of expressions in the programming
     4556        language Ada.  Unlike previously reported solutions to this
     4557        problem, which require multiple passes over a tree structure, the
     4558        method described here operates in one bottom-up pass, during which
     4559        a directed acyclic graph is produced.  The correctness of this
     4560        approach is demonstrated by a brief formal argument.
     4561    },
     4562    comment     = {
     4563        See also \cite{D:overload}.
     4564        }
     4565}
     4566
     4567@techreport{OpenMP,
     4568    keywords    = {concurrency, openmp, spmd},
     4569    contributer = {pabuhr@plg},
     4570    author      = {OpenMP Architecture Review Board},
     4571    title       = {OpenMP Application Program Interface, Version 4.0},
     4572    month       = jul,
     4573    year        = 2013,
     4574    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}}},
     4575}
     4576
     4577@book{Deitel04,
     4578    keywords    = {concurrency, operating systems},
     4579    contributer = {pabuhr@plg},
     4580    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
     4581    title       = {Operating Systems},
     4582    publisher   = {Pearson Prentice-Hall},
     4583    year        = 2004,
     4584    edition     = {third},
     4585}
     4586
     4587@book{Stalling98,
     4588    keywords    = {concurrency, operating systems},
     4589    contributer = {pabuhr@plg},
     4590    author      = {William Stallings},
     4591    title       = {Operating Systems: Internals and Design Principles},
     4592    publisher   = {Prentice-Hall},
     4593    year        = 1998,
     4594    edition     = {third},
     4595}
     4596
     4597@book{Stalling01,
     4598    keywords    = {concurrency, operating systems},
     4599    contributer = {pabuhr@plg},
     4600    author      = {William Stallings},
     4601    title       = {Operating Systems: Internals and Design Principles},
     4602    publisher   = {Prentice-Hall},
     4603    year        = 2001,
     4604    edition     = {fourth},
     4605}
     4606
     4607@book{Silberschatz91,
     4608    keywords    = {concurrency, operating systems},
     4609    contributer = {pabuhr@plg},
     4610    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
     4611    title       = {Operating System Concepts},
     4612    publisher   = {Addision-Wesley},
     4613    year        = 1991,
     4614    edition     = {third},
     4615}
     4616
     4617@book{Tanenbaum87,
     4618    keywords    = {concurrency, operating systems},
     4619    contributer = {pabuhr@plg},
     4620    author      = {Andrew S. Tanenbaum},
     4621    title       = {Operating Systems : Design and Implementation},
     4622    publisher   = {Prentice-Hall},
     4623    series      = {Software Series},
     4624    year        = 1987,
     4625}
     4626
     4627@book{Hansen73,
     4628    keywords    = {monitors},
     4629    contributer = {pabuhr@plg},
     4630    author      = {Per {Brinch Hansen}},
     4631    title       = {Operating System Principles},
     4632    publisher   = {Prentice-Hall},
     4633    year        = 1973,
     4634}
     4635
     4636@book{Bic03,
     4637    keywords    = {concurrency, operating systems},
     4638    contributer = {pabuhr@plg},
     4639    author      = {Lubomir F. Bic and Alan C. Shaw},
     4640    title       = {Operating System Principles},
     4641    publisher   = {Prentice-Hall},
     4642    year        = 2003,
     4643}
     4644
     4645@techreport{milner88,
     4646    keywords    = {},
     4647    contributer = {gjditchfield@plg},
     4648    author      = {Robin Milner},
     4649    title       = {Operational and Algebraic Semantics of Concurrent Processes},
     4650    institution = {Laboratory for Foundations of Computer Science},
     4651    year        = 1988,
     4652    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
     4653    month       = feb,
     4654    number      = {ECS-LFCS-88-46}
     4655}
     4656
     4657@article{Ford82,
     4658    keywords    = {},
     4659    contributer = {pabuhr@plg},
     4660    author      = {G. Ford and B. Hansche},
     4661    title       = {Optional, Repeatable, and Varying Type Parameters},
     4662    journal     = sigplan,
     4663    volume      = 17,
     4664    number      = 2,
     4665    month       = feb,
     4666    year        = 1982,
     4667    pages       = {41-48},
     4668}
     4669
     4670@manual{pli,
     4671    keywords    = {PL/I},
     4672    contributer = {gjditchfield@plg},
     4673    key         = {IBM},
     4674    title       = {{OS} and {DOS} {PL/I} Reference Manual},
     4675    organization= {International Business Machines},
     4676    edition     = {first},
     4677    month       = sep,
     4678    year        = 1981,
     4679    note        = {Manual GC26-3977-0},
     4680}
     4681
     4682@techreport{D:overload,
     4683    keywords    = {overload resolution, compilation},
     4684    contributer = {gjditchfield@plg},
     4685    author      = {M. Dausmann et. al.},
     4686    title       = {Overloading in {Ada}},
     4687    institution = {Universitat Karlsruhe},
     4688    year        = 1979,
     4689    number      = {23/79},
     4690    comment     = {
     4691        Probably the earliest description of the two-pass (bottom-up,
     4692        top-down) overload resolution algorithm. See also
     4693        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
     4694    }
     4695}
     4696
     4697@article{EB87,
     4698    keywords    = {packages, private types, assignment, equality},
     4699    contributer = {gjditchfield@plg},
     4700    author      = {J. Dana Eckart and Richard J. LeBlanc},
     4701    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
     4702    journal     = {Computer Languages},
     4703    year        = 1987,
     4704    volume      = 12, number = {3/4}, pages = {163-172},
     4705    abstract    = {
     4706        Packages in the Ada language provide a mechanism for extending the
     4707        language through the development of additional data types.  Such
     4708        types can be better integrated into the language using operator
     4709        overloading; however, key limitations prevent new types from being
     4710        transparently integrated into the language.  Allowing function
     4711        names to overload private type names would give a cleaner and
     4712        clearer mechanism for building values of these types.  Furthermore,
     4713        by allowing redefinitions of ``:='' and by making it easier to
     4714        overload ``='' for private types, Ada coud be transformed into a
     4715        more expressive language.
     4716    }
     4717}
     4718
     4719@article{PW:overload,
     4720    keywords    = {compilation},
     4721    contributer = {gjditchfield@plg},
     4722    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
     4723    title       = {Overloading in Preliminary {Ada}},
     4724    journal     = sigplan,
     4725    year        = 1980,
     4726    month       = nov, volume = 15, number = 11, pages = {47-56},
     4727    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming
     4728         Language},
     4729    comment     = {
     4730        The two-pass (bottom-up, then top-down) algorithm, with a proof
     4731        that two passes suffice.  See also \cite{D:overload}.
     4732    }
     4733}
     4734
     4735@article{SR,
     4736    keywords    = {concurrency, messages, rendezvous},
     4737    contributer = {pabuhr@plg},
     4738    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
     4739                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
     4740    title       = {An Overview of the {SR} Language and Implementation},
     4741    journal     = toplas,
     4742    month       = jan,
     4743    year        = 1988,
     4744    volume      = 10,
     4745    number      = 1,
     4746    pages       = {51-86},
     4747}
     4748
     4749% P
     4750
     4751@article{Andrews91,
     4752    keywords    = {general concurrency},
     4753    contributer = {pabuhr@plg},
     4754    author      = {Gregory R. Andrews},
     4755    title       = {Paradigms for Process Interaction in Distributed Programs},
     4756    journal     = acmcs,
     4757    volume      = 23,
     4758    number      = 1,
     4759    month       = mar,
     4760    year        = 1991,
     4761    pages       = {49-90},
     4762}
     4763
     4764@book{PPC++,
     4765    keywords    = {concurrency, parallel, distributed, C++},
     4766    contributer = {pabuhr@plg},
     4767    editor      = {Gregory V. Wilson and Paul Lu},
     4768    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4769    publisher   = {MIT Press},
     4770    series      = {Scientific and Engineering Computation Series},
     4771    year        = 1996,
     4772    pages       = {1-42},
     4773}
     4774
     4775@incollection{Stroustrup96,
     4776    keywords    = {concurrency, C++},
     4777    contributer = {pabuhr@plg},
     4778    author      = {Bjarne Stroustrup},
     4779    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4780    editor      = {Gregory V. Wilson and Paul Lu},
     4781    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4782    publisher   = {MIT Press},
     4783    series      = {Scientific and Engineering Computation Series},
     4784    year        = 1996,
     4785    pages       = {xxvi-xxvii},
     4786}
     4787
     4788@incollection{Yang96b,
     4789    keywords    = {concurrency, C++},
     4790    contributer = {pabuhr@plg},
     4791    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
     4792    editor      = {Gregory V. Wilson and Paul Lu},
     4793    title       = {p{C}++},
     4794    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4795    publisher   = {MIT Press},
     4796    address     = {Cambridge, MA, USA},
     4797    series      = {Scientific and Engineering Computation Series},
     4798    pages       = {507-546},
     4799    year        = 1996,
     4800}
     4801
     4802@article{goguen84,
     4803    keywords    = {},
     4804    contributer = {gjditchfield@plg},
     4805    author      = {Goseph A. Goguen},
     4806    title       = {Parameterized Programming},
     4807    journal     = ieeese,
     4808    year        = 1984,
     4809    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
     4810    abstract    = {
     4811        Parameterized programming is a powerful technique for the reliable
     4812        reuse of software.  In this technique, modules are parameterized
     4813        over very general interfaces that describe what properties of an
     4814        environment are required for the module to work correctly.
     4815        Reusability is enhanced by the flexibility of the parameterization
     4816        mechanism proposed here.  Reliability is further enhanced by
     4817        permitting interface requirements to include more than purely
     4818        syntactic information.  This paper introduces three new ideas that
     4819        seem especially useful in supporting parameterized programming: 1)
     4820        {\em theories}, which declare global properties of program modules
     4821        and interfaces; 2) {\em views}, which connect theories with program
     4822        modules in an elegant way; and 3) {\em module expressions}, a kind
     4823        of general structured program transformation which produces new
     4824        modules by modifying and combining existing modules.  Although
     4825        these ideas are illustrated with some simple examples in the OBJ
     4826        programming language, they should also be taken as proposals for an
     4827        Ada library system, for adding modules to Prolog, and as
     4828        considerations for future language design efforts.  OBJ is an
     4829        ultra-high level programming language, based upon rewrite rules,
     4830        that incorporates these ideas, and many others from modern
     4831        programming methodology.
     4832    }
     4833}
     4834
     4835@inproceedings{c++:templates,
     4836    author      = {Bjarne Stroustrup},
     4837    contributer = {gjditchfield@plg},
     4838    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4839    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
     4840    organization= {USENIX Association},
     4841    year        = 1988, pages = {1-18}
     4842}
     4843
     4844@inproceedings{Boehm85,
     4845    keywords    = {second-order unification},
     4846    contributer = {gjditchfield@plg},
     4847    author      = {Hans-J. Boehm},
     4848    title       = {Partial Polymorphic Type Inference is Undecidable},
     4849    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
     4850    year        = 1985,
     4851    pages       = {339-345},
     4852    organization= {IEEE Computer Society},
     4853    publisher   = {IEEE Computer Society Press},
     4854    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
     4855    summary     = {
     4856        Given a base typed lambda calculus with function types, type
     4857        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
     4858        then type inference for the partially typed language
     4859        \begin{eqnarray}
     4860        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
     4861        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
     4862        e \tau                  &\Rightarrow& e ?
     4863        \end{eqnarray}
     4864        is undecidable.
     4865    }
     4866}
     4867
     4868@book{Pascal,
     4869    keywords    = {Pascal},
     4870    contributer = {pabuhr@plg},
     4871    author      = {Kathleen Jensen and Niklaus Wirth},
     4872    title       = {{P}ascal User Manual and Report},
     4873    publisher   = {Springer--Verlag},
     4874    year        = 1985,
     4875    edition     = {third},
     4876    note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
     4877}
     4878
     4879@book{Pascal:old,
     4880    keywords    = {Pascal},
     4881    contributer = {pabuhr@plg},
     4882    author      = {Kathleen Jensen and Niklaus Wirth},
     4883    title       = {{P}ascal User Manual and Report},
     4884    publisher   = {Springer--Verlag},
     4885    year        = 1975,
     4886    edition     = {first},
     4887}
     4888
     4889@article{Turba85,
     4890    keywords    = {Pascal, exception handling, inheritance},
     4891    contributer = {pabuhr@plg},
     4892    author      = {Thomas N. Turba},
     4893    title       = {The {P}ascal Exception Handling Proposal},
     4894    journal     = sigplan,
     4895    volume      = 20,
     4896    number      = 8,
     4897    month       = aug,
     4898    year        = 1985,
     4899    pages       = {93-98},
     4900}
     4901
     4902@manual{Pascal/VS,
     4903    keywords    = {PL/I},
     4904    contributer = {pabuhr@plg},
     4905    key         = {IBM},
     4906    title       = {{P}ascal/{VS} Language Reference Manual},
     4907    organization= {International Business Machines},
     4908    edition     = {first},
     4909    year        = 1981,
     4910    note        = {Manual SH20-6168-1},
     4911}
     4912
     4913@article{Anderson90,
     4914    keywords    = {spin locks, back off, performance},
     4915    contributer = {pabuhr@plg},
     4916    author      = {Thomas E. Anderson},
     4917    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
     4918    journal     = ieeepds,
     4919    month       = jan,
     4920    year        = 1990,
     4921    volume      = 1,
     4922    number      = 1,
     4923    pages       = {6-16},
     4924}
     4925
     4926@article{poly,
     4927    keywords    = {Poly, Standard ML, Russell, persistence},
     4928    contributer = {gjditchfield@plg},
     4929    author      = {David C. J. Matthews},
     4930    title       = {Poly Manual},
     4931    journal     = sigplan,
     4932    month       = sep, year = 1985,
     4933    volume      = 20, number = 9, pages = {52-76}
     4934}
     4935
     4936@techreport{Atkinson87b,
     4937    keywords    = {naming, persistence},
     4938    contributer = {pabuhr@plg},
     4939    author      = {M. P. Atkinson and R. Morrison},
     4940    title       = {Polymorphic Names and Iterations},
     4941    institution = {Universities of Glasgow and St. Andrews, Scotland},
     4942    number      = {PPRR-53-87},
     4943    month       = nov,
     4944    year        = 1987,
     4945}
     4946
     4947@book{Harland,
     4948    keywords    = {},
     4949    author      = {David M. Harland},
     4950    title       = {Polymorphic Programming Languages: Design and Implementation},
     4951    publisher   = {Ellis Horwood},
     4952    year        = 1984,
     4953    series      = {Computers and their Applications},
     4954    address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
     4955        PO19 1EB, England},
     4956    summary     = {
     4957        The principles of Procedural Abstraction, Data Type Completeness,
     4958        Declaration Correspondence, and Orthogonality are ruthlessly applied
     4959        to the design of a polymorphic language.
     4960    }
     4961}
     4962
     4963@unpublished{poa,
     4964    keywords    = {Force N, type inference, reusability, transcendance},
     4965    contributer = {gjditchfield@plg},
     4966    author      = {G. V. Cormack and A. K. Wright},
     4967    title       = {Polymorphism, Overloading, and Abstraction},
     4968    note        = {personal communication}
     4969}
     4970
     4971@inproceedings{forceone:impl,
     4972    keywords    = {Parametric polymorphism, ForceOne},
     4973    contributer = {gjditchfield@plg},
     4974    author      = {G. V. Cormack and A. K. Wright},
     4975    title       = {Polymorphism in the Compiled Language {ForceOne}},
     4976    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
     4977    month       = jan,
     4978    year        = 1987,
     4979    pages       = {284-292},
     4980}
     4981
     4982@incollection{POOL-T,
     4983    keywords    = {objects, concurrency},
     4984    contributer = {pabuhr@plg},
     4985    author      = {Pierre America},
     4986    title       = {POOL-T: A Parallel Object-Oriented Language},
     4987    booktitle   = {Object-Oriented Concurrent Programming},
     4988    publisher   = {The MIT Press},
     4989    year        = 1987,
     4990    pages       = {199-220},
     4991    editor      = {Akinori Yonezawa and Mario Tokoro}
     4992}
     4993
     4994@article{Hardgrave76,
     4995    keywords    = {positional, keyword, parameters, arguments},
     4996    contributer = {pabuhr@plg},
     4997    author      = {W. T. Hardgrave},
     4998    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
     4999    journal     = sigplan,
     5000    volume      = 11,
     5001    number      = 5,
     5002    month       = may,
     5003    year        = 1976,
     5004    pages       = {52-58},
     5005}
     5006
     5007@book{PowerPC,
     5008    key         = {PowerPC processor},
     5009    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
     5010    publisher   = {Freescale Semiconductor},
     5011    volume      = {MPCFPE32B},
     5012    edition     = {Rev. 3},
     5013    month       = 9,
     5014    year        = 2005,
     5015}
     5016
     5017@article{Ada:preliminary,
     5018    keywords    = {Ada},
     5019    contributer = {pabuhr@plg},
     5020    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
     5021                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
     5022                   and John G. P. Barnes and Olivier Roubine},
     5023    title       = {Preliminary {Ada} Reference Manual},
     5024    journal     = sigplan,
     5025    volume      = 14,
     5026    number      = 6,
     5027    month       = jun,
     5028    year        = 1979,
     5029    note        = {Part A},
     5030}
     5031
     5032@techreport{Forsythe,
     5033    author      = {John C. Reynolds},
     5034    title       = {Preliminary Design of the Programming Language {Forsythe}},
     5035    institution = {Carnegie Mellon University},
     5036    number      = {CMU-CS-88-159},
     5037    month       = jun,
     5038    year        = 1988,
     5039}
     5040
     5041@article{PRESTO,
     5042    keywords    = {concurrency, threads},
     5043    contributer = {dgharriss@plg},
     5044    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
     5045    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
     5046    journal     = spe,
     5047    volume      = 18,
     5048    number      = 8,
     5049    month       = aug,
     5050    year        = 1988,
     5051    pages       = {713-732}
     5052}
     5053
     5054@book{Ben-Ari82,
     5055    keywords    = {concurrency, parallel, programming languages},
     5056    contributer = {pabuhr@plg},
     5057    author      = {Mordechai Ben-Ari},
     5058    title       = {Principles of Concurrent Programming},
     5059    publisher   = {Prentice-Hall International},
     5060    year        = 1982,
     5061}
     5062
     5063@book{Tennent81,
     5064    author      = {R. D. Tennent},
     5065    title       = {Principles of Programming Languages},
     5066    publisher   = {Prentice-Hall International},
     5067    year        = 1981,
     5068    series      = {Series in Computer Science}
     5069}
     5070
     5071@article{Lister77,
     5072    keywords    = {monitors, nested monitor calls},
     5073    contributer = {pabuhr@plg},
     5074    author      = {Andrew Lister},
     5075    title       = {The Problem of Nested Monitor Calls},
     5076    journal     = osr,
     5077    volume      = 11,
     5078    number      = 3,
     5079    month       = jul,
     5080    year        = 1977,
     5081    pages       = {5-7},
     5082}
     5083
     5084@article{psa:persistence,
     5085    keywords    = {persistence, first-class procedures, closure, PS-Algol,
     5086        Abstract Data Types},
     5087    contributer = {gjditchfield@plg},
     5088    author      = {Malcolm P. Atkinson and Ronald Morrison},
     5089    title       = {Procedures as Persistent Data Objects},
     5090    journal     = toplas,
     5091    volume      = {7},    number = {4},
     5092    pages       = {539-559},
     5093    month       = oct, year = 1985,
     5094    comment     = {
     5095        PS-Algol has ``structures'', accessible only through ``pntrs''.
     5096        Pntrs can refer to any type of structure.  Field references involve
     5097        a run-time check.  This, plus first-class procedures, can simulate
     5098        abstract data types.  Procedure variables operating on pntrs
     5099        simulate ADT operations.  A block defines a structure to implement
     5100        the ADT, and assigns procedures to the variables.  Functions
     5101        returning structures containing procedures  simulate multiple
     5102        implementations and parameterized ADTs.
     5103
     5104        An outer procedure that returns a procedure that contains
     5105        (non-local) references to the outer procedure's parameters
     5106        implements partial evaluation.
     5107
     5108        Modules can be simulated like ADT's.  The module itself is a
     5109        structure instance that is placed in persistent storage, and the
     5110        module is imported by fetching it from the persistent store.
     5111        Multiple instances of modules are easy.  Installation of new
     5112        versions can be done by replacing the version in the database.
     5113    }
     5114}
     5115
     5116@article{Procol89,
     5117    keywords    = {active objects, object-oriented languages,
     5118        object-based languages, explicit per-object protocol},
     5119    contributer = {akgoel@plg},
     5120    author      = {Jan van den Bos and Chris Laffra},
     5121    title       = {PROCOL: A Parallel Object Language with Protocols},
     5122    journal     = sigplan,
     5123    volume      = 24,
     5124    number      = 10,
     5125    month       = oct,
     5126    year        = 1989,
     5127    pages       = {95-102},
     5128    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
     5129    abstract    = {},
     5130}
     5131
     5132@book{Butenhof97,
     5133    keywords    = {PThreads, concurrency},
     5134    contributer = {pabuhr@plg},
     5135    author      = {David R. Butenhof},
     5136    title       = {Programming with {POSIX} Threads},
     5137    publisher   = {Addison-Wesley},
     5138    series      = {Professional Computing},
     5139    year        = 1997,
     5140}
     5141
     5142@book{SETL,
     5143    keywords    = {SETL},
     5144    contributer = {pabuhr@plg},
     5145    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
     5146    title       = {Programming with Sets: An Introduction to {SETL}},
     5147    publisher   = {Springer-Verlag},
     5148    year        = 1986,
     5149}
     5150
     5151@book{Genuys68,
     5152    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
     5153    contributer = {pabuhr@plg},
     5154    editor      = {F. Genuys},
     5155    title       = {Programming Languages},
     5156    publisher   = {Academic Press},
     5157    address     = {London, New York},
     5158    year        = 1968,
     5159    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
     5160}
     5161
     5162@manual{ANSI99:C,
     5163    keywords    = {ANSI C 99},
     5164    contributer = {pabuhr@plg},
     5165    title       = {Programming Languages -- {C}},
     5166    organization= {International Standard ISO/IEC 9899:1999 (E)},
     5167    publisher   = {American National Standards Institute},
     5168    address     = {www.ansi.org},
     5169    year        = 1999,
     5170}
     5171
     5172@manual{ANSI98:C++,
     5173    keywords    = {ANSI C++ 98},
     5174    contributer = {pabuhr@plg},
     5175    key         = {C++98},
     5176    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     5177    organization= {International Standard ISO/IEC 14882:1998 (E)},
     5178    publisher   = {American National Standards Institute},
     5179    address     = {www.ansi.org},
     5180    year        = 1998,
     5181}
     5182
     5183@manual{ANSI14:C++,
     5184    keywords    = {ISO/IEC C++ 14},
     5185    contributer = {pabuhr@plg},
     5186    key         = {C++14},
     5187    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     5188    edition     = {fourth},
     5189    organization= {International Standard ISO/IEC 14882:2014 (E)},
     5190    publisher   = {International Standard Organization},
     5191    address     = {http://www.iso.org},
     5192    year        = 2014,
     5193}
     5194
     5195@manual{MS:VisualC++,
     5196    keywords    = {Microsoft Visual C++},
     5197    contributer = {pabuhr@plg},
     5198    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
     5199    organization= {Microsoft Corporation},
     5200    year        = 2002,
     5201    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
     5202}
     5203
     5204@article{HasselBring00,
     5205    keywords    = {concurrency, prototyping},
     5206    contributer = {pabuhr@plg},
     5207    author      = {Wilhelm Hasselbring},
     5208    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
     5209    journal     = acmcs,
     5210    volume      = 32,
     5211    number      = 1,
     5212    month       = mar,
     5213    year        = 2000,
     5214    pages       = {43-79},
     5215}
     5216
     5217@article{LLgen,
     5218    keywords    = {ll(1), parser generator, separate compilation},
     5219    contributer = {gjditchfield@plg},
     5220    author      = {Dick Grune and Ceriel J. J. Jacobs},
     5221    title       = {A Programmer-friendly LL(1) Parser Generator},
     5222    journal     = spe,
     5223    month       = jan, year = 1988,
     5224    volume      = 18, number = 1, pages = {29-33},
     5225    comment     = {
     5226        LLgen generates C-language recursive-descent parsers.  The input
     5227        contains procedure-like rules with alternation and repetition
     5228        constructs on the right, and (typed) parameters on the left.
     5229        C actions are specified between items in the right side.
     5230        Alternation and repetition (reduce and shift) conflicts can be
     5231        resolved statically or at run time.
     5232
     5233        A grammar can be specified in several files.  All files must be
     5234        submitted to LLgen at once, but if the C file generated is no
     5235        different from the old version, then the old version is not
     5236        replaced and hence need not be recompiled, which saves lots of
     5237        time.
     5238
     5239        When an incorrect token is found, the automatic error recovery
     5240        algorithm discards tokens until an ``acceptable'' token is found;
     5241        if the acceptable token is not correct, a correct one is inserted.
     5242    }
     5243}
     5244
     5245@techreport{russell,
     5246    keywords    = {Russell},
     5247    contributer = {gjditchfield@plg},
     5248    author      = {H. Boehm and A. Demers and J. Donahue},
     5249    title       = {A Programmer's Introduction to Russell},
     5250    institution = {Rice University},
     5251    year        = 1985,
     5252    number      = {85-16}
     5253}
     5254
     5255@techreport{PDM89,
     5256    keywords    = {existential types, universal types},
     5257    contributer = {gjditchfield@plg},
     5258    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
     5259    title       = {Programming in Higher-Order Typed Lambda Calculi},
     5260    institution = {School of Computer Science, Carnegie Mellon University},
     5261    year        = 1989,
     5262    address     = {Pittsburg, PA 15213-3890},
     5263    month       = mar, number = {CMU-CS-89-111},
     5264    abstract    = {
     5265        This tutorial presents a hierarchy of increasingly powerful
     5266        languages, beginning with Church's simply typed
     5267        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
     5268        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
     5269        fragment of Girard's \(\omega\)-order polymorphic
     5270        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
     5271        the unusual style of programming that arises in these languages,
     5272        where all functions are total and the primary control construct is
     5273        iteration rather than general recursion.
     5274    }
     5275}
     5276
     5277@book{Modula-2,
     5278    keywords    = {modules, coroutines},
     5279    contributer = {pabuhr},
     5280    author      = {Niklaus Wirth},
     5281    title       = {Programming in Modula-2},
     5282    publisher   = {Springer-Verlag},
     5283    year        = 1988,
     5284    edition     = {fourth},
     5285    series      = {Texts and Monographs in Computer Science},
     5286}
     5287
     5288@manual{Ada,
     5289    keywords    = {Ada, packages, tasks, exceptions},
     5290    contributer = {pabuhr@plg},
     5291    title       = {The Programming Language {Ada}: Reference Manual},
     5292    organization= {United States Department of Defense},
     5293    edition     = {{ANSI/MIL-STD-1815A-1983}},
     5294    month       = feb,
     5295    year        = 1983,
     5296    note        = {Published by Springer-Verlag}
     5297}
     5298
     5299@manual{ada:old,
     5300    keywords    = {Ada, packages, tasks, exceptions},
     5301    contributer = {gjditchfield@plg},
     5302    title       = {The Programming Language {Ada}: Reference Manual},
     5303    organization= {United States Department of Defense},
     5304    publisher   = {Springer-Verlag},
     5305    year        = 1981
     5306}
     5307
     5308@book{Ghezzi,
     5309    keywords    = {},
     5310    author      = {Carlo Ghezzi and Mehdi Jazayeri},
     5311    title       = {Programming Language Concepts},
     5312    publisher   = {Wiley},
     5313    year        = 1982
     5314}
     5315
     5316@article{ConcurrentPascal,
     5317    keywords    = {Concurrent Pascal},
     5318    contributer = {pabuhr@plg},
     5319    author      = {Per {Brinch Hansen}},
     5320    title       = {The Programming Language Concurrent Pascal},
     5321    journal     = ieeese,
     5322    volume      = 2,
     5323    month       = jun,
     5324    year        = 1975,
     5325    pages       = {199-206}
     5326}
     5327
     5328@phdthesis{Buhr85:thesis,
     5329    keywords    = {},
     5330    contributer = {pabuhr@plg},
     5331    author      = {P. A. Buhr},
     5332    title       = {A Programming System},
     5333    school      = {University of Manitoba},
     5334    year        = {1985}
     5335}
     5336
     5337@techreport{pierce91,
     5338    keywords    = {typed lambda calculus},
     5339    contributer = {gjditchfield@plg},
     5340    author      = {Benjamin C. Pierce},
     5341    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
     5342    institution = {Carnegie Mellon University},
     5343    year        = 1991,
     5344    month       = feb, number = "CMU-CS-91-106",
     5345    annote      = {
     5346        Discusses a typed lambda calculus with
     5347        \begin{itemize}
     5348        \item
     5349        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
     5350        \tau_i\) for all \(i\).
     5351        \item
     5352        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
     5353        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
     5354        operations valid for both element types can be applied to the
     5355        union; there are no projections.  Union types are to variant
     5356        records as set union is to disjoint set union.
     5357        \item
     5358        Function types and universal quantification, with subtyping rules.
     5359        When functions and arguments intersections, the result of
     5360        application is the intersection of all valid combinations.
     5361        \item
     5362        Distribution rules for combinations of types.
     5363        \item
     5364        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
     5365        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
     5366        every element type of the union.
     5367        \item
     5368        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
     5369        typechecks \(e\) with \(t\) bound to each choice, and intersects
     5370        the results.
     5371        \end{itemize}
     5372
     5373        Examples include: type of "natural" numbers, treated as a union of
     5374        "zero" and "positive" types; default parameters, faked by using an
     5375        argument that is an intersection of a data type and a function
     5376        taking an explicit argument.
     5377
     5378        Unions can be mostly faked, according to Mitchell:
     5379        \[\tau_1\vee\tau_2 \equiv
     5380             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
     5381    }
     5382}
     5383
     5384@article{promises,
     5385    keywords    = {futures, Argus, call streams, rpc},
     5386    contributer = {gjditchfield@plg},
     5387    author      = {Barbara Liskov and Liuba Shrira},
     5388    title       = {Promises: Linguistic Support for Efficient Asynchronous
     5389          Procedure Calls in Distributed Systems},
     5390    journal     = sigplan,
     5391    year        = 1988,
     5392    month       = jul, volume = 23, number = 7, pages = {260-267},
     5393    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
     5394         Design and Implementation},
     5395    abstract    = {
     5396        This paper deals with the integration of an efficient asynchronous
     5397        remote procedure call mechanism into a programming language.  It
     5398        describes a new data type called a {\em promise} that was designed
     5399        to support asynchronous calls.  Promises allow a caller to run in
     5400        parallel with a call and to pick up the results of the call,
     5401        including any exceptions it raises, in a convenient and type-safe
     5402        manner.  The paper also discusses efficient composition of
     5403        sequences of asynchronous calls to different locations in a
     5404        network.
     5405    }
     5406}
     5407
     5408@article{Cook89,
     5409    keywords    = {},
     5410    contributer = {gjditchfield@plg},
     5411    author      = {W. R. Cook},
     5412    title       = {A Proposal for Making {Eiffel} Type-safe},
     5413    journal     = {The Computer Journal},
     5414    year        = 1989,
     5415    volume      = 32, number = 4, pages = {305-311},
     5416    abstract    = {
     5417       
     5418    }
     5419}
     5420
     5421@inproceedings{Foxall79,
     5422    keywords    = {},
     5423    contributer = {pabuhr@plg},
     5424    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
     5425    title       = {{PROTEL}: A High Level Language for Telephony},
     5426    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
     5427    month       = nov,
     5428    year        = 1979,
     5429    pages       = {193-197},
     5430}
     5431
     5432@techreport{PS-Algol,
     5433    keywords    = {algol, persistence},
     5434    contributer = {pabuhr@plg},
     5435    key         = {PS-Algol},
     5436    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
     5437    author      = {},
     5438    institution = {University of Glasgow and St. Andrews, Scotland},
     5439    number      = {PPRR 12},
     5440    month       = jun,
     5441    year        = 1987,
     5442}
     5443
     5444@manual{Python,
     5445    keywords    = {Python},
     5446    contributer = {pabuhr},
     5447    title       = {Python Reference Manual, Release 2.5},
     5448    author      = {Guido van Rossum},
     5449    organization= {Python Software Foundation},
     5450    month       = sep,
     5451    year        = 2006,
     5452    note        = {Fred L. Drake, Jr., editor},
     5453}
     5454
     5455% Q
     5456
     5457@article{Hoare61,
     5458    keywords    = {quick sort},
     5459    contributer = {pabuhr@plg},
     5460    author      = {C. A. R. Hoare},
     5461    title       = {Algorithms 63/64: Partition/Quicksort},
     5462    journal     = cacm,
     5463    volume      = 4,
     5464    number      = 7,
     5465    month       = jul,
     5466    year        = 1961,
     5467    pages       = {321},
     5468}
     5469
     5470% R
     5471
     5472@article{Ada:rationale:preliminary,
     5473    keywords    = {Ada},
     5474    contributer = {pabuhr@plg},
     5475    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
     5476                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
     5477    title       = {Rationale for the Design of the {ADA} Programming Language},
     5478    journal     = sigplan,
     5479    volume      = 14,
     5480    number      = 6,
     5481    month       = jun,
     5482    year        = 1979,
     5483    note        = {Part B},
     5484}
     5485
     5486@book{Ada:rationale,
     5487    keywords    = {Ada},
     5488    contributer = {pabuhr@plg},
     5489    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
     5490    title       = {Rationale for the Design of the {ADA} Programming Language},
     5491    publisher   = {Under Secretary of Defense, Research and Engineering},
     5492    year        = 1986,
     5493    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
     5494}
     5495
     5496@manual{Ada95,
     5497    keywords    = {Ada},
     5498    contributer = {pabuhr@plg},
     5499    title       = {{A}da Reference Manual},
     5500    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
     5501    organization = {Intermetrics, Inc.},
     5502    month       = dec,
     5503    year        = 1995,
     5504    note        = {Language and Standards Libraries}
     5505}
     5506
     5507@manual{Ada12,
     5508    keywords    = {Ada},
     5509    contributer = {pabuhr@plg},
     5510    title       = {Programming languages -- {Ada}},
     5511    edition     = {third},
     5512    organization= {International Standard ISO/IEC 1989:2014},
     5513    publisher   = {International Standard Organization},
     5514    address     = {http://www.iso.org},
     5515    year        = 2012,
     5516}
     5517
     5518@manual{Ada95:annotated,
     5519    keywords    = {Ada},
     5520    contributer = {pabuhr@plg},
     5521    title       = {Annotated {A}da Reference Manual},
     5522    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
     5523    organization = {Intermetrics, Inc.},
     5524    month       = dec,
     5525    year        = 1995,
     5526    note        = {Language and Standards Libraries}
     5527}
     5528
     5529@book{JavaRT00,
     5530    keywords    = {real time, draft},
     5531    contributer = {pabuhr@plg},
     5532    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
     5533    title       = {The Real-Time Specification for {J}ava},
     5534    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
     5535    publisher   = {Addison-Wesley},
     5536    year        = 2000,
     5537}
     5538
     5539@manual{JavaRT99,
     5540    organization= {Real Time for Java Experts Group},
     5541    address     = {{\small\textsf{http://\-www.rtj.org}}},
     5542    month       = sep,
     5543    year        = 1999,
     5544}
     5545
     5546@article{Robinson48,
     5547    keywords    = {recursion, Ackermann function},
     5548    contributer = {pabuhr@plg},
     5549    author      = {Raphael Mitchel Robinson},
     5550    title       = {Recursion and Double Recursion},
     5551    publisher   = {American Mathematical Society},
     5552    journal     = {Bulletin of the American Mathematical Society},
     5553    volume      = 54,
     5554    pages       = {987-993},
     5555    year        = 1948,
     5556}
     5557
     5558@article{Dijkstra:red,
     5559    keywords    = {ada},
     5560    contributer = {gjditchfield@plg},
     5561    author      = {Edsger W. Dijkstra},
     5562    title       = {On the RED Language submitted to the DoD},
     5563    journal     = sigplan,
     5564    year        = 1978,
     5565    month       = oct,
     5566    volume      = 13,
     5567    number      = 10,
     5568    pages       = {27-32},
     5569}
     5570
     5571@article{RemoteRendezvous,
     5572    keywords    = {rendezvous, concurrency},
     5573    contributer = {pabuhr@plg},
     5574    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
     5575    title       = {Remote Rendezvous},
     5576    journal     = spe,
     5577    month       = oct,
     5578    year        = 1987,
     5579    volume      = 17,
     5580    number      = 10,
     5581    pages       = {741-755}
     5582}
     5583
     5584@article{Euclid,
     5585    keywords    = {Euclid},
     5586    contributer = {pabuhr@plg},
     5587    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
     5588    title       = {Report on the Programming Language Euclid},
     5589    journal     = sigplan,
     5590    volume      = 12,
     5591    number      = 2,
     5592    month       = feb,
     5593    year        = 1977,
     5594    pages       = {1-79}
     5595}
     5596
     5597@techreport{LOGLAN88,
     5598    keywords    = {LOGLAN},
     5599    contributer = {pabuhr@plg},
     5600    author      = {Boleslaw Ciesielski and Antoni Kreczmar and Marek Lao and Andrzej Litwiniuk and Teresa Przytycka and Andrzej Salwicki and Jolanta Warpechowska and Marek Warpechowski and Andrzej Szalas and Danuta Szczepanska--Wasersztrum},
     5601    title       = {Report on the Programming Language LOGLAN'88},
     5602    institution = {Institute of Informatics, University of Warsaw},
     5603    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
     5604    number      = {},
     5605    month       = dec,
     5606    year        = 1988,
     5607}
     5608
     5609@article{FH91,
     5610    keywords    = {lcc},
     5611    contributer = {gjditchfield@plg},
     5612    author      = {Christopher W. Fraser and David R. Hanson},
     5613    title       = {A Retargetable Compiler for {ANSI} {C}},
     5614    journal     = sigplan,
     5615    year        = 1991,
     5616    month       = oct, volume = 26, number = 10, pages = {29-43},
     5617    abstract    = {
     5618        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
     5619        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
     5620        Princeton University and at AT\&T Bell Laboratories.  With a few
     5621        exceptions, little about {\tt lcc} is unusual---it integrates
     5622        several well engineered, existing techniques---but it is smaller
     5623        and faster than most other C compilers, and it generates code of
     5624        comparable quality.  {\tt lcc}'s target-independent front end
     5625        performs a few simple, but effective, optimizations that contribute
     5626        to good code; examples include simulating register declarations and
     5627        partitioning switch statements into dense tables.  It also
     5628        implements target-independent function tracing and expression-level
     5629        profiling.
     5630    }
     5631}
     5632
     5633@article{Algol68revised,
     5634    keywords    = {},
     5635    contributer = {gjditchfield@plg},
     5636    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
     5637        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
     5638        Meertens and R. G. Fisher},
     5639    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
     5640    journal     = sigplan,
     5641    year        = 1977,
     5642    month       = may,
     5643    volume      = 12,
     5644    number      = 5,
     5645    pages       = {1-70}
     5646}
     5647
     5648@article{scheme,
     5649    keywords    = {},
     5650    contributer = {gjditchfield@plg},
     5651    author      = {Jonathan Rees and William Clinger},
     5652    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
     5653    journal     = sigplan,
     5654    year        = 1986,
     5655    month       = dec,
     5656    volume      = 21,
     5657    number      = 12,
     5658    pages       = {37-79},
     5659}
     5660
     5661@article{scheme5,
     5662    keywords    = {scheme},
     5663    contributer = {pabuhr@plg},
     5664    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
     5665                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
     5666                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
     5667    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
     5668    journal     = sigplan,
     5669    year        = 1998,
     5670    month       = sep,
     5671    volume      = 33,
     5672    number      = 9,
     5673    pages       = {26-76},
     5674}
     5675
     5676@manual{Rust,
     5677    keywords    = {Rust programming language},
     5678    contributer = {pabuhr@plg},
     5679    title       = {The {Rust} Programming Language},
     5680    organization= {The Rust Project Developers},
     5681    year        = 2015,
     5682    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang.org/\-reference.html}},
     5683}
     5684
     5685% S
     5686
     5687@inproceedings{Michael04,
     5688    keywords    = {lock free, dynamic memory allocation},
     5689    contributer = {pabuhr@plg},
     5690    author      = {Maged M. Michael},
     5691    title       = {Scalable Lock-free Dynamic Memory Allocation},
     5692    booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
     5693    location    = {Washington DC, USA},
     5694    publisher   = {ACM},
     5695    address     = {New York, NY, USA},
     5696    volume      = 39,
     5697    year        = 2004,
     5698    month       = jun,
     5699    pages       = {35-46},
     5700}
     5701
     5702@article{Anderson92,
     5703    keywords    = {light-weight tasks},
     5704    contributer = {pabuhr@plg},
     5705    author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
     5706    title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
     5707    journal     = tocs,
     5708    volume      = 10,
     5709    number      = 1,
     5710    month       = feb,
     5711    year        = 1992,
     5712    pages       = {53-79},
     5713}
     5714
     5715@manual{SELF,
     5716    keywords    = {programming language, obect-oriented, polymorphism},
     5717    contributer = {pabuhr@plg},
     5718    author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
     5719                   and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
     5720    title       = {The {SELF} 3.0 Programmer's Reference Manual},
     5721    organization= {Sun Microsystems, Inc., and Stanford University},
     5722    year        = 1993,
     5723}
     5724
     5725@inproceedings{Cardelli84,
     5726    keywords    = {subtypes, recursive types, records, variants, object oriented},
     5727    contributer = {gjditchfield@plg},
     5728    author      = {Luca Cardelli},
     5729    title       = {A Semantics of Multiple Inheritance},
     5730    booktitle   = {Semantics of Data Types},
     5731    year        = 1984,
     5732    pages       = {51-67},
     5733    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
     5734    publisher   = {Springer-Verlag},
     5735    note        = {Lecture Notes in Computer Science v. 173},
     5736}
     5737
     5738@techreport{Adve95,
     5739    keywords    = {shared memory, consistency models},
     5740    contributer = {pabuhr@plg},
     5741    author      = {Sarita V. Adve and Kourosh Gharachorloo},
     5742    title       = {Shared Memory Consistency Models: A Tutorial},
     5743    institution = {Western Research Laboratory},
     5744    address     = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
     5745    number      = {7},
     5746    month       = sep,
     5747    year        = 1995,
     5748    note        = {\href{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf}{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-WRL-95-7.pdf}}, Reprinted in \cite{Adve95reprint}.},
     5749}
     5750
     5751@article{Adve95reprint,
     5752    keywords    = {shared memory, consistency models},
     5753    contributer = {pabuhr@plg},
     5754    author      = {Sarita V. Adve and Kourosh Gharachorloo},
     5755    journal     = {Computer},
     5756    title       = {Shared Memory Consistency Models: A Tutorial},
     5757    month       = dec,
     5758    year        = 1996,
     5759    volume      = 29,
     5760    number      = 12,
     5761    pages       = {66-76},
     5762}
     5763
     5764@inproceedings{Howard76b,
     5765    keywords    = {monitors},
     5766    contributer = {pabuhr@plg},
     5767    author      = {J. H. Howard},
     5768    title       = {Signaling in Monitors},
     5769    booktitle   = {Proceedings Second International Conference Software Engineering},
     5770    address     = {San Francisco, U.S.A},
     5771    publisher   = {IEEE Computer Society},
     5772    month       = oct,
     5773    year        = 1976,
     5774    pages       = {47-52}
     5775}
     5776
     5777@techreport{Schemenauer01,
     5778    keywords    = {Phthon, generator, coroutine},
     5779    contributer = {pabuhr@plg},
     5780    author      = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
     5781    title       = {Simple Generators},
     5782    month       = may,
     5783    year        = 2001,
     5784    note        = {{\small\textsf{http://www.python.org/peps/pep-0255.html}}},
     5785}
     5786
     5787@inproceedings{Michael96,
     5788    keywords    = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
     5789    contributer = {pabuhr@plg},
     5790    author      = {Maged M. Michael and Michael L. Scott},
     5791    title       = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
     5792    booktitle   = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
     5793    series      = {PODC'96},
     5794    year        = 1996,
     5795    location    = {Philadelphia, Pennsylvania, USA},
     5796    pages       = {267--275},
     5797    numpages    = {9},
     5798    publisher   = {ACM},
     5799    address     = {New York, NY, USA},
     5800}
     5801
     5802@inproceedings{Dice10,
     5803    keywords    = {hardware, synchronization, transactional memory},
     5804    author      = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
     5805    title       = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
     5806    booktitle   = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
     5807    series      = {SPAA'10},
     5808    year        = 2010,
     5809    location    = {Thira, Santorini, Greece},
     5810    pages       = {325-334},
     5811    numpages    = {10},
     5812    publisher   = {ACM},
     5813    address     = {New York, NY, USA},
     5814}
     5815
     5816@article{PDM:overload,
     5817    keywords    = {compilation},
     5818    contributer = {gjditchfield@plg},
     5819    author      = {Tom Pennello and Frank DeRemer and Richard Meyers},
     5820    title       = {A Simplified Operator Identification Scheme for {Ada}},
     5821    journal     = sigplan,
     5822    year        = 1980,
     5823    month       = {July--August},
     5824    volume      = 15,
     5825    number      = {7/8},
     5826    pages       = {82-87},
     5827    comment     = {
     5828        The two-pass (bottom-up, top-down) overload resolution algorithm
     5829        for Ada, with a proof that two passes suffice and a claim that two
     5830        are necessary.  See \cite{D:overload}.
     5831    }
     5832}
     5833
     5834@book{SimulaBegin,
     5835    author      = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
     5836    title       = {{SIMULA} begin},
     5837    publisher   = {Studentlitteratur},
     5838    year        = {1980},
     5839    address     = {Lund, Sweden},
     5840    edition     = {second},
     5841}
     5842
     5843@book{Simula67,
     5844    author      = "O-J Dahl and B. Myhrhaug and K. Nygaard",
     5845    address     = "Oslo Norway",
     5846    month       = oct,
     5847    year        = 1970,
     5848    publisher   = "Norwegian Computing Center",
     5849    title       = "Simula67 Common Base Language"
     5850}
     5851
     5852@book{smalltalk,
     5853    keywords    = {Smalltalk, abstract class, protocol},
     5854    contributer = {gjditchfield@plg},
     5855    author      = {A. Goldberg and D. Robson},
     5856    title       = {Smalltalk-80: The Language and its Implementation},
     5857    publisher   = {Addison-Wesley},
     5858    year        = 1983
     5859}
     5860
     5861@inproceedings{Edelson92,
     5862    keywords    = {persistence, pointers},
     5863    contributer = {pabuhr@plg},
     5864    author      = {Daniel R. Edelson},
     5865    title       = {Smart Pointers: They're Smart, but They're Not Pointers},
     5866    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
     5867    organization= {USENIX Association},
     5868    address     = {Portland, Oregon, U.S.A.},
     5869    month       = aug,
     5870    year        = 1992,
     5871    pages       = {1-19},
     5872}
     5873
     5874@book{SNOBOL,
     5875    keywords    = {SNOBOL4},
     5876    contributer = {pabuhr@plg},
     5877    author      = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
     5878    title       = {The SNOBOL4 Programming Language},
     5879    edition     = {second},
     5880    publisher   = {Prentice-Hall},
     5881    year        = 1971,
     5882}
     5883
     5884@article{Sutter05b,
     5885    keywords    = {concurrency},
     5886    contributer = {pabuhr@plg},
     5887    author      = {Herb Sutter and James Larus},
     5888    title       = {Software and the Concurrency Revolution},
     5889    journal     = Queue,
     5890    year        = 2005,
     5891    month       = sep,
     5892    volume      = 3,
     5893    number      = 7,
     5894    pages       = {54-62},
     5895}
     5896
     5897@inproceedings{raytheon,
     5898    keywords    = {cobol},
     5899    contributer = {gjditchfield@plg},
     5900    author      = {Robert G. Lanergan and Charles A. Grasso},
     5901    title       = {Software Engineering with Reusable Designs and Code},
     5902    booktitle   = {Workshop on Reusability in Programming},
     5903    year        = 1983,
     5904    month       = sep,
     5905    pages       = {224-234},
     5906    organization= {{ITT} Programming},
     5907    summary     = {
     5908        60\% of business application design and code are redundant.
     5909        Three standard program plans are used.  Reuse doubles productivity
     5910        during development and greatly helps program comprehension during
     5911        maintenance.
     5912    }
     5913}
     5914
     5915@article{Hecht86,
     5916    keywords    = {exception handling, robustness},
     5917    contributer = {pabuhr@plg},
     5918    author      = {H. Hecht and M. Hecht},
     5919    title       = {Software Reliability in the Systems Context},
     5920    journal     = ieeese,
     5921    year        = 1986,
     5922    volume      = 12,
     5923    number      = 1,
     5924    pages       = {51-58},
     5925}
     5926
     5927@inproceedings{Herlihy03,
     5928    author      = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
     5929    title       = {Software Transactional Memory for Dynamic-sized Data Structures},
     5930    booktitle   = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
     5931    series      = {PODC '03},
     5932    year        = {2003},
     5933    location    = {Boston, Massachusetts},
     5934    pages       = {92-101},
     5935    numpages    = {10},
     5936    publisher   = {ACM},
     5937    address     = {New York, NY, USA},
     5938}
     5939
     5940@article{Dijkstra65a,
     5941    keywords    = {N-thread software-solution mutual exclusion},
     5942    contributer = {pabuhr@plg},
     5943    author      = {Edsger W. Dijkstra},
     5944    title       = {Solution of a Problem in Concurrent Programming Control},
     5945    journal     = cacm,
     5946    volume      = 8,
     5947    number      = 9,
     5948    month       = sep,
     5949    year        = 1965,
     5950    pages       = {569},
     5951    publisher   = {ACM},
     5952    address     = {New York, NY, USA},
     5953}
     5954
     5955@inproceedings{Chen05,
     5956    keywords    = {fixed-priority, preemption},
     5957    contributer = {pabuhr@plg},
     5958    author      = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
     5959    title       = {Solution Space for Fixed-Priority with Preemption Threshold},
     5960    booktitle   = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
     5961    organization= {IEEE},
     5962    address     = {San Francisco, CA, U.S.A},
     5963    month       = mar,
     5964    year        = 2005,
     5965    pages       = {385-394}
     5966}
     5967
     5968@inproceedings{Tiemann88,
     5969    keywords    = {wrappers},
     5970    contributer = {pabuhr@plg},
     5971    author      = {Michael D. Tiemann},
     5972    title       = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     5973    booktitle   = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
     5974    organization= {USENIX Association},
     5975    address     = {Denver, Colorado, U.S.A},
     5976    month       = oct,
     5977    year        = 1988,
     5978    pages       = {343-361}
     5979}
     5980
     5981@book{Campbell74,
     5982    keywords    = {path expressions},
     5983    contributer = {pabuhr@plg},
     5984    author      = {R. H. Campbell and A. N. Habermann},
     5985    title       = {The Specification of Process Synchronization by Path Expressions},
     5986    publisher   = {Springer-Verlag},
     5987    year        = 1974,
     5988    volume      = 16,
     5989    pages       = {89-102},
     5990    series      = {Lecture Notes in Computer Science},
     5991}
     5992
     5993@article{Bentley85,
     5994    keywords    = {CSP, concurrency},
     5995    contributer = {pabuhr@plg},
     5996    author      = {J. Bentley},
     5997    title       = {A Spelling Checker},
     5998    journal     = cacm,
     5999    month       = may,
     6000    year        = 1985,
     6001    volume      = 28,
     6002    number      = 5,
     6003    pages       = {456-462},
     6004}
     6005
     6006@manual{POSIX01,
     6007    keywords    = {POSIX, Standard},
     6008    contributer = {pabuhr@plg},
     6009    key         = {POSIX},
     6010    title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
     6011    organization= {IEEE and The Open Group},
     6012    year        = 2001,
     6013}
     6014
     6015@manual{POSIX08,
     6016    keywords    = {POSIX, Standard},
     6017    contributer = {pabuhr@plg},
     6018    key         = {POSIX},
     6019    title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
     6020    organization= {IEEE and The Open Group},
     6021    year        = 2008,
     6022}
     6023
     6024@inproceedings{ML:NJ,
     6025    keywords    = {continuations, ML},
     6026    contributer = {pabuhr@plg},
     6027    author      = {A. Appel and D. MacQueen},
     6028    title       = {A Standard {ML} Compiler},
     6029    booktitle   = {Functional Programming Languages and Computer Architecture},
     6030    publisher   = {Springer-Verlag},
     6031    series      = {Lecture Notes in Computer Science},
     6032    volume      = 274,
     6033    year        = 1987,
     6034    pages       = {301-324},
     6035}
     6036
     6037@techreport{MLreport,
     6038    keywords    = {ML, polymorphism},
     6039    contributer = {pabuhr@plg},
     6040    author      = {R. Milner},
     6041    title       = {The Standard {ML} Core Language},
     6042    institution = {},
     6043    number      = {Polymorphism II.2},
     6044    month       = oct,
     6045    year        = 1985
     6046}
     6047
     6048@inproceedings{Ghelli,
     6049    keywords    = {},
     6050    contributer = {gjditchfield@plg},
     6051    author      = {Giorgio Ghelli},
     6052    title       = {A Static Type System for Message Passing},
     6053    crossref    = "OOPSLA91",
     6054    pages       = {129-145},
     6055    summary     = {
     6056        A strong, statically checked type system for object oriented
     6057        languages is defined by modelling methods as overloaded functions
     6058        with a "self" parameter, with dynamic overload resolution.  This
     6059        allows covariant method redefinition.  However, if equality is
     6060        covariantly redefined for Point and ColoredPoint classes, and a
     6061        ColoredPoint is compared to a Point, Point equality will be used,
     6062        even if self is the colored point!
     6063    }
     6064}
     6065
     6066@article{Dijkstra68b,
     6067    keywords    = {semaphore, P/V},
     6068    contributer = {pabuhr@plg},
     6069    author      = {E. W. Dijkstra},
     6070    title       = {The Structure of the ``{THE}''--Multiprogramming System},
     6071    journal     = cacm,
     6072    month       = may,
     6073    year        = 1968,
     6074    volume      = 11,
     6075    number      = 5,
     6076    pages       = {341-346}
     6077}
     6078
     6079@book{Holt78,
     6080    keywords    = {operating systems, concurrency},
     6081    contributer = {pabuhr@plg},
     6082    author      = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
     6083    title       = {Structured Concurrent Programming with Operating System Applications},
     6084    publisher   = {Addison-Wesley},
     6085    year        = 1978,
     6086}
     6087
     6088@article{Stevens74,
     6089    keywords    = {coupling, cohesion},
     6090    contributer = {pabuhr@plg},
     6091    author      = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
     6092    title       = {Structured Design},
     6093    journal     = ibmsj,
     6094    year        = 1974,
     6095    volume      = 13,
     6096    number      = 2,
     6097    pages       = {115-139},
     6098}
     6099
     6100@article{Hansen72b,
     6101    keywords    = {critical region},
     6102    contributer = {pabuhr@plg},
     6103    author      = {Per {Brinch Hansen}},
     6104    title       = {Structured Multiprogramming},
     6105    journal     = cacm,
     6106    volume      = 15,
     6107    number      = 7,
     6108    month       = jul,
     6109    year        = 1972,
     6110    pages       = {574-578},
     6111}
     6112
     6113@article{Knuth74,
     6114    keywords    = {structured programming, goto statement},
     6115    contributer = {pabuhr@plg},
     6116    author      = {Donald E. Knuth},
     6117    title       = {Structured Programming with go to Statements},
     6118    journal     = acmcs,
     6119    volume      = 6,
     6120    number      = 4,
     6121    month       = dec,
     6122    year        = 1974,
     6123    pages       = {261-301},
     6124    issn        = {0360-0300},
     6125    doi         = {http://doi.acm.org/10.1145/356635.356640},
     6126    publisher   = {ACM},
     6127    address     = {New York, NY, USA},
     6128}
     6129
     6130@article{Lang98,
     6131    keywords    = {real-time, exception handling},
     6132    contributer = {pabuhr@plg},
     6133    author      = {Jun Lang and David B. Stewart},
     6134    title       = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
     6135    journal     = toplas,
     6136    month       = mar,
     6137    year        = 1998,
     6138    volume      = 20,
     6139    number      = 2,
     6140    pages       = {274-301},
     6141}
     6142
     6143@mastersthesis{Fortier89,
     6144    keywords    = {monitors},
     6145    contributer = {pabuhr@plg},
     6146    author      = {Michel Fortier},
     6147    title       = {Study of Monitors},
     6148    school      = {Department of Computer Science, University of Waterloo},
     6149    year        = 1989,
     6150    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     6151}
     6152
     6153@techreport{AmadioCardelli,
     6154    keywords    = {},
     6155    contributer = {gjditchfield@plg},
     6156    author      = {Roberto M. Amadio and Luca Cardelli},
     6157    title       = {Subtyping Recursive Types},
     6158    institution = {Digital Equipment Corporation Systems Research Center},
     6159    year        = 1990,
     6160    address     = {130 Lytton Avenue, Palo Alto, California 94301},
     6161    month       = aug,
     6162    number      = 62,
     6163    summary     = {
     6164        \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
     6165               \mu s.\alpha leq \mu t.\beta  \]
     6166        \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
     6167               \Rightarrow \alpha = \beta \]
     6168        where a type \(\alpha\) is contractive in the type variable \(t\)
     6169        if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
     6170        can be rewritten via unfolding as a type of the shape
     6171        \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
     6172        \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\).  An
     6173        algorithm for finding type contexts \(C\) is given.
     6174    }
     6175}
     6176
     6177@techreport{Dijkstra80,
     6178    keywords    = {split binary semaphores, general to binary},
     6179    contributer = {pabuhr@plg},
     6180    author      = {Edsger W. Dijkstra},
     6181    title       = {The Superfluity of the General Semaphore},
     6182    institution = {Nuenen},
     6183    address     = {Netherlands},
     6184    number      = {EWD734},
     6185    month       = apr,
     6186    year        = 1980,
     6187}
     6188
     6189@inproceedings{Burns81,
     6190    keywords    = {N-thread software-solution mutual exclusion},
     6191    contributer = {pabuhr@plg},
     6192    author      = {James E. Burns},
     6193    title       = {Symmetry in Systems of Asynchronous Processes},
     6194    booktitle   = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
     6195    year        = 1981,
     6196    month       = oct,
     6197    organization= {IEEE Computer Society},
     6198    address     = {Los Angeles, CA, USA},
     6199    pages       = {169-174},
     6200}
     6201
     6202@article{Coffman71,
     6203    keywords    = {deadlock},
     6204    contributer = {pabuhr@plg},
     6205    author      = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},