Skip to main content

On the Revival of Dynamic Languages

  • Conference paper
Software Composition (SC 2005)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3628))

Included in the following conference series:

Abstract

The programming languages of today are stuck in a deep rut that has developed over the past 50 years. Although we are faced with new challenges posed by enormous advances in hardware and internet technology, we continue to struggle with old-fashioned languages based on rigid, static, closed-world file-based views of programming. We argue the need for a new class of dynamic languages that support a view of programming as constant evolution of living and open software models. Such languages would require features such as dynamic first-class namespaces, explicit meta-models, optional, pluggable type systems, and incremental compilation of running software systems.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

') var buybox = document.querySelector("[data-id=id_"+ timestamp +"]").parentNode var buyingOptions = buybox.querySelectorAll(".buying-option") ;[].slice.call(buyingOptions).forEach(initCollapsibles) // springerPlus roll out 10% starts here var springerPlusGroup = setLocalStorageSpringerPlus(); var rollOutSpringerPlus = springerPlusGroup === "B" function setLocalStorageSpringerPlus() { var selectUserKey = "springerPlusRollOut"; var springerPlusGroup = "X"; if (!window.localStorage) return springerPlusGroup; try { var selectUserValue = window.localStorage.getItem(selectUserKey) springerPlusGroup = selectUserValue || randomDistributionSpringerPlus(selectUserKey) } catch (err) { console.log(err) } return springerPlusGroup; } function randomDistributionSpringerPlus(selectUserKey) { var randomGroup = Math.random() < 0.7 ? "A" : "B" window.localStorage.setItem(selectUserKey, randomGroup) return randomGroup } if (rollOutSpringerPlus) { revealSpringerPlus(); } function revealSpringerPlus() { if(buybox) { document.querySelectorAll(".c-springer-plus").forEach(function(node) { node.style.display = "block" }) } } //springerPlus ends here var buyboxMaxSingleColumnWidth = 480 function initCollapsibles(subscription, index) { var toggle = subscription.querySelector(".buying-option-price") subscription.classList.remove("expanded") var form = subscription.querySelector(".buying-option-form") var priceInfo = subscription.querySelector(".price-info") var buyingOption = toggle.parentElement if (toggle && form && priceInfo) { toggle.setAttribute("role", "button") toggle.setAttribute("tabindex", "0") toggle.addEventListener("click", function (event) { var expandedBuyingOptions = buybox.querySelectorAll(".buying-option.expanded") var buyboxWidth = buybox.offsetWidth ;[].slice.call(expandedBuyingOptions).forEach(function(option) { if (buyboxWidth <= buyboxMaxSingleColumnWidth && option != buyingOption) { hideBuyingOption(option) } }) var expanded = toggle.getAttribute("aria-expanded") === "true" || false toggle.setAttribute("aria-expanded", !expanded) form.hidden = expanded if (!expanded) { buyingOption.classList.add("expanded") } else { buyingOption.classList.remove("expanded") } priceInfo.hidden = expanded }, false) } } function hideBuyingOption(buyingOption) { var toggle = buyingOption.querySelector(".buying-option-price") var form = buyingOption.querySelector(".buying-option-form") var priceInfo = buyingOption.querySelector(".price-info") toggle.setAttribute("aria-expanded", false) form.hidden = true buyingOption.classList.remove("expanded") priceInfo.hidden = true } function initKeyControls() { document.addEventListener("keydown", function (event) { if (document.activeElement.classList.contains("buying-option-price") && (event.code === "Space" || event.code === "Enter")) { if (document.activeElement) { event.preventDefault() document.activeElement.click() } } }, false) } function initialStateOpen() { var buyboxWidth = buybox.offsetWidth ;[].slice.call(buybox.querySelectorAll(".buying-option")).forEach(function (option, index) { var toggle = option.querySelector(".buying-option-price") var form = option.querySelector(".buying-option-form") var priceInfo = option.querySelector(".price-info") if (buyboxWidth > buyboxMaxSingleColumnWidth) { toggle.click() } else { if (index === 0) { toggle.click() } else { toggle.setAttribute("aria-expanded", "false") form.hidden = "hidden" priceInfo.hidden = "hidden" } } }) } initialStateOpen() if (window.buyboxInitialised) return window.buyboxInitialised = true initKeyControls() })()

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Atkinson, M.P., Buneman, O.P.: Types and persistence in database programming languages. ACM Comput. Surv. 19(2), 105–170 (1987)

    Article  Google Scholar 

  2. Achermann, F., Lumpe, M., Schneider, J.-G., Nierstrasz, O.: Piccola — a small composition language. In: Bowman, H., Derrick, J. (eds.) Formal Methods for Distributed Processing — A Survey of Object-Oriented Approaches, pp. 403–426. Cambridge University Press, Cambridge (2001)

    Google Scholar 

  3. Achermann, F., Nierstrasz, O.: Explicit Namespaces. In: Gutknecht, J., Weck, W. (eds.) Modular Programming Languages, Zürich, Switzerland, September 2000. LNCS, vol. 1897, pp. 77–89. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  4. Achermann, F., Nierstrasz, O.: A calculus for reasoning about software components. Theoretical Computer Science 331(2-3), 367–396 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  5. Bergel, A., Ducasse, S., Nierstrasz, O., Wuyts, R.: Classboxes: Controlling visibility of class extensions. Computer Languages, Systems and Structures (September 2005) (to appear)

    Google Scholar 

  6. Bracha, G., Griswold, D.: Strongtalk: Typechecking Smalltalk in a production environment. In: Proceedings OOPSLA 1993, ACM SIGPLAN Notices, October 1993, vol. 28, pp. 215–230 (1993)

    Google Scholar 

  7. Banerjee, J., Kim, W., Kim, H.-J., Korth, H.F.: Semantics and implementation of schema evolution in object-oriented databases. In: Proceedings ACM SIGMOD 1987, December 1987, vol. 16, pp. 311–322 (1987)

    Google Scholar 

  8. Brach, G.: Pluggable type systems. In: OOPSLA Workshop on Revival of Dynamic Languages (October 2004)

    Google Scholar 

  9. Bracha, G., Ungar, D.: Mirrors: design principles for meta-level facilities of object-oriented programming languages. In: Proceedings of OOPSLA 2004, ACM SIGPLAN Notices, New York, NY, USA, pp. 331–344. ACM Press, New York (2004)

    Google Scholar 

  10. Bloom, T., Zdonik, S.B.: Issues in the design of object-oriented database programming languages. In: Proceedings OOPSLA 1987, ACM SIGPLAN Notices, December 1987, vol. 22, pp. 441–451 (1987)

    Google Scholar 

  11. Chiba, S.: A metaobject protocol for C++. In: Proceedings of OOPSLA 1995, October 1995. ACM SIGPLAN Notices, vol. 30, pp. 285–299 (1995)

    Google Scholar 

  12. van Deursen, A.: Program comprehension risks and opportunities in extreme programming. In: Working Conference on Reverse Engineering, p. 176 (2001)

    Google Scholar 

  13. van Deursen, A., Moonen, L., van den Bergh, A., Kok, G.: Refactoring test code. In: Marchesi, M. (ed.) Proceedings of the 2nd International Conference on Extreme Programming and Flexible Processes (XP 2001), University of Cagliari, pp. 92–95 (2001)

    Google Scholar 

  14. Dybvig, K.: The Scheme Programming Language. MIT Press, Cambridge (2003)

    MATH  Google Scholar 

  15. Edwards, J.: Example centric programming. In: OOPSLA 2004: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, p. 124. ACM Press, New York (2004)

    Chapter  Google Scholar 

  16. Foote, B., Johnson, R.E.: Reflective facilities in Smalltalk-80. In: Proceedings OOPSLA 1989, ACM SIGPLAN Notices, October 1989, vol. 24, pp. 327–336 (1989)

    Google Scholar 

  17. Foster, J.S.: Type Qualifiers: Lightweight Specifications to Improve Software Quality. Ph.D. thesis, University of California, Berkeley (December 2002)

    Google Scholar 

  18. Foster, J.S., Terauchi, T., Aiken, A.: Flow-sensitive type qualifiers. In: Proceedings of PLDI 2002 Conference on Programming Language Design and Implementation, pp. 1–12. ACM Press, New York (2002)

    Chapter  Google Scholar 

  19. Goldberg, A.: Smalltalk 80: the Interactive Programming Environment. Addison Wesley, Reading (1984)

    MATH  Google Scholar 

  20. Grothoff, C., Palsberg, J., Vitek, J.: Encapsulating objects with confined types. In: OOPSLA 2001: Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pp. 241–255. ACM Press, New York (2001)

    Chapter  Google Scholar 

  21. Goldberg, A., Robson, D.: Smalltalk-80: The Language. Addison Wesley, Reading (1989)

    MATH  Google Scholar 

  22. Hu, E.Y.-S., Bernat, G., Wellings, A.: A Static Timing Analysis Environment Using Java Architecture for Safety Critical Real-Time Systems. In: Proceedings of 7th IEEE International Workshop on Object-Oriented Real-Time Dependable Systems (WORDS 2002), January 2002, pp. 64–71 (2002)

    Google Scholar 

  23. Ingalls, D., Kaehler, T., Maloney, J., Wallace, S., Kay, A.: Back to the future: The story of Squeak, A practical Smalltalk written in itself. In: Proceedings OOPSLA 1997, November 1997. ACM SIGPLAN Notices, pp. 318–326. ACM Press, New York (1997)

    Google Scholar 

  24. Jones, M.P.: First-class polymorphism with type inference. In: POPL 1997: Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 483–496. ACM Press, New York (1997)

    Google Scholar 

  25. Kiczales, G., des Rivières, J., Bobrow, D.G.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)

    Google Scholar 

  26. Keene, S.E.: Object-Oriented Programming in Common-Lisp. Addison Wesley, Reading (1989)

    MATH  Google Scholar 

  27. Kennedy, A., Syme, D.: Transposing f to c#: Expressivity of polymorphism in an object-oriented language. Concurrency and Computation: Practice and Experience 16(7) (2004)

    Google Scholar 

  28. Lehman, M.M., Belady, L.: Program Evolution – Processes of Software Change. London Academic Press, London (1985)

    MATH  Google Scholar 

  29. MacQueen, D.B.: Reflections on standard ml. In: Lauer, P.E. (ed.) Functional Programming, Concurrency, Simulation and Automated Reasoning. LNCS, vol. 693. Springer, Heidelberg (1993)

    Google Scholar 

  30. Miranda, E., Leibs, D., Wuyts, R.: Parcels: a fast and feature-rich binary deployment technology. Computer Languages, Systems and Structures (September 2005) (to appear)

    Google Scholar 

  31. Maier, D., Otis, A., Purdy, A.: Object-oriented database development at servio logic. IEEE Database Engineering 8(4), 58–65 (1985)

    Google Scholar 

  32. Nierstrasz, O., Achermann, F.: Supporting Compositional Styles for Software Evolution. In: Proceedings International Symposium on Principles of Software Evolution (ISPSE 2000), Kanazawa, Japan, November 2000, pp. 11–19. IEEE, Los Alamitos (2000)

    Google Scholar 

  33. Nierstrasz, O., Achermann, F.: Separating concerns with first-class namespaces. In: Filman, R.E., Elrad, T., Clarke, S., Aksit, M. (eds.) Aspect-Oriented Software Development, pp. 243–259. Addison-Wesley, Reading (2005)

    Google Scholar 

  34. Nierstrasz, O.: Software evolution as the key to productivity. In: Wirsing, M., Knapp, A., Balsamo, S. (eds.) RISSEF 2002. LNCS, vol. 2941, pp. 274–282. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  35. Penney, D.J., Stein, J.: Class modification in the gemstone object-oriented DBMS. In: Proceedings OOPSLA 1987, December 1987. ACM SIGPLAN Notices, vol. 22, pp. 111–117 (1987)

    Google Scholar 

  36. Pratikakis, P., Spacco, J., Hicks, M.: Transparent proxies for java futures. In: OOPSLA 2004: Proceedings of the 19th annual ACM SIGPLAN Conference on Object-oriented programming, systems, languages, and applications, pp. 206–223. ACM Press, New York (2004)

    Chapter  Google Scholar 

  37. Russo, C.V.: First-class structures for standard ml. Nordic J. of Computing 7(4), 348–374 (2000)

    MathSciNet  MATH  Google Scholar 

  38. Smaragdakis, Y., Batory, D.: Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs. ACM TOSEM 11(2), 215–255 (2002)

    Article  Google Scholar 

  39. Soanes, C. (ed.): Oxford Dictionary of Current English. Oxford University Press, Oxford (2001)

    Google Scholar 

  40. Spoon, S.A., Shivers, O.: Demand-driven type inference with subgoal pruning: Trading precision for scalability. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 51–74. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  41. The strongtalk type system for smalltalk, http://bracha.org/nwst.html

  42. Smith, F., Walker, D., Morrisett, J.G.: Alias types. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, pp. 366–381. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  43. Taha, W.: A gentle introduction to multi-stage programming. In: Domain-Specific Program Generation, pp. 30–50 (2003)

    Google Scholar 

  44. Taivalsaari, A.: Classes versus prototypes: Some philosophical and historical observations. Journal of Object-Oriented Programming (JOOP) 10(7), 44–50 (1997)

    Google Scholar 

  45. Tanter, É., Bouraqadi, N., Noyé, J.: Reflex - towards an open reflective extension of java. In: Yonezawa, A., Matsuoka, S. (eds.) Reflection 2001. LNCS, vol. 2192, pp. 25–43. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  46. Tsichritzis, D., Nierstrasz, O.: Fitting round objects into square databases. In: Gjessing, S., Nygaard, K. (eds.) ECOOP 1988. LNCS, vol. 322, pp. 283–299. Springer, Heidelberg (1988)

    Chapter  Google Scholar 

  47. Tanter, É., Noyé, J., Caromel, D., Cointe, P.: Partial behavioral reflection: Spatial and temporal selection of reification. In: Proceedings of OOPSLA 2003, November 2003. ACM SIGPLAN Notices, pp. 27–46 (2003)

    Google Scholar 

  48. Ungar, D., Smith, R.B.: Self: The power of simplicity. In: Proceedings OOPSLA 1987, December 1987. ACM SIGPLAN Notices, vol. 22, pp. 227–242 (1987)

    Google Scholar 

  49. Wuyts, R., Ducasse, S., Nierstrasz, O.: A data-centric approach to composing embedded, real-time software components. Journal of Systems and Software — Special Issue on Automated Component-Based Software Engineering 74(1), 25–34 (2005)

    Google Scholar 

  50. Wuyts, R.: A Logic Meta-Programming Approach to Support the Co-Evolution of Object-Oriented Design and Implementation. PhD thesis, Vrije Universiteit Brussel (2001)

    Google Scholar 

  51. Zhao, T., Noble, J., Vitek, J.: Scoped types for real-time java. In: RTSS 2004: Proceedings of the 25th IEEE International Real-Time Systems Symposium (RTSS 2004), Washington, DC, USA, pp. 241–251. IEEE Computer Society, Los Alamitos (2004)

    Google Scholar 

  52. Zhao, T., Palsber, J., Vite, J.: Lightweight confinement for featherweight java. In: OOPSLA 2003: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, pp. 135–148. ACM Press, New York (2003)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 IFIP International Federation for Information Processing

About this paper

Cite this paper

Nierstrasz, O., Bergel, A., Denker, M., Ducasse, S., Gälli, M., Wuyts, R. (2005). On the Revival of Dynamic Languages. In: Gschwind, T., Aßmann, U., Nierstrasz, O. (eds) Software Composition. SC 2005. Lecture Notes in Computer Science, vol 3628. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11550679_1

Download citation

  • DOI: https://doi.org/10.1007/11550679_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-28748-3

  • Online ISBN: 978-3-540-28749-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics

Navigation