source: doc/bibliography/pl.bib@ 29db723

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

additional changes

  • Property mode set to 100644
File size: 229.0 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,
5208 PO19 1EB, England},
5209 summary = {
5210 The principles of Procedural Abstraction, Data Type Completeness,
5211 Declaration Correspondence, and Orthogonality are ruthlessly applied
5212 to the design of a polymorphic language.
5213 }
5214}
5215
5216@unpublished{poa,
5217 keywords = {Force N, type inference, reusability, transcendance},
5218 contributer = {gjditchfield@plg},
5219 author = {G. V. Cormack and A. K. Wright},
5220 title = {Polymorphism, Overloading, and Abstraction},
5221 note = {personal communication}
5222}
5223
5224@inproceedings{forceone:impl,
5225 keywords = {Parametric polymorphism, ForceOne},
5226 contributer = {gjditchfield@plg},
5227 author = {G. V. Cormack and A. K. Wright},
5228 title = {Polymorphism in the Compiled Language {ForceOne}},
5229 booktitle = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5230 month = jan,
5231 year = 1987,
5232 pages = {284-292},
5233}
5234
5235@incollection{POOL-T,
5236 keywords = {objects, concurrency},
5237 contributer = {pabuhr@plg},
5238 author = {Pierre America},
5239 title = {POOL-T: A Parallel Object-Oriented Language},
5240 booktitle = {Object-Oriented Concurrent Programming},
5241 publisher = {The MIT Press},
5242 year = 1987,
5243 pages = {199-220},
5244 editor = {Akinori Yonezawa and Mario Tokoro}
5245}
5246
5247@article{Hardgrave76,
5248 keywords = {positional, keyword, parameters, arguments},
5249 contributer = {pabuhr@plg},
5250 author = {W. T. Hardgrave},
5251 title = {Positional versus Keyword Parameter Communication in Programming Languages},
5252 journal = sigplan,
5253 volume = 11,
5254 number = 5,
5255 month = may,
5256 year = 1976,
5257 pages = {52-58},
5258}
5259
5260@book{PowerPC,
5261 key = {PowerPC processor},
5262 title = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5263 publisher = {Freescale Semiconductor},
5264 volume = {MPCFPE32B},
5265 edition = {Rev. 3},
5266 month = 9,
5267 year = 2005,
5268}
5269
5270@article{Ada:preliminary,
5271 keywords = {Ada},
5272 contributer = {pabuhr@plg},
5273 author = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5274 and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5275 and John G. P. Barnes and Olivier Roubine},
5276 title = {Preliminary {Ada} Reference Manual},
5277 journal = sigplan,
5278 volume = 14,
5279 number = 6,
5280 month = jun,
5281 year = 1979,
5282 note = {Part A},
5283}
5284
5285@techreport{Forsythe,
5286 author = {John C. Reynolds},
5287 title = {Preliminary Design of the Programming Language {Forsythe}},
5288 institution = {Carnegie Mellon University},
5289 number = {CMU-CS-88-159},
5290 month = jun,
5291 year = 1988,
5292}
5293
5294@article{PRESTO,
5295 keywords = {concurrency, threads},
5296 contributer = {dgharriss@plg},
5297 author = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5298 title = {{PRESTO}: A System for Object-oriented Parallel Programming},
5299 journal = spe,
5300 volume = 18,
5301 number = 8,
5302 month = aug,
5303 year = 1988,
5304 pages = {713-732}
5305}
5306
5307@book{Ben-Ari82,
5308 keywords = {concurrency, parallel, programming languages},
5309 contributer = {pabuhr@plg},
5310 author = {Mordechai Ben-Ari},
5311 title = {Principles of Concurrent Programming},
5312 publisher = {Prentice-Hall International},
5313 address = {Englewood Cliffs},
5314 year = 1982,
5315}
5316
5317@book{Tennent81,
5318 author = {R. D. Tennent},
5319 title = {Principles of Programming Languages},
5320 publisher = {Prentice-Hall International},
5321 address = {Englewood Cliffs},
5322 year = 1981,
5323 series = {Series in Computer Science}
5324}
5325
5326@article{Lister77,
5327 keywords = {monitors, nested monitor calls},
5328 contributer = {pabuhr@plg},
5329 author = {Andrew Lister},
5330 title = {The Problem of Nested Monitor Calls},
5331 journal = osr,
5332 volume = 11,
5333 number = 3,
5334 month = jul,
5335 year = 1977,
5336 pages = {5-7},
5337}
5338
5339@article{psa:persistence,
5340 keywords = {persistence, first-class procedures, closure, PS-Algol,
5341 Abstract Data Types},
5342 contributer = {gjditchfield@plg},
5343 author = {Malcolm P. Atkinson and Ronald Morrison},
5344 title = {Procedures as Persistent Data Objects},
5345 journal = toplas,
5346 volume = {7}, number = {4},
5347 pages = {539-559},
5348 month = oct, year = 1985,
5349 comment = {
5350 PS-Algol has ``structures'', accessible only through ``pntrs''.
5351 Pntrs can refer to any type of structure. Field references involve
5352 a run-time check. This, plus first-class procedures, can simulate
5353 abstract data types. Procedure variables operating on pntrs
5354 simulate ADT operations. A block defines a structure to implement
5355 the ADT, and assigns procedures to the variables. Functions
5356 returning structures containing procedures simulate multiple
5357 implementations and parameterized ADTs.
5358
5359 An outer procedure that returns a procedure that contains
5360 (non-local) references to the outer procedure's parameters
5361 implements partial evaluation.
5362
5363 Modules can be simulated like ADT's. The module itself is a
5364 structure instance that is placed in persistent storage, and the
5365 module is imported by fetching it from the persistent store.
5366 Multiple instances of modules are easy. Installation of new
5367 versions can be done by replacing the version in the database.
5368 }
5369}
5370
5371@article{Procol89,
5372 keywords = {active objects, object-oriented languages,
5373 object-based languages, explicit per-object protocol},
5374 contributer = {akgoel@plg},
5375 author = {Jan van den Bos and Chris Laffra},
5376 title = {PROCOL: A Parallel Object Language with Protocols},
5377 journal = sigplan,
5378 volume = 24,
5379 number = 10,
5380 month = oct,
5381 year = 1989,
5382 pages = {95-102},
5383 note = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5384 abstract = {},
5385}
5386
5387@book{Butenhof97,
5388 keywords = {PThreads, concurrency},
5389 contributer = {pabuhr@plg},
5390 author = {David R. Butenhof},
5391 title = {Programming with {POSIX} Threads},
5392 publisher = {Addison-Wesley},
5393 address = {Boston},
5394 series = {Professional Computing},
5395 year = 1997,
5396}
5397
5398@book{SETL,
5399 keywords = {SETL},
5400 contributer = {pabuhr@plg},
5401 author = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5402 title = {Programming with Sets: An Introduction to {SETL}},
5403 publisher = {Springer},
5404 address = {New York, NY, USA},
5405 year = 1986,
5406}
5407
5408@book{Genuys68,
5409 keywords = {contains Dijkstra's Cooperating Sequential Processes},
5410 contributer = {pabuhr@plg},
5411 editor = {F. Genuys},
5412 title = {Programming Languages},
5413 publisher = {Academic Press},
5414 address = {London, New York},
5415 year = 1968,
5416 note = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5417}
5418
5419@manual{ANSI99:C,
5420 keywords = {ANSI C 99},
5421 contributer = {pabuhr@plg},
5422 title = {Programming Languages -- {C}},
5423 organization= {International Standard ISO/IEC 9899:1999 (E)},
5424 publisher = {American National Standards Institute},
5425 address = {www.ansi.org},
5426 year = 1999,
5427}
5428
5429@manual{ANSI98:C++,
5430 keywords = {ANSI C++ 98},
5431 contributer = {pabuhr@plg},
5432 key = {C++98},
5433 title = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5434 organization= {International Standard ISO/IEC 14882:1998 (E)},
5435 publisher = {American National Standards Institute},
5436 address = {www.ansi.org},
5437 year = 1998,
5438}
5439
5440@manual{C++14,
5441 keywords = {ISO/IEC C++ 14},
5442 contributer = {pabuhr@plg},
5443 author = {C++14},
5444 title = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014},
5445 edition = {4th},
5446 publisher = {International Standard Organization},
5447 address = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5448 year = 2014,
5449}
5450
5451@manual{MS:VisualC++,
5452 keywords = {Microsoft Visual C++},
5453 contributer = {pabuhr@plg},
5454 title = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5455 organization= {Microsoft Corporation},
5456 year = 2002,
5457 note = {Microsoft Press, Redmond, Washington, U.S.A.},
5458}
5459
5460@article{HasselBring00,
5461 keywords = {concurrency, prototyping},
5462 contributer = {pabuhr@plg},
5463 author = {Wilhelm Hasselbring},
5464 title = {Programming Languages and Systems for Prototyping Concurrent Applications},
5465 journal = acmcs,
5466 volume = 32,
5467 number = 1,
5468 month = mar,
5469 year = 2000,
5470 pages = {43-79},
5471}
5472
5473@article{LLgen,
5474 keywords = {ll(1), parser generator, separate compilation},
5475 contributer = {gjditchfield@plg},
5476 author = {Dick Grune and Ceriel J. J. Jacobs},
5477 title = {A Programmer-friendly LL(1) Parser Generator},
5478 journal = spe,
5479 month = jan, year = 1988,
5480 volume = 18, number = 1, pages = {29-33},
5481 comment = {
5482 LLgen generates C-language recursive-descent parsers. The input
5483 contains procedure-like rules with alternation and repetition
5484 constructs on the right, and (typed) parameters on the left.
5485 C actions are specified between items in the right side.
5486 Alternation and repetition (reduce and shift) conflicts can be
5487 resolved statically or at run time.
5488
5489 A grammar can be specified in several files. All files must be
5490 submitted to LLgen at once, but if the C file generated is no
5491 different from the old version, then the old version is not
5492 replaced and hence need not be recompiled, which saves lots of
5493 time.
5494
5495 When an incorrect token is found, the automatic error recovery
5496 algorithm discards tokens until an ``acceptable'' token is found;
5497 if the acceptable token is not correct, a correct one is inserted.
5498 }
5499}
5500
5501@techreport{russell,
5502 keywords = {Russell},
5503 contributer = {gjditchfield@plg},
5504 author = {H. Boehm and A. Demers and J. Donahue},
5505 title = {A Programmer's Introduction to Russell},
5506 institution = {Rice University},
5507 year = 1985,
5508 number = {85-16}
5509}
5510
5511@techreport{PDM89,
5512 keywords = {existential types, universal types},
5513 contributer = {gjditchfield@plg},
5514 author = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5515 title = {Programming in Higher-Order Typed Lambda Calculi},
5516 institution = {School of Computer Science, Carnegie Mellon University},
5517 year = 1989,
5518 address = {Pittsburg, PA 15213-3890},
5519 month = mar, number = {CMU-CS-89-111},
5520 abstract = {
5521 This tutorial presents a hierarchy of increasingly powerful
5522 languages, beginning with Church's simply typed
5523 \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5524 \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5525 fragment of Girard's \(\omega\)-order polymorphic
5526 \(\lambda\)-calculus (\(F_\omega\)). Our focus throughout is on
5527 the unusual style of programming that arises in these languages,
5528 where all functions are total and the primary control construct is
5529 iteration rather than general recursion.
5530 }
5531}
5532
5533@book{Modula-2,
5534 keywords = {modules, coroutines},
5535 contributer = {pabuhr},
5536 author = {Niklaus Wirth},
5537 title = {Programming in Modula-2},
5538 publisher = {Springer},
5539 address = {New York},
5540 year = 1988,
5541 edition = {4th},
5542 series = {Texts and Monographs in Computer Science},
5543}
5544
5545@manual{Ada,
5546 keywords = {Ada, packages, tasks, exceptions},
5547 contributer = {pabuhr@plg},
5548 title = {The Programming Language {Ada}: Reference Manual},
5549 author = {Ada},
5550 organization= {United States Department of Defense},
5551 edition = {{ANSI/MIL-STD-1815A-1983}},
5552 month = feb,
5553 year = 1983,
5554 note = {Springer, New York},
5555}
5556
5557@manual{ada:old,
5558 keywords = {Ada, packages, tasks, exceptions},
5559 contributer = {gjditchfield@plg},
5560 title = {The Programming Language {Ada}: Reference Manual},
5561 organization= {United States Department of Defense},
5562 publisher = {Springer},
5563 year = 1981
5564}
5565
5566@book{Ghezzi,
5567 keywords = {},
5568 author = {Carlo Ghezzi and Mehdi Jazayeri},
5569 title = {Programming Language Concepts},
5570 publisher = {Wiley},
5571 year = 1982
5572}
5573
5574@article{ConcurrentPascal,
5575 keywords = {Concurrent Pascal},
5576 contributer = {pabuhr@plg},
5577 author = {Per {Brinch Hansen}},
5578 title = {The Programming Language Concurrent Pascal},
5579 journal = ieeese,
5580 volume = 2,
5581 month = jun,
5582 year = 1975,
5583 pages = {199-206}
5584}
5585
5586@phdthesis{Buhr85:thesis,
5587 keywords = {},
5588 contributer = {pabuhr@plg},
5589 author = {P. A. Buhr},
5590 title = {A Programming System},
5591 school = {University of Manitoba},
5592 year = {1985}
5593}
5594
5595@techreport{pierce91,
5596 keywords = {typed lambda calculus},
5597 contributer = {gjditchfield@plg},
5598 author = {Benjamin C. Pierce},
5599 title = {Programming with Intersection Types, Union Types, and Polymorphism},
5600 institution = {Carnegie Mellon University},
5601 year = 1991,
5602 month = feb, number = "CMU-CS-91-106",
5603 annote = {
5604 Discusses a typed lambda calculus with
5605 \begin{itemize}
5606 \item
5607 Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5608 \tau_i\) for all \(i\).
5609 \item
5610 Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5611 and with implicit coercions from \(tau_i\) to \(\tau\). Only
5612 operations valid for both element types can be applied to the
5613 union; there are no projections. Union types are to variant
5614 records as set union is to disjoint set union.
5615 \item
5616 Function types and universal quantification, with subtyping rules.
5617 When functions and arguments intersections, the result of
5618 application is the intersection of all valid combinations.
5619 \item
5620 Distribution rules for combinations of types.
5621 \item
5622 "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5623 union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5624 every element type of the union.
5625 \item
5626 "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5627 typechecks \(e\) with \(t\) bound to each choice, and intersects
5628 the results.
5629 \end{itemize}
5630
5631 Examples include: type of "natural" numbers, treated as a union of
5632 "zero" and "positive" types; default parameters, faked by using an
5633 argument that is an intersection of a data type and a function
5634 taking an explicit argument.
5635
5636 Unions can be mostly faked, according to Mitchell:
5637 \[\tau_1\vee\tau_2 \equiv
5638 \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5639 }
5640}
5641
5642@article{promises,
5643 keywords = {futures, Argus, call streams, rpc},
5644 contributer = {gjditchfield@plg},
5645 author = {Barbara Liskov and Liuba Shrira},
5646 title = {Promises: Linguistic Support for Efficient Asynchronous
5647 Procedure Calls in Distributed Systems},
5648 journal = sigplan,
5649 year = 1988,
5650 month = jul, volume = 23, number = 7, pages = {260-267},
5651 note = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5652 Design and Implementation},
5653 abstract = {
5654 This paper deals with the integration of an efficient asynchronous
5655 remote procedure call mechanism into a programming language. It
5656 describes a new data type called a {\em promise} that was designed
5657 to support asynchronous calls. Promises allow a caller to run in
5658 parallel with a call and to pick up the results of the call,
5659 including any exceptions it raises, in a convenient and type-safe
5660 manner. The paper also discusses efficient composition of
5661 sequences of asynchronous calls to different locations in a
5662 network.
5663 }
5664}
5665
5666@article{Cook89,
5667 keywords = {},
5668 contributer = {gjditchfield@plg},
5669 author = {W. R. Cook},
5670 title = {A Proposal for Making {Eiffel} Type-safe},
5671 journal = {The Computer Journal},
5672 year = 1989,
5673 volume = 32, number = 4, pages = {305-311},
5674 abstract = {
5675
5676 }
5677}
5678
5679@inproceedings{Foxall79,
5680 keywords = {},
5681 contributer = {pabuhr@plg},
5682 author = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5683 title = {{PROTEL}: A High Level Language for Telephony},
5684 booktitle = {Proceedings 3rd International Computer Software and Applications Conference},
5685 month = nov,
5686 year = 1979,
5687 pages = {193-197},
5688}
5689
5690@techreport{PS-Algol,
5691 keywords = {algol, persistence},
5692 contributer = {pabuhr@plg},
5693 key = {PS-Algol},
5694 title = {The {PS-Algol} Reference Manual, 4th Ed.},
5695 author = {},
5696 institution = {University of Glasgow and St. Andrews, Scotland},
5697 number = {PPRR 12},
5698 month = jun,
5699 year = 1987,
5700}
5701
5702@manual{Python,
5703 keywords = {Python},
5704 contributer = {pabuhr},
5705 title = {Python Reference Manual, Release 2.5},
5706 author = {Guido van Rossum},
5707 organization= {Python Software Foundation},
5708 month = sep,
5709 year = 2006,
5710 note = {Fred L. Drake, Jr., editor},
5711}
5712
5713% Q
5714
5715@article{Grossman06,
5716 keywords = {Cyclone, existential types, polymorphism, type variables},
5717 contributer = {a3moss@plg},
5718 author = {Dan Grossman},
5719 title = {Quantified Types in an Imperative Language},
5720 journal = toplas,
5721 issue_date = {May 2006},
5722 volume = {28},
5723 number = {3},
5724 month = may,
5725 year = 2006,
5726 issn = {0164-0925},
5727 pages = {429-475},
5728 url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
5729 doi = {10.1145/1133651.1133653},
5730 acmid = {1133653},
5731 publisher = {ACM},
5732 address = {New York, NY, USA},
5733}
5734
5735@article{Hoare61,
5736 keywords = {quick sort},
5737 contributer = {pabuhr@plg},
5738 author = {C. A. R. Hoare},
5739 title = {Algorithms 63/64: Partition/Quicksort},
5740 journal = cacm,
5741 volume = 4,
5742 number = 7,
5743 month = jul,
5744 year = 1961,
5745 pages = {321},
5746}
5747
5748% R
5749
5750@article{Ada:rationale:preliminary,
5751 keywords = {Ada},
5752 contributer = {pabuhr@plg},
5753 author = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
5754 J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
5755 title = {Rationale for the Design of the {ADA} Programming Language},
5756 journal = sigplan,
5757 volume = 14,
5758 number = 6,
5759 month = jun,
5760 year = 1979,
5761 note = {Part B},
5762}
5763
5764@book{Ada:rationale,
5765 keywords = {Ada},
5766 contributer = {pabuhr@plg},
5767 author = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
5768 title = {Rationale for the Design of the {ADA} Programming Language},
5769 publisher = {Under Secretary of Defense, Research and Engineering},
5770 year = 1986,
5771 address = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
5772}
5773
5774@manual{Ada95,
5775 keywords = {Ada},
5776 contributer = {pabuhr@plg},
5777 title = {{A}da Reference Manual},
5778 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5779 organization= {Intermetrics, Inc.},
5780 month = dec,
5781 year = 1995,
5782 note = {Language and Standards Libraries}
5783}
5784
5785@manual{Ada12,
5786 keywords = {ISO/IEC Ada},
5787 contributer = {pabuhr@plg},
5788 author = {Ada12},
5789 title = {Programming languages -- {Ada} ISO/IEC 8652:2012},
5790 edition = {3rd},
5791 publisher = {International Standard Organization},
5792 address = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
5793 year = 2012,
5794}
5795
5796@manual{Ada95:annotated,
5797 keywords = {Ada},
5798 contributer = {pabuhr@plg},
5799 title = {Annotated {A}da Reference Manual},
5800 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5801 organization = {Intermetrics, Inc.},
5802 month = dec,
5803 year = 1995,
5804 note = {Language and Standards Libraries}
5805}
5806
5807@book{JavaRT00,
5808 keywords = {real time, draft},
5809 contributer = {pabuhr@plg},
5810 author = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
5811 title = {The Real-Time Specification for {J}ava},
5812 series = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
5813 publisher = {Addison-Wesley},
5814 address = {Boston},
5815 year = 2000,
5816}
5817
5818@manual{JavaRT99,
5819 organization= {Real Time for Java Experts Group},
5820 address = {{\small\textsf{http://\-www.rtj.org}}},
5821 month = sep,
5822 year = 1999,
5823}
5824
5825@article{Robinson48,
5826 keywords = {recursion, Ackermann function},
5827 contributer = {pabuhr@plg},
5828 author = {Raphael Mitchel Robinson},
5829 title = {Recursion and Double Recursion},
5830 publisher = {American Mathematical Society},
5831 journal = {Bulletin of the American Mathematical Society},
5832 volume = 54,
5833 pages = {987-993},
5834 year = 1948,
5835}
5836
5837@article{Dijkstra:red,
5838 keywords = {ada},
5839 contributer = {gjditchfield@plg},
5840 author = {Edsger W. Dijkstra},
5841 title = {On the RED Language submitted to the DoD},
5842 journal = sigplan,
5843 year = 1978,
5844 month = oct,
5845 volume = 13,
5846 number = 10,
5847 pages = {27-32},
5848}
5849
5850@article{RemoteRendezvous,
5851 keywords = {rendezvous, concurrency},
5852 contributer = {pabuhr@plg},
5853 author = {N. D. Gammage and R. F. Kamel and L. M. Casey},
5854 title = {Remote Rendezvous},
5855 journal = spe,
5856 month = oct,
5857 year = 1987,
5858 volume = 17,
5859 number = 10,
5860 pages = {741-755}
5861}
5862
5863@article{Euclid,
5864 keywords = {Euclid},
5865 contributer = {pabuhr@plg},
5866 author = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
5867 title = {Report on the Programming Language Euclid},
5868 journal = sigplan,
5869 volume = 12,
5870 number = 2,
5871 month = feb,
5872 year = 1977,
5873 pages = {1-79}
5874}
5875
5876@techreport{LOGLAN88,
5877 keywords = {LOGLAN},
5878 contributer = {pabuhr@plg},
5879 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},
5880 title = {Report on the Programming Language LOGLAN'88},
5881 institution = {Institute of Informatics, University of Warsaw},
5882 address = {Pkin 8th Floor, 00-901 Warsaw, Poland},
5883 number = {},
5884 month = dec,
5885 year = 1988,
5886}
5887
5888@mastersthesis{Schluntz17,
5889 author = {Robert Schluntz},
5890 title = {Resource Management and Tuples in {C}$\mathbf{\forall}$},
5891 school = {School of Computer Science, University of Waterloo},
5892 year = 2017,
5893 address = {Waterloo, Ontario, Canada, N2L 3G1},
5894 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
5895}
5896
5897@article{FH91,
5898 keywords = {lcc},
5899 contributer = {gjditchfield@plg},
5900 author = {Christopher W. Fraser and David R. Hanson},
5901 title = {A Retargetable Compiler for {ANSI} {C}},
5902 journal = sigplan,
5903 year = 1991,
5904 month = oct, volume = 26, number = 10, pages = {29-43},
5905 abstract = {
5906 {\tt lcc} is a new retargetable compiler for ANSI C. Versions for
5907 the VAX, Motorola 68020, SPARC, and MIPS are in production use at
5908 Princeton University and at AT\&T Bell Laboratories. With a few
5909 exceptions, little about {\tt lcc} is unusual---it integrates
5910 several well engineered, existing techniques---but it is smaller
5911 and faster than most other C compilers, and it generates code of
5912 comparable quality. {\tt lcc}'s target-independent front end
5913 performs a few simple, but effective, optimizations that contribute
5914 to good code; examples include simulating register declarations and
5915 partitioning switch statements into dense tables. It also
5916 implements target-independent function tracing and expression-level
5917 profiling.
5918 }
5919}
5920
5921@article{Algol68revised,
5922 keywords = {},
5923 contributer = {gjditchfield@plg},
5924 author = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
5925 C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
5926 Meertens and R. G. Fisher},
5927 title = {Revised Report on the Algorithmic Language {ALGOL} 68},
5928 journal = sigplan,
5929 year = 1977,
5930 month = may,
5931 volume = 12,
5932 number = 5,
5933 pages = {1-70}
5934}
5935
5936@article{scheme,
5937 keywords = {},
5938 contributer = {gjditchfield@plg},
5939 author = {Jonathan Rees and William Clinger},
5940 title = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
5941 journal = sigplan,
5942 year = 1986,
5943 month = dec,
5944 volume = 21,
5945 number = 12,
5946 pages = {37-79},
5947}
5948
5949@article{scheme5,
5950 keywords = {scheme},
5951 contributer = {pabuhr@plg},
5952 author = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
5953 R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
5954 G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
5955 title = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
5956 journal = sigplan,
5957 year = 1998,
5958 month = sep,
5959 volume = 33,
5960 number = 9,
5961 pages = {26-76},
5962}
5963
5964@manual{Rust,
5965 keywords = {Rust programming language},
5966 contributer = {pabuhr@plg},
5967 author = {{Rust}},
5968 title = {The {Rust} Programming Language},
5969 organization= {The Rust Project Developers},
5970 year = 2015,
5971 note = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
5972}
5973
5974% S
5975
5976@manual{Scala,
5977 keywords = {Scala programming language},
5978 contributer = {pabuhr@plg},
5979 author = {{Scala}},
5980 title = {{Scala} Language Specification, Version 2.11},
5981 organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
5982 year = 2016,
5983 note = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
5984}
5985
5986@inproceedings{Michael04,
5987 keywords = {lock free, dynamic memory allocation},
5988 contributer = {pabuhr@plg},
5989 author = {Maged M. Michael},
5990 title = {Scalable Lock-free Dynamic Memory Allocation},
5991 booktitle = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
5992 location = {Washington DC, USA},
5993 publisher = {ACM},
5994 address = {New York, NY, USA},
5995 volume = 39,
5996 year = 2004,
5997 month = jun,
5998 pages = {35-46},
5999}
6000
6001@article{Anderson92,
6002 keywords = {light-weight tasks},
6003 contributer = {pabuhr@plg},
6004 author = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
6005 title = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
6006 journal = tocs,
6007 volume = 10,
6008 number = 1,
6009 month = feb,
6010 year = 1992,
6011 pages = {53-79},
6012}
6013
6014@manual{SELF,
6015 keywords = {programming language, obect-oriented, polymorphism},
6016 contributer = {pabuhr@plg},
6017 author = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
6018 and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
6019 title = {The {SELF} 3.0 Programmer's Reference Manual},
6020 organization= {Sun Microsystems, Inc., and Stanford University},
6021 year = 1993,
6022}
6023
6024@inproceedings{Cardelli84,
6025 keywords = {subtypes, recursive types, records, variants, object oriented},
6026 contributer = {gjditchfield@plg},
6027 author = {Luca Cardelli},
6028 title = {A Semantics of Multiple Inheritance},
6029 booktitle = {Semantics of Data Types},
6030 year = 1984,
6031 pages = {51-67},
6032 editor = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
6033 publisher = {Springer},
6034 note = {Lecture Notes in Computer Science v. 173},
6035}
6036
6037@techreport{Adve95,
6038 keywords = {shared memory, consistency models},
6039 contributer = {pabuhr@plg},
6040 author = {Sarita V. Adve and Kourosh Gharachorloo},
6041 title = {Shared Memory Consistency Models: A Tutorial},
6042 institution = {Western Research Laboratory},
6043 address = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
6044 number = {7},
6045 month = sep,
6046 year = 1995,
6047 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}.},
6048}
6049
6050@article{Adve95reprint,
6051 keywords = {shared memory, consistency models},
6052 contributer = {pabuhr@plg},
6053 author = {Sarita V. Adve and Kourosh Gharachorloo},
6054 journal = {Computer},
6055 title = {Shared Memory Consistency Models: A Tutorial},
6056 month = dec,
6057 year = 1996,
6058 volume = 29,
6059 number = 12,
6060 pages = {66-76},
6061}
6062
6063@article{Nickolls08,
6064 author = {Nickolls, John and Buck, Ian and Garland, Michael and Skadron, Kevin},
6065 title = {Scalable Parallel Programming with CUDA},
6066 journal = {Queue},
6067 volume = {6},
6068 number = {2},
6069 month = mar,
6070 year = 2008,
6071 pages = {40-53},
6072 publisher = {ACM},
6073 address = {New York, NY, USA},
6074}
6075
6076@inproceedings{Leissa14,
6077 title = {Sierra: a SIMD extension for C++},
6078 author = {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian},
6079 booktitle = {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing},
6080 pages = {17--24},
6081 year = {2014},
6082 organization= {ACM}
6083}
6084
6085@inproceedings{Howard76b,
6086 keywords = {monitors},
6087 contributer = {pabuhr@plg},
6088 author = {J. H. Howard},
6089 title = {Signaling in Monitors},
6090 booktitle = {Proceedings Second International Conference Software Engineering},
6091 address = {San Francisco, U.S.A},
6092 publisher = {IEEE Computer Society},
6093 month = oct,
6094 year = 1976,
6095 pages = {47-52}
6096}
6097
6098@techreport{Schemenauer01,
6099 keywords = {Phthon, generator, coroutine},
6100 contributer = {pabuhr@plg},
6101 author = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
6102 title = {Simple Generators},
6103 month = may,
6104 year = 2001,
6105 note = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
6106}
6107
6108@inproceedings{Michael96,
6109 keywords = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
6110 contributer = {pabuhr@plg},
6111 author = {Maged M. Michael and Michael L. Scott},
6112 title = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
6113 booktitle = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
6114 series = {PODC'96},
6115 year = 1996,
6116 location = {Philadelphia, Pennsylvania, USA},
6117 pages = {267--275},
6118 numpages = {9},
6119 publisher = {ACM},
6120 address = {New York, NY, USA},
6121}
6122
6123@article{Pennello80,
6124 contributer = {a3moss@uwaterloo.ca},
6125 author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
6126 title = {A Simplified Operator Identification Scheme for {Ada}},
6127 journal = {SIGPLAN Notices},
6128 issue_date = {July-August 1980},
6129 volume = {15},
6130 number = {7 and 8},
6131 month = jul,
6132 year = {1980},
6133 issn = {0362-1340},
6134 pages = {82--87},
6135 numpages = {6},
6136 url = {http://doi.acm.org/10.1145/947680.947688},
6137 doi = {10.1145/947680.947688},
6138 publisher = {ACM},
6139 address = {New York, NY, USA},
6140}
6141
6142@inproceedings{Dice10,
6143 keywords = {hardware, synchronization, transactional memory},
6144 author = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
6145 title = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
6146 booktitle = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
6147 series = {SPAA'10},
6148 year = 2010,
6149 location = {Thira, Santorini, Greece},
6150 pages = {325-334},
6151 numpages = {10},
6152 publisher = {ACM},
6153 address = {New York, NY, USA},
6154}
6155
6156@article{PDM:overload,
6157 keywords = {compilation},
6158 contributer = {gjditchfield@plg},
6159 author = {Tom Pennello and Frank DeRemer and Richard Meyers},
6160 title = {A Simplified Operator Identification Scheme for {Ada}},
6161 journal = sigplan,
6162 year = 1980,
6163 month = {July--August},
6164 volume = 15,
6165 number = {7/8},
6166 pages = {82-87},
6167 comment = {
6168 The two-pass (bottom-up, top-down) overload resolution algorithm
6169 for Ada, with a proof that two passes suffice and a claim that two
6170 are necessary. See \cite{D:overload}.
6171 }
6172}
6173
6174@book{SimulaBegin,
6175 author = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
6176 title = {{SIMULA} begin},
6177 publisher = {Studentlitteratur},
6178 year = {1980},
6179 address = {Lund, Sweden},
6180 edition = {2nd},
6181}
6182
6183@book{Simula67,
6184 author = {O-J Dahl and B. Myhrhaug and K. Nygaard},
6185 title = {Simula67 Common Base Language},
6186 month = oct,
6187 year = 1970,
6188 publisher = {Norwegian Com\-puting Center},
6189 address = {Oslo Norway},
6190}
6191
6192@book{smalltalk,
6193 keywords = {Smalltalk, abstract class, protocol},
6194 contributer = {gjditchfield@plg},
6195 author = {A. Goldberg and D. Robson},
6196 title = {Smalltalk-80: The Language and its Implementation},
6197 publisher = {Addison-Wesley},
6198 address = {Reading},
6199 year = 1983
6200}
6201
6202@inproceedings{Edelson92,
6203 keywords = {persistence, pointers},
6204 contributer = {pabuhr@plg},
6205 author = {Daniel R. Edelson},
6206 title = {Smart Pointers: They're Smart, but They're Not Pointers},
6207 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
6208 organization= {USENIX Association},
6209 address = {Portland, Oregon, U.S.A.},
6210 month = aug,
6211 year = 1992,
6212 pages = {1-19},
6213}
6214
6215@book{SNOBOL,
6216 keywords = {SNOBOL4},
6217 contributer = {pabuhr@plg},
6218 author = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
6219 title = {The SNOBOL4 Programming Language},
6220 edition = {2nd},
6221 publisher = {Prentice-Hall},
6222 address = {Englewood Cliffs},
6223 year = 1971,
6224}
6225
6226@article{Sutter05b,
6227 keywords = {concurrency},
6228 contributer = {pabuhr@plg},
6229 author = {Herb Sutter and James Larus},
6230 title = {Software and the Concurrency Revolution},
6231 journal = {Queue},
6232 year = 2005,
6233 month = sep,
6234 volume = 3,
6235 number = 7,
6236 pages = {54-62},
6237}
6238
6239@inproceedings{raytheon,
6240 keywords = {cobol},
6241 contributer = {gjditchfield@plg},
6242 author = {Robert G. Lanergan and Charles A. Grasso},
6243 title = {Software Engineering with Reusable Designs and Code},
6244 booktitle = {Workshop on Reusability in Programming},
6245 year = 1983,
6246 month = sep,
6247 pages = {224-234},
6248 organization= {{ITT} Programming},
6249 summary = {
6250 60\% of business application design and code are redundant.
6251 Three standard program plans are used. Reuse doubles productivity
6252 during development and greatly helps program comprehension during
6253 maintenance.
6254 }
6255}
6256
6257@article{Hecht86,
6258 keywords = {exception handling, robustness},
6259 contributer = {pabuhr@plg},
6260 author = {H. Hecht and M. Hecht},
6261 title = {Software Reliability in the Systems Context},
6262 journal = ieeese,
6263 year = 1986,
6264 volume = 12,
6265 number = 1,
6266 pages = {51-58},
6267}
6268
6269@inproceedings{Herlihy03,
6270 author = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
6271 title = {Software Transactional Memory for Dynamic-sized Data Structures},
6272 booktitle = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
6273 series = {PODC '03},
6274 year = {2003},
6275 location = {Boston, Massachusetts},
6276 pages = {92-101},
6277 numpages = {10},
6278 publisher = {ACM},
6279 address = {New York, NY, USA},
6280}
6281
6282@article{Dijkstra65a,
6283 keywords = {N-thread software-solution mutual exclusion},
6284 contributer = {pabuhr@plg},
6285 author = {Edsger W. Dijkstra},
6286 title = {Solution of a Problem in Concurrent Programming Control},
6287 journal = cacm,
6288 volume = 8,
6289 number = 9,
6290 month = sep,
6291 year = 1965,
6292 pages = {569},
6293 publisher = {ACM},
6294 address = {New York, NY, USA},
6295}
6296
6297@inproceedings{Chen05,
6298 keywords = {fixed-priority, preemption},
6299 contributer = {pabuhr@plg},
6300 author = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
6301 title = {Solution Space for Fixed-Priority with Preemption Threshold},
6302 booktitle = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
6303 organization= {IEEE},
6304 address = {San Francisco, CA, U.S.A},
6305 month = mar,
6306 year = 2005,
6307 pages = {385-394}
6308}
6309
6310@inproceedings{Tiemann88,
6311 keywords = {wrappers},
6312 contributer = {pabuhr@plg},
6313 author = {Michael D. Tiemann},
6314 title = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6315 booktitle = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
6316 organization= {USENIX Association},
6317 address = {Denver, Colorado, U.S.A},
6318 month = oct,
6319 year = 1988,
6320 pages = {343-361}
6321}
6322
6323@article{Smith98,
6324 keywords = {Polymorphic C},
6325 contributor = {a3moss@uwaterloo.ca},
6326 title = {A sound polymorphic type system for a dialect of C},
6327 author = {Smith, Geoffrey and Volpano, Dennis},
6328 journal = {Science of computer programming},
6329 volume = 32,
6330 number = {1-3},
6331 pages = {49-72},
6332 year = {1998},
6333 publisher = {Elsevier}
6334}
6335
6336@book{Campbell74,
6337 keywords = {path expressions},
6338 contributer = {pabuhr@plg},
6339 author = {R. H. Campbell and A. N. Habermann},
6340 title = {The Specification of Process Synchronization by Path Expressions},
6341 publisher = {Springer},
6342 year = 1974,
6343 volume = 16,
6344 pages = {89-102},
6345 series = {Lecture Notes in Computer Science},
6346}
6347
6348@article{Bentley85,
6349 keywords = {CSP, concurrency},
6350 contributer = {pabuhr@plg},
6351 author = {J. Bentley},
6352 title = {A Spelling Checker},
6353 journal = cacm,
6354 month = may,
6355 year = 1985,
6356 volume = 28,
6357 number = 5,
6358 pages = {456-462},
6359}
6360
6361@manual{POSIX01,
6362 keywords = {POSIX, Standard},
6363 contributer = {pabuhr@plg},
6364 key = {POSIX},
6365 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
6366 organization= {IEEE and The Open Group},
6367 year = 2001,
6368}
6369
6370@manual{POSIX08,
6371 keywords = {POSIX, Standard},
6372 contributer = {pabuhr@plg},
6373 key = {POSIX},
6374 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
6375 organization= {IEEE and The Open Group},
6376 year = 2008,
6377}
6378
6379@inproceedings{ML:NJ,
6380 keywords = {continuations, ML},
6381 contributer = {pabuhr@plg},
6382 author = {A. Appel and D. MacQueen},
6383 title = {A Standard {ML} Compiler},
6384 booktitle = {Functional Programming Languages and Computer Architecture},
6385 publisher = {Springer},
6386 series = {Lecture Notes in Computer Science},
6387 volume = 274,
6388 year = 1987,
6389 pages = {301-324},
6390}
6391
6392@techreport{MLreport,
6393 keywords = {ML, polymorphism},
6394 contributer = {pabuhr@plg},
6395 author = {R. Milner},
6396 title = {The Standard {ML} Core Language},
6397 institution = {},
6398 number = {Polymorphism II.2},
6399 month = oct,
6400 year = 1985
6401}
6402
6403@inproceedings{Ghelli,
6404 keywords = {},
6405 contributer = {gjditchfield@plg},
6406 author = {Giorgio Ghelli},
6407 title = {A Static Type System for Message Passing},
6408 crossref = "OOPSLA91",
6409 pages = {129-145},
6410 summary = {
6411 A strong, statically checked type system for object oriented
6412 languages is defined by modelling methods as overloaded functions
6413 with a "self" parameter, with dynamic overload resolution. This
6414 allows covariant method redefinition. However, if equality is
6415 covariantly redefined for Point and ColoredPoint classes, and a
6416 ColoredPoint is compared to a Point, Point equality will be used,
6417 even if self is the colored point!
6418 }
6419}
6420
6421@article{Dijkstra68b,
6422 keywords = {semaphore, P/V},
6423 contributer = {pabuhr@plg},
6424 author = {E. W. Dijkstra},
6425 title = {The Structure of the ``{THE}''--Multiprogramming System},
6426 journal = cacm,
6427 month = may,
6428 year = 1968,
6429 volume = 11,
6430 number = 5,
6431 pages = {341-346}
6432}
6433
6434@online{Sutter15,
6435 contributer = {pabuhr@plg},
6436 author = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
6437 title = {Structured bindings},
6438 issue_date = {2015-10-14},
6439 month = oct,
6440 year = 2015,
6441 pages = {1--6},
6442 numpages = {6},
6443 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}},
6444}
6445
6446@book{Holt78,
6447 keywords = {operating systems, concurrency},
6448 contributer = {pabuhr@plg},
6449 author = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
6450 title = {Structured Concurrent Programming with Operating System Applications},
6451 publisher = {Addison-Wesley},
6452 address = {Boston},
6453 year = 1978,
6454}
6455
6456@article{Stevens74,
6457 keywords = {coupling, cohesion},
6458 contributer = {pabuhr@plg},
6459 author = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
6460 title = {Structured Design},
6461 journal = ibmsj,
6462 year = 1974,
6463 volume = 13,
6464 number = 2,
6465 pages = {115-139},
6466}
6467
6468@article{Hansen72b,
6469 keywords = {critical region},
6470 contributer = {pabuhr@plg},
6471 author = {Per {Brinch Hansen}},
6472 title = {Structured Multiprogramming},
6473 journal = cacm,
6474 volume = 15,
6475 number = 7,
6476 month = jul,
6477 year = 1972,
6478 pages = {574-578},
6479}
6480
6481@article{Knuth74,
6482 keywords = {structured programming, goto statement},
6483 contributer = {pabuhr@plg},
6484 author = {Donald E. Knuth},
6485 title = {Structured Programming with go to Statements},
6486 journal = acmcs,
6487 volume = 6,
6488 number = 4,
6489 month = dec,
6490 year = 1974,
6491 pages = {261-301},
6492 issn = {0360-0300},
6493 doi = {http://doi.acm.org/10.1145/356635.356640},
6494 publisher = {ACM},
6495 address = {New York, NY, USA},
6496}
6497
6498@article{Lang98,
6499 keywords = {real-time, exception handling},
6500 contributer = {pabuhr@plg},
6501 author = {Jun Lang and David B. Stewart},
6502 title = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
6503 journal = toplas,
6504 month = mar,
6505 year = 1998,
6506 volume = 20,
6507 number = 2,
6508 pages = {274-301},
6509}
6510
6511@mastersthesis{Fortier89,
6512 keywords = {monitors},
6513 contributer = {pabuhr@plg},
6514 author = {Michel Fortier},
6515 title = {Study of Monitors},
6516 school = {Department of Computer Science, University of Waterloo},
6517 year = 1989,
6518 address = {Waterloo, Ontario, Canada, N2L 3G1},
6519}
6520
6521@techreport{AmadioCardelli,
6522 keywords = {},
6523 contributer = {gjditchfield@plg},
6524 author = {Roberto M. Amadio and Luca Cardelli},
6525 title = {Subtyping Recursive Types},
6526 institution = {Digital Equipment Corporation Systems Research Center},
6527 year = 1990,
6528 address = {130 Lytton Avenue, Palo Alto, California 94301},
6529 month = aug,
6530 number = 62,
6531 summary = {
6532 \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
6533 \mu s.\alpha leq \mu t.\beta \]
6534 \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
6535 \Rightarrow \alpha = \beta \]
6536 where a type \(\alpha\) is contractive in the type variable \(t\)
6537 if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
6538 can be rewritten via unfolding as a type of the shape
6539 \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
6540 \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\). An
6541 algorithm for finding type contexts \(C\) is given.
6542 }
6543}
6544
6545@techreport{Dijkstra80,
6546 keywords = {split binary semaphores, general to binary},
6547 contributer = {pabuhr@plg},
6548 author = {Edsger W. Dijkstra},
6549 title = {The Superfluity of the General Semaphore},
6550 institution = {Nuenen},
6551 address = {Netherlands},
6552 number = {EWD734},
6553 month = apr,
6554 year = 1980,
6555}
6556
6557@inproceedings{Burns81,
6558 keywords = {N-thread software-solution mutual exclusion},
6559 contributer = {pabuhr@plg},
6560 author = {James E. Burns},
6561 title = {Symmetry in Systems of Asynchronous Processes},
6562 booktitle = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
6563 year = 1981,
6564 month = oct,
6565 organization= {IEEE Computer Society},
6566 address = {Los Angeles, CA, USA},
6567 pages = {169-174},
6568}
6569
6570@article{Coffman71,
6571 keywords = {deadlock},
6572 contributer = {pabuhr@plg},
6573 author = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
6574 title = {System Deadlocks},
6575 journal = acmcs,
6576 volume = 3,
6577 number = 2,
6578 month = jun,
6579 year = 1971,
6580 pages = {67-78},
6581 publisher = {ACM Press},
6582 address = {New York, NY, USA},
6583 doi = {http://doi.acm.org/10.1145/356586.356588},
6584}
6585
6586@phdthesis{Holmes99,
6587 keywords = {synchronization, inheritance anomaly},
6588 contributer = {pabuhr@plg},
6589 author = {David Holmes},
6590 title = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
6591 school = {Department of Computing, Macquarie University},
6592 month = oct,
6593 year = 1999,
6594 address = {Sydney, Australia},
6595}
6596
6597@book{Taubenfeld06,
6598 keywords = {concurrency, synchronization},
6599 author = {Gadi Taubenfeld},
6600 title = {Synchronization Algorithms and Concurrent Programming},
6601 publisher = {Pearson/Prentice-Hall},
6602 address = {Harlow, England},
6603 year = 2006,
6604}
6605
6606@article{Buhr92b,
6607 keywords = {concurrency, exception handling, interventions},
6608 contributer = {pabuhr@plg},
6609 author = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
6610 title = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
6611 journal = spe,
6612 volume = 22,
6613 number = 9,
6614 month = sep,
6615 year = 1992,
6616 pages = {735-776},
6617}
6618
6619@inproceedings{Greenwald96,
6620 keywords = {compare and swap, hardware atomicity},
6621 contributer = {pabuhr@plg},
6622 author = {Michael Greenwald and David Cheriton},
6623 title = {The Synergy between Non-blocking Synchronization and Operating System Structure},
6624 booktitle = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
6625 organization= {USENIX Association},
6626 address = {Seattle, Washington, U.S.A.},
6627 month = oct,
6628 year = 1996,
6629 pages = {123-136},
6630}
6631
6632@inbook{SunLWP,
6633 keywords = {light-weight processes, threads},
6634 contributer = {pabuhr@plg},
6635 key = {Sun},
6636 title = {System Services Overview, Lightweight Processes},
6637 chapter = {6},
6638 pages = {71-111},
6639 publisher = {Sun Microsystems},
6640 month = may,
6641 year = 1988,
6642 note = {available as Part Number: 800-1753-10},
6643}
6644
6645@article{Randell75,
6646 contributer = {pabuhr@plg},
6647 author = {Brian Randell},
6648 title = {System Structure for Software Fault Tolerance},
6649 journal = ieeese,
6650 volume = {SE-1},
6651 number = 2,
6652 month = jun,
6653 year = 1975,
6654 pages = {220-232},
6655}
6656
6657@book{Modula-3,
6658 keywords = {language reference manual},
6659 contributer = {pabuhr@plg},
6660 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},
6661 title = {Systems Programming with Modula-3},
6662 publisher = {Prentice-Hall},
6663 address = {Englewood Cliffs},
6664 year = 1991,
6665 series = {Prentice-Hall Series in Innovative Technology}
6666}
6667
6668% T
6669
6670@article{Yeager91,
6671 keywords = {teaching, concurrency},
6672 contributer = {pabuhr@plg},
6673 author = {Dorian P. Yeager},
6674 title = {Teaching Concurrency in the Programming Languages Course},
6675 journal = {SIGCSE BULLETIN},
6676 volume = 23,
6677 number = 1,
6678 month = mar,
6679 year = 1991,
6680 pages = {155-161},
6681 note = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
6682 March. 7--8, 1991, San Antonio, Texas, U.S.A.},
6683}
6684
6685@article{ml,
6686 keywords = {ML, polymorphism},
6687 contributer = {gjditchfield@plg},
6688 author = {Robin Milner},
6689 title = {A Theory of Type Polymorphism in Programming},
6690 journal = jcss,
6691 year = 1978,
6692 volume = 17, pages = {348-375}
6693}
6694
6695@book{Thoth,
6696 keywords = {messages, concurrency},
6697 contributer = {pabuhr@plg},
6698 author = {D. R. Cheriton},
6699 title = {The Thoth System: Multi-Process Structuring and Portability},
6700 publisher = {American Elsevier},
6701 year = 1982
6702}
6703
6704@article{Boehm05,
6705 keywords = {concurrency, C++},
6706 contributer = {pabuhr@plg},
6707 author = {Hans-J. Boehm},
6708 title = {Threads Cannot be Implemented as a Library},
6709 journal = sigplan,
6710 volume = 40,
6711 number = 6,
6712 month = jun,
6713 year = 2005,
6714 pages = {261-268},
6715}
6716
6717@online{TIOBE,
6718 contributer = {pabuhr@plg},
6719 author = {{TIOBE Index}},
6720 year = {February 2018},
6721 url = {http://www.tiobe.com/tiobe_index},
6722}
6723
6724@misc{Bumbulis90,
6725 keywords = {parameter inference, ForceN},
6726 contributer = {gjditchfield@plg},
6727 author = {Peter Bumbulis},
6728 title = {Towards Making Signatures First-Class},
6729 howpublished= {personal communication},
6730 month = sep,
6731 year = 1990,
6732 note = {}
6733}
6734
6735@techreport{alphard:preempt,
6736 keywords = {},
6737 contributer = {gjditchfield@plg},
6738 author = {Mary Shaw and Wm. A. Wulf},
6739 title = {Toward Relaxing Assumptions in Languages and Their Implementations},
6740 institution = {Carnegie-Mellon University},
6741 year = 1980,
6742 month = jan,
6743 note = {Reprinted in \cite{alphard}.}
6744}
6745
6746@inproceedings{Reynolds74,
6747 keywords = {universal quantification, typed lambda calculus},
6748 contributer = {gjditchfield@plg},
6749 author = {John C. Reynolds},
6750 title = {Towards a Theory of Type Structure},
6751 booktitle = {Colloque sur la Programmation},
6752 year = 1974,
6753 pages = {408-423},
6754 editor = {B. Robinet},
6755 publisher = {Springer},
6756 note = {Lecture Notes in Computer Science, v. 19},
6757 abstract = {
6758
6759 }
6760}
6761
6762@incollection{Hoare72,
6763 keywords = {critical region, concurrency},
6764 contributer = {pabuhr@plg},
6765 author = {C. A. R. Hoare},
6766 title = {Towards a Theory of Parallel Programming},
6767 booktitle = {Operating Systems Techniques},
6768 editor = {C. A. R. Hoare and R. H. Perott},
6769 publisher = {Academic Press, New York},
6770 year = 1972,
6771 pages = {61-71},
6772}
6773
6774@inproceedings{Mitchell90,
6775 keywords = {polymorphism, lambda calculus, bounded quantification},
6776 contributer = {gjditchfield@plg},
6777 author = {John C. Mitchell},
6778 title = {Toward a Typed Foundation for Method Specialization and Inheritance},
6779 booktitle = {Conference Record of the Seventeenth Annual ACM Symposium
6780 on Principles of Programming Languages},
6781 year = 1990,
6782 month = jan, pages = {109-124},
6783 organization= {Association for Computing Machinery},
6784 abstract = {
6785 This paper disucsses the phenomenon of {\em method specialization}
6786 in object-oriented programming languages. A typed function
6787 calculus of objects and classes is presented, featuring method
6788 specialization when methods are added or redefined. The soundness
6789 of the typing rules (without subtyping) is suggested by a
6790 translation into a more traditional calculus with
6791 recursively-defined record types. However, semantic questions
6792 regarding the subtype relation on classes remain open.
6793 }
6794}
6795
6796@article{EL1,
6797 keywords = {polymorphism},
6798 contributer = {pabuhr@plg},
6799 author = {B. Wegbreit},
6800 title = {The Treatment of Data Types in {EL1}},
6801 journal = cacm,
6802 volume = 17,
6803 number = 5,
6804 month = may,
6805 year = 1974,
6806 pages = {251-264},
6807}
6808
6809@mastersthesis{Till89,
6810 keywords = {C, multiple return values, tuples},
6811 contributer = {pabuhr@plg},
6812 author = {David W. Till},
6813 title = {Tuples In Imperative Programming Languages},
6814 school = {Department of Computer Science, University of Waterloo},
6815 year = 1989,
6816 address = {Waterloo, Ontario, Canada, N2L 3G1},
6817}
6818
6819@article{turing:old,
6820 keywords = {verification, context conditions, faithful execution},
6821 contributer = {gjditchfield@plg},
6822 author = {R. C. Holt and J. R. Cordy},
6823 title = {The Turing Programming Language},
6824 journal = cacm,
6825 year = 1988,
6826 month = dec,
6827 volume = 31, number = 12, pages = {1410-1423}
6828}
6829
6830@book{Turing,
6831 keywords = {verification, context conditions, faithful execution},
6832 contributer = {pabuhr@plg},
6833 author = {R. C. Holt},
6834 title = {Turing Reference Manual},
6835 publisher = {Holt Software Associates Inc.},
6836 year = 1992,
6837 edition = {3rd},
6838}
6839
6840@techreport{Dijkstra79,
6841 keywords = {split binary semaphores},
6842 contributer = {pabuhr@plg},
6843 author = {Edsger W. Dijkstra},
6844 title = {A Tutorial on the Split Binary Semaphore},
6845 institution = {Nuenen},
6846 address = {Netherlands},
6847 number = {EWD703},
6848 month = mar,
6849 year = 1979,
6850}
6851
6852@book{pldesign,
6853 keywords = {},
6854 editor = {Anthony I. Wasserman},
6855 title = {Tutorial: Programming Language Design},
6856 publisher = {Computer Society Press},
6857 address = {Los Alamitos},
6858 year = 1980
6859}
6860
6861@article{Leroy00,
6862 keywords = {type-systems, exceptions},
6863 contributer = {pabuhr@plg},
6864 author = {Xavier Leroy and Fran\c{c}ois Pessaux},
6865 title = {Type-Based Analysis of Uncaught Exceptions},
6866 journal = toplas,
6867 month = mar,
6868 year = 2000,
6869 volume = 22,
6870 number = 2,
6871 pages = {340-377},
6872 comment = {
6873 Argues against declaring exceptions on routine definitions.
6874 },
6875}
6876
6877@article{Cormack90,
6878 keywords = {polymorphism},
6879 contributer = {pabuhr@plg},
6880 author = {G. V. Cormack and A. K. Wright},
6881 title = {Type-dependent Parameter Inference},
6882 journal = sigplan,
6883 volume = 25,
6884 number = 6,
6885 month = jun,
6886 publisher = {ACM},
6887 address = {New York, NY, USA},
6888 year = 1990,
6889 pages = {127-136},
6890 note = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
6891 June 20-22, 1990, White Plains, New York, U.S.A.},
6892}
6893
6894@article{concatenation,
6895 keywords = {record concatenation, isa},
6896 contributer = {gjditchfield@plg},
6897 author = {N. Wirth},
6898 title = {Type Extensions},
6899 journal = toplas,
6900 volume = {10},
6901 number = {2},
6902 pages = {204-214},
6903 month = apr, year = 1988,
6904 comment = {
6905 Extended record types add fields to their base record. Assignment
6906 truncations. Pointers can point at extended type instances. For
6907 polymorphism, call by value is assignment, and call by reference is
6908 pointer passing. Overloading isn't discussed. Type information
6909 can be recovered through an ``is'' type test or through type guards
6910 (casts). A version of the WITH statement could avoid repeated
6911 checking.
6912
6913 Private/public access to record fields can be provided by exporting
6914 a base type, and using a private extension. Statically allocated
6915 instances need a compiler hint specifying the maximum size of the
6916 private type.
6917
6918 Type checking is cheap (if the creation of pointer values is
6919 controlled). Types have type descriptors. Extension descriptors
6920 point at their direct base. Heap objects point at their
6921 descriptor, and reference parameters are accompanied by type
6922 descriptor parameters. ``v is t0'' loops along the chain of
6923 descriptors.
6924 }
6925}
6926
6927% U
6928
6929@book{uC++book,
6930 keywords = {control structure, concurrency, uC++},
6931 contributer = {pabuhr@plg},
6932 author = {Peter A. Buhr},
6933 title = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6934 publisher = {Springer},
6935 address = {Switzerland},
6936 year = 2016,
6937}
6938
6939@article{Cardelli85,
6940 keywords = {polymorphism},
6941 contributer = {pabuhr@plg},
6942 author = {Luca Cardelli and Peter Wegner},
6943 title = {On Understanding Types, Data Abstractions, and Polymorphism},
6944 journal = acmcs,
6945 month = dec,
6946 year = 1985,
6947 volume = 17,
6948 number = 4,
6949 pages = {471-522},
6950}
6951
6952@inproceedings{Wilson92,
6953 keywords = {garbage collection survey},
6954 contributer = {pabuhr@plg},
6955 author = {Paul R. Wilson},
6956 title = {Uniprocessor Garbage Collection Techniques},
6957 booktitle = {Proceedings of the International Workshop on Memory Management},
6958 location = {St. Malo, France},
6959 publisher = {Springer},
6960 series = {Lecture Notes in Computer Science},
6961 volume = 637,
6962 month = sep,
6963 year = {1992},
6964 pages = {1-42},
6965}
6966
6967@inproceedings{Hewitt73,
6968 author = {Carl Hewitt and Peter Bishop and Richard Steiger},
6969 title = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
6970 booktitle = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
6971 address = {Standford, California, U.S.A.},
6972 pages = {235-245},
6973 month = aug,
6974 year = 1973,
6975}
6976
6977@article{Bourne78,
6978 keywords = {Shell},
6979 contributer = {pabuhr@plg},
6980 author = {S. R. Bourne},
6981 title = {The UNIX Shell},
6982 journal = {The Bell System Technical Journal},
6983 volume = {57, part 2},
6984 month = {July--August},
6985 year = 1978,
6986 pages = {1971-1990},
6987}
6988
6989@inproceedings{Krischer12,
6990 keywords = {exception, usability, asynchronous, assertion, injection, logging},
6991 contributer = {pabuhr@plg},
6992 author = {Roy Krischer and Peter A. Buhr},
6993 title = {Usability Challenges in Exception Handling},
6994 booktitle = {5th International Workshop on Exception Handling (WEH)},
6995 organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
6996 address = {Zurich, Switzerland},
6997 month = jun,
6998 year = 2012,
6999 pages = {7-13},
7000}
7001
7002@techreport{Harmony,
7003 keywords = {messages, concurrency},
7004 contributer = {pabuhr@plg},
7005 author = {W. Morven Gentleman},
7006 title = {Using the Harmony Operating System},
7007 institution = {National Research Council of Canada, Ottawa, Canada},
7008 number = {24685},
7009 month = may,
7010 year = 1985
7011}
7012
7013@article{delegation,
7014 keywords = {delegation, inheritance, actors},
7015 contributer = {gjditchfield@plg},
7016 author = {Henry Lieverman},
7017 title = {Using Prototypical Objects to Implement Shared Behavior in
7018 Object Oriented Systems},
7019 journal = sigplan,
7020 month = nov, year = 1986,
7021 volume = 21, number = 11, pages = {214-223}
7022}
7023
7024% V
7025
7026@article{V-Kernel,
7027 keywords = {messages, concurrency},
7028 contributer = {pabuhr@plg},
7029 author = {David R. Cheriton},
7030 title = {The {V} Distributed System},
7031 journal = cacm,
7032 month = mar,
7033 year = 1988,
7034 volume = 31,
7035 number = 3,
7036 pages = {314-333}
7037}
7038
7039@online{Vala,
7040 keywords = {GObject, Vala},
7041 contributor = {a3moss@uwaterloo.ca},
7042 author = {{Vala}},
7043 organization= {The GNOME Project},
7044 title = {Vala Reference Manual},
7045 year = 2017,
7046 url = {https://wiki.gnome.org/Projects/Vala/Manual},
7047 urldate = {2017-04-04}
7048}
7049
7050@inproceedings{Amdahl67,
7051 author = {Gene M. Amdahl},
7052 title = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
7053 booktitle = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
7054 series = {AFIPS '67 (Spring)},
7055 year = 1967,
7056 location = {Atlantic City, New Jersey},
7057 pages = {483--485},
7058 publisher = {ACM},
7059 address = {New York, NY, USA},
7060}
7061
7062@article{Mayer81,
7063 keywords = {},
7064 contributer = {pabuhr@plg},
7065 author = {A. J. W. Mayer},
7066 title = {Value Receiving Procedures},
7067 journal = sigplan,
7068 volume = 16,
7069 number = 11,
7070 month = nov,
7071 year = 1981,
7072 pages = {30-34},
7073}
7074
7075@article{Doran80,
7076 keywords = {concurrency, Dekker's Algorithm},
7077 contributer = {pabuhr@plg},
7078 author = {R. W. Doran and L. K. Thomas},
7079 title = {Variants of the Software Solution to Mutual Exclusion},
7080 journal = ipl,
7081 month = jul,
7082 year = 1980,
7083 volume = 10,
7084 number = {4/5},
7085 pages = {206-208},
7086}
7087
7088@book{VAX,
7089 keywords = {VAX, DEC},
7090 contributer = {pabuhr@plg},
7091 key = {VAX},
7092 title = {VAX-11 Architecture Reference Manual},
7093 publisher = {Digital Press},
7094 address = {Bedford},
7095 month = may,
7096 year = 1982,
7097}
7098
7099@book{Kenah88,
7100 author = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
7101 title = {{VAX/VMS} Internals and Data Structures Version 4.4},
7102 publisher = {Digital Press},
7103 address = {Bedford},
7104 year = 1988,
7105}
7106
7107@article{Hesselink13,
7108 keywords = {software solutions, N-thread, mutual exclusions},
7109 contributer = {pabuhr@plg},
7110 author = {Wim H. Hesselink},
7111 title = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
7112 journal = {Acta Informatica},
7113 publisher = {Springer},
7114 address = {New York},
7115 year = {2013},
7116 volume = {50},
7117 number = {3},
7118 pages = {199-228},
7119}
7120
7121% W
7122
7123@article{Herlihy91,
7124 keywords = {linearization, wait-free synchronization},
7125 contributer = {pabuhr@plg},
7126 author = {Maurice Herlihy},
7127 title = {Wait-free Synchronization},
7128 journal = toplas,
7129 volume = {13},
7130 number = {1},
7131 month = jan,
7132 year = 1991,
7133 pages = {124--149},
7134 numpages = {26},
7135 publisher = {ACM},
7136 address = {New York, NY, USA},
7137}
7138
7139@techreport{Moss90,
7140 keywords = {Swizzling, database},
7141 contributer = {akgoel@plg},
7142 author = {J. Moss},
7143 title = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
7144 institution = {CS Department, University of Massachusetts},
7145 address = {},
7146 number = {CS 90-38},
7147 month = may,
7148 year = 1990,
7149}
7150
7151@inproceedings{Str:oop,
7152 keywords = { },
7153 contributer = {pabuhr@plg},
7154 author = {Bjarne Stroustrup},
7155 title = {What is ``Object-Oriented Programming''?},
7156 booktitle = {Proceedings of the First European Conference on Object Oriented Programming},
7157 month = jun,
7158 year = 1987
7159}
7160
7161@misc{Stroustrup:overloading,
7162 keywords = {operator overloading},
7163 contributer = {pabuhr@plg},
7164 author = {Bjarne Stroustrup},
7165 title = {Why can't I overload dot, ::, sizeof, etc.?},
7166 month = oct,
7167 year = 2007,
7168 howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
7169}
7170
7171@techreport{Gray85,
7172 keywords = {fault-tolerant system},
7173 contributer = {pabuhr@plg},
7174 author = {Jim Gray},
7175 title = {Why Do Computers Stop and What Can Be Done About It?},
7176 institution = {Tandem Computers},
7177 number = {85.7 PN87614},
7178 month = jun,
7179 year = 1985,
7180 note = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
7181}
7182
7183% X
7184
7185% Y
7186
7187% Z
7188
7189% Cross-referenced entries:
7190
7191% O
7192
7193% The SIGPLAN Notices issue should be in a note field, but notes are
7194% inherited by all refering entries, instead of being held in the
7195% cross-referenced entry. Putting it in "publisher" is a kludge, but it
7196% works.
7197@proceedings{OOPSLA86,
7198 contributer = {gjditchfield@plg},
7199 title = {{OOPSLA} '86 Conference Proceedings},
7200 booktitle = {{OOPSLA} '86 Conference Proceedings},
7201 year = 1986,
7202 editor = {Norman Meyrowitz},
7203 publisher = sigplan # " 21(11)",
7204 organization= {Association for Computing Machinery},
7205 address = {Portland, Oregon},
7206 month = sep # { 29}
7207}
7208
7209@proceedings{OOPSLA87,
7210 contributer = {gjditchfield@plg},
7211 title = {{OOPSLA} '87 Conference Proceedings},
7212 booktitle = {{OOPSLA} '87 Conference Proceedings},
7213 year = 1987,
7214 editor = {Norman Meyrowitz},
7215 publisher = sigplan # " 22(12)",
7216 organization= {Association for Computing Machinery},
7217 address = {Orlando, Florida},
7218 month = oct # { 4--8}
7219}
7220
7221@proceedings{OOPSLA88,
7222 contributer = {gjditchfield@plg},
7223 title = {{OOPSLA} '88 Conference Proceedings},
7224 booktitle = {{OOPSLA} '88 Conference Proceedings},
7225 year = 1988,
7226 editor = {Norman Meyrowitz},
7227 publisher = sigplan # " 23(11)",
7228 organization= {Association for Computing Machinery},
7229 address = {San Diego, California},
7230 month = sep # { 25--30}
7231}
7232
7233@proceedings{OOPSLA89,
7234 contributer = {gjditchfield@plg},
7235 title = {{OOPSLA} '89 Conference Proceedings},
7236 booktitle = {{OOPSLA} '89 Conference Proceedings},
7237 year = 1989,
7238 editor = {Norman Meyrowitz},
7239 publisher = sigplan # " 24(10)",
7240 organization= {Association for Computing Machinery},
7241 address = {New Orleans, Louisiana},
7242 month = oct # { 1--6}
7243}
7244
7245@proceedings{OOPSLA90,
7246 contributer = {gjditchfield@plg},
7247 title = {{OOPSLA/ECOOP} '90 Conference Proceedings},
7248 booktitle = {{OOPSLA} '90 Conference Proceedings},
7249 year = 1990,
7250 editor = {Norman Meyrowitz},
7251 publisher = sigplan # " 25(10)",
7252 organization= {Association for Computing Machinery},
7253 address = {Ottawa, Canada},
7254 month = oct # { 21--25}
7255}
7256
7257@proceedings{OOPSLA91,
7258 contributer = {gjditchfield@plg},
7259 title = {{OOPSLA} '91 Conference Proceedings},
7260 booktitle = {{OOPSLA} '91 Conference Proceedings},
7261 year = 1991,
7262 editor = {Andreas Paepcke},
7263 publisher = sigplan # " 26(11)",
7264 organization= {Association for Computing Machinery},
7265 address = {Phoenix, Arizona},
7266 month = oct # { 6--11}
7267}
Note: See TracBrowser for help on using the repository browser.