source: doc/bibliography/cfa.bib@ 33a7b6d

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 33a7b6d was 03d416f, checked in by Peter A. Buhr <pabuhr@…>, 9 years ago

update bibliography file

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