source: doc/bibliography/cfa.bib @ ff3fc93

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

Minor edits to Comp II draft

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