SlideShare a Scribd company logo
1 of 118
Download to read offline
The Future of
                          Programming Languages




                                  Alcides Fonseca
                                       Também lança búzios
                                         e cura mau olhado.




Monday, November 14, 11
Disclaimer

                          These opinions are my own and may not
                          reflect future events.




Monday, November 14, 11
Roadmap




Monday, November 14, 11
Roadmap
                          Why is language X successful?




Monday, November 14, 11
Roadmap
                            Why is language X successful?

                          Systems




Monday, November 14, 11
Roadmap
                            Why is language X successful?

                          Systems

                                    Java.Next




Monday, November 14, 11
Roadmap
                            Why is language X successful?

                          Systems

                                    Java.Next

                                                     Browser




Monday, November 14, 11
Roadmap
                                Why is language X successful?

                            Systems

                                        Java.Next

                                                         Browser

                          Parallel




Monday, November 14, 11
Roadmap
                                Why is language X successful?

                            Systems

                                        Java.Next

                                                         Browser

                          Parallel

                                            DSL




Monday, November 14, 11
Roadmap
                                Why is language X successful?

                            Systems

                                        Java.Next

                                                         Browser

                          Parallel

                                            DSL

                                                           Esoteric

Monday, November 14, 11
Why is language X
                            successful?




Monday, November 14, 11
Why is language X
                                  successful?
                   •      Portability (C, Java, Python, ...)




Monday, November 14, 11
Why is language X
                                  successful?
                   •      Portability (C, Java, Python, ...)

                   •      Abstraction and Simplicity (Java, Python)




Monday, November 14, 11
Why is language X
                                  successful?
                   •      Portability (C, Java, Python, ...)

                   •      Abstraction and Simplicity (Java, Python)

                   •      Killer app/framework (Ruby)




Monday, November 14, 11
Why is language X
                                  successful?
                   •      Portability (C, Java, Python, ...)

                   •      Abstraction and Simplicity (Java, Python)

                   •      Killer app/framework (Ruby)

                   •      Batteries Included (Python, Matlab)




Monday, November 14, 11
Why is language X
                                  successful?
                   •      Portability (C, Java, Python, ...)

                   •      Abstraction and Simplicity (Java, Python)

                   •      Killer app/framework (Ruby)

                   •      Batteries Included (Python, Matlab)

                   •      Tooling (VB, Java)




Monday, November 14, 11
Why is language X
                                  successful?
                   •      Portability (C, Java, Python, ...)

                   •      Abstraction and Simplicity (Java, Python)

                   •      Killer app/framework (Ruby)

                   •      Batteries Included (Python, Matlab)

                   •      Tooling (VB, Java)

                   •      Company Support (VB, C#, ABAP)




Monday, November 14, 11
Systems



Monday, November 14, 11
Rust




Monday, November 14, 11
Rust




Monday, November 14, 11
Rust


                             •No null




Monday, November 14, 11
Rust


                             •No null
                             •Closures




Monday, November 14, 11
Rust


                             •No null
                             •Closures
                             •Blocks




Monday, November 14, 11
Rust


                             •No null
                             •Closures
                             •Blocks
                             •Generics w/ Type Inference




Monday, November 14, 11
Rust


                             •No null
                             •Closures
                             •Blocks
                             •Generics w/ Type Inference
                             •Crates



Monday, November 14, 11
Rust


                             •No null
                             •Closures
                             •Blocks
                             •Generics w/ Type Inference
                             •Crates



Monday, November 14, 11
Rust


                             •No null
                             •Closures
                             •Blocks
                             •Generics w/ Type Inference
                             •Crates



Monday, November 14, 11
Plaid




Monday, November 14, 11
Plaid




Monday, November 14, 11
Plaid

                             •Lambdas




Monday, November 14, 11
Plaid

                             •Lambdas
                             •Closures




Monday, November 14, 11
Plaid

                             •Lambdas
                             •Closures
                             •Access Permissions




Monday, November 14, 11
Plaid

                             •Lambdas
                             •Closures
                             •Access Permissions
                               • immutable, unique, full




Monday, November 14, 11
Plaid

                             •Lambdas
                             •Closures
                             •Access Permissions
                               • immutable, unique, full
                             •Pattern Matching




Monday, November 14, 11
Plaid

                             •Lambdas
                             •Closures
                             •Access Permissions
                               • immutable, unique, full
                             •Pattern Matching




Monday, November 14, 11
Rust vs Plaid




Monday, November 14, 11
Rust vs Plaid
                                  Research-level




Monday, November 14, 11
Rust vs Plaid
                Company-supported   Research-level




Monday, November 14, 11
Rust vs Plaid
                Company-supported   Research-level
                          C/LLVM




Monday, November 14, 11
Rust vs Plaid
                Company-supported   Research-level
                          C/LLVM         JVM




Monday, November 14, 11
Rust vs Plaid
                Company-supported      Research-level
                          C/LLVM            JVM
                                    Verbose on permissions




Monday, November 14, 11
Rust vs Plaid
                Company-supported    Research-level
                          C/LLVM          JVM
           Limited on permissions Verbose on permissions




Monday, November 14, 11
Rust vs Plaid
                Company-supported    Research-level
                          C/LLVM          JVM
           Limited on permissions Verbose on permissions
                          Crates




Monday, November 14, 11
Rust vs Plaid
                Company-supported              Research-level
                          C/LLVM                    JVM
           Limited on permissions Verbose on permissions
                          Crates


                                   Rust vs C



Monday, November 14, 11
Java.next()



Monday, November 14, 11
ATM




Monday, November 14, 11
ATM
                   • JRuby




Monday, November 14, 11
ATM
                   • JRuby
                   • Mirah (Duby)




Monday, November 14, 11
ATM
                   • JRuby
                   • Mirah (Duby)
                   • Gosu



Monday, November 14, 11
ATM
                   • JRuby
                   • Mirah (Duby)
                   • Gosu
                   • Scala


Monday, November 14, 11
Kotlin
                          By Jetbrains




Monday, November 14, 11
Kotlin
                                              • Reified Generics
                          By Jetbrains




Monday, November 14, 11
Kotlin
                                              • Reified Generics
                          By Jetbrains
                                              • Nullables




Monday, November 14, 11
Kotlin
                                              • Reified Generics
                          By Jetbrains
                                              • Nullables
                                              • Type Inference




Monday, November 14, 11
Kotlin
                                              • Reified Generics
                          By Jetbrains
                                              • Nullables
                                              • Type Inference
                                              • Pattern Matching




Monday, November 14, 11
Kotlin
                                              • Reified Generics
                          By Jetbrains
                                              • Nullables
                                              • Type Inference
                                              • Pattern Matching
                                              • Extension Functions


Monday, November 14, 11
Kotlin
                                                       • Reified Generics
                          By Jetbrains
                                                       • Nullables
                                                       • Type Inference
                                                       • Pattern Matching
                                                       • Extension Functions
                                   Only with support from other
                                               IDEs


Monday, November 14, 11
Xtend
                          By Eclipse




Monday, November 14, 11
Xtend
                          By Eclipse


              • Pattern Matching
              • Extension Functions
              • Multi dispatch (visitor)



Monday, November 14, 11
Xtend
                          By Eclipse


              • Pattern Matching
              • Extension Functions
              • Multi dispatch (visitor)



Monday, November 14, 11
Xtend
                          By Eclipse


              • Pattern Matching
              • Extension Functions
              • Multi dispatch (visitor)



Monday, November 14, 11
Xtend
                          By Eclipse


              • Pattern Matching
              • Extension Functions
              • Multi dispatch (visitor)



Monday, November 14, 11
Xtend
                          By Eclipse


              • Pattern Matching
              • Extension Functions
              • Multi dispatch (visitor)

                                       Only with a great framework



Monday, November 14, 11
Ceylon
                                   By Redhat




Monday, November 14, 11
Ceylon
                                              By Redhat
                   • Syntax similar to Java




Monday, November 14, 11
Ceylon
                                              By Redhat
                   • Syntax similar to Java
                   • Tree-like DSLs




Monday, November 14, 11
Ceylon
                                                By Redhat
                   • Syntax similar to Java
                   • Tree-like DSLs
                   • Better macro/annotations



Monday, November 14, 11
Ceylon
                                                By Redhat
                   • Syntax similar to Java
                   • Tree-like DSLs
                   • Better macro/annotations



Monday, November 14, 11
Ceylon
                                                By Redhat
                   • Syntax similar to Java
                   • Tree-like DSLs
                   • Better macro/annotations

                                   No chance



Monday, November 14, 11
Java.next conclusions




Monday, November 14, 11
Java.next conclusions
                   • Java.next needs good tooling




Monday, November 14, 11
Java.next conclusions
                   • Java.next needs good tooling
                   • There are too many choices




Monday, November 14, 11
Java.next conclusions
                   • Java.next needs good tooling
                   • There are too many choices
                   • They are all similar



Monday, November 14, 11
Java.next conclusions
                   • Java.next needs good tooling
                   • There are too many choices
                   • They are all similar

                                      Java 8



Monday, November 14, 11
Java.next conclusions
                   • Java.next needs good tooling
                   • There are too many choices
                   • They are all similar

                                      Java 8        Scala for niches



Monday, November 14, 11
Browser



Monday, November 14, 11
Harmony




Monday, November 14, 11
Harmony




Monday, November 14, 11
Harmony




Monday, November 14, 11
Harmony




Monday, November 14, 11
Dart
                                 By Google




Monday, November 14, 11
Dart
                                 By Google




Monday, November 14, 11
Dart vs Harmony




Monday, November 14, 11
Dart vs Harmony
                   • Tooling




Monday, November 14, 11
Dart vs Harmony
                   • Tooling
                   • Other browsers




Monday, November 14, 11
Dart vs Harmony
                   • Tooling
                   • Other browsers
                   • Complex projects



Monday, November 14, 11
Dart vs Harmony
                   • Tooling
                   • Other browsers
                   • Complex projects
                   • Fast operations


Monday, November 14, 11
Dart vs Harmony
                   • Tooling
                   • Other browsers
                   • Complex projects
                   • Fast operations
                              Language heterogeneity



Monday, November 14, 11
Parallel languages



Monday, November 14, 11
Fortress




Monday, November 14, 11
Fortress




Monday, November 14, 11
Fortress




                          Wrong development approach

Monday, November 14, 11
Parasail
          for Phil in Philosopher_Index concurrent loop
                   const Left_Fork := Phil;
                   const Right_Fork := Phil mod Num_Phils + 1;
                 while True loop // Until overall timer terminates procedure
                      Display(Context.IO.Standard_Output,
                       "Philosopher " | Phil | " is thinkingn");
                      Delay(Clock, Next(Context.Random)); // Think
                   then
                      Pick_Up_Fork(Forks[Left_Fork], #is_left_fork);
                   ||
                      Pick_Up_Fork(Forks[Right_Fork], #is_right_fork);
                   then
                      Display(Context.IO.Standard_Output,
                       "Philosopher " | Phil | " is eatingn");
                      Delay(Clock, Next(Context.Random)); // Eat
                   then
                      Put_Down_Fork(Forks[Left_Fork]);
                   ||
                      Put_Down_Fork(Forks[Right_Fork]);
                 end loop;
               end loop;
             end procedure Dinner_Party;



Monday, November 14, 11
Parasail
          for Phil in Philosopher_Index concurrent loop
                   const Left_Fork := Phil;
                   const Right_Fork := Phil mod Num_Phils + 1;
                 while True loop // Until overall timer terminates procedure
                      Display(Context.IO.Standard_Output,
                       "Philosopher " | Phil | " is thinkingn");
                      Delay(Clock, Next(Context.Random)); // Think
                   then
                      Pick_Up_Fork(Forks[Left_Fork], #is_left_fork);
                   ||
                      Pick_Up_Fork(Forks[Right_Fork], #is_right_fork);
                   then
                      Display(Context.IO.Standard_Output,
                       "Philosopher " | Phil | " is eatingn");
                      Delay(Clock, Next(Context.Random)); // Eat
                   then
                      Put_Down_Fork(Forks[Left_Fork]);
                   ||
                      Put_Down_Fork(Forks[Right_Fork]);
                 end loop;
               end loop;
             end procedure Dinner_Party;                        Syntax + Tooling

Monday, November 14, 11
Æminium
    val (immutable Integer >> immutable Integer) ->
    immutable Integer fib =
    	 fn (immutable Integer >> immutable Integer n) => {
    	 	 match (n <= 2) {
    	 	 	 case True {
    	 	 	 	 1;
    	 	 	 }
    	 	 	 case False {
    	 	 	 	 fib(n - 1) + fib(n - 2);
    	 	 	 }                                 outside/inside   RW        R
    	 	 }
    	 };
                                                 -       unique      unique

                                                 R           full   immutable

                                               RW        share        pure

Monday, November 14, 11
Æminium
    val (immutable Integer >> immutable Integer) ->
    immutable Integer fib =
    	 fn (immutable Integer >> immutable Integer n) => {
    	 	 match (n <= 2) {
    	 	 	 case True {
    	 	 	 	 1;
    	 	 	 }
    	 	 	 case False {
    	 	 	 	 fib(n - 1) + fib(n - 2);
    	 	 	 }                                 outside/inside   RW        R
    	 	 }
    	 };
                                                 -       unique      unique

                                                 R           full   immutable
                          Hard to write        RW        share        pure

Monday, November 14, 11
DSLs



Monday, November 14, 11
Opa
        broadcast(author) =
          do Network.broadcast({~author text=Dom.get_value(#entry)}, room)
          Dom.clear_value(#entry)

        start() =
          author = Random.string(8)
          <div id=#header><div id=#logo></></>
          <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></>
          <div id=#footer>
            <input id=#entry onnewline={_ -> broadcast(author)} />
            <div class="button" onclick={_ -> broadcast(author)}>Post</>
          </>

        server = Server.one_page_bundle("Chat", [@static_resource_directory("resources")],
            ["resources/css.css"], start)




Monday, November 14, 11
Opa
        broadcast(author) =
          do Network.broadcast({~author text=Dom.get_value(#entry)}, room)
          Dom.clear_value(#entry)

        start() =
          author = Random.string(8)
          <div id=#header><div id=#logo></></>
          <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></>
          <div id=#footer>
            <input id=#entry onnewline={_ -> broadcast(author)} />
            <div class="button" onclick={_ -> broadcast(author)}>Post</>
          </>

        server = Server.one_page_bundle("Chat", [@static_resource_directory("resources")],
            ["resources/css.css"], start)


                                    Hard to separate concerns

Monday, November 14, 11
Frink
                          (6 years + 9 months)




Monday, November 14, 11
Frink
                          (6 years + 9 months)

         tw[v0, alpha, h0 = 1 meter, hw = 10 fe
         et, g=gravity] := 
         {
            vy0 = v0 sin[alpha]
            radical = (2 g (h0 - hw) + vy0^2)

            if (radical < 0 mph^2)
               return["No solution"]

            radical = radical^(1/2)

            return [(vy0 - radical)/
         g, (vy0 + radical)/g]
         }

Monday, November 14, 11
Frink
                          (6 years + 9 months)

         tw[v0, alpha, h0 = 1 meter, hw = 10 fe
         et, g=gravity] := 
         {
            vy0 = v0 sin[alpha]
            radical = (2 g (h0 - hw) + vy0^2)

            if (radical < 0 mph^2)
               return["No solution"]

            radical = radical^(1/2)

            return [(vy0 - radical)/
                                                  Best calculator ever!
         g, (vy0 + radical)/g]
         }

Monday, November 14, 11
Magpie




Monday, November 14, 11
Magpie
                   • Dynamic language (Similar to Mirah)




Monday, November 14, 11
Magpie
                   • Dynamic language (Similar to Mirah)
                   • Multi-methods




Monday, November 14, 11
Magpie
                   • Dynamic language (Similar to Mirah)
                   • Multi-methods
                   • Syntax extensions



Monday, November 14, 11
Magpie
                   • Dynamic language (Similar to Mirah)
                   • Multi-methods
                   • Syntax extensions


                                   Too dynamic


Monday, November 14, 11
OMeta




Monday, November 14, 11
OMeta




                          Great for DSLs


Monday, November 14, 11
Esoteric



Monday, November 14, 11
Wheeler




Monday, November 14, 11
Wheeler




Monday, November 14, 11
Wheeler




Monday, November 14, 11
Wheeler




                             ?!?!

Monday, November 14, 11
Clay




Monday, November 14, 11
Clay




                          Winner


Monday, November 14, 11
C will not die
                          anytime soon.


Monday, November 14, 11
Thank you

                                         Alcides Fonseca
                              http://alcidesfonseca.com


Monday, November 14, 11

More Related Content

What's hot

What's hot (20)

Application of Cloud Computing
Application of Cloud ComputingApplication of Cloud Computing
Application of Cloud Computing
 
Introduction to Ubuntu
Introduction to UbuntuIntroduction to Ubuntu
Introduction to Ubuntu
 
Mobile Operating System
Mobile Operating SystemMobile Operating System
Mobile Operating System
 
Android application development ppt
Android application development pptAndroid application development ppt
Android application development ppt
 
Linux internal
Linux internalLinux internal
Linux internal
 
Virtual machine
Virtual machineVirtual machine
Virtual machine
 
Android Location and Maps
Android Location and MapsAndroid Location and Maps
Android Location and Maps
 
Operating System PPT
Operating System PPTOperating System PPT
Operating System PPT
 
CYBERSPACE & CRIMINAL BEHAVIOR
CYBERSPACE & CRIMINAL BEHAVIORCYBERSPACE & CRIMINAL BEHAVIOR
CYBERSPACE & CRIMINAL BEHAVIOR
 
Windows operating system presentation
Windows operating system presentationWindows operating system presentation
Windows operating system presentation
 
Windows Mobile
Windows MobileWindows Mobile
Windows Mobile
 
android architecture
android architectureandroid architecture
android architecture
 
Linux introduction
Linux introductionLinux introduction
Linux introduction
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming Basics
 
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) Language
 
Linux basics
Linux basicsLinux basics
Linux basics
 
CS6401 OPERATING SYSTEMS Unit 2
CS6401 OPERATING SYSTEMS Unit 2CS6401 OPERATING SYSTEMS Unit 2
CS6401 OPERATING SYSTEMS Unit 2
 
Mobile Application Development With Android
Mobile Application Development With AndroidMobile Application Development With Android
Mobile Application Development With Android
 
Introduction to computer science
Introduction to computer scienceIntroduction to computer science
Introduction to computer science
 
Computer worms viruses and Prevention
Computer worms viruses and PreventionComputer worms viruses and Prevention
Computer worms viruses and Prevention
 

Similar to Future Programming Languages

那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事Wen-Tien Chang
 
Ruby + Rails
Ruby + RailsRuby + Rails
Ruby + Railsbetabeers
 
Cross platform design
Cross platform designCross platform design
Cross platform designrainer3
 
Software Libraries And Numbers
Software Libraries And NumbersSoftware Libraries And Numbers
Software Libraries And NumbersRobert Reiz
 
Technical Debt
Technical DebtTechnical Debt
Technical DebtKmanthei
 
Enterprise javascriptsession2
Enterprise javascriptsession2Enterprise javascriptsession2
Enterprise javascriptsession2Troy Miles
 
Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5C4Media
 
Scrum und Craftsmanship
Scrum und CraftsmanshipScrum und Craftsmanship
Scrum und CraftsmanshipStefan ROOCK
 
JS-Everywhere - LocalStorage Hands-on
JS-Everywhere - LocalStorage Hands-onJS-Everywhere - LocalStorage Hands-on
JS-Everywhere - LocalStorage Hands-onBrice Argenson
 
The CoffeeScript Edge
The CoffeeScript EdgeThe CoffeeScript Edge
The CoffeeScript EdgeTrevorBurnham
 
Architecting cloud-enabled applications using Spring-Integration 2.x
Architecting cloud-enabled applications using Spring-Integration 2.xArchitecting cloud-enabled applications using Spring-Integration 2.x
Architecting cloud-enabled applications using Spring-Integration 2.xEdson Yanaga
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1Troy Miles
 

Similar to Future Programming Languages (14)

那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事
 
Ruby + Rails
Ruby + RailsRuby + Rails
Ruby + Rails
 
Cross platform design
Cross platform designCross platform design
Cross platform design
 
Software Libraries And Numbers
Software Libraries And NumbersSoftware Libraries And Numbers
Software Libraries And Numbers
 
Mobile? WT... F?
Mobile? WT... F?Mobile? WT... F?
Mobile? WT... F?
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Enterprise javascriptsession2
Enterprise javascriptsession2Enterprise javascriptsession2
Enterprise javascriptsession2
 
Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5
 
Scrum und Craftsmanship
Scrum und CraftsmanshipScrum und Craftsmanship
Scrum und Craftsmanship
 
JS-Everywhere - LocalStorage Hands-on
JS-Everywhere - LocalStorage Hands-onJS-Everywhere - LocalStorage Hands-on
JS-Everywhere - LocalStorage Hands-on
 
The CoffeeScript Edge
The CoffeeScript EdgeThe CoffeeScript Edge
The CoffeeScript Edge
 
Architecting cloud-enabled applications using Spring-Integration 2.x
Architecting cloud-enabled applications using Spring-Integration 2.xArchitecting cloud-enabled applications using Spring-Integration 2.x
Architecting cloud-enabled applications using Spring-Integration 2.x
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 

More from Alcides Fonseca

More from Alcides Fonseca (10)

Understandable and Useful Error Messages for Liquid Types
Understandable and Useful Error Messages for Liquid TypesUnderstandable and Useful Error Messages for Liquid Types
Understandable and Useful Error Messages for Liquid Types
 
Programar para GPUs
Programar para GPUsProgramar para GPUs
Programar para GPUs
 
Django
DjangoDjango
Django
 
Workshop Git
Workshop GitWorkshop Git
Workshop Git
 
Usabilidade
UsabilidadeUsabilidade
Usabilidade
 
XMPP - Beyond IM
XMPP - Beyond IMXMPP - Beyond IM
XMPP - Beyond IM
 
Introdução Web
Introdução WebIntrodução Web
Introdução Web
 
O Futuro Da Web
O Futuro Da WebO Futuro Da Web
O Futuro Da Web
 
Linguagens Dinamicas - Tech Days 2008
Linguagens Dinamicas - Tech Days 2008Linguagens Dinamicas - Tech Days 2008
Linguagens Dinamicas - Tech Days 2008
 
Ejaki
EjakiEjaki
Ejaki
 

Recently uploaded

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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 CVKhem
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Future Programming Languages

  • 1. The Future of Programming Languages Alcides Fonseca Também lança búzios e cura mau olhado. Monday, November 14, 11
  • 2. Disclaimer These opinions are my own and may not reflect future events. Monday, November 14, 11
  • 4. Roadmap Why is language X successful? Monday, November 14, 11
  • 5. Roadmap Why is language X successful? Systems Monday, November 14, 11
  • 6. Roadmap Why is language X successful? Systems Java.Next Monday, November 14, 11
  • 7. Roadmap Why is language X successful? Systems Java.Next Browser Monday, November 14, 11
  • 8. Roadmap Why is language X successful? Systems Java.Next Browser Parallel Monday, November 14, 11
  • 9. Roadmap Why is language X successful? Systems Java.Next Browser Parallel DSL Monday, November 14, 11
  • 10. Roadmap Why is language X successful? Systems Java.Next Browser Parallel DSL Esoteric Monday, November 14, 11
  • 11. Why is language X successful? Monday, November 14, 11
  • 12. Why is language X successful? • Portability (C, Java, Python, ...) Monday, November 14, 11
  • 13. Why is language X successful? • Portability (C, Java, Python, ...) • Abstraction and Simplicity (Java, Python) Monday, November 14, 11
  • 14. Why is language X successful? • Portability (C, Java, Python, ...) • Abstraction and Simplicity (Java, Python) • Killer app/framework (Ruby) Monday, November 14, 11
  • 15. Why is language X successful? • Portability (C, Java, Python, ...) • Abstraction and Simplicity (Java, Python) • Killer app/framework (Ruby) • Batteries Included (Python, Matlab) Monday, November 14, 11
  • 16. Why is language X successful? • Portability (C, Java, Python, ...) • Abstraction and Simplicity (Java, Python) • Killer app/framework (Ruby) • Batteries Included (Python, Matlab) • Tooling (VB, Java) Monday, November 14, 11
  • 17. Why is language X successful? • Portability (C, Java, Python, ...) • Abstraction and Simplicity (Java, Python) • Killer app/framework (Ruby) • Batteries Included (Python, Matlab) • Tooling (VB, Java) • Company Support (VB, C#, ABAP) Monday, November 14, 11
  • 21. Rust •No null Monday, November 14, 11
  • 22. Rust •No null •Closures Monday, November 14, 11
  • 23. Rust •No null •Closures •Blocks Monday, November 14, 11
  • 24. Rust •No null •Closures •Blocks •Generics w/ Type Inference Monday, November 14, 11
  • 25. Rust •No null •Closures •Blocks •Generics w/ Type Inference •Crates Monday, November 14, 11
  • 26. Rust •No null •Closures •Blocks •Generics w/ Type Inference •Crates Monday, November 14, 11
  • 27. Rust •No null •Closures •Blocks •Generics w/ Type Inference •Crates Monday, November 14, 11
  • 30. Plaid •Lambdas Monday, November 14, 11
  • 31. Plaid •Lambdas •Closures Monday, November 14, 11
  • 32. Plaid •Lambdas •Closures •Access Permissions Monday, November 14, 11
  • 33. Plaid •Lambdas •Closures •Access Permissions • immutable, unique, full Monday, November 14, 11
  • 34. Plaid •Lambdas •Closures •Access Permissions • immutable, unique, full •Pattern Matching Monday, November 14, 11
  • 35. Plaid •Lambdas •Closures •Access Permissions • immutable, unique, full •Pattern Matching Monday, November 14, 11
  • 36. Rust vs Plaid Monday, November 14, 11
  • 37. Rust vs Plaid Research-level Monday, November 14, 11
  • 38. Rust vs Plaid Company-supported Research-level Monday, November 14, 11
  • 39. Rust vs Plaid Company-supported Research-level C/LLVM Monday, November 14, 11
  • 40. Rust vs Plaid Company-supported Research-level C/LLVM JVM Monday, November 14, 11
  • 41. Rust vs Plaid Company-supported Research-level C/LLVM JVM Verbose on permissions Monday, November 14, 11
  • 42. Rust vs Plaid Company-supported Research-level C/LLVM JVM Limited on permissions Verbose on permissions Monday, November 14, 11
  • 43. Rust vs Plaid Company-supported Research-level C/LLVM JVM Limited on permissions Verbose on permissions Crates Monday, November 14, 11
  • 44. Rust vs Plaid Company-supported Research-level C/LLVM JVM Limited on permissions Verbose on permissions Crates Rust vs C Monday, November 14, 11
  • 47. ATM • JRuby Monday, November 14, 11
  • 48. ATM • JRuby • Mirah (Duby) Monday, November 14, 11
  • 49. ATM • JRuby • Mirah (Duby) • Gosu Monday, November 14, 11
  • 50. ATM • JRuby • Mirah (Duby) • Gosu • Scala Monday, November 14, 11
  • 51. Kotlin By Jetbrains Monday, November 14, 11
  • 52. Kotlin • Reified Generics By Jetbrains Monday, November 14, 11
  • 53. Kotlin • Reified Generics By Jetbrains • Nullables Monday, November 14, 11
  • 54. Kotlin • Reified Generics By Jetbrains • Nullables • Type Inference Monday, November 14, 11
  • 55. Kotlin • Reified Generics By Jetbrains • Nullables • Type Inference • Pattern Matching Monday, November 14, 11
  • 56. Kotlin • Reified Generics By Jetbrains • Nullables • Type Inference • Pattern Matching • Extension Functions Monday, November 14, 11
  • 57. Kotlin • Reified Generics By Jetbrains • Nullables • Type Inference • Pattern Matching • Extension Functions Only with support from other IDEs Monday, November 14, 11
  • 58. Xtend By Eclipse Monday, November 14, 11
  • 59. Xtend By Eclipse • Pattern Matching • Extension Functions • Multi dispatch (visitor) Monday, November 14, 11
  • 60. Xtend By Eclipse • Pattern Matching • Extension Functions • Multi dispatch (visitor) Monday, November 14, 11
  • 61. Xtend By Eclipse • Pattern Matching • Extension Functions • Multi dispatch (visitor) Monday, November 14, 11
  • 62. Xtend By Eclipse • Pattern Matching • Extension Functions • Multi dispatch (visitor) Monday, November 14, 11
  • 63. Xtend By Eclipse • Pattern Matching • Extension Functions • Multi dispatch (visitor) Only with a great framework Monday, November 14, 11
  • 64. Ceylon By Redhat Monday, November 14, 11
  • 65. Ceylon By Redhat • Syntax similar to Java Monday, November 14, 11
  • 66. Ceylon By Redhat • Syntax similar to Java • Tree-like DSLs Monday, November 14, 11
  • 67. Ceylon By Redhat • Syntax similar to Java • Tree-like DSLs • Better macro/annotations Monday, November 14, 11
  • 68. Ceylon By Redhat • Syntax similar to Java • Tree-like DSLs • Better macro/annotations Monday, November 14, 11
  • 69. Ceylon By Redhat • Syntax similar to Java • Tree-like DSLs • Better macro/annotations No chance Monday, November 14, 11
  • 71. Java.next conclusions • Java.next needs good tooling Monday, November 14, 11
  • 72. Java.next conclusions • Java.next needs good tooling • There are too many choices Monday, November 14, 11
  • 73. Java.next conclusions • Java.next needs good tooling • There are too many choices • They are all similar Monday, November 14, 11
  • 74. Java.next conclusions • Java.next needs good tooling • There are too many choices • They are all similar Java 8 Monday, November 14, 11
  • 75. Java.next conclusions • Java.next needs good tooling • There are too many choices • They are all similar Java 8 Scala for niches Monday, November 14, 11
  • 81. Dart By Google Monday, November 14, 11
  • 82. Dart By Google Monday, November 14, 11
  • 83. Dart vs Harmony Monday, November 14, 11
  • 84. Dart vs Harmony • Tooling Monday, November 14, 11
  • 85. Dart vs Harmony • Tooling • Other browsers Monday, November 14, 11
  • 86. Dart vs Harmony • Tooling • Other browsers • Complex projects Monday, November 14, 11
  • 87. Dart vs Harmony • Tooling • Other browsers • Complex projects • Fast operations Monday, November 14, 11
  • 88. Dart vs Harmony • Tooling • Other browsers • Complex projects • Fast operations Language heterogeneity Monday, November 14, 11
  • 92. Fortress Wrong development approach Monday, November 14, 11
  • 93. Parasail for Phil in Philosopher_Index concurrent loop const Left_Fork := Phil; const Right_Fork := Phil mod Num_Phils + 1; while True loop // Until overall timer terminates procedure Display(Context.IO.Standard_Output, "Philosopher " | Phil | " is thinkingn"); Delay(Clock, Next(Context.Random)); // Think then Pick_Up_Fork(Forks[Left_Fork], #is_left_fork); || Pick_Up_Fork(Forks[Right_Fork], #is_right_fork); then Display(Context.IO.Standard_Output, "Philosopher " | Phil | " is eatingn"); Delay(Clock, Next(Context.Random)); // Eat then Put_Down_Fork(Forks[Left_Fork]); || Put_Down_Fork(Forks[Right_Fork]); end loop; end loop; end procedure Dinner_Party; Monday, November 14, 11
  • 94. Parasail for Phil in Philosopher_Index concurrent loop const Left_Fork := Phil; const Right_Fork := Phil mod Num_Phils + 1; while True loop // Until overall timer terminates procedure Display(Context.IO.Standard_Output, "Philosopher " | Phil | " is thinkingn"); Delay(Clock, Next(Context.Random)); // Think then Pick_Up_Fork(Forks[Left_Fork], #is_left_fork); || Pick_Up_Fork(Forks[Right_Fork], #is_right_fork); then Display(Context.IO.Standard_Output, "Philosopher " | Phil | " is eatingn"); Delay(Clock, Next(Context.Random)); // Eat then Put_Down_Fork(Forks[Left_Fork]); || Put_Down_Fork(Forks[Right_Fork]); end loop; end loop; end procedure Dinner_Party; Syntax + Tooling Monday, November 14, 11
  • 95. Æminium val (immutable Integer >> immutable Integer) -> immutable Integer fib = fn (immutable Integer >> immutable Integer n) => { match (n <= 2) { case True { 1; } case False { fib(n - 1) + fib(n - 2); } outside/inside RW R } }; - unique unique R full immutable RW share pure Monday, November 14, 11
  • 96. Æminium val (immutable Integer >> immutable Integer) -> immutable Integer fib = fn (immutable Integer >> immutable Integer n) => { match (n <= 2) { case True { 1; } case False { fib(n - 1) + fib(n - 2); } outside/inside RW R } }; - unique unique R full immutable Hard to write RW share pure Monday, November 14, 11
  • 98. Opa broadcast(author) = do Network.broadcast({~author text=Dom.get_value(#entry)}, room) Dom.clear_value(#entry) start() = author = Random.string(8) <div id=#header><div id=#logo></></> <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></> <div id=#footer> <input id=#entry onnewline={_ -> broadcast(author)} /> <div class="button" onclick={_ -> broadcast(author)}>Post</> </> server = Server.one_page_bundle("Chat", [@static_resource_directory("resources")], ["resources/css.css"], start) Monday, November 14, 11
  • 99. Opa broadcast(author) = do Network.broadcast({~author text=Dom.get_value(#entry)}, room) Dom.clear_value(#entry) start() = author = Random.string(8) <div id=#header><div id=#logo></></> <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></> <div id=#footer> <input id=#entry onnewline={_ -> broadcast(author)} /> <div class="button" onclick={_ -> broadcast(author)}>Post</> </> server = Server.one_page_bundle("Chat", [@static_resource_directory("resources")], ["resources/css.css"], start) Hard to separate concerns Monday, November 14, 11
  • 100. Frink (6 years + 9 months) Monday, November 14, 11
  • 101. Frink (6 years + 9 months) tw[v0, alpha, h0 = 1 meter, hw = 10 fe et, g=gravity] :=  {    vy0 = v0 sin[alpha]    radical = (2 g (h0 - hw) + vy0^2)    if (radical < 0 mph^2)       return["No solution"]    radical = radical^(1/2)    return [(vy0 - radical)/ g, (vy0 + radical)/g] } Monday, November 14, 11
  • 102. Frink (6 years + 9 months) tw[v0, alpha, h0 = 1 meter, hw = 10 fe et, g=gravity] :=  {    vy0 = v0 sin[alpha]    radical = (2 g (h0 - hw) + vy0^2)    if (radical < 0 mph^2)       return["No solution"]    radical = radical^(1/2)    return [(vy0 - radical)/ Best calculator ever! g, (vy0 + radical)/g] } Monday, November 14, 11
  • 104. Magpie • Dynamic language (Similar to Mirah) Monday, November 14, 11
  • 105. Magpie • Dynamic language (Similar to Mirah) • Multi-methods Monday, November 14, 11
  • 106. Magpie • Dynamic language (Similar to Mirah) • Multi-methods • Syntax extensions Monday, November 14, 11
  • 107. Magpie • Dynamic language (Similar to Mirah) • Multi-methods • Syntax extensions Too dynamic Monday, November 14, 11
  • 109. OMeta Great for DSLs Monday, November 14, 11
  • 114. Wheeler ?!?! Monday, November 14, 11
  • 116. Clay Winner Monday, November 14, 11
  • 117. C will not die anytime soon. Monday, November 14, 11
  • 118. Thank you Alcides Fonseca http://alcidesfonseca.com Monday, November 14, 11