source: doc/bibliography/cfa.bib@ 0a4c59b

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since 0a4c59b was 0a4c59b, checked in by Aaron Moss <a3moss@…>, 9 years ago

Citation tweaks for TIOBE Index

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