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