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.
1. Oscar Renalias
Using Dynamic Languages to
Achieve Higher Development
Productivity and Agility
October 11, 2013
Organizers
Top Media Partner
Media Partner
Supporter
3. Key characteristics of Dynamic Languages
Dynamic typing
Interpreted
Code conciseness
Support for the interactive REPL (read-evaluate-print loop)
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
Sky.com, wired.com, Canoo.com
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
Hinweis der Redaktion
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