source: doc/bibliography/cfa.bib @ 7bb37fc

aaron-thesisarm-ehcleanup-dtorsctordeferred_resndemanglerjacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerresolv-newwith_gc
Last change on this file since 7bb37fc was 7bb37fc, checked in by Aaron Moss <a3moss@…>, 5 years ago

Finish first editing pass over Comp II draft

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