source: doc/bibliography/cfa.bib@ db175c8

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay gc_noraii jacob/cs343-translation jenkins-sandbox memory new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since db175c8 was e229c22, checked in by Peter A. Buhr <pabuhr@…>, 9 years ago

change gitignore with respect to latex-generated files, small updates to manuals, replace bibtex link with actual file

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