source: doc/bibliography/pl.bib@ 58e822a

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 58e822a was 251454a0, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

more writing

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