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

PPT
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
PPT
Future Programming Language
PPTX
Programming the future v2
PDF
Taming The View for Rubyconf India
PDF
Geocaching A Cross Curricular Adventure
PDF
Nick Sieger-Exploring Rails 3 Through Choices
PDF
Social metadata on the web
PDF
Advice for the interns
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
Future Programming Language
Programming the future v2
Taming The View for Rubyconf India
Geocaching A Cross Curricular Adventure
Nick Sieger-Exploring Rails 3 Through Choices
Social metadata on the web
Advice for the interns

More from ThoughtWorks (20)

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

Recently uploaded (20)

PDF
Mushroom cultivation and it's methods.pdf
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
Tartificialntelligence_presentation.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
Teaching material agriculture food technology
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Machine Learning_overview_presentation.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Empathic Computing: Creating Shared Understanding
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Mushroom cultivation and it's methods.pdf
Heart disease approach using modified random forest and particle swarm optimi...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Tartificialntelligence_presentation.pptx
Assigned Numbers - 2025 - Bluetooth® Document
A comparative analysis of optical character recognition models for extracting...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Teaching material agriculture food technology
OMC Textile Division Presentation 2021.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Group 1 Presentation -Planning and Decision Making .pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Machine Learning_overview_presentation.pptx
Approach and Philosophy of On baking technology
Unlocking AI with Model Context Protocol (MCP)
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Empathic Computing: Creating Shared Understanding
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Ad

Present and Future of Programming Languages - ola bini