SlideShare a Scribd company logo
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

PPTX
Cryptography and applications
PPTX
PDF
PPTX
SECRY - Secure file storage on cloud using hybrid cryptography
PPTX
Encryption And Decryption Using AES Algorithm
PPTX
HADOOP TECHNOLOGY ppt
PPT
Map reduce in BIG DATA
Cryptography and applications
SECRY - Secure file storage on cloud using hybrid cryptography
Encryption And Decryption Using AES Algorithm
HADOOP TECHNOLOGY ppt
Map reduce in BIG DATA

What's hot (20)

PPTX
CLR AND LALR PARSER
PPT
Android software stack
PPTX
Linux file system
PPT
Hadoop Map Reduce
PPT
Type Checking(Compiler Design) #ShareThisIfYouLike
PDF
Pune Flutter Presents - Flutter 101
PDF
Politics of Agile
DOC
Chapter 1 1
PPTX
Map Reduce
PPTX
Load Balancing In Distributed Computing
PPTX
Unification and Lifting
PDF
Big Data Processing With Spark
PPTX
Rotor machine,subsitution technique
PPT
Audio and video streaming
PDF
Load testing Elasticsearch with Gatling
ODP
An Introduction To Jenkins
PPTX
RPC: Remote procedure call
PPTX
Protocols for internet of things
CLR AND LALR PARSER
Android software stack
Linux file system
Hadoop Map Reduce
Type Checking(Compiler Design) #ShareThisIfYouLike
Pune Flutter Presents - Flutter 101
Politics of Agile
Chapter 1 1
Map Reduce
Load Balancing In Distributed Computing
Unification and Lifting
Big Data Processing With Spark
Rotor machine,subsitution technique
Audio and video streaming
Load testing Elasticsearch with Gatling
An Introduction To Jenkins
RPC: Remote procedure call
Protocols for internet of things
Ad

Similar to Future Programming Languages (14)

PDF
那些 Functional Programming 教我的事
PDF
Ruby + Rails
PDF
Cross platform design
PDF
Software Libraries And Numbers
PDF
Mobile? WT... F?
PDF
Technical Debt
PDF
Enterprise javascriptsession2
PDF
Multiplatform, Promises and HTML5
PDF
Scrum und Craftsmanship
PDF
JS-Everywhere - LocalStorage Hands-on
PDF
The CoffeeScript Edge
PDF
Architecting cloud-enabled applications using Spring-Integration 2.x
PDF
Enterprise javascriptsession1
PDF
jQuery Mobile
那些 Functional Programming 教我的事
Ruby + Rails
Cross platform design
Software Libraries And Numbers
Mobile? WT... F?
Technical Debt
Enterprise javascriptsession2
Multiplatform, Promises and HTML5
Scrum und Craftsmanship
JS-Everywhere - LocalStorage Hands-on
The CoffeeScript Edge
Architecting cloud-enabled applications using Spring-Integration 2.x
Enterprise javascriptsession1
jQuery Mobile
Ad

More from Alcides Fonseca (10)

PDF
Understandable and Useful Error Messages for Liquid Types
PDF
Programar para GPUs
PDF
PDF
Workshop Git
ZIP
Usabilidade
ZIP
XMPP - Beyond IM
PDF
Introdução Web
PDF
O Futuro Da Web
PDF
Linguagens Dinamicas - Tech Days 2008
PPT
Understandable and Useful Error Messages for Liquid Types
Programar para GPUs
Workshop Git
Usabilidade
XMPP - Beyond IM
Introdução Web
O Futuro Da Web
Linguagens Dinamicas - Tech Days 2008

Recently uploaded (20)

PPTX
Tartificialntelligence_presentation.pptx
PDF
August Patch Tuesday
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
A Presentation on Touch Screen Technology
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation theory and applications.pdf
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
A Presentation on Artificial Intelligence
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
1. Introduction to Computer Programming.pptx
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Tartificialntelligence_presentation.pptx
August Patch Tuesday
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
A Presentation on Touch Screen Technology
Zenith AI: Advanced Artificial Intelligence
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation theory and applications.pdf
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Unlocking AI with Model Context Protocol (MCP)
A Presentation on Artificial Intelligence
Assigned Numbers - 2025 - Bluetooth® Document
Group 1 Presentation -Planning and Decision Making .pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Hybrid model detection and classification of lung cancer
NewMind AI Weekly Chronicles - August'25-Week II
OMC Textile Division Presentation 2021.pptx
1. Introduction to Computer Programming.pptx
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf

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