source: doc/bibliography/cfa.bib @ 5479e63

aaron-thesisarm-ehcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationresolv-newwith_gc
Last change on this file since 5479e63 was 9724df0, checked in by Peter A. Buhr <pabuhr@…>, 6 years ago

update latex macros, and user and refrat manuals

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