More Related Content


OpenSlava 2013 - Dynamic Languages

  1. Oscar Renalias Using Dynamic Languages to Achieve Higher Development Productivity and Agility October 11, 2013 Organizers Top Media Partner Media Partner Supporter
  2. @oscarrenalias
  3. Key characteristics of Dynamic Languages  Dynamic typing  Interpreted  Code conciseness  Support for the interactive REPL (read-evaluate-print loop)
  4. Major Dynamic Language Technologies Framework Framework Framework Language Language Language Platform Framework Platform Browser JVM OS (Unix, Linux, Windows, iOS) Copyright © 2013 Accenture All rights reserved. 4
  5. Our focus Framework Framework Framework Language Language Language Platform Framework Platform Browser JVM OS (Unix, Linux, Windows, iOS) Copyright © 2013 Accenture All rights reserved. 5
  6. Ruby Mature object-oriented language with tons of libraries and great support for Domain Specific Languages  Released in 1996  Object-oriented, support for functional programming  Extensive library  Syntax enables great support for internal DSLs  Short learning curve for Java developers  Runs on the JVM as JRuby  Ruby on Rails is the best example of what can be done with Ruby
  7. PHP Probably the most widely-used web development language  Strongly oriented to web applications  Ubiquitous ISP support  Vast library of components  Easy to learn  Very powerful, but not as clean as the other major dynamic languages  Commercially supported by Zend
  8. Python Clean, well-designed language that enforces readable code  Predates Java  Object-oriented with functional programming support  Extensive library  Readable structure promotes maintainable code  Easy to integrate with and wrap C/C++ code  No commercial vendor support  Jython is a fully-compliant Python implementation that runs on the JVM
  9. JavaScript Ubiquitous client-side language that has been recently gaining acceptance as a server-side language too  Mature language, created for web browsers in 1995  Prototype-based object-oriented language with support for functional programming  Interest in JavaScript was boosted by Ajax and frameworks like jQuery  Easy to learn, a bit quirky in some areas  Node.js has accelerated the adoption of JavaScript for server-side development
  10. Groovy Ruby-like language for the JVM  Mature dyamic capabilities on the JVM  Integrates seamlessly with Java, effectively leverages all of Java’s capabilities and ecosystem  Object-oriented, advanced meta-programming and functional programming features  Promotes code conciseness, comparable to that of Ruby  Strong support for domain-specific languages  Vendor support from VMware
  11. Scala Powerful functional programming language for the JVM  Strong following  Hybrid object-oriented and functional programming language  Compiled, runs on the JVM, Steep learning curve  Well-suited for high-productivity development of quality-critical, complex logic  Excellent support for Domain Specific Languages  Proomotes concurrency through the Actor framework  Vendor support from Typesafe  Akka and Play Framework are built on Scala
  12. Clojure Strongly opinionated Lisp for the JVM  Lisp compiled for the JVM  Fully functional oriented  Designed to dramatically simplify concurrent programming and leverage multi-core processor architectures  Philosophy is that of smaller composable libraries as opposed to monolithic frameworks  Easier than Scala, just as weird for Java developers  No vendor support
  13. Who’s using what? Ruby Rails, Chef, Puppet, Cucumber GOV.UK, Github, Twitter, Hulu, ESPN PHP Drupal, Wordpress Flickr, Yahoo, Facebook, Wikipedia, Digg Python Django, Google Big data projects, Washington Post JavaScript jQuery, Node.js Virtually every web Application, LinkedIn, Yammer, Yahoo Groovy Grails,, Scala Play, Akka Twitter, FourSquare, The Guardian, LinkedIn, Klout Clojure Compojure, Cascalog, Pallet, Riemann Twitter, Akamai, Prismatic
  14. Why Are Dynamic Languages Important? Establishing a strong capability in dynamic languages can position the enterprise for higher software delivery productivity and agility  Alternative to heavy-weight traditional approaches  Strong support for agility, possibility of dramatically better productivity and time-to-market  Increased interest in browser-centric and asynchronous web technologies  Many proven examples in industry  New generation of developers considers them more fun and exciting  Growing support from industry analysts and thought leaders
  15. Industry Trends Dynamic languages have an established market position and are gaining in popularity and adoption  Ruby, Python, JavaScript, and PHP are consistently ranked among the top 10 most popular languages by industry surveys  Recent increase in demand for Ruby, Python, Groovy, and PHP (Drupal) skills from some of our largest clients  ThoughtWorks’s Oct 2012 Tech Radar moved Scala and Clojure from “Trial” to “Adopt”
  16. Agility Dynamic languages are powerful enablers of agile delivery – methodology is not enough  Cumbersome technology and heavy-weight architecture do not align well with agile  Extraordinarily rapid code-test workflows is strong enabler of agile delivery  High-productivity tools and lightweight architectures  In some cases can be twice as fast at half the cost as with Java or .Net  Synergies with PaaS/SaaS technology for development and production deployment
  17. Business Application Scenarios Many kinds of business applications are wellsuited for development with dynamic languages  Media, marketing and e-commerce sites  Application pilots  Location-based, mobile web applications  Web frontend for back-end services  RESTful service APIs  Scientific computing  Big Data  Dev Ops
  18. Fit for Enterprise Dynamic languages are an important enabler of software delivery for the enterprise  Organizations and large companies use dynamic languages  High productivity, agile development, fast time-to-market  Reliability  Abundance of libraries  Multi-platform  Mature set of development tools  Strong support ecosystem and commercial vendor support  Performance ranges from acceptable to excellent
  19. Synergy with Other Technologies Augmenting Java  Significantly faster development of web front-ends  Development of frameworks and complex logic  Continue leveraging existing Java skills and tooling
  20. Synergy with Existing Technologies Agility for “New Web” applications  Applications involving event-driven and highly responsive user interfaces  Gartner recommends dynamic language frameworks, avoid traditional MVC frameworks
  21. Synergy with Existing Technologies Agility for mobile development  Develop mobile web sites and RESTful APIs  JavaScript & HTML5 write-once-deploy-many, usability approaching that of native
  22. Synergy with Existing Technologies Synergy with PaaS technology  Streamlined PaaS support from many of the largest PaaS providers, further accelerating end-to-end solution delivery
  23. Challenges and Concerns – Performance Performance and Scalability  Dynamic language performance can’t be ignored, but it is typically not an issue  Dynamic language applications proven to scale up to very high transaction volumes
  24. Challenges and Concerns – Skills Skills and Team Size  Skills availability can be a challenge -- fewer developers than with Java  Our experience shows Java developers can be rapidly trained to a moderate level of proficiency  Scaling to very large applications with large teams is unproven for some dynamic languages
  25. Challenges and Concerns – Adoption Adoption can be politically difficult due to prior investments  Corporate IT departments reluctant to introduce additional languages  Compatibility with existing corporate practices, standards, and tools can be a challenge  In a Java shop, the introduction of JVM dynamic languages can be relatively smooth -- existing investments can be leveraged  Complexity associated with introducing another required skill may be overrated
  26. Take-away: Why We Should Care About Dynamic Languages We care when we need to…  Compress timelines  Be more flexible  Increase creativity  Mitigate risk

Editor's Notes

  1. Key characteristics: dynamic typing, interpreted, code conciseness and REPL interactive consoleDynamic language with long history: Lisp and PythonOur focus: Generic Language like Groovy, Ruby, Python, Clojure and JavaScript + PHP for web applicationOur focus also including strong type functional languages and framework like Scala and Play
  2. Dynamiclanguages are not newLisp, Smalltalk have been around for a long timePython has been around longer than Java (pre-1995)
  3. Ourfocus:We distinguish general-purpose dynamic languages from scripting and specialty languages. Our focus:General purpose: Ruby, Groovy, Clojure, JavaScript, PythonWeb application: PHP We also include statically-typed functional languages which support the REPL style and achieve code conciseness through type inference even if it doesn’t 100% fulfill our own definition of a dynamic language:Scala