ABSTRACT
Scripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. The price of these features comes later in the software life cycle. Scripts are hard to evolve and compose, and often slow. An additional weakness of most scripting languages is lack of support for concurrency - though concurrency is required for scalability and interacting with remote services. This paper reports on the design and implementation of Thorn, a novel programming language targeting the JVM. Our principal contributions are a careful selection of features that support the evolution of scripts into industrial grade programs - e.g., an expressive module system, an optional type annotation facility for declarations, and support for concurrency based on message passing between lightweight, isolated processes. On the implementation side, Thorn has been designed to accommodate the evolution of the language itself through a compiler plugin mechanism and target the Java virtual machine.
- Erlang Reference Manual. http://erlang.org/doc/, 2008. Version 5.6.5.Google Scholar
- The Python Tutorial - Modules. http://docs.python.org/3.0/tutorial/modules.html, 2009. Version 3.0.1.Google Scholar
- Eric Allen, David Chase, Joe Hallett, Victor Luchangco, Jan-Willem Maessen, Sukyoung Ryu, Guy L. Steele, Jr., and Sam Tobin-Hochstadt. The Fortress language specification, version 1.0, March 2008.Google Scholar
- Christopher Anderson and Sophia Drossopoulou. Babyj: from object based to class based programming via types. Electr. Notes Theor. Comput. Sci., 82(7), 2003.Google Scholar
- Chris Andreae, James Noble, Shane Markstrum, and Todd Millstein. A framework for implementing pluggable type systems. In OOPSLA '06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, October 2006. Google Scholar
Digital Library
- Timothy Andrews and Craig Harris. Combining language and database advances in an object-oriented development environment. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, volume 22, pages 430--440, December 1987. Google Scholar
Digital Library
- David F. Bacon. Kava: a Java dialect with a uniform object model for lightweight classes. In JGI '01: Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, pages 68--77, 2001. Google Scholar
Digital Library
- Kenneth Barclay and John Savage, editors. Groovy Programming. Morgan Kaufmann, December 2006.Google Scholar
- Kent Beck and et al. Principles behind the agile manifesto, 2007. http://agilemanifesto.org/principles.html.Google Scholar
- Gilad Bracha. Pluggable type systems. In OOPSLA'04 Workshop on Revival of Dynamic Languages, October 2004.Google Scholar
- Gilad Bracha and William R. Cook. Mixin-based Inheritance. In Proceedings of OOPSLA, volume 25(10) of ACM SIGPLAN Notices, pages 303--311. ACM Press, October 1990. Google Scholar
Digital Library
- Bradford L. Chamberlain, David Callahan, and Hans P. Zima. Parallel programmability and the Chapel language. International Journal of High Performance Computing Applications, 21(3):291--312, August 2007. Google Scholar
Digital Library
- Donald D. Chamberlin and Raymond F. Boyce. Sequel: A structured english query language. In FIDET '74: Proceedings of the 1974 ACM SIGFIDET (now SIGMOD) workshop on Data description, access and control, pages 249--264, New York, NY, USA, 1974. ACM. Google Scholar
Digital Library
- Philippe Charles, Christian Grothoff, Vijay Saraswat, Christopher Donawa, Allan Kielstra, Kemal Ebcioglu, Christoph von Praun, and Vivek Sarkar. X10: an object-oriented approach to non-uniform cluster computing. In OOPSLA '05: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 519--538, 2005. Google Scholar
Digital Library
- Clojure. http://clojure.org/.Google Scholar
- The Computer Language Benchmarks Game. http://shootout.alioth.debian.org/.Google Scholar
- Burak Emir, Martin Odersky, and John Williams. Matching objects with patterns. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), volume 4609 of LNCS, pages 273--298. Springer Verlag, 2007. Google Scholar
Digital Library
- Matthew Flatt and Robert Bruce Findler. PLT Scheme Guide - Modules. http://docs.plt-scheme.org/guide/modules.html, 2009. Version 4.1.5.1.Google Scholar
- Bryan Ford. Parsing expression grammars: a recognition-based syntactic foundation. In Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '04), January 2004. Google Scholar
Digital Library
- Jesse James Garrett. Ajax: A new approach to web applications, February 2005. http://www.adaptivepath.com/ideas/essays/archives/000385.php.Google Scholar
- Niklaus Haldiman, Marcus Denker, and Oscar Nierstrasz. Practical, pluggable types for a dynamic language. Computer Languages, Systems&Structures, ESUG 2007 International Conference on Dynamic Languages (ESUG/ICDL 2007), 35(1):48--62, April 2009.Google Scholar
- A. Hejlsberg, S. Wiltamuth, and P. Golde. C# language specification. 2003. Google Scholar
Digital Library
- Martin Hirzel, Nathaniel Nystrom, Bard Bloom, and Jan Vitek. Matchete: Paths through the pattern matching jungle. In Practical Aspects of Declarative Languages (PADL 2008), pages 150--166, January 2008. Google Scholar
Digital Library
- Simon P. Jones. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, May 2003.Google Scholar
- Java powered Ruby implementation. http://jruby.codehaus.org/.Google Scholar
- Introducing JSON. http://www.json.org/.Google Scholar
- The Jython Project. http://www.jython.org/.Google Scholar
- The Kawa language framework. http://www.gnu.org/software/kawa.Google Scholar
- Xavier Leroy, Damien Doligez, Jacques Garrigue, Didier Rmy, and Jrme Vouillon. The objective caml system, release 3.11. Documentation and user's manual, 2004. http://caml.inria.fr/pub/docs/manual-ocaml/.Google Scholar
- Barbara Liskov and John V. Guttag. Abstraction and Specification in Program Development. MIT Press/McGraw-Hill, 1986. Google Scholar
Digital Library
- Donna Malayeri and Jonathan Aldrich. CZ: Multiple inheritance without diamonds. In OOPSLA '09: Proceedings of the 24th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 2009. Google Scholar
Digital Library
- Erik Meijer, Brian Beckman, and Gavin Bierman. LINQ: reconciling object, relations and XML in the .NET framework. In SIGMOD '06: Proceedings of the 2006 ACM SIGMOD international conference on Management of data, pages 706--706, 2006. Google Scholar
Digital Library
- Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, Cambridge, MA, 1990. Google Scholar
Digital Library
- Nathaniel Nystrom, Michael Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for Java. In Görel Hedin, editor, 12th International Conference on Compiler Construction (CC 2003), number 2622 in Lecture Notes in Computer Science, pages 128--152, Warsaw, Poland, April 2003. Springer-Verlag. Google Scholar
Digital Library
- Nathaniel Nystrom and Vijay Saraswat. An annotation and compiler plugin system for X10. Technical Report RC24198, IBM T.J. Watson Research Center, 2007.Google Scholar
- Nathaniel Nystrom, Vijay Saraswat, Jens Palsberg, and Christian Grothoff. Constrained types for object-oriented languages. In Proceedings of the 2008 ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), October 2008. Google Scholar
Digital Library
- Martin Odersky, Philippe Altherr, Vincent Cremet, Iulian Dragos Gilles Dubochet, Burak Emir, Sean McDirmid, Stéphane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, Lex Spoon, and Matthias Zenger. An overview of the Scala programming language, second edition. Technical report, École Polytechnique Fédérale de Lausanne (EPFL), 2006.Google Scholar
- J. K. Ousterhout. Scripting: Higher-level programming for the 21st century. Computer, 31(3):23--30, 1998. Google Scholar
Digital Library
- Lutz Prechelt. An empirical comparison of seven programming languages. IEEE Computer, 33(10):23--29, 2000. Google Scholar
Digital Library
- J. H. Reppy and Y. Xiao. Specialization of CML Message-passing Primitives. In Proceedings of the 35th ACM SIGPLAN--SIGACT Symposium on Principles of Programming Languages (POPL '07), pages 315--326, 2007. Google Scholar
Digital Library
- Vijay Saraswat et al. The X10 language specification. Technical report, IBM T.J. Watson Research Center, 2008.Google Scholar
- N. Scharli, S. Ducasse, O. Nierstrasz, and A. Black. Traits: Composable units of behaviour. In Proceedings of the 17th European Conference on Object-Oriented Programming (ECOOP 2003), volume 2743 of Lecture Notes in Computer Science, pages 248--274, 2003.Google Scholar
Cross Ref
- J. T. Schwartz, R. B. Dewar, E. Schonberg, and E. Dubinsky. Programming with sets; an introduction to SETL. Springer-Verlag, New York, 1986. Google Scholar
Digital Library
- Jeremy Siek and Walid Taha. Gradual typing for objects. In ECOOP 2007-Object-Oriented Programming, volume 4609 of Lecture Notes in Computer Science, pages 2--27. Springer Berlin / Heidelberg, 2007. Google Scholar
Digital Library
- Jeremy G. Siek. Gradual typing for functional languages. In In Scheme and Functional Programming Workshop, pages 81--92, 2006.Google Scholar
- M. Sperber, R.K. Dybvig, M. Flatt, A. Van Straaten, R. Kelsey, W. Clinger, and J. Rees. Revised 6 report on the algorithmic language Scheme, 2007.Google Scholar
- Sriram Srinivasan and Alan Mycroft. Kilim: Isolation-typed actors for java. In ECOOP 2008-Object-Oriented Programming, volume 5142/2008 of LNCS, pages 104--128. Springer Berlin / Heidelberg, 2008. Google Scholar
Digital Library
- Guy L. Steele and Richard P. Gabriel. The evolution of Lisp. In HOPL-II: The second ACM SIGPLAN conference on History of programming languages, pages 231--270, New York, NY, USA, 1993. ACM. Google Scholar
Digital Library
- Rok Strnisa. Fixing the Java Module System, in Theory and in Practice. In Proceedings of FTfJP, pages 88--99. Radboud University, July 2008.Google Scholar
- Sun. Core Java J2SE 5.0. Sun Microsystems Inc., http://java.sun.com/j2se/1.5.0/, 2005.Google Scholar
- Sun Microsystems, Inc. JSR-277: Java#8482; Module System. http://jcp.org/en/jsr/detail?id=277, October 2006. Early Draft.Google Scholar
- Sun Microsystems, Inc. JSR-294: Improved Modularity Support in the Java#8482; Programming Language. http://jcp.org/en/jsr/detail?id=294, 2007.Google Scholar
- Don Syme. An upcoming experimental feature: Active patterns in F#, August 2006. http://blogs.msdn.com/dsyme/archive/2006/08/16/activepatterns.aspx.Google Scholar
- David Thomas and Andrew Hunt. Programming Ruby: the pragmatic programmer's guide. The Pragmatic Programmers, LLC., Raleigh, NC, USA, 2 edition, August 2005. Google Scholar
Digital Library
- Sam Tobin-Hochstadt and Matthias Felleisen. Interlanguage migration: from scripts to programs. In OOPSLA '06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, pages 964--974, 2006. Google Scholar
Digital Library
- Sam Tobin--Hochstadt and Matthias Felleisen. The design and implementation of typed scheme. In POPL '08: Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 395--406, 2008. Google Scholar
Digital Library
- Guido van Rossum and Fred L. Drake Jr., editors. The Python Language Reference Manual (version 2.5). Network Theory Ltd, 2006.Google Scholar
- Philip Wadler. Views: a way for pattern matching to cohabit with data abstraction. In Proceedings of the 14th ACM Symposium on Principles of Programming Languages, January 1987. Google Scholar
Digital Library
- Alessandro Warth, James R. Douglass, and Todd Millstein. Packrat parsers can support left recursion. In Workshop on Partial Evaluation and Program Manipulation (PEPM '08), January 2008. Google Scholar
Digital Library
Index Terms
Thorn: robust, concurrent, extensible scripting on the JVM
Recommendations
Thorn: robust, concurrent, extensible scripting on the JVM
OOPSLA '09Scripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts ...
Thorn: robust concurrent scripting on the JVM
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applicationsScripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts ...
Matlab-like scripting for the java platform with the jLab environment
The jLab environment extends the potential of Java for scientific computing. It provides a Matlab/Scilab like scripting language that is executed by an interpreter implemented in the Java language. The jLab environment combines effectively Groovy like ...







Comments