Texas.gov Presents: Battle of Programming Languages

588 views

Published on

Software technology is evolving quickly. Platforms, programming languages, and frameworks are created at a pace faster than ever before. New techniques, processes, and standards are also emerging that can impact your organization, especially if you’re not prepared. There are times, though, that these same technologies also fade fast. Catching up with and staying abreast of new technologies is as important as knowing which technologies will yield long term results.

How can your organization's technology strategy keep up with all the changes? Join us for a light-hearted yet informative look at the “Battle of the Programming Languages” and our take on how to keep up with emerging technologies and techniques, and how you can align your organization's technology goals with the ever moving software industry.

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

  • Be the first to like this

No Downloads
Views
Total views
588
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • This is a light-hearted talk about technologies that are evolving very fast around us and how to manage them.
  • Let’s start with something we all have done before, or at least wish to do. Many product startups start not just with a business idea, but also some form of implementation idea behind them. If you don’t have an implementation goal, your next step is to find a developer who can come up with that.
  • Ok you are ready to hire a developer for your implementation. Lets do a comparison of developer interviews over the years.
  • 20 years ago, you would look for a developer with these skill sets. Notice how Word and Excel are also considered developer skills.
  • Well, things started changing fast. New acronyms were invented and more acronyms followed. There was a point of time where knowing the acronym meant the developer knew the subject.
  • And this is what’s expected of a modern developer today. It is common to see recruiters looking for 5 years of experience in a technology that was invented last year’s fall.
  • It’s an overwhelming technology world out there. Where do we start to understand this complexity? Some people believe that Business solution matters and technology is only an enabler. Any technology can be used to achieve any business solution.Some others believe that choosing a technology implementation is as important as getting to the goal
  • We have used the term technology a bit liberally so far. Let’s scope that term - when we say “Technology” in this talk, this is what we mean – Programming Languages, Application Frameworks, Databases and Tools. Our discussion topic is restricted to these terms during this talk.
  • A few slides earlier we said that selection of a technology has become complex. We can prove that using some stats. Look at the graph and see what you can conclude.You can think of each following row is an abstraction of the above line. For example, OS is an abstraction of Hardware layer. Frameworks are abstraction of Languages. At the end of it all, its just 1s and 0s, but you have various abstraction layers to just do that.
  • And thus follows a simple law!
  • How to select a technology. You can use proven scientific methods about what you already know or what others know. Because you can blame the technology at the end of the day anyway.
  • Well, here is a thought.We as developers are looking at this completely wrong.
  • With so many technologies around, may be its not we developers are struggling to select a technology.What if, technologies have a mind of their own?
  • It is called Subject Oriented Pattern, which they call as Inversion of Control of developers
  • They – the technologies – have a bigger problem than you…
  • And that’s why they are battling to choose you – The Developer.So “Choices of Technology” does not necessarily mean what developers have to choose. It rather means that how the technologies are battling amongst themselves in order to get themselves implemented for a solution through the hands of developers.If you browse through a myriad of tech web sites, you can see how these technologies try to offer simplicity, installability, testability and maturity and several Quality Attributes, so that you as a developer will click on that link and eventually download and use it.
  • But why do we call this a battle?Think about how many programming languages have been invented just to say “Hello World!”. Or how many web frameworks have been invented just to send a response back to the browser. Or how many relational databases are invented just to capture the relations of data. That’s because they do not trust each other. They seem to think that their bits are better than other languages bits.
  • And welcome to the Battlefield of Technologies – where you, the developer, are the catch!
  • Within this battlefield we have many divisions – The JVM Brigade with a hundreds of open source code.
  • C# is really the only viable choice on the .Net platform
  • Even on top of the development platforms, there is an abundance of frameworks that all strive to solve specific (and often times the same) problems.
  • Even just looking at a specific segment of the market, the choices just keep multiplying.
  • More examples of choices: Databases, JavaScript and CSS frameworks, Architecture, Middleware, Mobile
  • There are so many technologies to talk about - tools, frameworks, architectures or programming languages. But we are really interested in their battles. For an illustration of this battle, we will highlight the battle of technologies by illustrating with examples from new programming languages.
  • There are over 8000 programming languages, according to the Internet. Here is a interesting picture of relationships of programming languages. The bigger the font of the programming language, the more its related. It is interesting to see that Haskell has influenced many programming languages.
  • Less CeremonyMore Celebration
  • Modern languages emphasize getting the task done, instead of worrying how to construct your code
  • Examples of DSLs: SQL MediaWiki markupUnix shell scripting
  • A regular Java program to send an email
  • Exact functionality implemented as a Groovy language DSL !
  • Emphasize that we are trying to simplify solutions, in a way that non-programmers can effectively use our systems.
  • But there are so many choices, where do we start?
  • Now that we know technologies are also fighting a battle amongst themselves, let’s revisit the question of how to select a technology. Surely we need a better way of making choices.
  • They are creating many smallprojects, open source them that eventually disrupt the industry. For eg. Cassandra/Mongo/Redis/Neo4J as a powerful NoSQL has gained a notable market over traditional RDBMS. Hadoop has become the defacto tool for analyzing BigData.
  • The small players are hoping that cloud will solve all their problems.
  • The bigger question is “What are YOU doing about it ?”
  • How do you know that you are doing the “right” thing?
  • Too few options.
  • Team exerciseTry emerging technologiesRetire outdated technologies
  • Documents what your team:Is doingPlan to doPlan to stopWill not do
  • Describe the four categories
  • Describe the four rings
  • We practice what we preach
  • Practice what we preach
  • There are many benefits to using a technology radar
  • Texas.gov Presents: Battle of Programming Languages

    1. 1. Presented by: Vasu Srinivasan, Senior Developer and SharePoint Architect Eric Kelm, Senior Software Developer Texas.gov Technology Today Series Presented by Texas.gov Hosted by the Texas Department of Information Resources (DIR)
    2. 2. 2  Small, informal, interactive discussions  Deeper dive into topic  Hosted twice a year  Coming up – a follow up to this webinar on Tuesday, May 13, 11:30am – 1:00pm (light lunch provided) • Look for RSVP instructions in follow up email • Space is limited Texas.gov Partner Roundtable
    3. 3. 3  Learning a new programming language in under an hour  Comparing current popular programming languages or frameworks  Declaring which programming language is best What This Talk is NOT About
    4. 4. 4  A light-hearted look at industry trends  A review of emerging technologies  Keeping up with emerging technologies  And something along those lines… So What is This Talk About…
    5. 5. 7  C/C++  Pascal, Delphi, PowerBuilder  COBOL  VB  SQL Server, Oracle, DB2  Word, Excel, Access (T – 20).years()
    6. 6. 8  OOAD, OOP  Java, EJB, JDBC, JNDI and JSP  .Net/C# and ASP  MoM, Web Services  JavaScript, JScript, VBScript  XML, DHTML, XHTML, XSL, XSLT, CSS  SQL Server/Oracle  UML (T – 10).years()
    7. 7. 9 • Java, EJB, JSF, Spring, Groovy, Grails, JBoss Seam, Struts, Swing, JavaFX, Objective C • Ruby, PHP, Python, Scala, Clojure, Haskell • .Net 2.0-4.5, C#, ASP.Net MVC2, MVC3, MVC4, SharePoint, RazorView • SOA, WebServices, JAX-RPC, JAXB, Soap, REST, WCF, Camel, RabbitMQ • SVN, GitHub, TFS, Jira, Jenkins, Maven, Ivy, Gradle • JavaScript, HTML5, CSS3, jQuery, jQuery Mobile, Backbone, Ember, Knockout, AngularJS, Node.js, extJS • XML, YAML, XSL, XSLT, JSON • UML, EIP, EAP • SQL Server, Oracle, MongoDB, Redis, Cassandra, Neo4J • BigData, Hadoop, Pig, Hive • Android, OSX , Windows Phone 7/8/8.1/RT • JUnit, NUnit, MSTest, Selenium, Spock, Geb • OOAD, OOP, Functional, Parallel and Distributed Programming • Agile, Waterfall, Scrum, XP, Kanban • TDD, BDD, ADD and OCD (T - 1).days()
    8. 8. 11  Obviously, technology has become complex over the years  Almost obviously, selecting a technology also has become complex  Not so obviously, the conviction that a selected technology is suitable has also become complex The Truth About Technology
    9. 9. 12 What we mean by technology in this presentation  Programming Languages  Application Frameworks  Databases  Tools #Technology
    10. 10. 13 Hardware Servers Databases Platforms Language s Framewor ks XaaS Choices 2 4 8 16 32 128 256 0 50 100 150 200 250 300 Numberofchoices Technology vs Choices Technology Approx # of Choices Examples Hardware 2 Mac, PC Servers 4 AIX, Solaris, Linux, Windows Databases 8 Oracle, SQL Server, PostgreSql, MySql, MongoDB, Cassandra, MS Access Platforms 16 JVM, .Net, Android, OSX, Windows Phone/RT, WebServices, Node.js, Vertex Languages 32 C, C++, Java, C#, Groovy, PHP, Python, Ruby, JavaScript, XML, XSL, HTML Framework s 128 Spring, Grails, Wicket, Zend, Django, Rails, AngularJS, EmberJS, ExtJS, jQuery, Sencha, PhoneGap XaaS/Tools 256 IaaS, PaaS, SaaS, Cloud and other services Technology Choices
    11. 11. 14 As the level of abstraction increases, so do the number of choices. The Kelm-Srinivasan Law of Choices
    12. 12. 15  Use scientific techniques such as • “It’s the only tool I know” • “I think I know this programming language” • “Everyone talks about this new framework”  Conclusion • Go with what you think is best • Or what others think is best • You can always blame the technology, anyway How to Select a Technology?
    13. 13. 16 But what if… we are actually overlooking something very fundamental? if (what) { … }
    14. 14. 17 Well, technologies have a pattern for that… the problem is not about selecting the techologies for your business but how to select YOU, has been the problem for technologies you are not struggling to select the technology but the technologies are struggling to select YOU if (what) { … }
    15. 15. 18  INVERSION OF CONTROL OF DEVELOPERS SUBJECT ORIENTED PATTERN
    16. 16. 19 is how the architectures, platforms, languages and frameworks are trying to attract, entice… The Real Problem of for Technologies
    17. 17. 20 The Battle and how they are battling to use … YOU
    18. 18. 21 But why do we think that the technologies are battling amongst themselves? Think about how many programming languages have been invented to say “Hello, World!”… And calculate the Fibonacci Series or a Factorial. That’s because they do not trust each other’s bits. “My bits are better than your bits” Battle, Why?
    19. 19. 22 Messaging JVM .Net JavaScript Databases Middleware CMS Others HTML/CSS Web Frameworks Integration WHERE YOU ARE THE CATCH the battlefield of technologies
    20. 20. JVM Brigade Java Groovy Scala Clojure Jython JRuby Kotlin Ceylon Fantom Gosu http://tinyurl.com/odkwxcj 23
    21. 21. 27 Android iOS Windows Phone Sencha PhoneGap Titanium SOAP REST ActiveMQ Fusion Middleware RabbitMQ Activiti Apache Camel DropWizard WCF XML, JSON, GS ON JPA, Hibernate jQuery jQuery Mobile extJS emberJS angularJS backbone.js node.js knockout prototype dojo mootools sass/scss less Oracle SQL Server MySQL Server PostgreSql MongoDB Cassandra Redis Hadoop BigData More Regiments
    22. 22. 29 Galaxy of Programming Languages
    23. 23. 30  Essence over Ceremony  Functional Programming Support  Domain Specific Languages Features of Modern Programming Languages
    24. 24. 31  Get to the essence of what your code is trying to accomplish, and get rid of all of the unnecessary legacy ceremony  For example, the iterator pattern becomes much simpler, because instead of the developer controlling the iteration (for loop), the object itself is responsible for the control of iteration (object.each)  So the question “how to iterate” becomes irrelvant, and you essentially are telling the object “Go iterate yourself” Feature: Essence Over Ceremony
    25. 25. 32 First-class and higher-order functions functions as arguments functions as return types Pure functions immutable objects no state Feature: Functional Programming Support
    26. 26. 33  Create languages targeted at a specific problem domain in which you are working (mini-languages)  Allows business users to write “code” in a language that they can understand, and that same language can also be understood by the system Feature: Domain Specific Languages
    27. 27. 34 package com.asoftwareguy.email.java; public class JavaEmailSender { public static void main(String[] args){ JavaEmail javaEmail = new JavaEmail(); javaEmail.setTo("ekelm@egov.com"); javaEmail.setFrom("test@texas.gov"); javaEmail.setSubject(“Test Email"); javaEmail.setMessage("Hello! This is a test email message!"); javaEmail.send(); } } Show and Tell: Java
    28. 28. 35 send email to 'ekelm@egov.com' from 'test@texas.gov' with a subject 'Test Email' and the message 'Hello! This is a test email message!' Show and Tell: DSL
    29. 29. 36 The DSL illustrated “Essence over Ceremony” allowed expression of a domain expertise directly in a general purpose programming language Many other technologies are doing the same thing – simplifying solutions for complex business problems And there are so many flavors of these technologies… What Does the DSL Prove?
    30. 30. 37 Choices, Choices Everywhere
    31. 31. 38 Let’s revisit the question Now that we know technologies are also fighting a battle to get to us… How to Select a Technology?
    32. 32. 39  NetFlix • Grails, Asgard, Lipstick, Genie  Twitter • MySql, Cassandra, Hadoop, Lucene, Pig, Memcached, Scalding (Scala), Bootstrap  Facebook • Cassandra, PHP, Linux, MySQL, Memcached, Haystack, HipHop, Hive, Scribe  Yahoo • Hadoop, CapIt  Google • Big Table, Lazy Collections and a lot of stuff  Amazon • AWS, Linux, Oracle, Java, Perl, JBoss, Xen  WhatsApp • Erlang What the Big Players are Doing
    33. 33. 42  Did you choose or were you chosen?  Did you select the right technology?  How do you measure it? • Cost • Resources • Support and Community  Can you brainwash convince your • Stakeholder • Manager • Team • Yourself Too Many Questions…
    34. 34. 45 A Technology Radar is a team exercise to experiment and assess the emerging and sun-setting technologies in order to provide value to your stakeholders Pioneered by ThoughtWorks Inc. Conducted quarterly Assess current technologies Publishes resulting radar Technology Radar
    35. 35. 46 The result of the exercise is a document that captures • your team’s view of where the industry is going • what your team is doing to keep up with it • how your team leverages the potential benefits and exclude excess baggage • your team’s trail of how it has modernized Results of Technology Radar
    36. 36. 47  Techniques • Spock, Guerilla Testing, Async programming, Functional programming, Html5 storage, Logs as data, Agile, Kanban, Scrum  Tools • Gradle, Pig, Maven, TFS, Eclipse, VisualStudio, Intell iJ, Atlassian, Jira, GitServer  Platforms • MongoDB, Neo4j, Redis, Hadoop, Node.js, OpenSta ck, Rias, Azure, AWS, SharePoint  Languages and Frameworks • AngularJS, Knockout, Groovy, Grails, Clojure, Scala, Play, JavaScript/CSS frameworks, DropWizard, SpringBoot Groups (categories)
    37. 37. 48  Adopt • Start using in your projects  Trial • Understand the capabilities; consider in a low-risk project  Assess • Worth exploring with the goal of understanding how it affects your enterprise; do a PoC  Hold • Proceed with caution; Reduce support Rings
    38. 38. 49 Texas.gov Technology Radar ‘13
    39. 39. 51  Keep current  Eliminate excess baggage  Trail of your decisions on technology  Helps to remove technology biases  Not a roadmap, but it helps you come up with a convincing roadmap  Must be done at enterprise level Benefits
    40. 40. 52  Check out where your peers are caught up and why  Share your findings (even if you calculated the Fibonacci series again)  Remain passionate and have fun doing what you do Always remember, the technologies are battling for you except for Chuck Norris he chooses the technology to choose him Summary
    41. 41. 53 Technology Radar http://www.thoughtworks.com/radar Higher-order functions http://en.wikipedia.org/wiki/Higher-order_function Evolution of C++ http://knowtechstuff.blogspot.com/2012/02/evolution-of-c- programming-language.html History of programming languages http://www.georgehernandez.com/h/xComputers/Programm ing/Languages.asp The graph of programming languages http://griffsgraphs.com/2012/07/01/programming- languages-influences/ Images Courtesy Foxtrot™, www.glasbren.com, www.wikipedia.org and several web sites. References
    42. 42. 54 Contact Information: Eric Kelm ekelm@egov.com 512-651-9399 Vasu Srinivasan vsrinivasan@egov.com 512-651-9816 println(‘Thank YOU !’) Questions?

    ×