SlideShare a Scribd company logo
Five Languages
   in a Moment




        Sergio Gil
Sergio Gil Pérez de la Manga




            @porras
I   Creating Software
I   Ruby
“Excusatio non petita,
accussatio manifesta”
2005
2005
“Learn a new language each year”
2006
2006   Ruby
2006   Ruby


2007
2006   Ruby


2007    -
2006   Ruby


2007    -


2008
2006   Ruby


2007    -


2008    -
2006   Ruby


2007    -


2008    -


2009
2006   Ruby


2007    -


2008    -


2009    -
2006   Ruby


2007    -


2008    -


2009    -


2010
2006   Ruby


2007    -


2008    -


2009    -


2010    -
Ruby is
awesome!!
2010
THE
   POWER
CONTINUUM
Highest level




Lowest level
Highest level




                Machine
Lowest level
Highest level




                Assembler

                Machine
Lowest level
Highest level




                   C


                Assembler

                Machine
Lowest level
Highest level




                  Java


                   C


                Assembler

                Machine
Lowest level
Highest level



                  Ruby


                  Java


                   C


                Assembler

                Machine
Lowest level
Abstractions are tools for the mind
1
Created by Joe Armstrong at Ericsson in 1986
Functional Language
Functional Language



Concurrency Oriented
Functional Language



Concurrency Oriented



Distribution Oriented
Functional Language



Concurrency Oriented



Distribution Oriented



   Error Tolerant
Functional Programming
http://www.defmacro.org/ramblings/fp.html
Side effects free programming
x = x + 1
> X = 1.
> X = 1.
> X.
1
> X = 1.
> X.
1
> X = 2.
** exception error
Pattern Matching
> Point = {point, 15, 20}.
> Point = {point, 15, 20}.
> {point, X, Y} = Point.
> Point = {point, 15, 20}.
> {point, X, Y} = Point.
> X.
15
> Point = {point, 15, 20}.
> {point, X, Y} = Point.
> X.
15
> Y.
20
Lists
Lists


Head and Tail
Lists


Head and Tail


    [H|T]
> L = [1, 2, 3, 4].
> L = [1, 2, 3, 4].
> [H|T] = L.
> L = [1, 2, 3, 4].
> [H|T] = L.
> H.
1
> L = [1, 2, 3, 4].
> [H|T] = L.
> H.
1
> T.
[2, 3, 4]
Functions
double(X) -> X * 2.
fact(0) -> 1;
fact(X) -> X * fact(X - 1).
sum([]) -> 0;
sum([H|T]) -> H + sum(T).
sum([]) -> 0;
sum([H|T]) -> H + sum(T).

map(_, [])    -> [];
map(F, [H|T]) -> [F(H) | map(F, T)].
sum([]) -> 0;
sum([H|T]) -> H + sum(T).

map(_, [])    -> [];
map(F, [H|T]) -> [F(H) | map(F, T)].

...
area({rectangle, Width, Height}) -> Width * Height;
area({square, X})                -> X * X;
area({circle, R})                -> 3.14159 * R.
area({rectangle, Width, Height}) -> Width * Height;
area({square, X})                -> X * X;
area({circle, R})                -> 3.14159 * R.

> area({square, 3}).
9
class Rectangle
  def initialize(width, height)
    @width = width
    @height = height
  end

  def area
    @width * height
  end
end

class Square
  def initialize(x)
    @x = x
  end

  def area
    @x * @x
  end
end

class Circle
  def initialize(r)
    @r = r
  end

  def area
    3.14159 * @r
  end
end
def area(*args)
  case args[0]
  when :rectangle
    args[1] * args[2]
  when :square
    args[1] * args[1]
  when :circle
    3.141519 * args[1]
  end
end
Concurrency
Pid = spawn(Fun).
Pid ! Message.
receive
  Pattern -> Expression;
  Pattern -> Expression
end
Remember map?




map(_, [])    -> [];
map(F, [H|T]) -> [F(H) | map(F, T)].
pmap(F, L) ->
  Parent = self(),
  Pids = map(fun(I) ->
                spawn(fun() ->
                  Parent ! {self(), F(I)}
                end)
              end, L),
  gather(Pids).
pmap(F, L) ->
  Parent = self(),
  Pids = map(fun(I) ->
                spawn(fun() ->
                  Parent ! {self(), F(I)}
                end)
              end, L),
  gather(Pids).

gather([]) -> [];
gather([Pid|T]) ->
  receive
    {Pid, Result} -> [Result|gather(T)]
  end.
xN
Distribution Oriented
More interesting things about Erlang
More interesting things about Erlang




   Error control, even distributed
More interesting things about Erlang




   Error control, even distributed
                 OTP
More interesting things about Erlang




  Error control, even distributed
                OTP
Web development with ChicagoBoss
You should try Erlang if...
...you want to play with functional programming
...you're interested in writing parallel programs
2
Haskell
Created by Simon Peyton Jones in 1990
Pure functional language
Pure functional language




    Lazy evaluation
Pure functional language




       Lazy evaluation




Strict but powerful type system
mymap _ [] = []
mymap f (x:xs) = f x : map f xs
Haskell Type System
Haskell Type System




      Strong
Haskell Type System




      Strong
       Static
Haskell Type System




      Strong
       Static
     Inferred
Char
Char
[Char]
Char
[Char]
String
Char
[Char]
String
Integer
Char
[Char]
String
Integer
([Char], Integer)
data BookInfo = Book Int String [String]
data BookInfo = Book Int String [String]

myBook = Book 987987 "About Wadus" ["Fulano", "Mengano"]
data Color =   Red
           |   Yellow
           |   Green
           |   RGB Int Int Int
data Color =   Red
           |   Yellow
           |   Green
           |   RGB Int Int Int

yellow = Yellow
black = RGB 0 0 0
Type System + Pattern Matching
data Shape = Circle Float
           | Rectangle Float Float
           | Square Float
data Shape = Circle Float
           | Rectangle Float Float
           | Square Float

area (Circle r)      = r * 3.14
area (Rectangle w h) = w * h
area (Square x)      = x * x
data Shape = Circle Float
           | Rectangle Float Float
           | Square Float

area (Circle r)      = r * 3.14
area (Rectangle w h) = w * h
area (Square x)      = x * x

circle = Circle 5
rectangle = Rectangle 2 3
square = Square 1.5
data Shape = Circle Float
           | Rectangle Float Float
           | Square Float

area (Circle r)      = r * 3.14
area (Rectangle w h) = w * h
area (Square x)      = x * x

circle = Circle 5
rectangle = Rectangle 2 3
square = Square 1.5

-- > area circle
-- 15.700001
data Shape = Circle Float
           | Rectangle Float Float
           | Square Float

area (Circle r)      = r * 3.14
area (Rectangle w h) = w * h
area (Square x)      = x * x

circle = Circle 5
rectangle = Rectangle 2 3
square = Square 1.5

-- > area circle
-- 15.700001

-- > :type area
-- area :: Shape -> Float
More Functional Programming
square_all list = map (n -> n^2) list




> square_all [1, 2, 5]
[1,4,25]
square_all list = map (n -> n^2) list
square_all list = map (^2) list



> square_all [1, 2, 5]
[1,4,25]
square_all list = map (n -> n^2) list
square_all list = map (^2) list
square_all = map (^2)

> square_all [1, 2, 5]
[1,4,25]
Laziness
@articles = Article.where(:status => 'published')
@articles = Article.where(:status => 'published')




<% @articles.each do |article| %>
<h2><%= article.title %></h2>
<p><%= article.body %></p>
<% end %>
@articles = Article.where(:status => 'published')




<% @articles.limit(5).each do |article| %>
<h2><%= article.title %></h2>
<p><%= article.body %></p>
<% end %>
wadus 1 + 2
iforelse cond a b = if cond
                    then a
                    else b
iforelse cond a b = if cond
                    then a
                    else b

> iforelse True (1 + 2) (3 + 4)
3
iforelse cond a b = if cond
                    then a
                    else b

> iforelse True (1 + 2) (3 + 4)
3
> iforelse False (1 + 2) (3 + 4)
7
You should try Haskell if...
...you tried the functional paradigm
       and want to go further
...you want to see your belief
“types are useless” challenged
...you want to write extremelly
efficient programs in a high level
             language
3
Common Lisp
Invented by John McCarthy in 1958
Invented by John McCarthy in 1958
Lots of
Irritating
Superfluou
s
Parenthese
s
HOMOICONIC
“property of some
programming languages,
    in which the primary
        representation of
 programs is also a data
  structure in a primitive
     type of the language
                    itself”
CODE = DATA
(1 2 3 ("wadus" 5) (1.3 1.7))
(1 2 3 ("wadus" 5) (1.3 1.7))

[1, 2, 3, ["wadus", 5], [1.3, 1.7]]
(+ (* 3 5) (/ 10 2))
(+ (* 3 5) (/ 10 2))

         20
(1 2 3 ("wadus" 5) (1.3 1.7))

    (+ (* 3 5) (/ 10 2))
(1 2 3 ("wadus" 5) (1.3 1.7))

    (+ (* 3 5) (/ 10 2))


         CODE = DATA
Lisp has no syntax
Valid Lisp code is composed of
  lists whose first element is the
name of a function and the rest are
       the parameters passed
Macros
Metaprogramming
Metaprogramming is creating and manipulating
                   code
Metaprogramming is creating and manipulating
                   code                   lists
LISt Processing
(defmacro backwards (code)
(defmacro backwards (code)
  (reverse code))
(defmacro backwards (code)
  (reverse code))

(backwards
  ("wadus" print))
(defmacro backwards (code)
  (reverse code))

(backwards
  ("wadus" print))

(print "wadus")
You should try Common Lisp if...
...you want to take a flight
 in a retrofuturist jetpack
...you like metaprogramming
...you want to try one of the
  most abstraction-capable
and still efficient languages
...you want to understand
why Lisp-lovers love Lisp so
           much
4
Created by Rick Hickey in 2007
Lisp meets XXI century
Lisp meets the JVM
Lisp meets the JVM


Lisp meets purelly functional programming
Lisp meets the JVM


Lisp meets purelly functional programming


           Lisp meets laziness
Lisp meets the JVM


Lisp meets purelly functional programming


           Lisp meets laziness


         Lisp meets concurrency
Clojure is a Lisp
More laziness
(def whole-numbers (iterate inc 1))
(def whole-numbers (iterate inc 1))

(first whole-numbers)
; 1
(def whole-numbers (iterate inc 1))

(first whole-numbers)
; 1

(take 5 whole-numbers)
; (1 2 3 4 5)
(def whole-numbers (iterate inc 1))

(first whole-numbers)
; 1

(take 5 whole-numbers)
; (1 2 3 4 5)

(last whole-numbers) ; => CATACROKER!
(defn fibonacci []
  (map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))
(defn fibonacci []
  (map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))

(take 20 (fibonacci))
; (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
2584 4181)
STM
(def fulano-balance (ref 100))
(def mengano-balance (ref 80))
(def fulano-balance (ref 100))
(def mengano-balance (ref 80))

(dosync
  (ref-set fulano-balance (+ @fulano-balance 20))
  (ref-set mengano-balance (- @mengano-balance 20)))
(def fulano-balance (ref 100))
(def mengano-balance (ref 80))

(dosync
  (ref-set fulano-balance (+ @fulano-balance 20))
  (ref-set mengano-balance (- @mengano-balance 20)))

@fulano-balance
; 120
(def fulano-balance (ref 100))
(def mengano-balance (ref 80))

(dosync
  (ref-set fulano-balance (+ @fulano-balance 20))
  (ref-set mengano-balance (- @mengano-balance 20)))

@fulano-balance
; 120
@mengano-balance
; 60
(dosync
  (alter fulano-balance + 20)
  (alter mengano-balance - 20))
(dosync
  (alter fulano-balance + 20)
  (alter mengano-balance - 20))

@fulano-balance
; 140
(dosync
  (alter fulano-balance + 20)
  (alter mengano-balance - 20))

@fulano-balance
; 140
@mengano-balance
; 40
More interesting things about Clojure
More interesting things about Clojure




Web development with Compojure
More interesting things about Clojure




Web development with Compojure
You should try Clojure if...
...you like both Lisp and the functional approach
...you need/want Java/JVM interoperability
5
Ujfalusi
<
>
-
http://github.com/porras/
          ujfalusi
You should create your own language if...
...you want to learn about how
   languages internally work
...you want to have fun
doing something very geek
...your favorite player
leaves your team and
   breaks your heart
And the
winner
is...
ME!
Fun
New abstractions
New tools
Polyglotism
Go out
Play
Break something
Have fun
Thank you! :)

More Related Content

What's hot

Why Haskell Matters
Why Haskell MattersWhy Haskell Matters
Why Haskell Matters
romanandreg
 
Term Rewriting
Term RewritingTerm Rewriting
Term Rewriting
Eelco Visser
 
Python Programming - XI. String Manipulation and Regular Expressions
Python Programming - XI. String Manipulation and Regular ExpressionsPython Programming - XI. String Manipulation and Regular Expressions
Python Programming - XI. String Manipulation and Regular ExpressionsRanel Padon
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Philip Schwarz
 
Monads do not Compose
Monads do not ComposeMonads do not Compose
Monads do not Compose
Philip Schwarz
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Philip Schwarz
 
Why The Free Monad isn't Free
Why The Free Monad isn't FreeWhy The Free Monad isn't Free
Why The Free Monad isn't Free
Kelley Robinson
 
Monad Transformers - Part 1
Monad Transformers - Part 1Monad Transformers - Part 1
Monad Transformers - Part 1
Philip Schwarz
 
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
Philip Schwarz
 
Babar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and RepresentationBabar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and Representation
Pierre de Lacaze
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5
Philip Schwarz
 
P2 2017 python_strings
P2 2017 python_stringsP2 2017 python_strings
P2 2017 python_strings
Prof. Wim Van Criekinge
 
Sequence and Traverse - Part 3
Sequence and Traverse - Part 3Sequence and Traverse - Part 3
Sequence and Traverse - Part 3
Philip Schwarz
 
Static name resolution
Static name resolutionStatic name resolution
Static name resolution
Eelco Visser
 
R lecture oga
R lecture ogaR lecture oga
R lecture oga
Osamu Ogasawara
 
Scala 3 enum for a terser Option Monad Algebraic Data Type
Scala 3 enum for a terser Option Monad Algebraic Data TypeScala 3 enum for a terser Option Monad Algebraic Data Type
Scala 3 enum for a terser Option Monad Algebraic Data Type
Philip Schwarz
 
Introduction to the basics of Python programming (part 3)
Introduction to the basics of Python programming (part 3)Introduction to the basics of Python programming (part 3)
Introduction to the basics of Python programming (part 3)
Pedro Rodrigues
 
1 functions
1 functions1 functions
1 functions
Tzenma
 
2017 biological databasespart2
2017 biological databasespart22017 biological databasespart2
2017 biological databasespart2
Prof. Wim Van Criekinge
 

What's hot (20)

Why Haskell Matters
Why Haskell MattersWhy Haskell Matters
Why Haskell Matters
 
Term Rewriting
Term RewritingTerm Rewriting
Term Rewriting
 
Python Programming - XI. String Manipulation and Regular Expressions
Python Programming - XI. String Manipulation and Regular ExpressionsPython Programming - XI. String Manipulation and Regular Expressions
Python Programming - XI. String Manipulation and Regular Expressions
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
 
Monads do not Compose
Monads do not ComposeMonads do not Compose
Monads do not Compose
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
 
Why The Free Monad isn't Free
Why The Free Monad isn't FreeWhy The Free Monad isn't Free
Why The Free Monad isn't Free
 
Monad Transformers - Part 1
Monad Transformers - Part 1Monad Transformers - Part 1
Monad Transformers - Part 1
 
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
 
Babar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and RepresentationBabar: Knowledge Recognition, Extraction and Representation
Babar: Knowledge Recognition, Extraction and Representation
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part 5
 
P2 2017 python_strings
P2 2017 python_stringsP2 2017 python_strings
P2 2017 python_strings
 
Sequence and Traverse - Part 3
Sequence and Traverse - Part 3Sequence and Traverse - Part 3
Sequence and Traverse - Part 3
 
Static name resolution
Static name resolutionStatic name resolution
Static name resolution
 
01. haskell introduction
01. haskell introduction01. haskell introduction
01. haskell introduction
 
R lecture oga
R lecture ogaR lecture oga
R lecture oga
 
Scala 3 enum for a terser Option Monad Algebraic Data Type
Scala 3 enum for a terser Option Monad Algebraic Data TypeScala 3 enum for a terser Option Monad Algebraic Data Type
Scala 3 enum for a terser Option Monad Algebraic Data Type
 
Introduction to the basics of Python programming (part 3)
Introduction to the basics of Python programming (part 3)Introduction to the basics of Python programming (part 3)
Introduction to the basics of Python programming (part 3)
 
1 functions
1 functions1 functions
1 functions
 
2017 biological databasespart2
2017 biological databasespart22017 biological databasespart2
2017 biological databasespart2
 

Similar to Five Languages in a Moment

Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
osfameron
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programmingchriseidhof
 
Haskell - Being lazy with class
Haskell - Being lazy with classHaskell - Being lazy with class
Haskell - Being lazy with class
Tiago Babo
 
Introduction to R programming
Introduction to R programmingIntroduction to R programming
Introduction to R programming
Alberto Labarga
 
Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...
Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...
Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...
Hamidreza Soleimani
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In RubyRoss Lawley
 
Scala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldScala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereld
Werner Hofstra
 
Ejercicios de estilo en la programación
Ejercicios de estilo en la programaciónEjercicios de estilo en la programación
Ejercicios de estilo en la programación
Software Guru
 
Presentation R basic teaching module
Presentation R basic teaching modulePresentation R basic teaching module
Presentation R basic teaching module
Sander Timmer
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
Aleksandar Prokopec
 
Declarative Thinking, Declarative Practice
Declarative Thinking, Declarative PracticeDeclarative Thinking, Declarative Practice
Declarative Thinking, Declarative Practice
Kevlin Henney
 
Fp in scala part 2
Fp in scala part 2Fp in scala part 2
Fp in scala part 2
Hang Zhao
 
Артём Акуляков - F# for Data Analysis
Артём Акуляков - F# for Data AnalysisАртём Акуляков - F# for Data Analysis
Артём Акуляков - F# for Data Analysis
SpbDotNet Community
 
Go Programming Language (Golang)
Go Programming Language (Golang)Go Programming Language (Golang)
Go Programming Language (Golang)
Ishin Vin
 
Dynamic languages, for software craftmanship group
Dynamic languages, for software craftmanship groupDynamic languages, for software craftmanship group
Dynamic languages, for software craftmanship group
Reuven Lerner
 
Declarative Language Definition
Declarative Language DefinitionDeclarative Language Definition
Declarative Language Definition
Eelco Visser
 
Practical cats
Practical catsPractical cats
Practical cats
Raymond Tay
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecLoïc Descotte
 
Morel, a Functional Query Language
Morel, a Functional Query LanguageMorel, a Functional Query Language
Morel, a Functional Query Language
Julian Hyde
 

Similar to Five Languages in a Moment (20)

Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
 
Erlang
ErlangErlang
Erlang
 
Haskell - Being lazy with class
Haskell - Being lazy with classHaskell - Being lazy with class
Haskell - Being lazy with class
 
Introduction to R programming
Introduction to R programmingIntroduction to R programming
Introduction to R programming
 
Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...
Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...
Architecting Scalable Platforms in Erlang/OTP | Hamidreza Soleimani | Diginex...
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In Ruby
 
Scala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldScala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereld
 
Ejercicios de estilo en la programación
Ejercicios de estilo en la programaciónEjercicios de estilo en la programación
Ejercicios de estilo en la programación
 
Presentation R basic teaching module
Presentation R basic teaching modulePresentation R basic teaching module
Presentation R basic teaching module
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Declarative Thinking, Declarative Practice
Declarative Thinking, Declarative PracticeDeclarative Thinking, Declarative Practice
Declarative Thinking, Declarative Practice
 
Fp in scala part 2
Fp in scala part 2Fp in scala part 2
Fp in scala part 2
 
Артём Акуляков - F# for Data Analysis
Артём Акуляков - F# for Data AnalysisАртём Акуляков - F# for Data Analysis
Артём Акуляков - F# for Data Analysis
 
Go Programming Language (Golang)
Go Programming Language (Golang)Go Programming Language (Golang)
Go Programming Language (Golang)
 
Dynamic languages, for software craftmanship group
Dynamic languages, for software craftmanship groupDynamic languages, for software craftmanship group
Dynamic languages, for software craftmanship group
 
Declarative Language Definition
Declarative Language DefinitionDeclarative Language Definition
Declarative Language Definition
 
Practical cats
Practical catsPractical cats
Practical cats
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar Prokopec
 
Morel, a Functional Query Language
Morel, a Functional Query LanguageMorel, a Functional Query Language
Morel, a Functional Query Language
 

More from Sergio Gil

A [git] workflow
A [git] workflowA [git] workflow
A [git] workflow
Sergio Gil
 
The Total IDE
The Total IDEThe Total IDE
The Total IDE
Sergio Gil
 
Acceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraAcceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraSergio Gil
 
El Desarrollador Total
El Desarrollador TotalEl Desarrollador Total
El Desarrollador TotalSergio Gil
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
 
Metaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programasMetaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programas
Sergio Gil
 
Más allá del testing
Más allá del testingMás allá del testing
Más allá del testing
Sergio Gil
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
Sergio Gil
 
Ruby Mola (y por qué)
Ruby Mola (y por qué)Ruby Mola (y por qué)
Ruby Mola (y por qué)
Sergio Gil
 

More from Sergio Gil (9)

A [git] workflow
A [git] workflowA [git] workflow
A [git] workflow
 
The Total IDE
The Total IDEThe Total IDE
The Total IDE
 
Acceptance testing with Steak and Capybara
Acceptance testing with Steak and CapybaraAcceptance testing with Steak and Capybara
Acceptance testing with Steak and Capybara
 
El Desarrollador Total
El Desarrollador TotalEl Desarrollador Total
El Desarrollador Total
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
 
Metaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programasMetaprogramación (en Ruby): programas que escriben programas
Metaprogramación (en Ruby): programas que escriben programas
 
Más allá del testing
Más allá del testingMás allá del testing
Más allá del testing
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Ruby Mola (y por qué)
Ruby Mola (y por qué)Ruby Mola (y por qué)
Ruby Mola (y por qué)
 

Recently uploaded

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 

Recently uploaded (20)

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 

Five Languages in a Moment

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. \n
  163. \n
  164. \n
  165. \n
  166. \n
  167. \n
  168. \n
  169. \n
  170. \n
  171. \n
  172. \n
  173. \n
  174. \n
  175. \n
  176. \n
  177. \n
  178. \n
  179. \n
  180. \n
  181. \n
  182. \n
  183. \n
  184. \n
  185. \n
  186. \n
  187. \n
  188. \n
  189. \n
  190. \n
  191. \n
  192. \n
  193. \n
  194. \n
  195. \n
  196. \n
  197. \n
  198. \n
  199. \n
  200. \n
  201. \n
  202. \n
  203. \n
  204. \n
  205. \n
  206. \n
  207. \n
  208. \n
  209. \n
  210. \n
  211. \n
  212. \n
  213. \n
  214. \n
  215. \n
  216. \n
  217. \n
  218. \n
  219. \n
  220. \n
  221. \n
  222. \n
  223. \n
  224. \n
  225. \n
  226. \n
  227. \n
  228. \n
  229. \n
  230. \n
  231. \n
  232. \n
  233. \n
  234. \n
  235. \n
  236. \n
  237. \n
  238. \n
  239. \n
  240. \n
  241. \n
  242. \n
  243. \n
  244. \n
  245. \n
  246. \n
  247. \n
  248. \n
  249. \n
  250. \n
  251. \n
  252. \n
  253. \n
  254. \n
  255. \n
  256. \n
  257. \n
  258. \n
  259. \n
  260. \n
  261. \n
  262. \n
  263. \n