source: doc/bibliography/cfa.bib@ f891424d

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 f891424d was 17f27d40, checked in by Peter A. Buhr <pabuhr@…>, 9 years ago

work on conclusion and add references

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