Oscar Renalias
Using Dynamic Languages to
Achieve Higher Development
Productivity and Agility
October 11, 2013

Organizers...
@oscarrenalias

github.com/oscarrenalias
oscar.renalias@accenture.com
oscar@renalias.net
Key characteristics of Dynamic Languages


Dynamic typing



Interpreted



Code conciseness



Support for the intera...
Major Dynamic Language Technologies
Framework

Framework

Framework

Language

Language

Language

Platform

Framework

Pl...
Our focus
Framework

Framework

Framework

Language

Language

Language

Platform

Framework

Platform

Browser
JVM
OS (Un...
Ruby
Mature object-oriented language with tons of
libraries and great support for Domain Specific
Languages


Released in...
PHP
Probably the most widely-used web development
language


Strongly oriented to web applications



Ubiquitous ISP sup...
Python
Clean, well-designed language that enforces
readable code


Predates Java



Object-oriented with functional prog...
JavaScript
Ubiquitous client-side language that has been
recently gaining acceptance as a server-side
language too


Matu...
Groovy
Ruby-like language for the JVM


Mature dyamic capabilities on the JVM



Integrates seamlessly with Java, effect...
Scala
Powerful functional programming language for the
JVM


Strong following



Hybrid object-oriented and functional p...
Clojure
Strongly opinionated Lisp for the JVM


Lisp compiled for the JVM



Fully functional oriented



Designed to d...
Who’s using what?
Ruby

Rails, Chef, Puppet,
Cucumber

GOV.UK, Github, Twitter, Hulu,
ESPN

PHP

Drupal, Wordpress

Flickr...
Why Are Dynamic Languages Important?
Establishing a strong capability in dynamic
languages can position the enterprise for...
Industry Trends
Dynamic languages have an established market
position and are gaining in popularity and
adoption


Ruby, ...
Agility
Dynamic languages are powerful enablers of
agile delivery – methodology is not enough


Cumbersome technology and...
Business Application Scenarios
Many kinds of business applications are wellsuited for development with dynamic languages
...
Fit for Enterprise
Dynamic languages are an important enabler of
software delivery for the enterprise


Organizations and...
Synergy with Other Technologies
Augmenting Java


Significantly faster development of web front-ends



Development of f...
Synergy with Existing Technologies
Agility for “New Web” applications


Applications involving event-driven and highly re...
Synergy with Existing Technologies
Agility for mobile development


Develop mobile web sites and RESTful APIs



JavaScr...
Synergy with Existing Technologies
Synergy with PaaS technology


Streamlined PaaS support from many of the largest PaaS
...
Challenges and Concerns – Performance
Performance and Scalability


Dynamic language performance can’t be ignored, but it...
Challenges and Concerns – Skills
Skills and Team Size


Skills availability can be a challenge -- fewer developers
than w...
Challenges and Concerns – Adoption
Adoption can be politically difficult due to prior
investments


Corporate IT departme...
Take-away: Why We Should Care About
Dynamic Languages
We care when we need to…


Compress timelines



Be more flexible
...
Upcoming SlideShare
Loading in...5
×

OpenSlava 2013 - Dynamic Languages

1,771

Published on

These are the slides that I used to present on the topic of Dynamic Languages at OpenSlava 2013 on 11th of October 2013 in Bratislava. The slides provide an introduction to the most common dynamic language and also make a case for the introduction of dynamic languages to large enterprises.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,771
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 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
  • Dynamiclanguages are not newLisp, Smalltalk have been around for a long timePython has been around longer than Java (pre-1995)
  • 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
  • Transcript of "OpenSlava 2013 - Dynamic Languages"

    1. 1. Oscar Renalias Using Dynamic Languages to Achieve Higher Development Productivity and Agility October 11, 2013 Organizers Top Media Partner Media Partner Supporter
    2. 2. @oscarrenalias github.com/oscarrenalias oscar.renalias@accenture.com oscar@renalias.net
    3. 3. Key characteristics of Dynamic Languages  Dynamic typing  Interpreted  Code conciseness  Support for the interactive REPL (read-evaluate-print loop)
    4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 Sky.com, wired.com, Canoo.com Scala Play, Akka Twitter, FourSquare, The Guardian, LinkedIn, Klout Clojure Compojure, Cascalog, Pallet, Riemann Twitter, Akamai, Prismatic
    14. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

    ×