source: doc/bibliography/cfa.bib@ e4bc986

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

update bibliography

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