source: doc/bibliography/pl.bib@ 0bcc2b7

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 0bcc2b7 was b199e54, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

first complete draft

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