source: doc/bibliography/pl.bib @ 48b9b36

aaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerwith_gc
Last change on this file since 48b9b36 was 48b9b36, checked in by Peter A. Buhr <pabuhr@…>, 4 years ago

writing updates

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