SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
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


Contenu connexe

Tendances

Software Engineering concept
Software Engineering concept Software Engineering concept
Software Engineering concept Atamjitsingh92
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case DiagramKumar
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design pptfarazimlak
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
6 basic steps of software development process
6 basic steps of software development process6 basic steps of software development process
6 basic steps of software development processRiant Soft
 
Page replacement algorithms
Page replacement algorithmsPage replacement algorithms
Page replacement algorithmsPiyush Rochwani
 
Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)ShudipPal
 
Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Fadhil Ismail
 
software process improvement
software process improvementsoftware process improvement
software process improvementMohammad Xaviar
 
Software Engineering Fundamentals
Software Engineering FundamentalsSoftware Engineering Fundamentals
Software Engineering FundamentalsRahul Sudame
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)Er. Shiva K. Shrestha
 
File System Implementation - Part1
File System Implementation - Part1File System Implementation - Part1
File System Implementation - Part1Amir Payberah
 
Software Process Improvement
Software Process ImprovementSoftware Process Improvement
Software Process ImprovementBilal Shah
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process ModelsAhsan Rahim
 
Language identification
Language identificationLanguage identification
Language identificationatulnitrkl
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality AssuranceSachithra Gayan
 

Tendances (20)

Software Engineering concept
Software Engineering concept Software Engineering concept
Software Engineering concept
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
 
Arrays
ArraysArrays
Arrays
 
Unit1
Unit1Unit1
Unit1
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design ppt
 
System testing
System testingSystem testing
System testing
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
6 basic steps of software development process
6 basic steps of software development process6 basic steps of software development process
6 basic steps of software development process
 
Page replacement algorithms
Page replacement algorithmsPage replacement algorithms
Page replacement algorithms
 
Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)
 
Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Software System Engineering - Chapter 1
Software System Engineering - Chapter 1
 
software process improvement
software process improvementsoftware process improvement
software process improvement
 
Software Engineering Fundamentals
Software Engineering FundamentalsSoftware Engineering Fundamentals
Software Engineering Fundamentals
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)
 
File System Implementation - Part1
File System Implementation - Part1File System Implementation - Part1
File System Implementation - Part1
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Software Process Improvement
Software Process ImprovementSoftware Process Improvement
Software Process Improvement
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process Models
 
Language identification
Language identificationLanguage identification
Language identification
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 

En vedette

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 2010Twilio Inc
 
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?Mario Camou Riveroll
 
DevSecOps - The big picture
DevSecOps - The big pictureDevSecOps - The big picture
DevSecOps - The big pictureDevSecOpsSg
 
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 TwitterNeil Matatall
 
DevSecOps in Baby Steps
DevSecOps in Baby StepsDevSecOps in Baby Steps
DevSecOps in Baby StepsPriyanka Aash
 
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 2016Stefan Streichsbier
 
Integrating DevOps and Security
Integrating DevOps and SecurityIntegrating DevOps and Security
Integrating DevOps and SecurityStijn Muylle
 
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 governmentDevSecCon
 
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...Amazon Web Services
 
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...Sonatype
 
(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.0Amazon Web Services
 

En vedette (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
 

Similaire à 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 presentationstreambase
 
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?MobiDev
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming LanguagesIshan Monga
 
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 platformNuxeo
 
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)Ivo Jansch
 
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...Dr. Haxel Consult
 
Comparative study of programming languages
Comparative study of programming languagesComparative study of programming languages
Comparative study of programming languagesPrabhat singh
 
Putting Compilers to Work
Putting Compilers to WorkPutting Compilers to Work
Putting Compilers to WorkSingleStore
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And SerendipityQConLondon2008
 
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?Stefanos Georgiou
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYBnukeevry1
 
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 Learncalenlegaspi
 
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...Edureka!
 
Intro to Programming Lang.pptx
Intro to Programming Lang.pptxIntro to Programming Lang.pptx
Intro to Programming Lang.pptxssuser51ead3
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglotTugdual Grall
 
scale_perf_best_practices
scale_perf_best_practicesscale_perf_best_practices
scale_perf_best_practiceswebuploader
 
OpenSlava 2013 - Dynamic Languages
OpenSlava 2013 - Dynamic LanguagesOpenSlava 2013 - Dynamic Languages
OpenSlava 2013 - Dynamic LanguagesOscar Renalias
 

Similaire à 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
 

Plus de Dhananjay Nene

Actors, Fault tolerance and OTP
Actors, Fault tolerance and OTPActors, Fault tolerance and OTP
Actors, Fault tolerance and OTPDhananjay Nene
 
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 programmingDhananjay Nene
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedDhananjay Nene
 
Contrasting Java And Dynamic Languages
Contrasting Java And Dynamic LanguagesContrasting Java And Dynamic Languages
Contrasting Java And Dynamic LanguagesDhananjay Nene
 

Plus 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
 

Dernier

Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 

Dernier (20)

Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 

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 