source: doc/bibliography/pl.bib@ 1dc58fd

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

more writing

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