Polyglot Programmer

1,717 views

Published on

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

No Downloads
Views
Total views
1,717
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
24
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Polyglot Programmer

  1. 1. Polyglot Programmer Porto Linux João Cerdeira
  2. 2. Who Am I ➢ My Name: João Cerdeira ➢ Software Developer/Architect ➢ An Agile enthusiast: ➢ Scrum / Kanban / Lean ➢ A true believer in OpenSource
  3. 3. Agenda ➢ Introduction ➢ Today ➢ Solution ➢ Future ➢ Example ➢ DEMO (if there's enough time) ➢ Conclusion
  4. 4. Introduction
  5. 5. Polyglot Many Languages From Ancient Greek πολύγλωττος (poluglōttos), “‘'many-tongued, polyglot'’”), from πολύς (polus), “‘many’”) + γλῶττα (glōtta), “‘'tongue, language'’”)
  6. 6. Polyglot Programming We are entering a new era of software development. For most of our (short) history, we've primarily written code in a single language...the core language...will cease its monoculture... applications of the future will take advantage of the polyglot nature of the language...it's all about choosing the right tool for the job and leveraging it correctly...the times of writing an application in a single general purpose language is Over. Excerpts from: Neal Ford, “Polyglot Programming” http://memeagora.blogspot.com/2006/12/polyglot-programming.html
  7. 7. Golden Hammer
  8. 8. Golden Hammer Same tool, product or technique to solve every problems
  9. 9. Today Golden Hammers
  10. 10. TODAY
  11. 11. You've Done It In The Past ● Shell/Bash Script ● AWK ● Perl ● SED ● etc ... Linux Systems are traditionally Polyglot
  12. 12. You're Already doing it SQL JavaScript HTML / CSS Web Development Java / Ruby / .. XML (not a language)
  13. 13. Drivers New languagues are driven by new business and/or technical demand
  14. 14. Drivers SQL Relational Data Management JavaScript Web 2.0 HTML / CSS Web 1.0 XML Data Interchange App Configuration
  15. 15. Today Why aren't today's applications more Polyglot ? Is there a solution out there ?
  16. 16. SOLUTION
  17. 17. Solution Needs to Ensure We need to ensure and ease the transition ➢ Framework Available ➢ Ready for Enterprise
  18. 18. Solution Do we have a platform to do polyglot ?
  19. 19. Solution Do we have a platform to do polyglot ? Yes the JVM
  20. 20. Java ➢ Java appeared in 1995 ➢ It is based in C / C++ ➢ Networking and multithreading were included ➢ Lots of frameworks and Aplications
  21. 21. But ➢ It's old ➢ The old major feature was Generics in 2004 ➢ Version 7 was postponed to 2011 (again)
  22. 22. But ... ➢ Verbose compared to others ➢ Threading is no longer enough ➢ Very dificult to implement twitter without an IDE
  23. 23. However The JVM is a great place to work however java could make it painful sometimes
  24. 24. FUTURE
  25. 25. New Drivers ➢ Concurrency/Multi-core Hardware ➢ Framework Availability ➢ Sintax sugar (do more with less) ➢ Essence over Ceremony ➢ Testing ➢ etc
  26. 26. JVM ➢ more than 200 languages ➢ many of these aren't exactly practical, but many are ➢ at least 5 are ready to be used in production enviroment
  27. 27. What are the big players
  28. 28. Who's The Best ● Which of these is the best?
  29. 29. Who's The Best ● Which of these is the best?
  30. 30. Depend Of what ? ➢ personal preference ➢ best tool for the job ➢ best human resources ➢ etc
  31. 31. Some Considerations ➢ All have java interoperability ➢ Native syntax for collections ➢ Allmost everything is a object ➢ Closures ➢ Regular expressions
  32. 32. Some Considerations ➢ Groovy, Jruby and Jython ➢ Dynamic ➢ Metaprogramming ➢ Grails, RoR and Django ➢ Scala ➢ Actors ➢ Clojure ➢ Functional Programming ➢ STM
  33. 33. EXAMPLE
  34. 34. Drupal ➢ In 2007 someone tried to cluster Drupal ➢ Drupal is a PHP application ➢ The solution was encontered in JVM PHP and JVM !?
  35. 35. PHP an JVM ➢ Caucho's Quercos enables PHP to run in Tomcat/Resin ➢ EHCahe enables cache in JVM ➢ Terracotta enables cluster features ➢ How about putting drupal run in this eco system Information : http://www.terracotta.org/confluence/display/wiki/Drupal http://rifers.org/blogs/gbevin/2007/8/1/clustered_drupal_terracotta
  36. 36. DEMO
  37. 37. Very Very Small Twitter Objective Implement a twitter with a 'lot' of diferente languages
  38. 38. Java API (java) Java ImplWEB (Spring MVC)
  39. 39. Groovy API (java) Groovy ImplWEB (Spring MVC)
  40. 40. Scala API (java) Scala ImplWEB (Spring MVC)
  41. 41. Conclusion
  42. 42. Conclusion ➢ Use the best language for the job ➢ Use all the old good frameworks with new languages ➢ Painless transition
  43. 43. Q&A Twitter: http://twitter.com/jacerdeira Git: https://github.com/jcerdeira/polyprog/tree/develop SlideShare: http://www.slideshare.net/jcerdeira/

×