source: doc/bibliography/pl.bib@ 2b22e050

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 2b22e050 was a8de0f4, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

add entries

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