source: doc/bibliography/cfa.bib@ 06cf47f

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

changes to OOPSLA paper

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