source: doc/bibliography/pl.bib@ 21bdce2

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

writing updates

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