source: doc/bibliography/pl.bib@ c20b0fea

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

further harmonize document Makefile and documents

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