source: doc/bibliography/pl.bib@ 6e9ffd1

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr no_list persistent-indexer pthread-emulation qualifiedEnum
Last change on this file since 6e9ffd1 was e255e69d, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

updates

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