source: doc/bibliography/cfa.bib@ e0b8ccd5

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

last changes

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