source: doc/bibliography/cfa.bib@ 1132b62

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox 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 1132b62 was 71b5d4d3, checked in by Aaron Moss <a3moss@…>, 9 years ago

Add Pennello et al. citation to Comp II draft

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