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

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

change name of bibtex entry from Bak:overload to Baker82

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