source: doc/bibliography/cfa.bib@ 2f22cc4

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay 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 2f22cc4 was ff3fc93, checked in by Aaron Moss <a3moss@…>, 9 years ago

Minor edits to Comp II draft

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