source: doc/bibliography/pl.bib@ 81e8ab0

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

more updates

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