SlideShare a Scribd company logo
OLA BINI



                       http://olabini.com



söndag, 2010 mars 21
The Tao gave birth to machine
                     language

         Machine language gave birth to
                the assembler

söndag, 2010 mars 21
The assembler gave birth to the
                compiler

              Now there are ten thousand
                      languages

söndag, 2010 mars 21
Each language has its purpose,
                  however humble

       Each language expresses the Yin
             and Yang of software

   Each language has its place within
               the Tao
söndag, 2010 mars 21
But do not program in COBOL if
             you can avoid it



söndag, 2010 mars 21
söndag, 2010 mars 21
söndag, 2010 mars 21
Greenspun's Tenth Rule of
                            Programming



söndag, 2010 mars 21
General purpose languages

                       Special purpose languages

                       Domain specific languages

söndag, 2010 mars 21
Where are we now?




söndag, 2010 mars 21
Java




söndag, 2010 mars 21
söndag, 2010 mars 21
“Scripting” languages




söndag, 2010 mars 21
“Scripting” languages
                       Pragmatic languages


söndag, 2010 mars 21
Where did we come from?




söndag, 2010 mars 21
Ruby lineage




söndag, 2010 mars 21
a, b, c = 42, 69, 25




söndag, 2010 mars 21
def foo
                         yield 42
                         3.times do |n|
                           yield n*25
                         end
                       end

                       foo { |x| puts x }




söndag, 2010 mars 21
CLU




söndag, 2010 mars 21
/^(d{3})-(d{4})$/ =~ phone_number




söndag, 2010 mars 21
$x = 42
                       @me = other
                       @@foo += 2




söndag, 2010 mars 21
Global swearing

                          $/ = “%”
                          $= = true
                          puts $!




söndag, 2010 mars 21
puts “hello” unless moon == :full




söndag, 2010 mars 21
Perl




söndag, 2010 mars 21
class MyNumber < Number; end




söndag, 2010 mars 21
foo.send :answer?, 42




söndag, 2010 mars 21
puts obj.methods.grep /=$/




söndag, 2010 mars 21
Smalltalk




söndag, 2010 mars 21
class Foo
                         include ExampleMethods
                       end

                       baz.extend ExampleMethods




söndag, 2010 mars 21
Lisp Machine Lisp




söndag, 2010 mars 21
def incrementor(x)
                         lambda do
                           next, x = x, x+1
                           next
                         end
                       end

                       i = incrementor(10)
                       i.call # => 10
                       i.call # => 11
                       i.call # => 12



söndag, 2010 mars 21
Scheme




söndag, 2010 mars 21
Ruby




söndag, 2010 mars 21
Good design is not innovation

   Good design is choosing what to
   include - and what to not include


söndag, 2010 mars 21
söndag, 2010 mars 21
Imperative programming




söndag, 2010 mars 21
Functional programming




söndag, 2010 mars 21
Logic programming




söndag, 2010 mars 21
Object oriented programming




söndag, 2010 mars 21
Domain specific languages




söndag, 2010 mars 21
Multiparadigm languages




söndag, 2010 mars 21
Ceremony vs Essence




söndag, 2010 mars 21
Typing




söndag, 2010 mars 21
söndag, 2010 mars 21
Natural languages?




söndag, 2010 mars 21
söndag, 2010 mars 21
Design




söndag, 2010 mars 21
Communication




söndag, 2010 mars 21
Abstraction




söndag, 2010 mars 21
Expressiveness




söndag, 2010 mars 21
First class




söndag, 2010 mars 21
Focused or multiparadigm?




söndag, 2010 mars 21
Where are we going?




söndag, 2010 mars 21
Is concurrency really a large
                         problem?



söndag, 2010 mars 21
söndag, 2010 mars 21
More programming languages -
                  not fewer



söndag, 2010 mars 21
Language leverage




söndag, 2010 mars 21
söndag, 2010 mars 21
Higher level




söndag, 2010 mars 21
Slowness and wastefulness




söndag, 2010 mars 21
Virtual machines




söndag, 2010 mars 21
Text based languages?




söndag, 2010 mars 21
AST languages?




söndag, 2010 mars 21
Language workbenches




söndag, 2010 mars 21
NBL?




söndag, 2010 mars 21
Other paradigms?




söndag, 2010 mars 21
söndag, 2010 mars 21
söndag, 2010 mars 21
It’s going to be interesting




söndag, 2010 mars 21
Where is Ruby going?




söndag, 2010 mars 21
Ruby 2.0




söndag, 2010 mars 21
I don’t know




söndag, 2010 mars 21
Easier to modify the language




söndag, 2010 mars 21
Canonical AST




söndag, 2010 mars 21
Simplify the core?




söndag, 2010 mars 21
Scoped extensions




söndag, 2010 mars 21
DSLs




söndag, 2010 mars 21
Concurrency?




söndag, 2010 mars 21
Typing?




söndag, 2010 mars 21
RubyX




söndag, 2010 mars 21
The future




söndag, 2010 mars 21

More Related Content

Similar to Present and Future of Programming Languages - ola bini (20)

PDF
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Guillaume Laforge
 
PDF
Appengine ja-night-10
John Woodell
 
PDF
JavaScript Landscape
Janne Kuuskeri
 
PDF
Accelerating Ruby with LLVM
evanphx
 
PDF
Hackersnl
chriseidhof
 
PDF
HN NL - Haskell
chriseidhof
 
PDF
clrh56
Maehana Tsuyoshi
 
KEY
Internationalization of your homepage
gutskun
 
KEY
Adhearsion @ eComm 2009 Final
Adhearsion Foundation
 
PDF
12 Hours To Rate A Rails Application
ehuard
 
PDF
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
Jan Wedekind
 
KEY
Basic Wicket and Scala
stuq
 
PDF
Polishing Interfaces
UX Booth
 
PDF
Rejectkaigi 2010
John Woodell
 
PDF
ESUG 2010 Welcome!
ESUG
 
PDF
Javascript the Language of the Web
andersjanmyr
 
PDF
Standing on the shoulders of giants with JRuby
Theo Hultberg
 
PDF
Welcome and Introduction
ESUG
 
PDF
Oxente Rails 2010
Fabio Akita
 
PDF
Ruby para-programadores-php
Juan Maiz
 
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Guillaume Laforge
 
Appengine ja-night-10
John Woodell
 
JavaScript Landscape
Janne Kuuskeri
 
Accelerating Ruby with LLVM
evanphx
 
Hackersnl
chriseidhof
 
HN NL - Haskell
chriseidhof
 
Internationalization of your homepage
gutskun
 
Adhearsion @ eComm 2009 Final
Adhearsion Foundation
 
12 Hours To Rate A Rails Application
ehuard
 
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
Jan Wedekind
 
Basic Wicket and Scala
stuq
 
Polishing Interfaces
UX Booth
 
Rejectkaigi 2010
John Woodell
 
ESUG 2010 Welcome!
ESUG
 
Javascript the Language of the Web
andersjanmyr
 
Standing on the shoulders of giants with JRuby
Theo Hultberg
 
Welcome and Introduction
ESUG
 
Oxente Rails 2010
Fabio Akita
 
Ruby para-programadores-php
Juan Maiz
 

More from ThoughtWorks (20)

PDF
Online and Publishing casestudies
ThoughtWorks
 
PDF
Insurecom Case Study
ThoughtWorks
 
PDF
Grameen Case Study
ThoughtWorks
 
PDF
BFSI Case Sudies
ThoughtWorks
 
PDF
Construction Techniques For Domain Specific Languages
ThoughtWorks
 
PDF
Concurrency patterns in Ruby
ThoughtWorks
 
PDF
Concurrency patterns in Ruby
ThoughtWorks
 
PDF
Lets build-ruby-app-server: Vineet tyagi
ThoughtWorks
 
PDF
Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
ThoughtWorks
 
PDF
The ruby on rails i18n core api-Neeraj Kumar
ThoughtWorks
 
PDF
Ruby 124C41+ - Matz
ThoughtWorks
 
KEY
Mac ruby to the max - Brendan G. Lim
ThoughtWorks
 
PDF
Project Fedena and Why Ruby on Rails - ArvindArvind G S
ThoughtWorks
 
PDF
Glass fish rubyconf-india-2010-Arun gupta
ThoughtWorks
 
PDF
Aman kingrubyoo pnew
ThoughtWorks
 
PDF
HadoopThe Hadoop Java Software Framework
ThoughtWorks
 
PDF
Bootstrapping iPhone Development
ThoughtWorks
 
PDF
DSL Construction rith Ruby
ThoughtWorks
 
PPT
Cloud Computing
ThoughtWorks
 
PPT
Transitioning To Agile Webinar Presentation
ThoughtWorks
 
Online and Publishing casestudies
ThoughtWorks
 
Insurecom Case Study
ThoughtWorks
 
Grameen Case Study
ThoughtWorks
 
BFSI Case Sudies
ThoughtWorks
 
Construction Techniques For Domain Specific Languages
ThoughtWorks
 
Concurrency patterns in Ruby
ThoughtWorks
 
Concurrency patterns in Ruby
ThoughtWorks
 
Lets build-ruby-app-server: Vineet tyagi
ThoughtWorks
 
Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
ThoughtWorks
 
The ruby on rails i18n core api-Neeraj Kumar
ThoughtWorks
 
Ruby 124C41+ - Matz
ThoughtWorks
 
Mac ruby to the max - Brendan G. Lim
ThoughtWorks
 
Project Fedena and Why Ruby on Rails - ArvindArvind G S
ThoughtWorks
 
Glass fish rubyconf-india-2010-Arun gupta
ThoughtWorks
 
Aman kingrubyoo pnew
ThoughtWorks
 
HadoopThe Hadoop Java Software Framework
ThoughtWorks
 
Bootstrapping iPhone Development
ThoughtWorks
 
DSL Construction rith Ruby
ThoughtWorks
 
Cloud Computing
ThoughtWorks
 
Transitioning To Agile Webinar Presentation
ThoughtWorks
 
Ad

Recently uploaded (20)

PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
July Patch Tuesday
Ivanti
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Python basic programing language for automation
DanialHabibi2
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
July Patch Tuesday
Ivanti
 
Ad

Present and Future of Programming Languages - ola bini