source: doc/bibliography/cfa.bib@ 3fe98b7

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 3fe98b7 was b39e3dae, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

additional edits to front material

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