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.
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Texas.gov Presents: Battle of Programming Languages
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
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
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
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…
11. 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
12. 12
What we mean by technology in this presentation
Programming Languages
Application Frameworks
Databases
Tools
#Technology
13. 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
14. 14
As the level of abstraction increases,
so do the number of choices.
The Kelm-Srinivasan Law of Choices
15. 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?
16. 16
But what if…
we are actually overlooking something very fundamental?
if (what) { … }
17. 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) { … }
21. 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?
30. 30
Essence over Ceremony
Functional Programming Support
Domain Specific Languages
Features of Modern Programming Languages
31. 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
32. 32
First-class and higher-order functions
functions as arguments
functions as return types
Pure functions
immutable objects
no state
Feature: Functional Programming Support
33. 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
34. 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
35. 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
36. 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?
38. 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?
39. 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
40.
41.
42. 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…
43.
44.
45. 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
46. 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
48. 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
51. 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
52. 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
53. 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
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