source: doc/bibliography/cfa.bib@ bbc9b64

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 bbc9b64 was 5995116, checked in by Aaron Moss <a3moss@…>, 9 years ago

Update TODOs, language references

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