source: doc/bibliography/cfa.bib @ d3ed39f

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

fix Thompson90new citation

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