source: doc/bibliography/cfa.bib @ da81e1d0

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

update bibliography file

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