source: doc/bibliography/cfa.bib @ 036895e

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

last changes

  • Property mode set to 100644
File size: 225.7 KB
RevLine 
[e229c22]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
[c57d1935]11@string{acta="Acta Infomatica"}
[e229c22]12%  cacm: Communications of the ACM
13%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
14%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
15%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
16%  ipl: Information Processing Letters  jacm: Journal of the ACM
17%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
18%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
19%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
20%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
21%  toplas: ACM Trans. on Prog. Lang. & Sys.
22%  tcs: Theoretical Computer Science
23@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
[03d416f]24% @string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
[e229c22]25@string{ieeese="IEEE Transactions on Software Engineering"}
[03d416f]26% @string{ieeese="IEEE Trans. Softw. Eng."}
[e229c22]27@string{spe="Software---\-Practice and Experience"}
[03d416f]28% @string{spe="Softw. Pract. Exp."}
29@string{ccpe="Concurrency and Computation: Practice and Experience"}
30% @string{ccpe="Concurrency Comput. Pract. Exp."}
[e229c22]31@string{sigplan="SIGPLAN Notices"}
[03d416f]32% @string{sigplan="SIGPLAN Not."}
[e229c22]33@string{joop="Journal of Object-Oriented Programming"}
[03d416f]34% @string{joop="J. of Object-Oriented Program."}
[e229c22]35@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
36@string{osr="Operating Systems Review"}
37@string{pldi="Programming Language Design and Implementation"}
[06cf47f]38@string{toplas="Transactions on Programming Languages and Systems"}
[03d416f]39@string{mathann="Mathematische Annalen"}
40% @string{mathann="Math. Ann."}
[e229c22]41
42% A
43
44@incollection{ABC++,
45    keywords    = {concurrency, parallel, distributed, C++},
46    contributer = {pabuhr@plg},
47    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
48    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
49    editor      = {Gregory V. Wilson and Paul Lu},
50    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
51    publisher   = {MIT Press},
[03d416f]52    address     = {New York},
[e229c22]53    series      = {Scientific and Engineering Computation Series},
54    year        = 1996,
55    pages       = {1-42},
56}
57
58@techreport{CL90abstract,
59    keywords    = {},
60    contributer = {gjditchfield@plg},
61    author      = {Luca Cardelli and Xavier Leroy},
62    title       = {Abstract Types and the Dot Notation},
63    institution = {Systems Research Center},
64    year        = 1990,
65    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
66    number      = 56,
67    summary     = {
68        The existential types of Mitchell and Plotkin \cite{atet} model
69        abstract types, but their ``open'' notation is unlike the usual dot
70        notation used in programming languages.  This paper gives
71        translations between the ``open'' and ``dot'' forms, and suggests
72        extensions for nested and for parameterized abstractions.
73    }
74}
75
76@article{atet,
77    keywords    = {lambda calculus, polymorphism},
78    contributer = {gjditchfield@plg},
79    author      = {John C. Mitchell and Gordon D. Plotkin},
80    title       = {Abstract Types have Existential Type},
81    journal     = toplas,
82    year        = 1988,
83    month       = jul, volume = 10, number = 3, pages = {470-502},
84    abstract    = {
85        Abstract data type declarations appear in typed programming
86        languages like Ada, Alphard, CLU and ML.  This form of declaration
87        binds a list of identifiers to a type with associated operations, a
88        composite ``value'' we call a {\em data algebra}.  We use a
89        second-order typed lambda calculus SOL to show how data algebras
90        may be given types, passed as parameters, and returned as results of
91        function calls.  In the process, we discuss the semantics of
92        abstract data type declarations and review a connection between
93        typed programming languages and constructive logic.
94    }
95}
96
97@article{alphard:intro,
98    keywords    = {encapsulation, data abstraction},
99    contributer = {gjditchfield@plg},
100    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
101    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
102    journal     = ieeese,
103    year        = 1976,
104    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
105    note        = {Reprinted in \cite{alphard}.},
106    abstract    = {
107        Alphard is a programming language whose goals include supporting
108        both the development of well-structured programs and the formal
109        verification of these programs.  This paper attempts to capture the
110        symbiotic influence of these two goals on the design of the
111        language.  To that end the language description is interleaved with
112        the presentation of a proof technique and discudssion of
113        programming methodology.  Examples to illustrate both the language
114        and the verification technique are included.
115    }
116}
117
118@book{Hilfinger83,
119    keywords    = {ada},
120    author      = {Paul N. Hilfinger},
121    title       = {Abstraction Mechanisms and Language Design},
122    publisher   = {MIT Press},
123    series      = {ACM Distinguished Dissertations},
124    year        = 1983,
125}
126
127@incollection{Lavender96,
128    author      = {R. Greg Lavender and Douglas C. Schmidt},
129    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
130    title       = {Pattern Languages of Program Design 2},
131    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
132    year        = 1996,
133    pages       = {483-499},
[03d416f]134    publisher   = {Addison-Wesley Longman Publishing},
135    address     = {Boston},
[e229c22]136}
137
138@article{Nierstrasz87,
139    keywords    = {Hybrid, active objects, object-oriented languages,
140                  object-based languages, delegation, concurrency},
141    contributer = {pabuhr@plg},
142    author      = {O. M. Nierstrasz},
143    title       = {Active Objects in {Hybrid}},
144    journal     = sigplan,
145    volume      = 22,
146    number      = 12,
147    month       = dec,
148    year        = 1987,
149    pages       = {243-253},
150    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
151    abstract    = {
152        Most object-oriented languages are strong on reusability or on
153        strong-typing, but weak on concurrency.  In response to this gap,
154        we are developing {\it Hybrid}, an object-oriented language in which
155        objects are the active entities.  Objects in Hybrid are organized
156        into {\it domains}, and concurrent executions into {\it activities}.
157        All object communications are based on remote procedure calls.
158        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
159        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
160        are added to enable switching and triggering of activities.
161        Concurrent subactivities and atomic actions are provided for
162        compactness and simplicity.  We show how solutions to many important
163        concurrent problems [sic], such as pipelining, constraint management
164        and ``administration'' can be compactly expressed using these
165        mechanisms.
166   },
167   comment      = {Mentions Thoth in reference to delegation}
168}
169
170@book{Actors,
171    keywords    = {actors, concurrency},
172    contributer = {pabuhr@plg},
173    author      = {Gul A. Agha},
174    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
[03d416f]175    publisher   = {MIT Press, Cambridge},
[e229c22]176    year        = 1986
177}
178
179@article{polymorphImpl,
180    keywords    = {Napier88},
181    contributer = {gjditchfield@plg},
182    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
183    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
184    journal     = toplas,
185    year        = 1991,
186    month       = jul,
187    volume      = 13,
188    number      = 3,
189    pages       = {342-371},
190    abstract    = {
191        Polymorphic abstraction provides the ability to write programs that
192        are independent of the form of the data over which they operate.
193        There are a number of different categories of polymorphic
194        expression---ad hoc and universal, which includes parametric and
195        inclusion---all of which have many advantages in terms of code
196        reuse and software economics.  It has proved difficult to provide
197        efficient implementations of polymorphism.  Here, we address this
198        problem and describe a new technique that can implement all forms
199        of polymorphism, use a conventional machine architecture, and
200        support nonuniform data representations.  Furthermore, the method
201        ensures that any extra cost of implementation applies to
202        polymorphic forms only, and allows such polymorphic forms to
203        persist over program invocations.
204    },
205    summary     = {
206        They give three ways to implement polymorphism: {\em textual
207        polymorphism}, which seems to be template instantiation, {\em
208        uniform polymorphism}, which they explain badly, and {\em tagged
209        polymorphism}, where object code performs type tests.
210
211        They use first-class procedures to implement polymorphism: routines
212        with type parameters are implemented as curried routines that
213        return a nested routine that refers to the type parameter.
214    }
215}
216
217@article{dim:ada,
218    keywords    = {Dimensional Analysis, Ada},
219    contributer = {gjditchfield@plg},
220    author      = {Paul N. Hilfinger},
221    title       = {An {Ada} Package for Dimensional Analysis},
222    journal     = toplas,
223    month       = apr,
224    year        = 1988,
225    volume      = 10,
226    number      = 2,
227    pages       = {189-203},
228}
229
230@mastersthesis{Younger91,
231    keywords    = {concurrency, C++, postponing requests},
232    contributer = {pabuhr@plg},
233    author      = {Brian M. Younger},
234    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
235    school      = {University of Waterloo},
236    year        = 1991,
237    address     = {Waterloo, Ontario, Canada, N2L 3G1},
238}
239
240@inproceedings{Buhr92c,
241    keywords    = {concurrency},
242    contributer = {pabuhr@plg},
243    author      = {Peter A. Buhr and Glen Ditchfield},
244    title       = {Adding Concurrency to a Programming Language},
245    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
246    organization= {USENIX Association},
247    address     = {Portland, Oregon, U.S.A.},
248    month       = aug,
249    year        = 1992,
250    pages       = {207-224},
251}
252
253@article{Buhr89b,
254    keywords    = {concurrency, C++},
255    contributer = {pabuhr@plg},
256    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
257    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
258    journal     = sigplan,
259    volume      = 24,
260    number      = 4,
261    month       = apr,
262    year        = 1989,
263    pages       = {18-21},
264    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
265}
266
267@article{Knuth66,
268    keywords    = {N-thread software-solution mutual exclusion},
269    contributer = {pabuhr@plg},
270    author      = {Donald E. Knuth},
271    title       = {Additional Comments on a Problem in Concurrent Programming Control},
272    journal     = cacm,
273    month       = may,
274    year        = 1966,
275    volume      = 9,
276    number      = 5,
277    pages       = {321-322},
278    note        = {Letter to the Editor}
279}
280
281@article{DeBruijn67,
282    keywords    = {N-thread software-solution mutual exclusion},
283    contributer = {pabuhr@plg},
284    author      = {Nicolaas Govert de Bruijn},
285    title       = {Additional Comments on a Problem in Concurrent Programming Control},
286    journal     = cacm,
287    month       = mar,
288    year        = 1967,
289    volume      = 10,
290    number      = 3,
291    pages       = {137-138},
292    note        = {letter to the Editor}
293}
294
295@phdthesis{Krischer10,
296    author      = {Roy Krischer},
297    title       = {Advanced Concepts in Asynchronous Exception Handling},
298    school      = {University of Waterloo},
299    year        = 2010,
300    month       = dec,
301    address     = {Waterloo, Ontario, Canada, N2L 3G1},
302    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
303    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
304}
305
306@article{Buhr00a,
307    keywords    = {exception handling},
308    contributer = {pabuhr@plg},
309    author      = {Peter A. Buhr and W. Y. Russell Mok},
310    title       = {Advanced Exception Handling Mechanisms},
311    journal     = ieeese,
312    volume      = 26,
313    number      = 9,
314    month       = sep,
315    year        = 2000,
316    pages       = {820-836},
317}
318
319@book{Richter97,
320    keywords    = {Win32, threads},
321    author      = {Jeffrey M. Richter},
322    title       = {Advanced Windows},
323    publisher   = {Microsoft Press},
324    year        = 1997,
[03d416f]325    edition     = {3rd},
[e229c22]326}
327
328@article{Francez77,
329    keywords    = {parameter passing, named/positional arguments},
330    contributer = {pabuhr@plg},
331    author      = {Nissim Francez},
332    title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
333    journal     = cacm,
334    volume      = 20,
335    number      = 8,
336    month       = aug,
337    year        = 1977,
338    pages       = {604-605},
339}
340
[03d416f]341@manual{Akka,
342    keywords    = {Akka actor model},
343    contributer = {pabuhr@plg},
344    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
345    organization= {Lightbend Inc.},
346    month       = sep,
347    year        = 2016,
348    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
349}
350
[e229c22]351@article{Algol60,
352    keywords    = {Algol60},
353    contributer = {pabuhr@plg},
354    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
355                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
356                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
357    title       = {Revised Report on the Algorithmic Language Algol 60},
358    editor      = {Peter Nauer},
359    journal     = cacm,
360    volume      = 6,
361    number      = 1,
362    month       = jan,
363    year        = 1963,
364    pages       = {1-17},
365}
366
367@article{Mellor-Crummey91,
368    keywords    = {spin locks, compare-and-swap, barriers},
369    contributer = {pabuhr@plg},
370    author      = {John M. Mellor-Crummey and Michael L. Scott},
371    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
372    journal     = tocs,
373    volume      = 9,
374    number      = 1,
375    month       = feb,
376    year        = 1991,
377    pages       = {21-65},
378}
379
[03ccadd]380@article{Cormack81,
[e229c22]381    keywords    = {},
382    contributer = {gjditchfield@plg},
383    author      = {Gordon V. Cormack},
384    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
385    journal     = sigplan,
386    year        = 1981,
387    month       = feb, volume = 16, number = 2, pages = {48-52},
388    comment     = {
389        A one-pass, top-down algorithm for overload resolution.  Input is a
390        parse tree and the desired result type, and output is the number of
391        solutions.  For each overloading of the root identifier with a
392        matching parameter list, recursively solve for each parameter for
393        the corresponding argument type---there should be one solution.
394    }
395}
396
397@book{Raynal86,
398    keywords    = {mutual exclusion, locks},
399    contributer = {pabuhr@plg},
400    author      = {M. Raynal},
401    title       = {Algorithms for Mutual Exclusion},
[03d416f]402    publisher   = {MIT Press},
403    address     = {Cambridge},
[e229c22]404    series      = {Scientific Computation Series},
405    year        = 1986,
406    note        = {Translated by D. Beeson},
407}
408
409@incollection{Gidenstam05,
410    keywords    = {lock free, dynamic memory allocation},
411    contributer = {pabuhr@plg},
412    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
413    title       = {Allocating Memory in a Lock-free Manner},
414    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
415    booktitle   = {Algorithms -- ESA 2005},
416    pages       = {329-342},
417    publisher   = {Springer},
[03d416f]418    address     = {New York},
[e229c22]419    year        = 2005,
420    volume      = 3669,
421    series      = {Lecture Notes in Computer Science},
422}
423
424@book{Sites92,
425    keywords    = {computers, Alpha},
426    contributer = {pabuhr@plg},
427    editor      = {Richard L. Sites},
428    title       = {Alpha Architecture Reference Manual},
[03d416f]429    publisher   = {Digital Press, Burlington},
[e229c22]430    year        = 1992,
431}
432
433@book{alphard,
434    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
435    contributer = {gjditchfield@plg},
[17f27d40]436    key         = {Alphard},
[e229c22]437    editor      = {Mary Shaw},
438    title       = {{ALPHARD}: Form and Content},
[03d416f]439    publisher   = {Springer},
440    address     = {New York},
[e229c22]441    year        = 1981,
442    comment     = {Collection of papers about Alphard.}
443}
444
445@article{Kessels77,
446    keywords    = {monitors},
447    contributer = {pabuhr@plg},
448    author      = {Joep L. W. Kessels},
449    title       = {An Alternative to Event Queues for Synchronization in Monitors},
450    journal     = cacm,
451    volume      = 20,
452    number      = 7,
453    month       = jul,
454    year        = 1977,
455    pages       = {500-503},
456    annote      = {
457    }
458}
459
460@article{descr,
461    keywords    = {X2, subclasses, inheritance, parameterized classes},
462    contributer = {gjditchfield@plg},
463    author      = {David Sandberg},
464    title       = {An Alternative to Subclassing},
465    journal     = sigplan,
466    volume      = {21},    number = {11},
467    pages       = {424-428},
468    month       = nov, year = 1986,
469    comment     = {
470        The Smalltalk class hierarchy has three uses: factoring out code;
471        ``Abstraction superclasses'' such as Collection; rapid construction
472        of new classes by incremental change.
473
474        ``A descriptive class specifies a partial behavior by specifying a
475        set of procedure headings that describe what can be done with
476        instances of classes that belong to the descriptive class.''  An
477        ``instance'' statement declares a class to be an instance of a
478        descriptive class and defines the correspondence between
479        operations.  Procedures with descriptive class parameters take any
480        instance as arguments.  Descriptive classes can describe relations
481        like ``c is a collection with element type e'', but how such things
482        are used isn't explained.
483       
484        For each descriptive class used in a parameter list, an implicit
485        parameter is created that is passed a vector of procedures.
486    }
487}
488
489@incollection{Matsuoka93,
490    keywords    = {inheritance anomaly},
491    contributer = {pabuhr@plg},
492    author      = {Satoshi Matsuoka and Akinori Yonezawa},
493    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
494    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
495    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
496    publisher   = {MIT Press},
[03d416f]497    address     = {New York},
[e229c22]498    year        = 1993,
499    pages       = {107-150},
500}
501
502@article{Sinha00,
503    author      = {Saurabh Sinha and Mary Jean Harrold},
504    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
505    journal     = ieeese,
506    year        = 2000,
507    month       = sep,
508    volume      = 26,
509    number      = 9,
510    pages       = {849--871},
511}
512
513@inproceedings{Robillard99,
514    author      = {Martin P. Robillard and Gail C. Murphy},
515    title       = {Analyzing Exception Flow in {J}ava Programs},
516    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
517                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
518    year        = 1999,
519    pages       = {322--337},
520    isbn        = {3-540-66538-2},
521    location    = {Toulouse, France},
522    doi         = {http://doi.acm.org/10.1145/318773.319251},
[03d416f]523    publisher   = {Springer},
[e229c22]524    address     = {London, UK},
525}
526
527@book{C++,
528    keywords    = {C++, ANSI},
529    author      = {Margaret A. Ellis and Bjarne Stroustrup},
530    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
531    publisher   = {Addison-Wesley},
[03d416f]532    address     = {Boston},
[e229c22]533    year        = 1990,
[03d416f]534    edition     = {1st},
[e229c22]535}
536
537@book{APL,
538    keywords    = {APL},
539    contributer = {pabuhr@plg},
540    author      = {K. E. Iverson},
541    title       = {A Programming Language},
542    publisher   = {Wiley, New York},
543    year        = 1962
544}
545
546@article{PS-Algol:old,
547    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
548    title       = {An Approach to Persistent Programming},
549    journal     = {The Computer Journal},
550    year        = 1983,
551    volume      = 26,
552    number      = 4,
553    pages       = {360-365},
554}
555
556@article{Kessels82,
557    keywords    = {concurrency, critical section},
558    contributer = {pabuhr@plg},
559    author      = {Joep L. W. Kessels},
560    title       = {Arbitration Without Common Modifiable Variables},
561    journal     = acta,
562    volume      = 17,
563    number      = 2,
564    month       = jun,
565    year        = 1982,
566    pages       = {135-141},
567}
568
569@article{Buhr95a,
570    keywords    = {concurrency, library approach},
571    contributer = {pabuhr@plg},
572    author      = {Peter A. Buhr},
573    title       = {Are Safe Concurrency Libraries Possible?},
574    journal     = cacm,
575    month       = feb,
576    year        = 1995,
577    volume      = 38,
578    number      = 2,
579    pages       = {117-120},
580}
581
582@book{ARMv7,
583    key         = {ARM processor},
584    title       = {ARM Architecture Reference Manual},
585    publisher   = {ARM},
586    volume      = {ARM DDI 0406C.b (ID072512)},
587    year        = 2012,
588}
589
590@book{Herlihy08,
591    contributer = {pabuhr@plg},
592    author      = {Herlihy, Maurice and Shavit, Nir},
593    title       = {The Art of Multiprocessor Programming},
594    year        = 2008,
595    isbn        = {0123705916, 9780123705914},
[03d416f]596    publisher   = {Morgan Kaufmann Publishers},
597    address     = {San Francisco},
[e229c22]598}
599
600@inproceedings{Chung10,
601    keywords    = {transactional memory, lock-free programming, x86 architecture},
602    contributer = {pabuhr@plg},
603    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
604    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
605    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
606    series      = {MICRO '43},
607    year        = 2010,
608    pages       = {39--50},
609    numpages    = {12},
610    publisher   = {IEEE Computer Society},
611    address     = {Washington, DC, USA},
612}
613
614@article{Buhr94a,
615    keywords    = {assignment, parameter passing, multiple assignment},
616    contributer = {pabuhr@plg},
617    author      = {P. A. Buhr and David Till and C. R. Zarnke},
618    title       = {Assignment as the Sole Means of Updating Objects},
619    journal     = spe,
620    month       = sep,
621    year        = 1994,
622    volume      = 24,
623    number      = 9,
624    pages       = {835-870},
625}
626
627@inproceedings{Krischer08,
628    keywords    = {exception handling, asynchronous, blocked tasks},
629    contributer = {pabuhr@plg},
630    author      = {Roy Krischer and Peter A. Buhr},
631    title       = {Asynchronous Exception Propagation in Blocked Tasks},
632    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
633    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
634    address     = {Atlanta, U.S.A},
635    month       = nov,
636    year        = 2008,
637    pages       = {8-15},
638}
639
640@article{oop:modpascal,
641    keywords    = {ModPascal},
642    contributer = {gjditchfield@plg},
643    author      = {Walter G. Olthoff},
644    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
645    journal     = sigplan,
646    volume      = 21,
647    number      = 11,
648    pages       = {429-443},
649    month       = nov,
650    year        = 1986
651}
652
653@inproceedings{Shen91,
654    keywords    = {Ada, polymorphism},
655    contributer = {pabuhr@plg},
656    author      = {Jun Shen and Gordon V. Cormack},
657    title       = {Automatic instantiation in Ada},
658    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
659    organization= {ACM},
660    address     = {San Jose, California, U.S.A},
661    month       = oct,
662    year        = 1991,
663    pages       = {338-346},
664}
665
666@article{Havender68,
667    keywords    = {deadlock},
668    contributer = {pabuhr@plg},
669    author      = {J. W. Havender},
670    title       = {Avoiding Deadlock in Multitasking Systems},
671    journal     = ibmsj,
672    volume      = 7,
673    number      = 2,
674    year        = 1968,
675    pages       = {74-84},
676}
677
678% B
679
680@incollection{beta:old,
681    keywords    = {beta, patterns, virtual types},
682    contributer = {gjditchfield@plg},
683    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
684    title       = {The BETA Programming Language},
685    booktitle   = {Research Directions in Object-Oriented Programming},
686    publisher   = {MIT Press},
687    series      = {Computer Systems Series},
688    year        = 1987,
689    pages       = {7-48},
690    editor      = {Bruce Shriver and Peter Wegner}
691}
692
693@article{Knudsen87,
694    keyword     = {static exception handling mechanism, BETA, sequel},
695    contributor = {wyrmok@plg},
696    author      = {J{\o}rgen Lindskov Knudsen},
697    title       = {Better Exception Handling in Block Structured Systems},
698    journal     = {IEEE Software},
699    year        = 1987,
700    month       = may,
701    volume      = 4,
702    number      = 3,
703    pages       = {40-49},
704    comments    = {
705        Going up the call hierarchy to look for a handler does not fit an
706        otherwise statically scoped language. Also, not knowing which handler
707        to be used when raising an abnormal event is seen as a weakness of the
708        (dynamic) exception handling mechanism. Knudsen believed that raising
709        an exception should specify the handler for the exception -- the
710        handler is chosen when the exception is raised.  However, I don't think
711        his scheme can solve the problem, especially with all the callback
712        routines commonly found in OO programming.
713
714        BETA exception handling mechanism uses his work as a foundation.
715        However, I don't see any benefits BETA has over other language that is
716        a direct consequence of Knudsen's work. On the other hand, my knowledge
717        on BETA is very limited.
718        }
719}
720
721@book{BCPL,
722    keywords    = {BCPL},
723    contributer = {pabuhr@plg},
724    author      = {M. Richards and C. Whitby-Strevens},
725    title       = {{BCPL} -- The Language and Its Compiler},
726    publisher   = {Cambridge University Press, Cambridge},
727    year        = 1979,
728}
729
730@incollection{Madsen87,
731    keywords    = {nested classes},
732    contributer = {pabuhr@watmsg},
733    author      = {Ole Lehrmann Madsen},
734    title       = {Block Structure and Object Oriented Languages},
735    booktitle   = {Research Directions in Object-Oriented Programming},
736    editor      = {Bruce Shriver and Peter Wegner},
737    publisher   = {MIT Press},
738    series      = {Computer Systems Series},
739    year        = 1987,
740    pages       = {113-128}
741}
742
743@inproceedings{booleanClasses,
744    keywords    = {specifications},
745    contributer = {gjditchfield@plg},
746    author      = {David McAllester and Ramin Zabih},
747    title       = {Boolean Classes},
748    crossref    = "OOPSLA86",
749    pages       = {417-423},
750    abstract    = {
751        We extend the notion of class so that any Boolean combination of
752        classes is also a class.  Boolean classes allow greater precision
753        and conciseness in naming the class of objects governed a
754        particular method [sic].  A class can be viewed as a predicate
755        which is either true or false of any given object.  Unlike
756        predicates however classes have an inheritance hierarchy which is
757        known at compile time.  Boolean classes extend the notion of class,
758        making classes more like predicates, while preserving the compile
759        time computable inheritance hierarchy.
760    },
761    comment = {
762        Classes are predicates; if object {\tt o} is in class {\tt C}, then
763        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
764        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
765        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
766        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
767        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
768        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
769        c)}, can't be given methods or members because almost all classes
770        would inherit them, violating modularity.  The rules for spotting
771        these problems are complex.  Determining if one class inherits from
772        another needs an exponential algorithm.
773    }
774}
775
[03d416f]776@misc{BoostCoroutines15,
777    keywords    = {Boost Coroutine Library},
778    contributer = {pabuhr@plg},
779    author      = {Oliver Kowalke},
780    title       = {Boost Coroutine Library},
781    year        = 2015,
782    note        = {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
783                  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]},
784}
785
[e229c22]786@mastersthesis{Krischer02,
787    author      = {Roy Krischer },
788    title       = {Bound Exceptions in Object-Oriented Programming Languages},
789    school      = {Universit\"at Mannheim},
790    address     = {Mannheim, Deutschland},
791    year        = 2002,
792    month       = oct,
793    type        = {Diplomarbeit},
794    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-KrischerThesis.ps.gz}}},
795}
796
797@inproceedings{Buhr03,
798    keywords    = {exception handling, bound handler},
799    contributer = {pabuhr@plg},
800    author      = {Peter A. Buhr and Roy Krischer},
801    title       = {Bound Exceptions in Object Programming},
802    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
803                  Towards Emerging Application Areas and New Programming Paradigms},
804    organization= {ECOOP},
805    address     = {Darmstadt, Germany},
806    month       = jul,
807    year        = 2003,
808    pages       = {20-26},
809}
810%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
811
812@inproceedings{Buhr06b,
813    keywords    = {exception handling, bound exceptions},
814    author      = {Peter A. Buhr and Roy Krischer},
815    title       = {Bound Exceptions in Object-Oriented Programming},
816    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
817    booktitle   = {Advanced Topics in Exception Handling Techniques},
[03d416f]818    publisher   = {Springer},
[e229c22]819    series      = {Lecture Notes in Computer Science},
820    volume      = 4119,
821    year        = 2006,
822    pages       = {1-21}
823}
824
825% C
826
827@book{C,
828    keywords    = {C},
829    contributer = {pabuhr@plg},
830    author      = {Brian W. Kernighan and Dennis M. Ritchie},
831    title       = {The {C} Programming Language},
[03d416f]832    publisher   = {Prentice-Hall},
833    address     = {Englewood Cliffs},
[e229c22]834    year        = 1988,
[03d416f]835    edition     = {2nd},
836    series      = {Prentice-Hall Software Series},
[e229c22]837    comment     = {
838         based on draft-proposed ANSI C
839    }
840}
841
842@book{C:old,
843    keywords    = {C},
844    contributer = {pabuhr@plg},
845    author      = {Brian W. Kernighan and Dennis M. Ritchie},
846    title       = {The {C} Programming Language},
[03d416f]847    publisher   = {Prentice-Hall},
848    address     = {Englewood Cliffs},
[e229c22]849    year        = 1978,
[03d416f]850    edition     = {1st},
[e229c22]851}
852
853@manual{ANSI89:C,
854    keywords    = {ANSI C 89},
855    contributer = {gjditchfield@plg},
856    title       = {American National Standard for Information Systems -- Programming Language -- {C}},
857    organization= {American National Standards Institute},
858    address     = {1430 Broadway, New York, New York  10018},
859    month       = dec,
860    year        = 1989,
861    note        = {X3.159-1989}
862}
863
[5995116]864@techreport{C11,
[17f27d40]865    type        = {International Standard},
[e229c22]866    keywords    = {ISO/IEC C 11},
867    contributer = {pabuhr@plg},
[5995116]868    key         = {{ISO/IEC} 9889-2011},
[e229c22]869    title       = {American National Standard Information technology -- Programming Languages -- {C}},
[5995116]870    institution = {International Standard Organization},
[e229c22]871    address     = {http://www.iso.org},
872    year        = 2012,
873}
874
[5995116]875@techreport{C++Concepts,
[17f27d40]876    type        = {International Standard},
[03d416f]877    keywords    = {ISO/IEC TS 19217:2015},
878    contributer = {a3moss@uwaterloo.ca},
[5995116]879    key         = {{ISO/IEC} {TS} 19217},
[c57d1935]880    author      = {Concepts},
[03d416f]881    title       = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
[5995116]882    institution = {International Standard Organization},
[03d416f]883    address     = {http://www.iso.org},
884    year        = 2015
[7bb37fc]885}
886
[e229c22]887@mastersthesis{Esteves04,
888    keywords    = {Cforall, parametric polymorphism, overloading},
889    contributer = {pabuhr@plg},
890    author      = {Rodolfo Gabriel Esteves},
891    title       = {C$\forall$, a Study in Evolutionary Design in Programming Languages},
892    school      = {School of Computer Science, University of Waterloo},
893    year        = 2004,
894    address     = {Waterloo, Ontario, Canada, N2L 3G1},
895    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
896}
897
898@inproceedings{c++scheme,
899    keywords    = {},
900    contributer = {gjditchfield@plg},
901    author      = {Vincent F. Russo and Simon M. Kaplan},
902    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
903    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
904    year        = 1988,
905    pages       = {95-108},
906    summary     = {
907        The SIOD interpreter for a Scheme subset, written in C, has a
908        tagged union representing data objects, and read(), eval(), and
909        print() functions that are basically large switch statements that
910        switch based on the tag.  The authors rewrote it to use a class
911        with virtual read(), eval(), and print() members, without changing
912        any algorithms.  The result was more modular, more easily
913        extensible, more reliable, and slightly faster.
914    },
915    comment     = {
916        The evidence given is thin.
917        }
918}
919
920@article{doskernel,
921    keywords    = {light weight processes},
922    contributer = {gjditchfield@plg},
923    author      = {Tom Green},
924    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
925    journal     = {Dr. Dobb's Journal of Software Tools},
926    year        = 1989,
927    month       = feb, volume = 14, number = 2, pages = {45-51},
928    comment     = {
929       A light-weight multitasking kernel for MS-DOS.  A task\_control
930       object holds task objects, which may block themselves on signal
931       objects.  Task switching is normally preemptive, but tasks can turn
932       off preemption before calling non-reentrant routines.  Source code
933       is given.
934    }
935}
936
937@inproceedings{Doeppner87,
938    keywords    = {concurrency},
939    contributer = {pabuhr@plg},
940    author      = {Thomas W. Doeppner and Alan J. Gebele},
941    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
942    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
943    organization= {USENIX Association},
944    address     = {Santa Fe, New Mexico, U.S.A},
945    month       = nov,
946    year        = 1987,
947    pages       = {94-107},
948}
949
950@book{Lippman91,
951    keywords    = {C++},
952    contributer = {pabuhr@plg},
953    author      = {Stanley B. Lippman},
954    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
955    publisher   = {Addison-Wesley},
[03d416f]956    address     = {Boston},
[e229c22]957    year        = 1991,
[03d416f]958    edition     = {2nd},
[e229c22]959    note        = {QA76.73.C15L57},
960}
961
962@book{c++:v1,
963    keywords    = {C++},
964    contributer = {gjditchfield@plg},
965    author      = {Bjarne Stroustrup},
966    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
967    publisher   = {Addison-Wesley},
[03d416f]968    address     = {Boston},
[e229c22]969    year        = 1986,
[03d416f]970    edition     = {1st},
[e229c22]971    series      = {Addison-Wesley Series in Computer Science}
972}
973
974@book{c++:v2,
975    keywords    = {C++},
976    contributer = {pabuhr@plg},
977    author      = {Bjarne Stroustrup},
978    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
979    publisher   = {Addison-Wesley},
[03d416f]980    address     = {Boston},
[e229c22]981    year        = 1991,
[03d416f]982    edition     = {2nd},
[e229c22]983}
984
985@book{c++:v3,
986    keywords    = {C++},
987    contributer = {pabuhr@plg},
988    author      = {Bjarne Stroustrup},
989    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
[03d416f]990    publisher   = {Addison Wesley Longman},
[e229c22]991    year        = 1997,
[03d416f]992    edition     = {3rd},
[e229c22]993}
994
995@manual{Csharp,
996    keywords    = {C#},
997    contributer = {pabuhr@plg},
998    title       = {C\# Language Specification, Standard ECMA-334},
999    organization= {ECMA International Standardizing Information and Communication Systems},
1000    month       = jun,
1001    year        = 2006,
1002    edition     = {4th},
1003}
1004
1005@article{Buhr85,
1006    keywords    = {goto, multi-exit loop},
1007    contributer = {pabuhr@plg},
1008    author      = {P. A. Buhr},
1009    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
1010    journal     = sigplan,
1011    volume      = 20,
1012    number      = 11,
1013    month       = nov,
1014    year        = 1985,
1015    pages       = {14-22}
1016}
1017
1018@techreport{cforall-ug,
1019    keywords    = {cforall, user guide},
1020    contributer = {pabuhr@plg},
1021    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
1022    title       = {\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}\ Users Guide, Version 0.1},
1023    institution = {Department of Computer Science, University of Waterloo},
1024    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1025    month       = oct,
1026    year        = 2001,
1027    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-\char`\~cforall/\-cfa.ps}},
1028}
1029
1030@manual{cforall,
1031    keywords    = {polymorphism},
1032    contributer = {gjditchfield@plg},
1033    author      = {Glen Ditchfield},
1034    title       = {Cforall Reference Manual and Rationale},
1035    edition     = {Revision 1.82},
1036    month       = jan,
1037    year        = 1998,
1038    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
1039}
1040
1041@book{Yourdon79,
1042    keywords    = {software engineering},
1043    contributer = {pabuhr@plg},
1044    editor      = {Edward Nash Yourdon},
1045    title       = {Classics in Software Engineering},
1046    publisher   = {Yourdon Press},
[03d416f]1047    address     = {New York},
[e229c22]1048    year        = 1979,
1049}
1050
1051@inproceedings{Crnogorac98,
1052    keywords    = {inheritance anomaly},
1053    contributer = {pabuhr@plg},
1054    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1055    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1056    editor      = {Eric Jul},
1057    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
1058    series      = {Lecture Notes in Computer Science},
1059    publisher   = {Springer},
1060    volume      = 1445,
1061    year        = 1998,
1062    pages       = {571-601},
1063    ISBN        = {3-540-64737-6},
1064    ISSN        = {0302-9743},
1065    abstract    = {
1066        Inheritance is one of the key concepts in object-oriented rogramming. However, the
1067        usefulness of inheritance in concurrent object-oriented programming is greatly
1068        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1069        by undesirable re-definitions of inherited code. The problem is aggravated by the
1070        lack of a formal analysis, with a multitude of differing proposals and conflicting
1071        opinions causing the current state of research, and further directions, to be
1072        unclear. In this paper we present a formal analysis of inheritance anomaly in
1073        concurrent object-oriented programming. Starting from a formal definition of the
1074        problem we develop a taxonomy of the anomaly, and use it to classify the various
1075        proposals. As a result, the major ideas, trends and limitations of the various
1076        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1077        exposition of its causes and implications are the pre-requisites for a successful
1078        integration of inheritance and concurrency.
1079    },
1080}
1081
1082@book{CLU,
1083    keywords    = {CLU},
1084    contributer = {gjditchfield@plg},
1085    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1086                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1087    title       = {CLU Reference Manual},
[03d416f]1088    publisher   = {Springer},
1089    address     = {New York},
[e229c22]1090    year        = 1981,
1091    volume      = 114,
1092    series      = {Lecture Notes in Computer Science}
1093}
1094
1095@manual{Cobol14,
1096    keywords    = {ISO/IEC Cobol 14},
1097    contributer = {pabuhr@plg},
1098    key         = {Cobol14},
1099    title       = {Programming Languages -- {Cobol}},
[03d416f]1100    edition     = {2nd},
[e229c22]1101    organization= {International Standard ISO/IEC 1989:2014},
1102    publisher   = {International Standard Organization},
1103    address     = {http://www.iso.org},
1104    year        = 2014,
1105}
1106
1107@article{coagulation,
1108    keywords    = {register allocation, instruction selection, jello},
1109    contributer = {gjditchfield@plg},
1110    author      = {Michael Karr},
1111    title       = {Code Generation by Coagulation},
1112    journal     = sigplan,
1113    year        = 1984,
1114    month       = jun, volume = 19, number = 6, pages = {1-12},
1115    note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
1116    abstract    = {
1117        This paper describes a new approach to code-generation.  The
1118        central tenet is that there must be a more intimate coupling
1119        between register allocation and instruction selection than exists
1120        in present-day technology.  This is achieved by generating code in
1121        very small regions and gradually coalescing the part of the program
1122        that is ``compiled''.
1123    },
1124    comment     = {
1125        Imagine the program, including the subroutines, spread out over a
1126        table, with the compiler dropping Jello on the parts as they are
1127        compiled.  At first little drops appear in seemingly random places.
1128        These get bigger and combine with other drops to form growing
1129        globs.  When two globs meet, ripples will go out through each as
1130        they adjust to each other's presence, although the parts of the
1131        globs that formed first are less affected by the ripples.  When
1132        compilation is complete, there is one congealed mass.
1133    }
1134}
1135
1136@article{Soloway83,
1137    keywords    = {goto, structure programming},
1138    contributer = {pabuhr@plg},
1139    author      = {E. Soloway and J. Bonar and K. Ehrlich},
1140    title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
1141    journal     = cacm,
1142    month       = nov,
1143    year        = 1983,
1144    volume      = 26,
1145    number      = 11,
1146    pages       = {853-860},
1147}
1148
1149@book{sml:commentary,
1150    author      = {Robin Milner and Mads Tofte},
1151    title       = {Commentary on Standard {ML}},
1152    publisher   = {MIT Press},
[03d416f]1153    address     = {Cambridge},
[e229c22]1154    year        = 1991
1155}
1156
1157@article{Hyman66,
1158    keywords    = {mutual exclusion, software solution, incorrect},
1159    contributer = {pabuhr@plg},
1160    author      = {Harris Hyman},
1161    title       = {Comments on a Problem in Concurrent Programming Control},
1162    journal     = cacm,
1163    month       = jan,
1164    year        = 1966,
1165    volume      = 9,
1166    number      = 1,
1167    pages       = {45},
1168    note        = {Letter to the Editor}
1169}
1170
1171@inproceedings{clos,
1172    keywords    = {},
1173    contributer = {gjditchfield@plg},
1174    author      = {Linda G. DeMichiel and Richard P. Gabriel},
1175    title       = {The Common Lisp Object System: An Overview},
1176    booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
1177    year        = 1987,
1178    pages       = {151-170},
[03d416f]1179    publisher   = {Springer}
[e229c22]1180}
1181
1182@book{CommonLisp,
1183    keywords    = {common lisp},
1184    contributer = {pabuhr@plg},
[03d416f]1185    author      = {Guy Steele},
[e229c22]1186    title       = {COMMON LISP: The Language},
1187    publisher   = {Digital Press},
[03d416f]1188    address     = {New York},
[e229c22]1189    year        = 1984
1190}
1191
1192@article{CommonLoops,
1193    author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
1194    title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
1195    address     = {Portland, Oregon, U.S.A.},
1196    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
1197    year        = 1986,
1198    month       = sep,
1199    pages       = {17-29},
1200}
1201
1202@article{co-overview,
1203    keywords    = {CommonObjects, implementation, encapsulation},
1204    contributer = {gjditchfield@plg},
1205    author      = {Alan Snyder},
1206    title       = {CommonObjects: An Overview},
1207    journal     = sigplan,
1208    year        = 1986,
1209    month       = oct, volume = 21, number = 10, pages = {19-28},
1210    note        = {Object Oriented Programming Workshop}
1211}
1212
1213@article{CSP,
1214    keywords    = {CSP, concurrency},
1215    contributer = {pabuhr@plg},
1216    author      = {C. A. R. Hoare},
1217    title       = {Communicating Sequential Processes},
1218    journal     = cacm,
1219    month       = aug,
1220    year        = 1978,
1221    volume      = 21,
1222    number      = 8,
1223    pages       = {666-677}
1224}
1225
1226@book{Hoare85,
1227    author      = {C. A. R. Hoare},
1228    title       = {Communicating Sequential Processes},
1229    year        = 1985,
1230    isbn        = {0-13-153271-5},
[03d416f]1231    publisher   = {Prentice-Hall},
[e229c22]1232    address     = {Upper Saddle River, NJ, USA},
1233    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
1234}
1235
1236@article{Hansen72a,
1237    keywords    = {monitors, automatic signal},
1238    contributer = {pabuhr@plg},
1239    author      = {Per {Brinch Hansen}},
1240    title       = {A Comparison of Two Synchronizing Concepts},
1241    journal     = acta,
1242    volume      = 1,
1243    year        = 1972,
1244    pages       = {190-199},
1245}
1246
1247@book{Aho06,
1248    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
1249    title       = {Compilers: Principles, Techniques, and Tools},
[03d416f]1250    edition     = {2nd},
[e229c22]1251    year        = {2006},
[03d416f]1252    publisher   = {Addison-Wesley Longman Publishing},
[e229c22]1253    address     = {Boston, MA, USA},
1254}
1255
1256@article{Bacon94,
1257    keywords    = {parallelizing compiler},
1258    contributer = {pabuhr@plg},
1259    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
[03d416f]1260    title       = {Compiler Transformations for High-Performance Com\-puting},
[e229c22]1261    journal     = acmcs,
1262    volume      = 26,
1263    number      = 4,
1264    month       = dec,
1265    year        = 1994,
1266    pages       = {345-420},
1267}
1268
1269@inproceedings{Berger01,
1270    author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
1271    title       = {Composing High-Performance Memory Allocators},
1272    booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
1273    pages       = {114-124},
1274    year        = 2001,
1275    url         = {http://citeseer.ist.psu.edu/berger01composing.html}
1276} 
1277
1278@article{Andrews83,
1279    keywords    = {general concurrency},
1280    contributer = {pabuhr@plg},
1281    author      = {Gregory R. Andrews and Fred B. Schneider},
1282    title       = {Concepts and Notations for Concurrent Programming},
1283    journal     = acmcs,
1284    volume      = 15,
1285    number      = 1,
1286    month       = mar,
1287    year        = 1983,
1288    pages       = {3-43},
1289}
1290
1291@mastersthesis{Mok97,
1292    author      = {Wing Yeung Russell Mok},
1293    title       = {Concurrent Abnormal Event Handling Mechanisms},
1294    school      = {University of Waterloo},
1295    year        = 1997,
1296    month       = sep,
1297    address     = {Waterloo, Ontario, Canada, N2L 3G1},
[03d416f]1298    note        = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
[e229c22]1299}
1300
1301@article{Gehani86,
1302    keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
1303    contributer = {dgharriss@plg},
1304    author      = {N. H. Gehani and W. D. Roome},
1305    title       = {{Concurrent C}},
1306    journal     = spe,
1307    volume      = 16,
1308    number      = 9,
1309    month       = sep,
1310    year        = 1986,
1311    pages       = {821-844},
1312    abstract    = {
1313        Our objective is to enhance C so that it can be used to write
1314        concurrent programs that can run efficiently on both single computers
1315        and multicomputers.  Our concurrent programming extensions to C are
1316        based on the {\it rendezvous\/} concept.  These extensions include
1317        mechanisms for the declaration and creation of processes, for process
1318        synchronization and interaction, for process termination and abortion.
1319        We give a rationale for our decisions and compare Concurrent C
1320        extensions with the concurrent programming facilities in Ada.
1321        Concurrent C has been implemented on the UNIX system running on a
1322        single processor.  A distributed version of Concurrent C is being
1323        implemented.
1324   },
1325   comment      = {
1326        Select with guarded and screened accepts.  Typed processes.
1327        Process-valued expressions and process variables.  Processes have
1328        execution priority: Create {\em process-type-name}(args) [with
1329        priority(p)],
1330        and the priority can be changed on the fly.  Complicated guard/
1331        screen structure on accept: accept {\em transaction}(param names)
1332        [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
1333        appear in functions!  Can specify timeouts on transaction calls.
1334        Code examples: buffer process, dining philosophers, lock manager.
1335        Section on diffs between Concurrent C and Ada.
1336   }
1337}
1338
1339@article{ConcurrentC++,
1340    keywords    = {concurrency, C++},
1341    contributer = {pabuhr@plg},
1342    author      = {N. H. Gehani and W. D. Roome},
1343    title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
1344    journal     = spe,
1345    month       = dec,
1346    year        = 1988,
1347    volume      = 18,
1348    number      = 12,
1349    pages       = {1157-1177}
1350}
1351
1352@article{Courtois71,
1353    keywords    = {reader and writer, p and v},
1354    contributer = {pabuhr@plg},
1355    author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
1356    title       = {Concurrent Control with Readers and Writers},
1357    journal     = cacm,
1358    volume      = 14,
1359    number      = 10,
1360    month       = oct,
1361    year        = 1971,
1362    pages       = {667-668},
1363    annote      = {
1364                Many errors in the two solutions.
1365    }
1366}
1367
1368@incollection{Reppy93,
1369    keywords    = {ML, concurrency, continuation passing},
1370    contributer = {pabuhr@plg},
1371    author      = {John H. Reppy},
1372    title       = {Concurrent {ML}: Design, Application and Semantics},
1373    booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
1374    editor      = {P. E. Lauer},
1375    pages       = {165-198},
[03d416f]1376    publisher   = {Springer},
[e229c22]1377    address     = {Berlin, DE},
1378    year        = 1993,
1379    ISBN        = {3-540-56883-2},
1380    abstract    = {
1381        Concurrent ML (CML) is a high-level language for concurrent
1382        programming. It is an extension of Standard ML (SML) and is implemented
1383        on top of Standard ML of New Jersey (SML/NJ). CML is a practical
1384        language and is being used to build real systems. It demonstrates that
1385        one need not sacrifice high-level notation in order to have good
1386        performance. CML is also a well-defined language. In the tradition of
1387        SML, it has a formal semantics and its type-soundness has been
1388        proven.},
1389    note        = {
1390        Proceedings of International Lecture Series 1991-92, McMaster
1391        UniversityLecture Notes in Computer Science 693.},
1392}
1393
1394@article{BLASE-2,
1395    keywords    = {concurrency, BLASE-2},
1396    contributer = {pabuhr@plg},
1397    author      = {Piyush Mehrotra and John Van Rosendale},
1398    title       = {Concurrent Object Access in BLASE~2},
1399    journal     = sigplan,
1400    volume      = 24,
1401    number      = 4,
1402    month       = apr,
1403    year        = 1989,
1404    pages       = {40-42},
1405    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
1406                   Sept. 26--27, 1988, San Diego, California, U.S.A},
1407}
1408
1409@techreport{Kafura88,
1410    keywords    = {objects, concurrency},
1411    contributer = {pabuhr@plg},
1412    author      = {Dennis Kafura},
1413    title       = {Concurrent Object-Oriented Real-Time Systems Research},
1414    institution = {Department of Computer Science, Virginia Polytechnic},
1415    number      = {TR 88-47},
1416    year        = 1988
1417}
1418
1419@article{Buhr92a,
1420    keywords    = {C++, concurrency, light-weight process, shared memory},
1421    contributer = {pabuhr@plg},
1422    author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
1423    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1424    journal     = spe,
1425    volume      = 22,
1426    number      = 2,
1427    month       = feb,
1428    year        = 1992,
1429    pages       = {137-172},
1430}
1431
1432@techreport{uC++,
1433    keywords    = {C++, concurrency, light-weight process, shared memory},
1434    contributer = {pabuhr@plg},
1435    author      = {Peter A. Buhr},
1436    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 6.1.0},
1437    institution = {School of Computer Science, University of Waterloo},
1438    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1439    month       = jul,
1440    year        = 2015,
[03d416f]1441    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}}},
[e229c22]1442}
1443
1444@book{Burns93,
1445    keywords    = {concurrency, Pascal},
1446    contributer = {pabuhr@plg},
1447    author      = {Alan Burns and Geoff Davies},
1448    title       = {Concurrent Programming},
[03d416f]1449    publisher   = {Addison Wesley Longman},
[e229c22]1450    year        = 1993,
1451}
1452
1453@article{Hansen73a,
1454    keywords    = {monitors},
1455    contributer = {pabuhr@plg},
1456    author      = {Per {Brinch Hansen}},
1457    title       = {Concurrent Programming Concepts},
1458    journal     = spe,
1459    month       = dec,
1460    year        = 1973,
1461    volume      = 5,
1462    number      = 4,
1463    pages       = {223-245},
1464}
1465
1466@book{Lea97,
1467    keywords    = {concurrency, Java},
1468    contributer = {pabuhr@plg},
1469    author      = {Doug Lea},
1470    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1471    publisher   = {Addison-Wesley},
[03d416f]1472    address     = {Boston},
[e229c22]1473    year        = 1997,
[03d416f]1474    edition     = {1st},
[e229c22]1475}
1476
1477@book{Hartley98,
1478    keywords    = {concurrency, Java},
1479    contributer = {pabuhr@plg},
1480    author      = {Stephen J. Hartley},
1481    title       = {Concurrent Programming: The {J}ava Programming Language},
1482    publisher   = {Oxford University Press},
1483    year        = 1998,
[03d416f]1484    edition     = {1st},
[e229c22]1485}
1486
1487@book{Lea00,
1488    keywords    = {concurrency, Java},
1489    contributer = {pabuhr@plg},
1490    author      = {Doug Lea},
1491    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1492    publisher   = {Addison-Wesley},
[03d416f]1493    address     = {Boston},
[e229c22]1494    year        = 2000,
[03d416f]1495    edition     = {2nd},
[e229c22]1496}
1497
1498@book{ConcurrentC,
1499    keywords    = {concurrency, C},
1500    contributer = {pabuhr@plg},
1501    author      = {N. H. Gehani and W. D. Roome},
1502    title       = {The {Concurrent C} Programming Language},
[03d416f]1503    publisher   = {Silicon Press},
1504    address     = {Summit},
[e229c22]1505    year        = 1989,
1506}
1507
1508@book{Andrews91:book,
1509    keywords    = {concurrency},
1510    contributer = {pabuhr@plg},
1511    author      = {Gregory R. Andrews},
1512    title       = {Concurrent Programming: Principles and Practice},
[03d416f]1513    publisher   = {Benjamin/Cummings Publish\-ing},
1514    address     = {Redwood City},
[e229c22]1515    year        = 1991,
1516}
1517
1518@article{Buhr05a,
1519    keywords    = {concurrency, myths},
1520    contributer = {pabuhr@plg},
1521    author      = {Peter A. Buhr and Ashif S. Harji},
1522    title       = {Concurrent Urban Legends},
[03d416f]1523    journal     = ccpe,
[e229c22]1524    month       = aug,
1525    year        = 2005,
1526    volume      = 17,
1527    number      = 9,
1528    pages       = {1133-1172},
1529}
1530
1531@techreport{Buhr90,
1532    keywords    = {objects, concurrency},
1533    contributer = {gjditchfield@plg},
1534    author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke}, 
1535    title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1536    institution = {Department of Computer Science, University of Waterloo},
1537    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1538    number      = {CS-90-18},
1539    month       = may,
1540    year        = 1990
1541}
1542
1543@book{Burns98,
1544    keywords    = {concurrency, Ada},
1545    author      = {Alan Burns and Andy Wellings},
1546    title       = {Concurrency in {Ada}},
1547    publisher   = {Cambridge University Press},
1548    year        = 1998,
[03d416f]1549    edition     = {2nd},
[e229c22]1550}
1551
1552@book{Bernstein93,
1553    keywords    = {concurrency},
1554    author      = {Arthur J. Bernstein and Philip M. Lewis},
1555    title       = {Concurrency in Programming and Database Systems},
1556    publisher   = {Jones and Bartlett},
1557    year        = 1993,
1558}
1559
1560@inproceedings{Pitman01,
1561    keywords    = {LISP, exception handling},
1562    contributer = {pabuhr@plg},
1563    author      = {Kent M. Pitman},
1564    title       = {Condition Handling in the Lisp Language Family},
1565    booktitle   = {Exception Handling},
[03d416f]1566    publisher   = {Springer},
[e229c22]1567    volume      = 2022,
1568    series      = {LNCS},
1569    year        = 2001,
1570    pages       = {39-59}
1571}
1572
1573@inbook{enhancement,
1574    keywords    = {bounded polymorphism, Comandos},
1575    contributer = {gjditchfield@plg},
1576    author      = {Chris Horn},
1577    title       = {Conformace, Genericity, Inheritance and Enhancement},
1578    pages       = {223-233},
[03d416f]1579    publisher   = {Springer},
[e229c22]1580    year        = 1987,
1581    volume      = 276,
1582    series      = "Lecture Notes in Computer Science",
1583    note        = "ECOOP '87 European Conference on Object-Oriented Programming",
1584    summary     = {
1585        Considers effect of conformance on Meyer's conclusions in
1586        \cite{polymorphism}.
1587
1588        Implementing a swap function as a member of a type {\cd Swappable}
1589        with {\cd in out Top} parameters doesn't work, because conformance
1590        requires arguments to be of type {\cd Top}.
1591
1592        An enhancive type has a type parameter, bounded by some type, and
1593        defines members.  Types conforming to the bound can be passed as
1594        arguments to create types with the extra members.  The signature of
1595        the enhanced type is based on the signature of the argument, not the
1596        bound, as if enhancive types were macros.  Hence enhanced types do not
1597        necessarily conform to each other.  Types conforming to the bound
1598        conform to enhanced types, which allows new functions to be applied
1599        to old types.
1600
1601        Enhancive types are not generic types.  If the argument is omitted,
1602        the bound is used as a default.  Assignment of enhanced types to
1603        default-enhanced types is allowed (enhanced types conform to the
1604        default-enhanced type).  This is (probably) statically type-safe,
1605        because arguments must conform to the bound, and the new members
1606        only use operations defined for the bound.
1607
1608        With facilities for member renaming and deletion, enhancive types
1609        provide the equivalent of constrained generic types.
1610    }
1611}
1612
1613@phdthesis{Ditchfield92,
1614    keywords    = {C, parametric polymorphism, overloading},
1615    contributer = {pabuhr@plg},
1616    author      = {Glen Jeffrey Ditchfield},
1617    title       = {Contextual Polymorphism},
1618    school      = {Department of Computer Science, University of Waterloo},
1619    year        = 1992,
1620    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1621    note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
1622}
1623
1624@inproceedings{frameworks:HHG90,
1625    keywords    = {formal},
1626    contributer = {pabuhr@plg},
1627    author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
1628    title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
1629    booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
1630    year        = 1990,
1631    pages       = {169-180},
1632}
1633
1634@article{Wand80,
1635    keywords    = {concurrency, continuation},
1636    contributer = {pabuhr@plg},
1637    author      = {Mitchell Wand},
1638    title       = {Continuation-Based Multiprocessing},
1639    publisher   = {The Lisp Conference},
1640    journal     = {Conference Record of the 1980 Lisp Conference},
1641    pages       = {19-28},
1642    year        = 1980,
1643}
1644
1645@article{Hieb90,
1646    keywords    = {continuations, concurrency},
1647    contributer = {pabuhr@plg},
1648    author      = {Robert Hieb and R. Kent Dybvig},
1649    title       = {Continuations and Concurrency},
1650    journal     = sigplan,
1651    volume      = 25,
1652    number      = 3,
1653    month       = mar,
1654    year        = 1990,
1655    pages       = {128-136},
1656    note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
1657                   March. 14--16, 1990, Seattle, Washington, U.S.A},
1658}
1659
1660@inproceedings{Haynes84,
1661    keywords    = {continuations, coroutines, Scheme},
1662    contributer = {pabuhr@plg},
1663    author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
1664    title       = {Continuations and Coroutines},
1665    booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
1666    organization= {Association for Computing Machinery},
1667    month       = aug,
1668    year        = 1984,
1669    pages       = {293-298},
1670    abstract    = {
1671        The power of first class continuations is demonstrated by implementing
1672        a variety of coroutine mechanisms using only continuations and
1673        functional abstraction. The importance of general abstraction
1674        mechanisms such as continuations is discussed.},
1675}
1676
1677@inproceedings{Zahn74,
1678    keywords    = {goto, structured programming},
1679    contributer = {pabuhr@plg},
1680    author      = {C. T. Zahn},
1681    title       = {Control Statement for Natural Top-down Structured Programming},
1682    booktitle   = {Symposium on Programming Languages},
1683    address     = {Paris, France},
1684    year        = 1974,
1685}
1686
[ff3fc93]1687@unpublished{Ditchfield:conversions,
[03d416f]1688    contributer = {a3moss@uwaterloo.ca},
1689    author      = {Glen Ditchfield},
1690    title       = {Conversions for {Cforall}},
1691    note        = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
1692    month       = {Nov},
1693    year        = {2002},
1694    urldate     = {28 July 2016},
[ff3fc93]1695}
1696
[e229c22]1697@techreport{Dijkstra65,
1698    keywords    = {concurrency, Dekker's algorithm, semaphores},
1699    contributer = {pabuhr@plg},
1700    author      = {Edsger W. Dijkstra},
1701    title       = {Cooperating Sequential Processes},
1702    institution = {Technological University},
1703    address     = {Eindhoven, Netherlands},
1704    year        = 1965,
1705    note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
1706}
1707
1708@book{Marlin80,
1709    keywords    = {coroutines},
1710    contributer = {pabuhr@plg},
1711    author      = {Christopher D. Marlin},
1712    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
[03d416f]1713    publisher   = {Springer},
1714    address     = {New York},
[e229c22]1715    year        = 1980,
1716    volume      = 95,
1717    series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
1718}
1719 
1720@article{Wang71,
1721    keywords    = {coroutines},
1722    contributer = {pabuhr@plg},
1723    author      = {Arne Wang and Ole-Johan Dahl},
1724    title       = {Coroutine Sequencing in a Block Structured Environment},
1725    journal     = "BIT",
1726    volume      = 11,
1727    month       = nov,
1728    year        = 1971,
1729    pages       = {425-449},
1730}
1731 
1732@article{Castagna95,
1733    keywords    = {type-systems, covariance, contravariance},
1734    contributer = {pabuhr@plg},
1735    author      = {Giuseppe Castagna},
1736    title       = {Covariance and Contravariance : Conflict without a Cause},
1737    journal     = toplas,
1738    volume      = 17,
1739    number      = 3,
1740    month       = may,
1741    year        = 1995,
1742    pages       = {341-447},
1743}
1744
1745@book{Fischer88,
1746    keywords    = {compiler construction},
1747    author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
1748    title       = {Crafting a Compiler},
1749    publisher   = {Benjamin Cummings},
1750    year        = 1991,
1751}
1752
[03d416f]1753@article{Moore75,
1754    keywords    = {approximation methods, integrated circuits},
1755    contributer = {pabuhr@plg},
1756    author      = {Gordon E. Moore},
1757    title       = {Progress in Digital Integrated Electronics},
1758    journal     = {Technical Digest, International Electron Devices Meeting, IEEE},
1759    year        = 1975,
1760    pages       = {11-13},
1761}
1762
[e229c22]1763@inproceedings{Jim02,
1764    keywords    = {C dialect, parametric polymorphic, safe memory allocation},
1765    contributer = {pabuhr@plg},
1766    author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
1767    title       = {{C}yclone: A Safe Dialect of {C}},
1768    booktitle   = {USENIX Annual Technical Conference},
1769    organization= {USENIX Association},
1770    address     = {Monterey, California, U.S.A.},
1771    month       = jun,
1772    year        = 2002,
1773    pages       = {275-288},
1774}
1775
1776% D
1777
1778@manual{D,
1779    keywords    = {D programming language},
1780    contributer = {pabuhr@plg},
1781    title       = {{D} Programming Language},
1782    author      = {Walter Bright and Andrei Alexandrescu},
1783    organization= {Digital Mars},
1784    year        = 2016,
1785    note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
1786}
1787
1788@techreport{Cui90,
1789    keywords    = {exception handling},
1790    contributer = {pabuhr@plg},
1791    author      = {Qian Cui},
1792    title       = {Data-Oriented Exception Handling},
1793    institution = {Department of Computer Science, University of Maryland},
1794    address     = {College Park, Maryland, U.S.A., 20742},
1795    number      = {CS-TR-2384},
1796    month       = jan,
1797    year        = 1990,
1798}
1799
1800@article{Cui92,
1801    contributer = {rkrische@plg},
1802    author      = {Qian Cui and John Gannon},
1803    title       = {Data-oriented Exception Handling},
1804    journal     = {IEEE Transactions on Software Engineering},
1805    month       = may,
1806    year        = 1992,
1807    volume      = 18,
1808    number      = 5,
1809    pages       = {393-401},
1810}
1811
1812@manual{SIMULA87,
1813    keywords    = {Simula standard},
1814    contributer = {gjditchfield@plg},
1815    title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
1816    organization= {Standardiseringskommissionen i Sverige},
1817    note        = {Svensk Standard SS 63 61 14},
1818    year        = 1987,
1819    abstract    = {
1820        Standard for the programming language SIMULA.  Written in English.
1821    }
1822}
1823
1824@article{Liskov75,
1825    keywords    = {abstract data types, encapsulation, verification},
1826    contributer = {gjditchfield@plg},
1827    author      = {Barbara H. Liskov},
1828    title       = {Data Types and Program Correctness},
1829    journal     = sigplan,
1830    year        = 1975,
1831    month       = jul,
1832    volume      = 10,
1833    number      = 7,
1834    pages       = {16-17},
1835    summary     = {
1836        Type definitions should contain the implementation of the type and
1837        its operations.  The grouping makes programs simpler and more
1838        understandable.  Encapsulating the definition aids verification and
1839        forces a precise specification of the interface.
1840    }
1841}
1842
1843@article{dtav,
1844    keywords    = {Russell, types},
1845    contributer = {gjditchfield@plg},
1846    author      = {James Donahue and Alan Demers},
1847    title       = {Data Types are Values},
1848    journal     = toplas,
1849    month       = jul,
1850    year        = 1985,
1851    volume      = 7,
1852    number      = 3,
1853    pages       = {426-445},
1854    comment     = {
1855        Data types are sets of operations providing interpretations of
1856        values from a meaningless, typeless universal value space.  Types
1857        and operations are also contained in this value space.
1858
1859        Functions returning types replace generic types.
1860
1861        Polymorphic functions have type parameters.  Evaluation is not
1862        macro expansion:
1863        \begin{verbatim}
1864            R == func [n:val integer; T:type[]] val integer
1865                {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
1866        \end{verbatim}
1867    }
1868}
1869
1870@article{Holt72,
1871    keywords    = {concurrency, deadlock},
1872    contributer = {pabuhr@plg},
1873    author      = {Richard C. Holt},
1874    title       = {Some Deadlock Properties of Computer Systems},
1875    journal     = acmcs,
1876    volume      = 4,
1877    number      = 3,
1878    month       = sep,
1879    year        = 1972,
1880    pages       = {179-196},
1881}
1882
1883@misc{debug-malloc,
1884    keywords    = {memory allocation debugger},
1885    contributer = {gjditchfield@plg},
1886    author      = {Conor P. Cahill},
1887    title       = {debug\_malloc},
1888    howpublished= {comp.sources.unix, volume 22, issue 112},
1889    abstract    = {
1890        This package is a collection of routines which are a drop-in
1891        replacement for the malloc(3), memory(3), string(3), and bstring(3)
1892        library functions.
1893    }
1894}
1895
1896@book{sml,
1897    keywords    = {},
1898    contributer = {pabuhr@plg},
1899    author      = {Robin Milner and Mads Tofte and Robert Harper},
1900    title       = {The Definition of Standard {ML}},
1901    publisher   = {MIT Press},
[03d416f]1902    address     = {Cambridge},
[e229c22]1903    year        = 1990
1904}
1905
1906@techreport{sml:old,
1907    keywords    = {},
1908    contributer = {gjditchfield@plg},
1909    author      = {Robert Harper and Robin Milner and Mads Tofte},
1910    title       = {The Definition of Standard {ML}, Version 2},
1911    institution = {Department of Computer Science, University of Edinburgh},
1912    year        = 1988,
1913    address     = {The King's Buildings, Edinburgh EH9 3JZ},
1914    type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
1915}
1916
1917@inproceedings{Reynolds72,
1918    keywords    = {continuation},
1919    contributer = {pabuhr@plg},
1920    author      = {John Reynolds},
1921    title       = {Definitional Interpreters for Higher Order Programming Languages},
1922    booktitle   = {ACM Conference Proceedings},
1923    organization= {ACM},
1924    year        = 1972,
1925    pages       = {717-740}
1926}
1927
1928@article{Buhr16,
1929    keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
1930    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
1931    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
[03d416f]1932    journal     = ccpe,
[e229c22]1933    volume      = 28,
1934    number      = 1,
1935    pages       = {144-165},
1936    month       = jan,
1937    year        = 2016,
1938}
1939
1940@misc{steelman,
1941    keywords    = {Ada},
1942    contributer = {gjditchfied@plg},
1943    author      = {High Order Language Working Group},
1944    title       = {Department of Defense Requirements for High Order Computer Programming Languages},
1945    month       = jun, year = 1978,
1946    note        = {Reprinted in \cite{pldesign}.}
1947}
1948
1949@incollection{Tsay98,
1950    keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
1951    author      = {Yih-Kuen Tsay},
1952    title       = {Deriving a scalable algorithm for mutual exclusion},
1953    booktitle   = {Distributed Computing},
1954    editor      = {Shay Kutten},
1955    volume      = {1499},
1956    series      = {LNCS},
1957    publisher   = {Springer},
1958    address     = {Berlin Heidelberg},
1959    year        = {1998},
1960    pages       = {393-407},
1961}
1962
1963@article{Conway63,
1964    keywords    = {coroutine, original},
1965    contributer = {pabuhr@plg},
1966    author      = {Melvin E. Conway},
1967    title       = {Design of a Separable Transition-Diagram Compiler},
1968    journal     = cacm,
1969    month       = jul,
1970    year        = 1963,
1971    volume      = 6,
1972    number      = 7,
1973    pages       = {396-408},
1974}
1975
1976@book{Stroustrup94,
1977    keywords    = {C++},
1978    contributor = {wyrmok@plg},
1979    author      = {Bjarne Stroustrup},
1980    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1981    publisher   = {Addison-Wesley},
[03d416f]1982    address     = {Boston},
[e229c22]1983    year        = 1994
1984}
1985
1986@inproceedings{st:concurrent,
1987    keywords    = {concurrency, Smalltalk, futures},
1988    contributer = {gjditchfield@plg},
1989    author      = {Yasuhiko Yokote and Mario Tokoro},
1990    title       = {The Design and Implementation of {ConcurrentSmalltalk}},
1991    crossref    = "OOPSLA86",
1992    pages       = {331-340},
1993    comment     = {
1994        Objects are ordinary Smalltalk objects or ``atomic'' objects, which
1995        process messages one at a time in FIFO order.  Asynchronous method
1996        calls are made by appending ``\&'' at the call site.  The sender does
1997        not wait for a reply.  If the method returns a value, it
1998        (immediately?) returns a CBox object, which is like a future.  The
1999        sender can send the ``receive'' message to the CBox, which blocks
2000        until the CBox contains a value.
2001
2002        A method can execute the ``\verb|^|'' statement to return an object
2003        and terminate, or it can execute ``\verb|^^|'' to return an object
2004        and continue execution.  If ``\verb|^^foo|'' is executed after
2005        ``\verb|^^bar|'', foo is discarded, since bar has already been
2006        returned.
2007
2008        The article does not say whether asynchronous messages can be sent
2009        to ordinary objects, or whether ordinary messages can be sent to
2010        atomic objects.
2011    }
2012}
2013
2014@inproceedings{Ichbiah83,
2015    keywords    = {Ada, packages, generics},
2016    contributer = {gjditchfield@plg},
2017    author      = {Jean D. Ichbiah},
2018    title       = {On the Design of {Ada}},
2019    booktitle   = {Information Processing 83},
2020    year        = 1983,
2021    month       = sep, pages = {1-10},
2022    editor      = {R. E. A. Mason},
2023    organization= {IFIP},
2024    publisher = {North-Holland},
2025    summary = {
2026        Packages group related declarations or subprograms, and encapsulate
2027        data types.  Separate interfaces and bodies promotes information
2028        hiding by removing the need to scan the body, allows the body to be
2029        confidential, and provides a better specification of the contract
2030        between client and implementor.  Generics are an efficient way to
2031        factor out parts of similar definitions.
2032    }
2033}
2034
2035@book{Motet96,
2036    keywords    = {Ada, exception handling},
2037    contributer = {wyrmok@plg},
2038    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
2039    title       = {Design of Dependable {A}da Software},
[03d416f]2040    publisher   = {Prentice-Hall},
2041    address     = {Englewood Cliffs},
[e229c22]2042    year        = 1996,
2043}
2044 
2045@article{Richardson93,
2046    keywords    = {C++, persistence, database},
2047    contributer = {pabuhr@plg},
2048    author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
2049    title       = {The Design of the {E} Programming Language},
2050    journal     = toplas,
2051    month       = jul,
2052    year        = 1993,
2053    volume      = 15,
2054    number      = 3,
2055    pages       = {494-534},
2056}
2057
2058@article{Hansen81b,
2059    keywords    = {concurrency, monitor, critical region},
2060    contributer = {pabuhr@plg},
2061    author      = {Per {Brinch Hansen}},
2062    title       = {The Design of {E}dison},
2063    journal     = spe,
2064    volume      = 11,
2065    number      = 4,
2066    month       = apr,
2067    year        = 1981,
2068    pages       = {363-396},
2069}
2070
2071@book{Gamma95,
2072    keywords    = {design patterns},
2073    author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
2074    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
2075    publisher   = {Addison-Wesley},
[03d416f]2076    address     = {Boston},
[e229c22]2077    year        = 1995,
2078    series      = {Professional Computing Series},
2079}
2080
2081@inproceedings{Wirth74,
2082    keywords    = {},
2083    contributer = {gjditchfield@plg},
2084    author      = {Niklaus Wirth},
2085    title       = {On the Design of Programming Languages},
2086    booktitle   = {Information Processing 74},
2087    year        = 1974,
2088    pages       = {386-393},
2089    publisher   = {North Holland Publishing Company},
2090    note        = {Reprinted in \cite{pldesign}.}
2091}
2092
2093@techreport{forceone,
2094    keywords    = {Parametric polymorphism, ForceOne},
2095    contributer = {gjditchfield@plg},
2096    author      = {Andrew K. Wright},
2097    title       = {Design of the Programming Language {ForceOne}},
2098    institution = {University of Waterloo},
2099    month       = feb, year = 1987,
2100    number      = {CS-87-10}
2101}
2102
2103@techreport{x-2,
2104    keywords    = {object based},
2105    contributer = {gjditchfield@plg},
2106    author      = {David W. Sandberg},
2107    title       = {The Design of the Programming Language {X-2}},
2108    institution = {Oregon State University},
2109    year        = 1985,
2110    address     = {Department of Computer Science, Corvallis, Oregon, 97331},
2111    number      = {85-60-1}
2112}
2113
2114@article{design,
2115    keywords    = {Smalltalk, designing classes},
2116    contributer = {gjditchfield@plg},
2117    author      = {Ralph E. Johnson and Brian Foote},
2118    title       = {Designing Reusable Classes},
[03d416f]2119    journal     = joop,
[e229c22]2120    year        = 1988,
2121    volume      = 1, number = 2, pages = {22-35},
2122    comment     = {
2123        Abstract classes represent standard protocols.  ``It is better to
2124        inherit from an abstract class than from a concrete class''.
2125        Frameworks are collections of related abstract classes.  Successful
2126        abstractions are discovered, not designed.
2127
2128        Protocols: ``If an operation X is implemented by performing a
2129        similar operation on the components of the receiver, then that
2130        operation should also be named X''.  Eliminate case analysis by
2131        creating classes with the same operations.  Create classes to
2132        represent bundles of parameters.  Shrink methods larger than 30
2133        lines.
2134
2135        Hierarchies should be deep and narrow.  Subclasses should be
2136        specializations.
2137
2138        Frameworks: split large classes.  Factor implementation differences
2139        into subcomponents.  Separate methods that do not share instance
2140        variables into components that reflect the different views of the
2141        object.  Send messages to components, not self.  Reduce implicit
2142        parameter passing through instance variables.
2143    }
2144}
2145
2146@article{dim:c++,
2147    keywords    = {Dimensional Analysis, C++},
2148    contributer = {gjditchfield@plg},
2149    author      = {Robert F. Cmelic and Narain Gehani},
2150    title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2151    journal     = {IEEE Software},
2152    month       = may, year = 1988,
2153    volume      = 5, number = 3, pages = {21-29}
2154}
2155
2156@article{Wegner87,
2157    contributer = {pabuhr@plg},
2158    author      = {Peter Wegner},
2159    title       = {Dimensions of Object--Based Language Design},
2160    journal     = sigplan,
2161    volume      = 22,
2162    number      = 12,
2163    month       = dec,
2164    year        = 1987,
2165    pages       = {168-182},
2166    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
2167}
2168
2169@book{Dijkstra76,
2170    keywords    = {concurrent assignment},
2171    author      = {E. W. Dijkstra},
2172    title       = {A Discipline of Programming},
2173    publisher   = {Prentice-Hall},
[03d416f]2174    address     = {Englewood Cliffs},
[e229c22]2175    year        = 1976,
2176}
2177
2178@book{Lynch96,
2179    keywords    = {distributed algorithms},
2180    author      = {Nancy A. Lynch},
2181    title       = {Distributed Algorithms},
2182    publisher   = {Morgan Kaufmann},
2183    year        = 1996,
2184}
2185
2186@book{Tanenbaum02,
2187    keywords    = {distributed programming},
2188    author      = {Andrew S. Tanenbaum and Maarten van Steen},
2189    title       = {Distributed Systems: Principles and Paradigms},
2190    publisher   = {Prentice-Hall},
[03d416f]2191    address     = {Englewood Cliffs},
[e229c22]2192    year        = 2002,
2193}
2194
2195@inproceedings{Cargill90,
2196    keywords    = {concurrency},
2197    contributer = {pabuhr@plg},
2198    author      = {Tom A. Cargill},
2199    title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
2200    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
2201    organization= {USENIX Association},
2202    address     = {San Francisco, California, U.S.A.},
2203    month       = apr,
2204    year        = 1990,
2205    pages       = {315-323}
2206}
2207
2208@unpublished{Duff83,
2209    keywords    = {C, switch statement, control flow},
2210    contributer = {pabuhr@plg},
2211    author      = {Tom Duff},
2212    title       = {Duff's Device},
2213    month       = nov,
2214    year        = 1983,
2215    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
2216}
2217
2218@manual{dwarf2,
2219    keywords    = {Debugging DWARF2 specification},
2220    contributer = {rkrische@plg},
2221    title       = {DWARF Debugging Information Format},
2222    organization= {Unix International Programming Languages SIG},
2223    publisher   = {Unix International},
2224    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
2225    year        = {1993}
2226}
2227
2228@article{classicada,
2229    keywords    = {Classic Ada},
2230    contributer = {gjditchfield@plg},
2231    author      = {Cameron M. Donaldson},
2232    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
2233    journal     = {Journal of Pascal, {Ada} \& Modula-2},
2234    year        = 1990,
2235    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
2236    comment     = {
2237        Classes are like packages: they can contain subprograms, types,
2238        variables, generic instantiations, and exceptions.  They can also
2239        contain class methods, instance methods, and instance variables,
2240        and define creation and initialization subprograms or methods for
2241        instances.  Single inheritance provides inheritance of
2242        implementations. Dynamic binding is done with a {\em send}
2243        statement that invokes a class or instance method.  A preprocessor
2244        converts Classic Ada to normal Ada.
2245    }
2246}
2247
2248@article{Costanza03,
2249    keywords    = {dynamic call},
2250    contributer = {pabuhr@plg},
2251    author      = {Pascal Costanza},
2252    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
2253    journal     = sigplan,
2254    volume      = 38,
2255    number      = 8,
2256    month       = aug,
2257    year        = 2003,
2258    pages       = {29-35},
2259}
2260
2261% E
2262
2263@inproceedings{Wegbreit71,
2264    keywords    = {polymorphism},
2265    contributer = {pabuhr@plg},
2266    author      = {B. Wegbreit},
2267    title       = {The ECL Programming System},
2268    booktitle   = {Proceedings of AFIPS 1971 FJCC},
2269    publisher   = {AFIPS Press, vol. 39},
2270    address     = {Montvale, New Jersey, U.S.A},
2271    year        = 1971,
2272    pages       = {253-262},
2273}
2274
2275@manual{JavaScript,
2276    keywords    = {JavaScript},
2277    contributer = {pabuhr},
2278    title       = {ECMAScript 2015 Language Specification {JavaScript}},
2279    organization= {ECAM International},
2280    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
2281    month       = jun,
2282    year        = 2015,
2283    note        = {6th Edition}
2284}
2285
2286@inproceedings{Peterson77,
2287    keywords    = {N-thread software-solution mutual exclusion},
2288    contributer = {pabuhr@plg},
2289    author      = {Gary L. Peterson and Michael J. Fischer},
2290    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
2291    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
2292    series      = {STOC '77},
2293    year        = 1977,
2294    location    = {Boulder, Colorado, USA},
2295    pages       = {91--97},
2296    numpages    = {7},
2297    publisher   = {ACM},
2298    address     = {New York, NY, USA},
2299}
2300
2301@article{Hansen81a,
2302    keywords    = {concurrency, monitor, critical region},
2303    contributer = {pabuhr@plg},
2304    author      = {Per {Brinch Hansen}},
2305    title       = {{E}dison---a Multiprocessor Language},
2306    journal     = spe,
2307    volume      = 11,
2308    number      = 4,
2309    month       = apr,
2310    year        = {1981},
2311    pages       = {325-361},
2312}
2313
2314@book{Eiffel,
2315    keywords    = {Eiffel},
2316    contributer = {pabuhr@plg},
2317    author      = {Bertrand Meyer},
2318    title       = {Eiffel: The Language},
2319    publisher   = {Prentice-Hall},
[03d416f]2320    address     = {Englewood Cliffs},
[e229c22]2321    year        = 1992,
[03d416f]2322    series      = {Prentice-Hall Object-Oriented Series},
[e229c22]2323}
2324
2325@article{WS:overload,
2326    keywords    = {compilation},
2327    contributer = {gjditchfield@plg},
2328    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
2329    title       = {Efficient Implementation of the {Ada} Overloading Rules},
2330    journal     = ipl,
2331    year        = 1980,
2332    month       = apr, volume = 10, number = 3, pages = {120-123},
2333    comment     = {
2334        The ``two-pass'' algorithm.  An upward pass over a parse tree
2335        calculates the set of possible result types of operators.  The
2336        root must have exactly one type, produced in one way.  A
2337        downward pass selects the version of the operator that produces the
2338        desired result type, thus setting the result types of subtrees.
2339        See \cite{D:overload}.
2340    }
2341}
2342
2343@techreport{Habermann80,
2344    keywords    = {Ada, threads},
2345    contributer = {pabuhr@plg},
2346    author      = {A. N. Habermann and I. R. Nassi},
2347    title       = {Efficient Implementation of {Ada} Tasks},
2348    institution = {Carnegie-Mellon University},
2349    number      = {CMU-CS-80-103},
2350    year        = 1980
2351}
2352
2353@article{Emerald,
2354    keywords    = {concurrency, polymorphism},
2355    contributer = {pabuhr@plg},
2356    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
2357    title       = {Emerald: A General-Purpose Programming Language},
2358    journal     = spe,
2359    month       = jan,
2360    year        = 1991,
2361    volume      = 21,
2362    number      = 1,
2363    pages       = {91-118}
2364}
2365
2366@InProceedings{chambers89a,
2367    keywords    = {maps, delegation},
2368    author      = "Craig Chambers and David Ungar and Elgin Lee",
2369    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
2370                 Object-Oriented Language Based on Prototypes",
2371    crossref    = "OOPSLA89",
2372    pages       = {49-70}
2373}
2374
2375@article{oop:encapsulation,
2376    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
2377    contributer = {gjditchfield@plg},
2378    author      = {Alan Snyder},
2379    title       = {Encapsulation and Inheritance in Object-Oriented Programming
2380        Languages},
2381    journal     = sigplan,
2382    volume      = {21},    number = {11},
2383    pages       = {38-45},
2384    month       = nov, year = 1986,
2385    comment     = {
2386        Client, child interfaces should be distinct.  Child interface
2387        shouldn't grant total access to parent.
2388
2389        Rules for redefining parent variable name in a child affect
2390        re-implementation of the parent.
2391
2392        Inheritance can be a promise to obey the semantics of the parent,
2393        or code reuse; the two may be contradictory.  Unification
2394        exposes use of inheritance: a child can not be re-implemented
2395        without breaking code that assumes that it is a subclass of the
2396        original parent.  If a class uses the names of its parents'
2397        ancestors, then inheritance is part of the parent's child
2398        interface.
2399
2400        Linearizing a multiple inheritance tree means that a class's use of
2401        calls on super need to be understood before it is used as a parent.
2402        Merging repeated ancestors exposes inheritance if an ancestor is
2403        re-implemented.  Forbidding inheritance of distinct methods with
2404        the same name exposes implementation of ancestors.  Proposed
2405        solution treats the set of ancestors as a tree.
2406    }
2407}
2408
2409@article{st:encapsulator,
2410    keywords    = {encapsulator, Smalltalk, monitor},
2411    contributer = {gjditchfield@plg},
2412    author      = {Geoffrey A. Pascoe},
2413    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
2414    journal     = sigplan,
2415    volume      = {21},    number       = {11},
2416    pages       = {341-346},
2417    month       = nov, year = 1986,
2418    comment     = {
2419        Encapsulators are objects that surround other objects.
2420        Pre- and post-actions are performed when messages are sent to the
2421        encapsulated object.  They are created here by sending the message
2422        object: to an encapsulator class.  Examples given are monitors,
2423        atomic objects, and Model (for model-view-controller interfaces).
2424
2425        Encapsulator classes use a family of selectors that the
2426        encapsulated object will not respond to.  Messages for the
2427        encapsulated object are passed on by trapping them with the
2428        doesNotUnderstand method.  Various fiddles were needed when setting
2429        up the class and metaclass hierarchies.  A few selectors (==,
2430        class) always directly invoke primitive methods; they can't be
2431        used.
2432
2433        Can an encapsulated object be an encapsulator?  Probably, but the
2434        middle object's selectors are inaccessible.
2435    }
2436}
2437
2438@manual{EPT,
2439    keywords    = {concurrency, light-weight threads},
2440    contributer = {pabuhr@plg},
2441    key         = {Encore},
2442    title       = {Encore Parallel Thread Manual, 724-06210},
2443    organization= {Encore Computer Corporation},
2444    month       = may,
2445    year        = 1988,
2446}
2447
2448@manual{Erlang,
2449    keywords    = {Erlang},
2450    contributer = {pabuhr},
2451    title       = {Erlang Reference Manual User's Guide, Vertion 7.0},
2452    organization= {Erlang/OTP System Documentation},
2453    address     = {1430 Broadway, New York, New York  10018},
2454    month       = jun,
2455    year        = 2015,
[03d416f]2456    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-\-documentation.pdf}}},
[e229c22]2457}
2458
2459@inproceedings{MH88,
2460    keywords    = {modules, general sums, general products},
2461    contributer = {gjditchfield@plg},
2462    author      = {John C. Mitchell and Robert Harper},
2463    title       = {The Essence of {ML}},
2464    booktitle   = popl,
2465    year        = 1988,
2466    pages       = {28-46}
2467}
2468
2469@book{LeVerrand,
2470    keywords    = {},
2471    author      = {D. Le Verrand},
2472    title       = {Evaluating {Ada}},
2473    publisher   = {North Oxford Academic},
2474    year        = 1985
2475}
2476
2477@inproceedings{Bloom79,
2478    keywords    = {concurrency},
2479    contributer = {pabuhr@plg},
2480    author      = {Toby Bloom},
2481    title       = {Evaluating Synchronization Mechanisms},
2482    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
2483    organization= {ACM SIGOPS},
2484    address     = {Pacific Grove, California, U.S.A},
2485    month       = dec,
2486    year        = 1979,
2487    pages       = {24-32}
2488}
2489
2490@article{Buhr06a,
2491    keywords    = {concurrency, C++, uC++},
2492    contributer = {pabuhr@plg},
2493    author      = {Peter A. Buhr and Richard C. Bilson},
2494    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
2495                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2496    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2497    month       = feb,
2498    year        = 2006,
2499    volume      = 31,
2500    number      = 2,
2501    pages       = {36-40},
2502}
2503
2504@article{ExceptionalC,
2505    keywords    = {exception handling, asynchronous events},
2506    contributer = {wyrmok@plg},
2507    author      = {N. H. Gehani},
2508    title       = {Exceptional {C} or {C} with Exceptions},
2509    journal     = spe,
2510    year        = 1992,
2511    month       = oct,
2512    volume      = 22,
2513    number      = 10,
2514    pages       = {827-848},
2515    comment     = {
2516        It is the most extensive exceptional handling mechanism thus
2517        far. Though it doesn't have Mesa resumption, it has
2518        asynchronous signal which is more general and abstract than
2519        the unix signal mechanism.  It has an Eiffel like retry
2520        mechanism. Consequently, the scope of guarded region is not
2521        immediately terminated when an exception is raised. In fact,
2522        an exception handler creates a scope under its guarded
2523        region.
2524        }
2525}
2526
2527@incollection{Buhr02,
2528    keywords    = {exception handling},
2529    contributer = {pabuhr@plg},
2530    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
2531    title       = {Exception Handling},
2532    editor      = {Marvin V. Zelkowitz},
2533    booktitle   = {Advances in COMPUTERS},
2534    publisher   = {Academic Press},
[03d416f]2535    address     = {London},
[e229c22]2536    volume      = 56,
2537    year        = 2002,
2538    pages       = {245-303},
2539}
2540
2541@article{Cargill94,
2542    keywords    = {exception handling},
2543    contributer = {pabuhr@plg},
2544    author      = {Tom Cargill},
2545    title       = {Exception Handling: a False Sense of Security},
2546    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
2547    year        = 1994,
2548    month       = nov,
2549    volume      = 6,
2550    number      = 9,
2551    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
2552}
2553
2554@article{Knudsen84,
2555    keywords    = {static exception handling, BETA, sequel},
2556    contributer = {wyrmok@plg},
2557    author      = {J{\o}rgen Lindskov Knudsen},
2558    title       = {Exception Handling --- A Static Approach},
2559    journal     = spe,
2560    year        = 1984,
2561    month       = may,
2562    volume      = 14,
2563    number      = 5,
2564    pages       = {429-449},
2565}
2566
2567@article{Drew94,
2568    keywords    = {exceptions, exception handling},
2569    contributer = {wyrmok@plg},
2570    author      = {Steven J. Drew and K. John Gough},
2571    title       = {Exception Handling: Expecting the Unexpected},
2572    journal     = {Computer Languages},
2573    year        = 1994,
2574    month       = may,
2575    volume      = 20,
2576    number      = 2,
2577    comment     = {
2578        A recent and good survey on various exception handling mechanisms found
2579        in imperative programming languages. It classifies various mechanism in
2580        terms of flow control and scopes. Asynchronous exceptions and signals
2581        are also covered as Exceptional C is in the survey.
2582        }
2583}
2584
2585@article{Koenig90,
2586    keywords    = {exception handling},
2587    contributer = {pabuhr@plg},
2588    author      = {Andrew Koenig and Bjarne Stroustrup},
2589    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2590    journal     = joop,
2591    month       = {July/August},
2592    year        = 1990,
2593    volume      = 3,
2594    number      = 2,
2595    pages       = {16-33},
2596}
2597
2598@article{Lee83,
2599    keywords    = {exception handling, C},
2600    contributer = {pabuhr@plg},
2601    author      = {P. A. Lee},
2602    title       = {Exception Handling in {C} Programs},
2603    journal     = spe,
2604    volume      = 13,
2605    number      = 5,
2606    month       = may,
2607    year        = 1983,
2608    pages       = {389-405},
2609}
2610
2611@article{Liskov79,
2612    keywords    = {exception handling},
2613    contributer = {pabuhr@plg},
2614    author      = {Barbara H. Liskov and Alan Snyder},
2615    title       = {Exception Handling in {CLU}},
2616    journal     = ieeese,
2617    month       = nov,
2618    year        = 1979,
2619    volume      = {SE-5},
2620    number      = 6,
2621    pages       = {546-558},
2622}
2623
2624@article{Szalas85,
2625    keywords    = {concurrency, C++},
2626    contributer = {pabuhr@plg},
2627    author      = {Andrzej Szalas and Danuta Szczepanska},
2628    title       = {Exception Handling in Parallel Computations},
2629    journal     = sigplan,
[03d416f]2630    publisher   = {ACM},
2631    address     = {New York, NY, USA},
[e229c22]2632    volume      = 20,
2633    number      = 10,
2634    month       = oct,
2635    year        = 1985,
2636    pages       = {95-104},
2637}
2638
2639@article{MacLaren77,
2640    keywords    = {exception handling, PL/I},
2641    contributer = {pabuhr@plg},
2642    author      = {M. Donald MacLaren},
2643    title       = {Exception Handling in {PL/I}},
2644    journal     = sigplan,
2645    volume      = 12,
2646    number      = 3,
2647    month       = mar,
2648    year        = 1977,
2649    pages       = {101-104},
2650    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
2651                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
2652}
2653
2654@article{Goodenough75,
2655    keywords    = {exception handling},
2656    contributer = {pabuhr@plg},
2657    author      = {J. B. Goodenough},
2658    title       = {Exception Handling: Issues and a Proposed Notation},
2659    journal     = cacm,
2660    month       = dec,
2661    year        = 1975,
2662    volume      = 18,
2663    number      = 12,
2664    pages       = {683-696},
2665}
2666
2667@article{Lampson80,
2668    keywords    = {monitors},
2669    contributer = {pabuhr@plg},
2670    author      = {B. W. Lampson and D. D. Redell},
2671    title       = {Experience with Processes and Monitors in Mesa},
2672    journal     = cacm,
2673    volume      = 23,
2674    number      = 2,
2675    month       = feb,
2676    year        = 1980,
2677    pages       = {105-117},
2678}
2679
2680@inproceedings{Shopiro87,
2681    keywords    = {concurrency},
2682    contributer = {pabuhr@plg},
2683    author      = {Jonathan E. Shopiro},
2684    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
2685    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
2686    organization= {USENIX Association},
2687    address     = {Santa Fe, New Mexico, U.S.A},
2688    month       = nov,
2689    year        = 1987,
2690    pages       = {77-94}
2691}
2692
2693@article{Modula-2+,
2694    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
2695    contributer = {gjditchfield@plg},
2696    author      = {Paul Rovner},
2697    title       = {Extending Modula-2 to Build Large, Integrated Systems},
2698    journal     = {IEEE Software},
2699    month       = nov, year = 1986,
2700    volume      = 3, number = 6, pages = {46-57},
2701    comment     = {
2702        Exceptions can have a parameter.  Procedures can declare the
2703        exceptions they can propagate; others are converted to {\tt
2704        SYSTEM.Fail}.  If they don't, all exceptions propagate.
2705        Block cleanup statements execute no matter how control leaves the
2706        block.
2707
2708        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
2709        assigned any {\tt REF t}.  Open array types can be used in
2710        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
2711        dynamically determined size.
2712
2713        The {\tt THREAD} module provides lightweight processes, semaphores,
2714        and conditions.  A statement {\tt LOCK {\em semaphore} DO
2715        {\em statements} END} is built in.
2716
2717        {\tt SAFE} modules do run-time checks, and only import {\tt
2718        SAFE} modules.  One implementation module can implement several
2719        definition modules.  Opaque type implementations can be
2720        repeated in modules that import its definition, so implementation
2721        modules can collaborate.  The linker checks that all
2722        implementations are the same.
2723    }
2724}
2725
[ee89ad43]2726@online{GCCExtensions,
[c57d1935]2727    contributer = {a3moss@uwaterloo.ca},
2728    key         = {{GNU}},
2729    author      = {{C Extensions}},
2730    title       = {Extensions to the {C} Language Family},
2731    year        = 2014,
2732    note        = {\href{https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html}{https://\-gcc.gnu.org/\-onlinedocs/\-gcc-4.7.2/\-gcc/\-C\-Extensions.html}},
2733    urldate     = {2017-04-02}
[ee89ad43]2734}
2735
[e229c22]2736@inproceedings{BNRPascal,
2737    keywords    = {concurrency, rendezvous},
2738    contributer = {pabuhr@plg},
2739    author      = {R. Kamel and N. Gammage},
2740    title       = {Experience with Rendezvous},
2741    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
2742    month       = oct,
2743    year        = 1988,
2744    pages       = {143-149}
2745}
2746
2747% F
2748
2749@inproceedings{Knudsen01,
2750    keywords    = {Beta, exception handling},
2751    contributer = {pabuhr@plg},
2752    author      = {J{\o}rgen Lindskov Knudsen},
2753    title       = {Fault Tolerance and Exception Handling in {BETA}},
2754    booktitle   = {Exception Handling},
[03d416f]2755    publisher   = {Springer},
[e229c22]2756    volume      = 2022,
2757    series      = {Lecture Notes in Computer Science},
2758    year        = 2001,
2759    pages       = {1-17}
2760}
2761
2762@article{Lamport87,
2763    keywords    = {software solutions, mutual exclusion, fast},
2764    contributer = {pabuhr@plg},
2765    author      = {Leslie Lamport},
2766    title       = {A Fast Mutual Exclusion Algorithm},
2767    journal     = tocs,
2768    volume      = 5,
2769    number      = 1,
2770    month       = jan,
2771    year        = {1987},
2772    pages       = {1--11},
2773    publisher   = {ACM},
2774    address     = {New York, NY, USA},
2775}
2776
2777@inproceedings{F-bound,
2778    keywords    = {},
2779    contributer = {gjditchfield@plg},
2780    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
2781    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
2782    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
2783    year        = 1989,
2784    month       = sep,
2785    pages       = {273-280}
2786}
2787
2788@mastersthesis{Wasik08,
2789    author      = {Ayelet Wasik},
2790    title       = {Features of a Multi-Threaded Memory Allocator},
2791    school      = {University of Waterloo},
2792    year        = 2008,
2793    month       = jan,
2794    address     = {Waterloo, Ontario, Canada, N2L 3G1},
2795    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
2796}
2797
2798@article{Holzmann94,
2799    keywords    = {semaphore, flags},
2800    contributer = {pabuhr@plg},
2801    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
2802    title       = {The First Data Networks},
2803    journal     = {Scientific American},
2804    month       = jan,
2805    year        = 1994,
2806    volume      = 12,
2807    number      = 1,
2808    pages       = {124-129},
2809}
2810
2811@article{Bohm66,
2812    keywords    = {goto, structured programming},
2813    contributer = {pabuhr@plg},
2814    author      = {C. B\"{o}hm and G. Jacopini},
2815    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
2816    journal     = cacm,
2817    month       = may,
2818    year        = 1966,
2819    volume      = 9,
2820    number      = 5,
2821    pages       = {366-371},
2822}
2823
2824@manual{Fortran95,
2825    keywords    = {Fortran 95},
2826    contributer = {pabuhr@plg},
2827    key         = {Fortran95},
2828    title       = {Fortran 95 Standard, ISO/IEC 1539},
[c57d1935]2829    organization= {Unicomp, Inc.},
[e229c22]2830    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
2831    month       = jan,
2832    year        = 1997,
2833}
2834
2835@manual{Fortran08,
2836    keywords    = {ISO/IEC Fortran 08},
2837    contributer = {pabuhr@plg},
2838    key         = {Fortran08},
2839    title       = {Programming Languages -- {Fortran} Part 1},
2840    organization= {International Standard ISO/IEC 1989:2014},
2841    publisher   = {International Standard Organization},
2842    address     = {http://www.iso.org},
2843    year        = 2010,
2844}
2845
2846@book{Andrews00:book,
2847    keywords    = {concurrency},
2848    contributer = {pabuhr@plg},
2849    author      = {Gregory R. Andrews},
2850    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
2851    publisher   = {Addison--Wesley},
2852    year        = 2000,
2853}
2854
2855@article{Agha89,
2856    keywords    = {actors, concurrency},
2857    contributer = {pabuhr@plg},
2858    author      = {Gul A. Agha},
2859    title       = {Foundational Issues in Concurrent Computing},
2860    journal     = sigplan,
2861    month       = apr,
2862    year        = 1989,
2863    volume      = 24,
2864    number      = 4,
2865    pages       = {60-65},
2866    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
2867                   Sept. 26--27, 1988, San Diego, California, U.S.A},
2868}
2869
2870@article{ool,
2871    keywords    = {},
2872    contributer = {gjditchfield@plg},
2873    author      = {Douglas T. Ross},
2874    title       = {Toward Foundations for the Understanding of Type},
2875    journal     = sigplan,
2876    year        = 1976,
2877    volume      = 11, pages = {63-65},
2878    note        = {Conference on Data: Abstraction, Definition and Structure},
2879    summary     = {
2880        Possibly the first use (without definition, alas) of the phrase
2881        "object oriented language".  Metaphysical to the point of incoherence.
2882    }
2883}
2884
2885@article{frames,
2886    keywords    = {frames},
2887    contributer = {gjditchfield@plg},
2888    author      = {Paul G. Basset},
2889    title       = {Frame-Based Software Engineering},
2890    journal     = {IEEE Software},
2891    month       = jul, year = 1987,
2892    volume      = 4, number = 4, pages = {9-16}
2893}
2894
2895@article{Sutter05,
2896    keywords    = {concurrency, C++},
2897    contributer = {pabuhr@plg},
2898    author      = {Herb Sutter},
2899    title       = {A Fundamental Turn Toward Concurrency in Software},
2900    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2901    month       = mar,
2902    year        = 2005,
2903    volume      = 30,
2904    number      = 3,
2905    pages       = {16-22},
2906}
2907
2908@inproceedings{Dony01,
2909    keywords    = {Smalltalk, exception handling},
2910    contributer = {pabuhr@plg},
2911    author      = {Chistophe Dony},
2912    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
2913    booktitle   = {Exception Handling},
[03d416f]2914    publisher   = {Springer},
[e229c22]2915    volume      = 2022,
2916    series      = {Lecture Notes in Computer Science},
2917    year        = 2001,
2918    pages       = {18-38}
2919}
2920
2921@misc{FW,
2922    key         = {FW},
2923    contributer = {gjditchfield@plg},
2924    title       = {Funk \& Wagnalls Standard Desk Dictionary},
2925    year        = 1980
2926}
2927
2928@book{Knuth73V1,
2929    contributer = {pabuhr@plg},
2930    author      = {Donald E. Knuth},
2931    title       = {Fundamental Algorithms},
2932    series      = {The Art of Computer Programming},
2933    publisher   = {Addison-Wesley},
[03d416f]2934    address     = {Boston},
[e229c22]2935    year        = 1973,
2936    volume      = 1,
[03d416f]2937    edition     = {2nd},
[e229c22]2938}
2939
2940@inproceedings{Strachey,
2941    keywords    = {polymorphism},
2942    contributer = {gjditchfield@plg},
2943    author      = {C. Strachey},
2944    title       = {Fundamental Concepts in Programming Languages},
2945    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
2946    year        = 1967,
2947    month       = aug,
2948    address     = {Copenhagen},
2949    comment     = {
2950        Defines ad-hoc and parametric polymorphism.
2951    }
2952}
2953
2954@article{Eisenberg72,
2955    keywords    = {concurrency, N-Process solution, O(N)},
2956    contributer = {pabuhr@plg},
2957    author      = {Murray A. Eisenberg and Michael R. McGuire},
2958    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
2959    journal     = cacm,
2960    month       = nov,
2961    year        = 1972,
2962    volume      = 15,
2963    number      = 11,
2964    pages       = {999},
2965}
2966
2967% G
2968
2969@article{Boehm88,
2970    keywords    = {conservative garbage collection, C},
2971    contributer = {gjditchfield@plg},
2972    author      = {Hans-Juergen Boehm and Mark Weiser},
2973    title       = {Garbage Collection in an Uncooperative Environment},
2974    journal     = spe,
2975    month       = sep,
2976    year        = 1988,
2977    volume      = 18,
2978    number      = 9,
2979    pages       = {807-820}
2980}
2981
2982@manual{gcc,
2983    keywords    = {},
2984    contributer = {gjditchfield@plg},
2985    title       = {GCC},
2986    author      = {Richard M. Stallman},
2987    organization= {Free Software Foundation},
[03d416f]2988    address     = {Cambridge}
[e229c22]2989}
2990
2991@article{doUpon,
2992    keywords    = {formal verification, axiomatic semantics, control structures},
2993    contributer = {gjditchfield@plg},
2994    author      = {Ed Anson},
2995    title       = {A Generalized Iterative Construct and Its Semantics},
2996    journal     = toplas,
2997    volume      = {9},    number = {4},
2998    pages       = {567-581},
2999    month       = oct, year = 1987,
3000    comment     = {
3001        \begin{verbatim}
3002            do
3003                   P1 -> L1
3004               [] P2 -> L2
3005            ...
3006               [] Pm -> Lm
3007            upon
3008                   Q1 -> M1
3009               [] Q2 -> M2
3010            ...
3011               [] qn -> mn
3012            od
3013        \end{verbatim}
3014
3015        If there is an i such that Qi is true, execute Mi and terminate.
3016        Otherwise, if there is an i such that Pi is true, execute Li and
3017        repeat the loop.  Otherwise, fail.
3018    }
3019}
3020
[03ccadd]3021@unpublished{Bilson,
[9724df0]3022    keywords    = {generic programming, generics, polymorphism},
3023    contributor = {a3moss@plg},
3024    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3025    title       = {Generic Programming with Inferred Models},
[03ccadd]3026}
3027
[e229c22]3028@article{Haskell,
3029    keywords    = {lazy evaluation, type class},
3030    contributer = {pabuhr},
3031    author      = {Paul Hudak and Joseph H. Fasel},
3032    title       = {A Gentle Introduction to Haskell},
3033    journal     = sigplan,
3034    volume      = 27,
3035    number      = 5,
3036    month       = may,
3037    year        = 1992,
3038    pages       = {T1-53},
3039}
3040
3041@manual{Go,
3042    keywords    = {Go programming language},
3043    contributer = {pabuhr@plg},
3044    title       = {{Go} Programming Language},
3045    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3046    organization= {Google},
3047    year        = 2009,
[03d416f]3048    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
[e229c22]3049}
3050
3051@article{Dijkstra68a,
3052    keywords    = {goto},
3053    contributer = {pabuhr@plg},
3054    author      = {Edsger W. Dijkstra},
3055    title       = {Go To Statement Considered Harmful},
3056    journal     = cacm,
3057    month       = mar,
3058    year        = 1968,
3059    volume      = 11,
3060    number      = 3,
3061    pages       = {147-148},
3062    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3063}
3064
[55b2f5a]3065@online{GObject,
[c57d1935]3066    keywords    = {GObject},
3067    contributor = {a3moss@uwaterloo.ca},
3068    author      = {{GObject}},
3069    organization= {The GNOME Project},
3070    title       = {{GObject} Reference Manual},
3071    year        = 2014,
3072    url         = {https://developer.gnome.org/gobject/stable/},
3073    urldate     = {2017-04-04}
[55b2f5a]3074}
3075
[e229c22]3076@article{Choi91,
3077    keywords    = {contra-variance, functions},
3078    contributer = {pabuhr@plg},
3079    author      = {Injun Choi and Michael V. Mannino},
3080    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3081    journal     = {OOPS Messenger},
3082    volume      = 2,
3083    number      = 1,
3084    month       = jan,
3085    year        = 1991,
3086    pages       = {38-54},
3087}
3088
3089@misc{GNU-C,
3090    keywords    = {C, ANSI C},
3091    contributer = {pabuhr@plg},
3092    author      = {Richard Stallman},
3093    title       = {The Free Software Foundation's Gnu {C} Compiler},
3094    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3095    year        = 1989,
3096}
3097
3098@article{Dijkstra:green,
3099    keywords    = {ada},
3100    contributer = {gjditchfield@plg},
3101    author      = {Edsger W. Dijkstra},
3102    title       = {On the GREEN Language submitted to the DoD},
3103    journal     = sigplan,
3104    year        = 1978,
3105    month       = oct,
3106    volume      = 13,
3107    number      = 10,
3108    pages       = {16-21}
3109}
3110
3111@inproceedings{Miller02,
3112    keywords    = {exception handling},
3113    contributer = {pabuhr@plg},
3114    author      = {Robert Miller and Anand Tripathi},
3115    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3116    booktitle   = {21st Symposium on Reliable Distributed Systems},
3117    organization= {IEEE},
3118    address     = {Suita, Japan},
3119    year        = 2002,
3120    month       = oct,
3121    pages       = {304-313}
3122}
3123
3124@phdthesis{Chen09,
3125    author      = {Jun Chen},
3126    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3127    school      = {University of Waterloo},
3128    year        = 2009,
3129    month       = sep,
3130    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3131    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3132}
3133
3134@misc{GNU-C++,
3135    keywords    = {C++, GNU C},
3136    contributer = {pabuhr@plg},
3137    author      = {Michael D. Tiemann},
3138    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3139    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3140    month       = mar,
3141    year        = 1990,
3142}
3143
3144% H
3145
3146@article{Michael04a,
3147    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3148    author      = {Maged M. Michael},
3149    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3150    journal     = ieeepds,
3151    volume      = 15,
3152    number      = 6,
3153    month       = jun,
3154    year        = 2004,
3155    pages       = {491-504},
3156    publisher   = {IEEE Press},
3157    address     = {Piscataway, NJ, USA},
3158}
3159
3160@techreport{Hermes90,
3161    keywords    = {processes, distributed computing},
3162    contributer = {pabuhr@plg},
3163    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3164    title       = {Hermes: A Language for Distributed Computing},
3165    institution = {IBM T. J. Watson Research Center},
3166    address     = {Yorktown Heights, New York, U.S.A., 10598},
3167    month       = oct,
3168    year        = 1990,
3169}
3170
3171@book{Hermes91,
3172    keywords    = {processes, distributed computing},
3173    contributer = {pabuhr@plg},
3174    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3175    title       = {Hermes: A Language for Distributed Computing},
[03d416f]3176    publisher   = {Prentice-Hall},
3177    address     = {Englewood Cliffs},
[e229c22]3178    series      = {Innovative Technology},
3179    year        = 1991,
3180}
3181
3182@article{katzenelson83b,
3183    contributer = {gjditchfield@plg},
3184    author      = "Jacob Katzenelsen",
3185    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3186    journal     = spe,
3187    year        = 1983,
3188    volume      = 13,
3189    number      = 7,
3190    pages       = {577-596},
3191    month       = jul
3192}
3193
3194@techreport{Hoare73,
3195    keywords    = {},
3196    contributer = {gjditchfield@plg},
3197    author      = {C. A. R. Hoare},
3198    title       = {Hints on Programming Language Design},
3199    institution = {Stanford University Computer Science Department},
3200    year        = 1973,
3201    month       = dec,
3202    number      = {CS-73-403},
3203    note        = {Reprinted in \cite{pldesign}.}
3204}
3205
3206@article{Dijkstra71,
3207    keywords    = {monitor, secretary},
3208    contributer = {pabuhr@plg},
3209    author      = {E. W. Dijkstra},
3210    title       = {Hierarchical Ordering of Sequential Processes},
3211    journal     = acta,
3212    volume      = 1,
3213    pages       = {115-138},
3214    year        = 1971,
3215}
3216
3217@article{Buhr15a,
3218    keywords    = {software solution, mutual exclusion, performance experiment},
3219    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3220    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
[03d416f]3221    journal     = ccpe,
[e229c22]3222    volume      = 27,
3223    number      = 3,
3224    pages       = {651-701},
3225    month       = mar,
3226    year        = 2015,
3227}
3228
3229@article{Ackermann28,
3230    keywords    = {recursion, Ackermann function},
3231    contributer = {pabuhr@plg},
3232    author      = {Wilhelm Ackermann},
3233    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3234    publisher   = {Springer},
[03d416f]3235    journal     = mathann,
[e229c22]3236    number      = 1,
3237    volume      = 99,
3238    pages       = {118-133},
3239    month       = dec,
3240    year        = 1928,
3241}
3242
3243@inproceedings{typeclass,
3244    keywords    = {Hindley/Miller type systems, Haskell},
3245    contributer = {gjditchfield@plg},
3246    author      = {Philip Wadler and Stephen Blott},
3247    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3248    booktitle   = popl,
3249    year        = 1989,
3250    pages       = {60-76},
3251    organization= {Association for Computing Machinery}
3252}
3253
3254% I
3255
3256@book{IBM370,
3257    keywords    = {370, IBM},
3258    contributer = {pabuhr@plg},
3259    key         = {IBM370},
3260    title       = {{IBM} System/370 Principles of Operation},
3261    publisher   = {IBM},
3262    number      = {GA22-7000-8},
3263    month       = oct,
3264    year        = 1981,
3265    edition     = {9th}
3266}
3267
3268@book{Icon,
3269    keywords    = {Icon},
3270    contributer = {pabuhr@plg},
3271    author      = {Ralph E. Griswold and Madge T. Griswold},
3272    title       = {The Icon Programming Language},
3273    publisher   = {Prentice-Hall},
[03d416f]3274    address     = {Englewood Cliffs},
[e229c22]3275    year        = 1983,
3276}
3277
3278@inproceedings{Valois94,
3279    keywords    = {lock free, queue},
3280    contributer = {pabuhr@plg},
3281    author      = {John D. Valois},
3282    title       = {Implementing Lock-Free Queues},
3283    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3284    address     = {Las Vegas, Nevada, U.S.A.},
3285    year        = {1994},
3286    pages       = {64-69},
3287}
3288
3289@article{Hehner81,
3290    keywords    = {concurrency, critical section, bakery algorithm},
3291    contributer = {pabuhr@plg},