source: doc/bibliography/cfa.bib@ 1e37d4d

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay gc_noraii jacob/cs343-translation jenkins-sandbox memory new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since 1e37d4d was 03ccadd, checked in by Aaron Moss <a3moss@…>, 9 years ago

Update papers directory

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