SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Programming Language Selection




           Dhananjay Nene
            March 28, 2009
           A PuneTech event
Why language selection ?

    There is no universally superior language



    Language selection is fitment of language


    strengths and weaknesses to a context
    Language selection often has long term


    implications including those of business
    capability, cost and technology lock-in
    It is therefore a technology + management


    decision
Dimensions of Selection

    Capability : What the languages can / cannot


    do
    Productivity : How efficiently can one write


    programs using the languge
    Ramp Up : How easily can you get online



    Extraneous Factors



    Costs : What are the costs of using the


    language
Questions to be answered

    Can the language deliver on expectations ?


    What is the cost of delivering on expectations
    How long does it take to write and debug


    code ?
    If I don't already have the skill sets what is the


    cost and time required to build them ?
    What is the support structure available from


    community and corporate groups ?
    What are the hardware and deployment costs ?

Capability

    Style                            Memory Usage
                                


        Object Orientation           Performance
                                


        Function Orientation /       Generic Classes
    
                                 
        Higher Order
                                     Garbage Collection
        Functions                


    Typing                           Integration
                                


        Static                       Error Handling
                                

        Dynamic
    
                                     Multi-threading
                                 

    Reflection

                                     Library coverage and
                                 

    Metaprogramming                  support

Object Orientation

    Encapsulation / Information Hiding



    Inheritance



    Polymorphism



    Are all types objects ?



    Are all operations performed by sending


    messages to objects ?
    Are all user defined types objects ?

Functional Programming Elements

    Higher Order Functions



    Code Blocks



    Generators (potentially infinite data, lazy


    evaluation)
    List operations eg. map / reduce etc



    Closures



    Traditional : Haskell,Erlang



    Upcoming : Scala, Clojure, F#

Static or Dynamic Types ?

    In static typing, type is associated with a


    variable, in case of dynamic typing, it is
    associated to the runtime value
    Thus dynamic typing cannot often infer type


    until at runtime
    Static typing catches more errors at compile


    time. Makes debugging easier
    Dynamic types allows more flexibilities (eg


    metaprogramming) and lower compile idle
    times
Metaprogramming

    Inspect existing classes / methods



    Instantiate classes / Invoke methods using


    dynamic class / method structures
    Create new classes / functions / methods on


    the fly ?
    Modify existing classes / methods on the fly ?

Productivity

    Expressiveness



        Eg Wikipedia : Comparison of Programming Langs
    


             C / C++ =>1, JAVA => 1.5, Perl => 6, Python => 6.5
         



    Speed of writing code



        LOC per hour can also vary based on language
    


             http://page.mi.fu-
         

             berlin.de/prechelt/Biblio/jccpprt2_advances2003.pdf
    Compilation overheads



    IDE speeds



    Refactoring capability

Performance / Scalability /
Reliability
    Performance : How fast can the programs run


    for given hardware
    Scalability : How easily / cost effectively can the


    software be scaled to handle higher loads
    Reliability : How fault tolerant can the resultant


    software be
Extraneous Factors

    These are very important factors



        Customer Preferences
    


        Architecture Standards
    


        Frameworks and Libraries
    


        Community
    
Deployment characteristics

    Hardware Requirements



    Ease of cloud / virtualised hosting



    Hosting requirements for Small vs. Medium vs.


    Big apps
    Clustering capabilities

Adaptability / Agility

    How quickly can you change based on


    changing requirements / objectives
        Language is only one part of the mix
    


        Frameworks
    


        Design
    


        Processes
    
Costs

    Training



    Writing and Testing code



    Development Infrastructure



    Deployment Infrastructure

Checklist
    What do my customers want



        What does my architecture body state
    



    Can I meet performance / memory / app


    specific constraints ?
        What is the performance sensitivity
    



    How critical is time to market



        How critical is adaptability and agility
    



    How critical are the budget constraints



    How quickly can I ramp up



        What is the available community
    
My opinions on language futures

    These are my own



    These are empirical



    These are subjective



    Languages under pressure :



        Java under pressure due to productivity issues
    


        PHP under pressure due to performance / hardware
    

        / cormplex topologies
        Python / Ruby under pressure due to smaller
    

        installed base and multicore concerns
Trends

    Innovation in Web development is maturing



    Web and Pre-web architectures are both


    starting to get used
    The VM is the new OS



    CPUs/Disks/RAM/Networks have grown fast


    enough for traditional transaction processing
    Service Integration becoming critical



    Scaling, Multicore becoming important issue for


    many apps
Java

    The big daddy - #1. But high entry barriers



        Long time to train, high requirements to deploy
    



    Low development productivity



    Superb performance, scalability, community



    Multi threading powerful but tough



    Considerable risk from other languages on the


    JVM eg. Jython, JRuby, Groovy, Scala, Clojure
    Likely to loose share to competition

PHP

    Language with lowest entry barriers



        Easy to learn, easy to train
    



    Large community and supporters



    Phenomenally wide libraries coverage



    Scaling up is feasible but costs prohibitive



    Tougher acceptance when web + non web are


    used together
    Unlikely to change share much due to a defined


    niche
Python / Ruby

    High productivity and capability languages



    Have small but vibrant communities. Finding


    trained people can be tougher
    Excellent Framework support



    Current runtimes have difficulties in multi


    threading
    Lot of investments still continuing in VM


    development.
    Likely to continue to grab more share.

Functional Programming Langs
    Lot of current interest. Am studying these with


    great interest.
    Primarily useful for computation / algorithm


    intensive apps. As yet am unable to find them
    useful for typical CRUD apps
    Maturing still in progress. Too much rethinking


    and retraining required currently. Many items
    still unclear (eg. ORMs, state maintenance,
    performance)
    Invest in short term only if very obvious benefits



    Suggest incremental FP usage to learn more


Mais conteúdo relacionado

Mais procurados

Software Reengineering
Software ReengineeringSoftware Reengineering
Software Reengineering
Abdul Wahid
 

Mais procurados (20)

Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software Coding
 
#1 formal methods – introduction for software engineering
#1 formal methods – introduction for software engineering#1 formal methods – introduction for software engineering
#1 formal methods – introduction for software engineering
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
Test design techniques: Structured and Experienced-based techniques
Test design techniques: Structured and Experienced-based techniquesTest design techniques: Structured and Experienced-based techniques
Test design techniques: Structured and Experienced-based techniques
 
SOFTWARE ENGINEERING
SOFTWARE ENGINEERINGSOFTWARE ENGINEERING
SOFTWARE ENGINEERING
 
Software Testing Technique in Software Engineering
Software Testing Technique in Software EngineeringSoftware Testing Technique in Software Engineering
Software Testing Technique in Software Engineering
 
Static Testing
Static TestingStatic Testing
Static Testing
 
Debugging
DebuggingDebugging
Debugging
 
Software Reengineering
Software ReengineeringSoftware Reengineering
Software Reengineering
 
Java Comments | Java course
Java Comments | Java courseJava Comments | Java course
Java Comments | Java course
 
Algorithmic Software Cost Modeling
Algorithmic Software Cost ModelingAlgorithmic Software Cost Modeling
Algorithmic Software Cost Modeling
 
Advanced topics in software engineering
Advanced topics in software engineeringAdvanced topics in software engineering
Advanced topics in software engineering
 
The Software Engineering Discipline and Evolution of S/W Engineering Methodol...
The Software Engineering Discipline and Evolution of S/W Engineering Methodol...The Software Engineering Discipline and Evolution of S/W Engineering Methodol...
The Software Engineering Discipline and Evolution of S/W Engineering Methodol...
 
Cocomo model
Cocomo modelCocomo model
Cocomo model
 
Software testing & Quality Assurance
Software testing & Quality Assurance Software testing & Quality Assurance
Software testing & Quality Assurance
 
Unified process Model
Unified process ModelUnified process Model
Unified process Model
 
Formal Specifications in Formal Methods
Formal Specifications in Formal MethodsFormal Specifications in Formal Methods
Formal Specifications in Formal Methods
 
Advanced Software Engineering.ppt
Advanced Software Engineering.pptAdvanced Software Engineering.ppt
Advanced Software Engineering.ppt
 
Software Testing Techniques: An Overview
Software Testing Techniques: An Overview Software Testing Techniques: An Overview
Software Testing Techniques: An Overview
 
Introduction to Design Pattern
Introduction to Design  PatternIntroduction to Design  Pattern
Introduction to Design Pattern
 

Destaque

Destaque (11)

Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010
 
Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
 
DevSecOps - The big picture
DevSecOps - The big pictureDevSecOps - The big picture
DevSecOps - The big picture
 
2012: Putting your robots to work: security automation at Twitter
2012: Putting your robots to work: security automation at Twitter2012: Putting your robots to work: security automation at Twitter
2012: Putting your robots to work: security automation at Twitter
 
DevSecOps in Baby Steps
DevSecOps in Baby StepsDevSecOps in Baby Steps
DevSecOps in Baby Steps
 
Application Security at DevOps Speed - DevOpsDays Singapore 2016
Application Security at DevOps Speed - DevOpsDays Singapore 2016Application Security at DevOps Speed - DevOpsDays Singapore 2016
Application Security at DevOps Speed - DevOpsDays Singapore 2016
 
Integrating DevOps and Security
Integrating DevOps and SecurityIntegrating DevOps and Security
Integrating DevOps and Security
 
DevSecCon Asia 2017 Fabian Lim: DevSecOps in the government
DevSecCon Asia 2017 Fabian Lim: DevSecOps in the governmentDevSecCon Asia 2017 Fabian Lim: DevSecOps in the government
DevSecCon Asia 2017 Fabian Lim: DevSecOps in the government
 
AWS re:Invent 2016: Embracing DevSecOps while Improving Compliance and Securi...
AWS re:Invent 2016: Embracing DevSecOps while Improving Compliance and Securi...AWS re:Invent 2016: Embracing DevSecOps while Improving Compliance and Securi...
AWS re:Invent 2016: Embracing DevSecOps while Improving Compliance and Securi...
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
(SEC402) Enterprise Cloud Security via DevSecOps 2.0
(SEC402) Enterprise Cloud Security via DevSecOps 2.0(SEC402) Enterprise Cloud Security via DevSecOps 2.0
(SEC402) Enterprise Cloud Security via DevSecOps 2.0
 

Semelhante a Programming Language Selection

Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And Serendipity
QConLondon2008
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYB
nukeevry1
 
Y4IT - Technology Trends And The Skills You Should Learn
Y4IT - Technology Trends And The Skills You Should LearnY4IT - Technology Trends And The Skills You Should Learn
Y4IT - Technology Trends And The Skills You Should Learn
calenlegaspi
 
scale_perf_best_practices
scale_perf_best_practicesscale_perf_best_practices
scale_perf_best_practices
webuploader
 

Semelhante a Programming Language Selection (20)

Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
 
Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
 
IC-SDV 2019: Down-to-earth machine learning: What you always wanted your data...
IC-SDV 2019: Down-to-earth machine learning: What you always wanted your data...IC-SDV 2019: Down-to-earth machine learning: What you always wanted your data...
IC-SDV 2019: Down-to-earth machine learning: What you always wanted your data...
 
Comparative study of programming languages
Comparative study of programming languagesComparative study of programming languages
Comparative study of programming languages
 
Putting Compilers to Work
Putting Compilers to WorkPutting Compilers to Work
Putting Compilers to Work
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And Serendipity
 
soa
soasoa
soa
 
What are your Programming Language's Energy-Delay Implications?
What are your Programming Language's Energy-Delay Implications?What are your Programming Language's Energy-Delay Implications?
What are your Programming Language's Energy-Delay Implications?
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYB
 
Training report
Training reportTraining report
Training report
 
Java
JavaJava
Java
 
Y4IT - Technology Trends And The Skills You Should Learn
Y4IT - Technology Trends And The Skills You Should LearnY4IT - Technology Trends And The Skills You Should Learn
Y4IT - Technology Trends And The Skills You Should Learn
 
Keras Tutorial For Beginners | Creating Deep Learning Models Using Keras In P...
Keras Tutorial For Beginners | Creating Deep Learning Models Using Keras In P...Keras Tutorial For Beginners | Creating Deep Learning Models Using Keras In P...
Keras Tutorial For Beginners | Creating Deep Learning Models Using Keras In P...
 
Intro to Programming Lang.pptx
Intro to Programming Lang.pptxIntro to Programming Lang.pptx
Intro to Programming Lang.pptx
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
 
scale_perf_best_practices
scale_perf_best_practicesscale_perf_best_practices
scale_perf_best_practices
 
OpenSlava 2013 - Dynamic Languages
OpenSlava 2013 - Dynamic LanguagesOpenSlava 2013 - Dynamic Languages
OpenSlava 2013 - Dynamic Languages
 

Mais de Dhananjay Nene (6)

Actors, Fault tolerance and OTP
Actors, Fault tolerance and OTPActors, Fault tolerance and OTP
Actors, Fault tolerance and OTP
 
Why you should care about functional programming
Why you should care about functional programmingWhy you should care about functional programming
Why you should care about functional programming
 
Trends in Technology
Trends in TechnologyTrends in Technology
Trends in Technology
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) Explained
 
Blogging In Context
Blogging In ContextBlogging In Context
Blogging In Context
 
Contrasting Java And Dynamic Languages
Contrasting Java And Dynamic LanguagesContrasting Java And Dynamic Languages
Contrasting Java And Dynamic Languages
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 

Programming Language Selection

  • 1. Programming Language Selection Dhananjay Nene March 28, 2009 A PuneTech event
  • 2. Why language selection ? There is no universally superior language  Language selection is fitment of language  strengths and weaknesses to a context Language selection often has long term  implications including those of business capability, cost and technology lock-in It is therefore a technology + management  decision
  • 3. Dimensions of Selection Capability : What the languages can / cannot  do Productivity : How efficiently can one write  programs using the languge Ramp Up : How easily can you get online  Extraneous Factors  Costs : What are the costs of using the  language
  • 4. Questions to be answered Can the language deliver on expectations ?  What is the cost of delivering on expectations How long does it take to write and debug  code ? If I don't already have the skill sets what is the  cost and time required to build them ? What is the support structure available from  community and corporate groups ? What are the hardware and deployment costs ? 
  • 5. Capability Style Memory Usage   Object Orientation Performance   Function Orientation / Generic Classes   Higher Order Garbage Collection Functions  Typing Integration   Static Error Handling   Dynamic  Multi-threading  Reflection  Library coverage and  Metaprogramming support 
  • 6. Object Orientation Encapsulation / Information Hiding  Inheritance  Polymorphism  Are all types objects ?  Are all operations performed by sending  messages to objects ? Are all user defined types objects ? 
  • 7. Functional Programming Elements Higher Order Functions  Code Blocks  Generators (potentially infinite data, lazy  evaluation) List operations eg. map / reduce etc  Closures  Traditional : Haskell,Erlang  Upcoming : Scala, Clojure, F# 
  • 8. Static or Dynamic Types ? In static typing, type is associated with a  variable, in case of dynamic typing, it is associated to the runtime value Thus dynamic typing cannot often infer type  until at runtime Static typing catches more errors at compile  time. Makes debugging easier Dynamic types allows more flexibilities (eg  metaprogramming) and lower compile idle times
  • 9. Metaprogramming Inspect existing classes / methods  Instantiate classes / Invoke methods using  dynamic class / method structures Create new classes / functions / methods on  the fly ? Modify existing classes / methods on the fly ? 
  • 10. Productivity Expressiveness  Eg Wikipedia : Comparison of Programming Langs  C / C++ =>1, JAVA => 1.5, Perl => 6, Python => 6.5  Speed of writing code  LOC per hour can also vary based on language  http://page.mi.fu-  berlin.de/prechelt/Biblio/jccpprt2_advances2003.pdf Compilation overheads  IDE speeds  Refactoring capability 
  • 11. Performance / Scalability / Reliability Performance : How fast can the programs run  for given hardware Scalability : How easily / cost effectively can the  software be scaled to handle higher loads Reliability : How fault tolerant can the resultant  software be
  • 12. Extraneous Factors These are very important factors  Customer Preferences  Architecture Standards  Frameworks and Libraries  Community 
  • 13. Deployment characteristics Hardware Requirements  Ease of cloud / virtualised hosting  Hosting requirements for Small vs. Medium vs.  Big apps Clustering capabilities 
  • 14. Adaptability / Agility How quickly can you change based on  changing requirements / objectives Language is only one part of the mix  Frameworks  Design  Processes 
  • 15. Costs Training  Writing and Testing code  Development Infrastructure  Deployment Infrastructure 
  • 16. Checklist What do my customers want  What does my architecture body state  Can I meet performance / memory / app  specific constraints ? What is the performance sensitivity  How critical is time to market  How critical is adaptability and agility  How critical are the budget constraints  How quickly can I ramp up  What is the available community 
  • 17. My opinions on language futures These are my own  These are empirical  These are subjective  Languages under pressure :  Java under pressure due to productivity issues  PHP under pressure due to performance / hardware  / cormplex topologies Python / Ruby under pressure due to smaller  installed base and multicore concerns
  • 18. Trends Innovation in Web development is maturing  Web and Pre-web architectures are both  starting to get used The VM is the new OS  CPUs/Disks/RAM/Networks have grown fast  enough for traditional transaction processing Service Integration becoming critical  Scaling, Multicore becoming important issue for  many apps
  • 19. Java The big daddy - #1. But high entry barriers  Long time to train, high requirements to deploy  Low development productivity  Superb performance, scalability, community  Multi threading powerful but tough  Considerable risk from other languages on the  JVM eg. Jython, JRuby, Groovy, Scala, Clojure Likely to loose share to competition 
  • 20. PHP Language with lowest entry barriers  Easy to learn, easy to train  Large community and supporters  Phenomenally wide libraries coverage  Scaling up is feasible but costs prohibitive  Tougher acceptance when web + non web are  used together Unlikely to change share much due to a defined  niche
  • 21. Python / Ruby High productivity and capability languages  Have small but vibrant communities. Finding  trained people can be tougher Excellent Framework support  Current runtimes have difficulties in multi  threading Lot of investments still continuing in VM  development. Likely to continue to grab more share. 
  • 22. Functional Programming Langs Lot of current interest. Am studying these with  great interest. Primarily useful for computation / algorithm  intensive apps. As yet am unable to find them useful for typical CRUD apps Maturing still in progress. Too much rethinking  and retraining required currently. Many items still unclear (eg. ORMs, state maintenance, performance) Invest in short term only if very obvious benefits  Suggest incremental FP usage to learn more 