source: doc/bibliography/pl.bib @ a8de0f4

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumwith_gc
Last change on this file since a8de0f4 was a8de0f4, checked in by Peter A. Buhr <pabuhr@…>, 6 years ago

add entries

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