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

What's hot

What is Coding
What is CodingWhat is Coding
What is Coding
RoboGarden
 
Programming
ProgrammingProgramming
Programming
Jobin Jobin
 
Programming language
Programming languageProgramming language
Programming language
Marisa Paryasto
 
Coding with kids
Coding with kidsCoding with kids
Coding with kids
Azzurra Ragone
 
Face recognition technology - BEST PPT
Face recognition technology - BEST PPTFace recognition technology - BEST PPT
Face recognition technology - BEST PPT
Siddharth Modi
 
CT01 Computer Basics
CT01 Computer BasicsCT01 Computer Basics
CT01 Computer Basics
ehillpamlico
 
Web Browsers
Web BrowsersWeb Browsers
Web Browsers
Neha Sharma
 
Face detection and recognition
Face detection and recognitionFace detection and recognition
Face detection and recognition
Pankaj Thakur
 
Final Report Biometrics
Final Report BiometricsFinal Report Biometrics
Final Report Biometrics
anoop80686
 
Optical Character Recognition (OCR) System
Optical Character Recognition (OCR) SystemOptical Character Recognition (OCR) System
Optical Character Recognition (OCR) System
iosrjce
 
Computer basics
Computer basicsComputer basics
Computer basics
Karen Brooks
 
Computer Systems Foundation General
Computer Systems Foundation GeneralComputer Systems Foundation General
Computer Systems Foundation General
mrcarty
 
Computer vision ppt
Computer vision pptComputer vision ppt
Computer vision ppt
RachitSogani1
 
Malware detection-using-machine-learning
Malware detection-using-machine-learningMalware detection-using-machine-learning
Malware detection-using-machine-learning
Security Bootcamp
 
Computer Forensics ppt
Computer Forensics pptComputer Forensics ppt
VIRTUAL PAINT APPLICATION USING HAND GESTURES
VIRTUAL PAINT APPLICATION USING HAND GESTURESVIRTUAL PAINT APPLICATION USING HAND GESTURES
VIRTUAL PAINT APPLICATION USING HAND GESTURES
IRJET Journal
 
Intro to Computers
Intro to ComputersIntro to Computers
Intro to Computers
Pamela Seabolt
 
License plate recognition
License plate recognitionLicense plate recognition
License plate recognition
slmnsvn
 
Computer vision
Computer visionComputer vision
Computer vision
yusifagalar
 
Computer basics
Computer basicsComputer basics
Computer basics
Bhakti Nalage
 

What's hot (20)

What is Coding
What is CodingWhat is Coding
What is Coding
 
Programming
ProgrammingProgramming
Programming
 
Programming language
Programming languageProgramming language
Programming language
 
Coding with kids
Coding with kidsCoding with kids
Coding with kids
 
Face recognition technology - BEST PPT
Face recognition technology - BEST PPTFace recognition technology - BEST PPT
Face recognition technology - BEST PPT
 
CT01 Computer Basics
CT01 Computer BasicsCT01 Computer Basics
CT01 Computer Basics
 
Web Browsers
Web BrowsersWeb Browsers
Web Browsers
 
Face detection and recognition
Face detection and recognitionFace detection and recognition
Face detection and recognition
 
Final Report Biometrics
Final Report BiometricsFinal Report Biometrics
Final Report Biometrics
 
Optical Character Recognition (OCR) System
Optical Character Recognition (OCR) SystemOptical Character Recognition (OCR) System
Optical Character Recognition (OCR) System
 
Computer basics
Computer basicsComputer basics
Computer basics
 
Computer Systems Foundation General
Computer Systems Foundation GeneralComputer Systems Foundation General
Computer Systems Foundation General
 
Computer vision ppt
Computer vision pptComputer vision ppt
Computer vision ppt
 
Malware detection-using-machine-learning
Malware detection-using-machine-learningMalware detection-using-machine-learning
Malware detection-using-machine-learning
 
Computer Forensics ppt
Computer Forensics pptComputer Forensics ppt
Computer Forensics ppt
 
VIRTUAL PAINT APPLICATION USING HAND GESTURES
VIRTUAL PAINT APPLICATION USING HAND GESTURESVIRTUAL PAINT APPLICATION USING HAND GESTURES
VIRTUAL PAINT APPLICATION USING HAND GESTURES
 
Intro to Computers
Intro to ComputersIntro to Computers
Intro to Computers
 
License plate recognition
License plate recognitionLicense plate recognition
License plate recognition
 
Computer vision
Computer visionComputer vision
Computer vision
 
Computer basics
Computer basicsComputer basics
Computer basics
 

Similar to Future Programming Languages

那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事
Wen-Tien Chang
 
Ruby + Rails
Ruby + RailsRuby + Rails
Ruby + Rails
betabeers
 
Cross platform design
Cross platform designCross platform design
Cross platform design
rainer3
 
Software Libraries And Numbers
Software Libraries And NumbersSoftware Libraries And Numbers
Software Libraries And Numbers
Robert Reiz
 
Mobile? WT... F?
Mobile? WT... F?Mobile? WT... F?
Mobile? WT... F?
Vicker Leung
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
Kmanthei
 
Enterprise javascriptsession2
Enterprise javascriptsession2Enterprise javascriptsession2
Enterprise javascriptsession2
Troy Miles
 
Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5Multiplatform, Promises and HTML5
Multiplatform, Promises and HTML5
C4Media
 
Scrum und Craftsmanship
Scrum und CraftsmanshipScrum und Craftsmanship
Scrum und Craftsmanship
Stefan ROOCK
 
JS-Everywhere - LocalStorage Hands-on
JS-Everywhere - LocalStorage Hands-onJS-Everywhere - LocalStorage Hands-on
JS-Everywhere - LocalStorage Hands-on
Brice Argenson
 
The CoffeeScript Edge
The CoffeeScript EdgeThe CoffeeScript Edge
The CoffeeScript Edge
TrevorBurnham
 
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
Edson Yanaga
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1
Troy Miles
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
Maximiliano Firtman
 

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

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
Alcides Fonseca
 
Programar para GPUs
Programar para GPUsProgramar para GPUs
Programar para GPUs
Alcides Fonseca
 
Django
DjangoDjango
Workshop Git
Workshop GitWorkshop Git
Workshop Git
Alcides Fonseca
 
Usabilidade
UsabilidadeUsabilidade
Usabilidade
Alcides Fonseca
 
XMPP - Beyond IM
XMPP - Beyond IMXMPP - Beyond IM
XMPP - Beyond IM
Alcides Fonseca
 
Introdução Web
Introdução WebIntrodução Web
Introdução Web
Alcides Fonseca
 
O Futuro Da Web
O Futuro Da WebO Futuro Da Web
O Futuro Da Web
Alcides Fonseca
 
Linguagens Dinamicas - Tech Days 2008
Linguagens Dinamicas - Tech Days 2008Linguagens Dinamicas - Tech Days 2008
Linguagens Dinamicas - Tech Days 2008
Alcides Fonseca
 
Ejaki
EjakiEjaki

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

National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 

Recently uploaded (20)

National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 

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