source: doc/bibliography/pl.bib@ 02559df

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

update entry

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