Dynamically Typed Languages

Abstract Dynamically typed languages such as Python and Ruby have experienced a rapid grown in popularity in recent times. However, there is much confusion as to what makes these languages interesting relative to statically typed languages, and little knowledge of their rich history. In this chapter, I explore the general topic of dynamically typed languages, how they differ from statically typed languages, their history, and their defining features.

[1]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

[2]  Oscar Nierstrasz,et al.  Traits: Composable Units of Behaviour , 2002, ECOOP.

[3]  Travis E. Oliphant,et al.  Python for Scientific Computing , 2007, Computing in Science & Engineering.

[4]  Simon L. Peyton Jones,et al.  Template meta-programming for Haskell , 2002, Haskell '02.

[5]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[6]  Stéphane Ducasse,et al.  Seaside: A Flexible Environment for Building Dynamic Web Applications , 2007, IEEE Software.

[7]  Ira R. Forman,et al.  Putting metaclasses to work: a new dimension in object-oriented programming , 1999 .

[8]  Ralph E. Griswold,et al.  The Icon programming language , 1983 .

[9]  Semantics-Based Program Manipulation PPoPP '03 : the Ninth ACM SIGPLAN Sympoium on Principles and Practice of Parallel Programming, June 11-13, 2003 [and] PEPM '3 : ACM SIGPLAN workshop on Partial Evaluation and Semantics-based Program Manipulation, June 7, 2003, San Diego, CA, USA , 2003 .

[10]  Joe Armstrong,et al.  A history of Erlang , 2007, HOPL.

[11]  Mitchell Wand,et al.  Continuations and coroutines , 1984, LFP '84.

[12]  Alfred V. Aho,et al.  The awk programming language , 1988 .

[13]  Oscar Nierstrasz,et al.  On the Revival of Dynamic Languages , 2005, SC@ETAPS.

[14]  Colin Runciman,et al.  Unfailing Haskell: A Static Checker for Pattern Matching , 2005 .

[15]  Alan C. Kay The early history of Smalltalk , 1993, HOPL-II.

[16]  David B. MacQueen Reflections on Standard ML , 1993, Functional Programming, Concurrency, Simulation and Automated Reasoning.

[17]  John McCarthy,et al.  History of LISP , 1978, SIGP.

[18]  Linda Dailey Paulson Developers shift to dynamic programming languages , 2007, Computer.

[19]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[20]  John K. Ousterhout,et al.  Tcl and the Tk Toolkit , 1994 .

[21]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[22]  Alexander Aiken,et al.  Soft typing with conditional types , 1994, POPL '94.

[23]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[24]  John Aycock,et al.  A brief history of just-in-time , 2003, CSUR.

[25]  Pierre Cointe Metaclasses are First Class: the ObjVlisp Model , 1987, OOPSLA.

[26]  James Gosling The Java Language Specification - Second Edition , 2000 .

[27]  Jacques Malenfant,et al.  Reflection in logic, functional and object-oriented programming: a Short Comparative Study , 1995 .

[28]  Armin Haller,et al.  dynamically typed languages , 2007 .

[29]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[30]  Roberto Ierusalimschy,et al.  The evolution of Lua , 2007, HOPL.

[31]  Matthias Felleisen,et al.  Hygienic macro expansion , 1986, LFP '86.

[32]  Gilad Bracha,et al.  Mirrors: design principles for meta-level facilities of object-oriented programming languages , 2004, OOPSLA.

[33]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[34]  Ralph E. Griswold,et al.  History of the Icon programming language , 1993, HOPL-II.

[35]  Konstantinos Sagonas,et al.  Detecting Software Defects in Telecom Applications Through Lightweight Static Analysis: A War Story , 2004, APLAS.

[36]  Martín Abadi,et al.  Dynamic typing in a statically-typed language , 1989, POPL '89.

[37]  David Thomas,et al.  Programming Ruby: the pragmatic programmer's guide , 2000 .

[38]  Manish Vachharajani,et al.  Gradual typing with unification-based inference , 2008, DLS '08.

[39]  Erik Meijer Dynamic typing when needed: The end of the cold war between programming languages , 2004 .

[40]  Éric Tanter,et al.  Mirror-based Reflection in Ambienttalk † , 2022 .

[41]  Kristen Nygaard,et al.  SIMULA: an ALGOL-based simulation language , 1966, CACM.

[42]  Erik Meijer,et al.  Confessions of a used programming language salesman , 2007, OOPSLA.

[43]  Claus Brabrand,et al.  Growing languages with metamorphic syntax macros , 2000, PEPM '02.

[44]  Michael D. Shapiro A History of the SNOBOL Programming Languages , 2022 .

[45]  David C. J. Matthews Static and Dynamic Type Checking , 1987, DBPL.

[46]  Simon L. Peyton Jones,et al.  Dynamic typing as staged type inference , 1998, POPL '98.

[47]  Eric G. Wagner Overloading and Inheritance , 1992, COMPASS/ADT.

[48]  Robert Cartwright,et al.  Soft typing , 1991, PLDI '91.

[49]  Richard P. Gabriel,et al.  Performance and evaluation of Lisp systems , 1985 .

[50]  John K. Ousterhout,et al.  Scripting: Higher-Level Programming for the 21st Century , 1998, Computer.

[51]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[52]  Paul Rovner,et al.  On Adding Garbage Collection and Runtime Types to a Strongly-Typed, Statically-Checked, Concurrent Language , 2010 .

[53]  Ralph E. Griswold,et al.  The SNOBOL4 programming language , 1968 .

[54]  Frank Pfenning,et al.  Eliminating array bound checking through dependent types , 1998, PLDI.

[55]  Diomidis Spinellis,et al.  Lightweight Languages as Software Engineering Tools , 1997, DSL.

[56]  Jonathan Rees,et al.  Macros that work , 1991, POPL '91.

[57]  Ronald Prescott Loui,et al.  In Praise of Scripting: Real Programming Pragmatism , 2008, Computer.

[58]  Juan Manuel Cueva Lovelle,et al.  Dynamic adaptation of application aspects , 2004, J. Syst. Softw..

[59]  F. Hank Grant,et al.  A Common Medium for Programming Operations-Research Models , 2007, IEEE Software.

[60]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[61]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[62]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[63]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[64]  Fred L. Drake,et al.  Python 3 Reference Manual , 2009 .

[65]  Sam Tobin-Hochstadt,et al.  The design and implementation of typed scheme , 2008, POPL '08.

[66]  Gerald J. Sussman,et al.  Scheme: A Interpreter for Extended Lambda Calculus , 1998, High. Order Symb. Comput..

[67]  Brian Postow Book review: A Theory of Objects by Martin Abadi and Luca Cardelli (Springer-Verlag, 1996): Series--Monographs in Computer Science , 1999, SIGA.

[68]  Larry Wall,et al.  Programming Perl , 1991 .

[69]  Scott Nettles,et al.  Dynamic software updating , 2001, TOPL.

[70]  Xing Cai,et al.  On the performance of the Python programming language for serial and parallel scientific computations , 2005, Sci. Program..

[71]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[72]  Ole Lehrmann Madsen,et al.  Strong typing of object-oriented languages revisited , 1990, OOPSLA/ECOOP '90.

[73]  Johannes Link,et al.  Unit Testing in Java: How Tests Drive the Code , 2003 .

[74]  Guy L. Steele,et al.  The evolution of Lisp , 1993, HOPL-II.

[75]  Gilad Bracha Pluggable Type Systems , 2004 .

[76]  Tim Sheard Using MetaML: A Staged Programming Language , 1998, Advanced Functional Programming.

[77]  Overloading and Inheritance , 2001 .

[78]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[79]  Fritz Henglein,et al.  Dynamic Typing: Syntax and Proof Theory , 1994, Sci. Comput. Program..

[80]  Laurence Tratt,et al.  Guest Editors' Introduction: Dynamically Typed Languages , 2007, IEEE Software.

[81]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[82]  Peter Norvig,et al.  Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp , 1991 .

[83]  Kent Beck,et al.  Kent Beck's Guide to Better Smalltalk: SIMPLE SMALLTALK TESTING , 1997 .

[84]  Éric Tanter,et al.  Achieving high and consistent rendering performance of Java AWT-Swing on multiple platforms , 2009 .

[85]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.