source: doc/bibliography/cfa.bib@ c28a038d

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

update bibliography

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