SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
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


Más contenido relacionado

La actualidad más candente

distributed Computing system model
distributed Computing system modeldistributed Computing system model
distributed Computing system modelHarshad Umredkar
 
Loaders and Linkers
Loaders and LinkersLoaders and Linkers
Loaders and Linkerskunj desai
 
Assembler design options
Assembler design optionsAssembler design options
Assembler design optionsMohd Arif
 
Unit 3 object analysis-classification
Unit 3 object analysis-classificationUnit 3 object analysis-classification
Unit 3 object analysis-classificationgopal10scs185
 
Pipes & Filters Architectural Pattern
Pipes & Filters Architectural PatternPipes & Filters Architectural Pattern
Pipes & Filters Architectural PatternFredrik Kivi
 
program flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architectureprogram flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architecturePankaj Kumar Jain
 
Server Side Technologies
Server Side TechnologiesServer Side Technologies
Server Side Technologiestawi123
 
11 deployment diagrams
11 deployment diagrams11 deployment diagrams
11 deployment diagramsBaskarkncet
 
Web Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NETWeb Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NETPonraj
 
شرح Domain Driven Design بالعربي
شرح Domain Driven Design بالعربيشرح Domain Driven Design بالعربي
شرح Domain Driven Design بالعربيMohamed Galal
 
Compiler Design(NANTHU NOTES)
Compiler Design(NANTHU NOTES)Compiler Design(NANTHU NOTES)
Compiler Design(NANTHU NOTES)guest251d9a
 
Token, Pattern and Lexeme
Token, Pattern and LexemeToken, Pattern and Lexeme
Token, Pattern and LexemeA. S. M. Shafi
 
Remote invocation
Remote invocationRemote invocation
Remote invocationishapadhy
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringSaqib Raza
 

La actualidad más candente (20)

distributed Computing system model
distributed Computing system modeldistributed Computing system model
distributed Computing system model
 
Loaders and Linkers
Loaders and LinkersLoaders and Linkers
Loaders and Linkers
 
Type Checking(Compiler Design) #ShareThisIfYouLike
Type Checking(Compiler Design) #ShareThisIfYouLikeType Checking(Compiler Design) #ShareThisIfYouLike
Type Checking(Compiler Design) #ShareThisIfYouLike
 
CS3251-_PIC
CS3251-_PICCS3251-_PIC
CS3251-_PIC
 
Assembler design options
Assembler design optionsAssembler design options
Assembler design options
 
Unit 3 object analysis-classification
Unit 3 object analysis-classificationUnit 3 object analysis-classification
Unit 3 object analysis-classification
 
1.Role lexical Analyzer
1.Role lexical Analyzer1.Role lexical Analyzer
1.Role lexical Analyzer
 
Recognition-of-tokens
Recognition-of-tokensRecognition-of-tokens
Recognition-of-tokens
 
Pipes & Filters Architectural Pattern
Pipes & Filters Architectural PatternPipes & Filters Architectural Pattern
Pipes & Filters Architectural Pattern
 
program flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architectureprogram flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architecture
 
Server Side Technologies
Server Side TechnologiesServer Side Technologies
Server Side Technologies
 
11 deployment diagrams
11 deployment diagrams11 deployment diagrams
11 deployment diagrams
 
Web Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NETWeb Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NET
 
شرح Domain Driven Design بالعربي
شرح Domain Driven Design بالعربيشرح Domain Driven Design بالعربي
شرح Domain Driven Design بالعربي
 
Compiler Design(NANTHU NOTES)
Compiler Design(NANTHU NOTES)Compiler Design(NANTHU NOTES)
Compiler Design(NANTHU NOTES)
 
Token, Pattern and Lexeme
Token, Pattern and LexemeToken, Pattern and Lexeme
Token, Pattern and Lexeme
 
Remote invocation
Remote invocationRemote invocation
Remote invocation
 
Software requirements
Software requirementsSoftware requirements
Software requirements
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Middleware
MiddlewareMiddleware
Middleware
 

Destacado

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
 

Destacado (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
 

Similar 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 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
 

Similar 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
 

Más 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
 

Más 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

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
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 businesspanagenda
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
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 Takeoffsammart93
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
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.pdfsudhanshuwaghmare1
 

Último (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 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
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 

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 