source: doc/bibliography/pl.bib@ 43fa66e

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

update bibliography for NSERC

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