esos raros lenguajes nuevos
TRANSCRIPT
![Page 1: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/1.jpg)
Esos Raros Lenguajes Nuevos
9 Desafíos en 9 Lenguajes de Programación Primer Avance
![Page 2: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/2.jpg)
9D9L
https://github.com/lnds/9d9l
http://www.lnds.net/blog/lnds/2016/1/9/esos-raros-lenguajes-nuevos
![Page 3: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/3.jpg)
¿Por qué?
“Y si trabajas al pedoy estás haciendo algo nuevo, adelante!”
“For many developers, the one-language notion is a sign of lack of professionalism […] The point here is that programming languages do affect the way you think about programming, and learning new languages can do a lot to help you think about solving problems in different ways” — Martin Fowler
![Page 4: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/4.jpg)
![Page 5: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/5.jpg)
“Temo al hombre de un sólo
lenguaje de programación”
Santo Tomás de Aquino
1252 DC
![Page 6: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/6.jpg)
El programador políglota
Todos somos programadores políglotas
Java Script
SQL
HTML
XML
JAVA
![Page 7: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/7.jpg)
![Page 8: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/8.jpg)
![Page 9: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/9.jpg)
Alan Perlis
When Someone says, “I want a programming language in which I need only say what I want done”, give him a lollipop.
![Page 10: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/10.jpg)
![Page 11: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/11.jpg)
![Page 12: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/12.jpg)
Perlis Languages
A language that doesn’t affect the way you think about programming is not
worth knowing. — Alan Perlis
![Page 13: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/13.jpg)
Cómo aprender un lenguaje de
programación
![Page 14: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/14.jpg)
![Page 15: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/15.jpg)
ZX-81 Basic 1981
10 PRINT “INGRESE TEMPERATURA EN CELSIUS:” 20 INPUT C 30 LET F = (C * 9.0/5.0) + 32 40 PRINT “LA TEMPERATURA EN FARENHEIT ES:"+F
KRUN
![Page 16: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/16.jpg)
Todo programa arranca con
bugshttp://www.worldofspectrum.org/
ZX81BasicProgramming/
![Page 17: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/17.jpg)
![Page 18: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/18.jpg)
![Page 19: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/19.jpg)
ZX81-FORTH BY DAVID HUSBAND COPYRIGHT (c) 1983
: CTOF 9 * 5 / 32 + . ; OK
: FTOC 32 - 5 * 9 / . ; OK
77 FTOC
25 OK
![Page 20: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/20.jpg)
FORTH
Reflection
Extensibility and Modularity
Concatenative Programming (Monoid)
Symetry (Invariance):
Everything is a Word
Word Executes
Word receives parameters exactly the same way another word
![Page 21: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/21.jpg)
![Page 22: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/22.jpg)
1985 Raftor
Programación Estructurada
Basado en FORTRAN
Nadie más en el mundo usa esto
![Page 23: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/23.jpg)
PLP/PLOM
Pascal
Modula-2
Scheme
C
Prolog
Assembler IBM 360!
![Page 24: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/24.jpg)
![Page 25: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/25.jpg)
Ejemplo 1
![Page 26: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/26.jpg)
How to solve it
“In order to translate a sentence from English into French two things are necessary. First, we must understand thoroughly the English sentence. Second, we must be familiar with the forms of expression peculiar to the French language.
The situation is very similar when we attempt to express in mathematical symbols a condition proposed in words. First, we must understand thoroughly the condition. Second, we must be familiar with the forms of mathematical expression.”
— G. Polya
![Page 27: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/27.jpg)
¿Cómo aprender a programar?
PROGRAMANDO
![Page 28: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/28.jpg)
Project EulerMatemáticas y Programación
"Project Euler exists to encourage, challenge, and
develop the skills and enjoyment of anyone with an
interest in the fascinating world of mathematics."
https://projecteuler.net
![Page 29: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/29.jpg)
Problemas Project Euler
Multiplos de 3 y 5: Encontrar la suma de todos los múltiplos de 3 y 5 menores a 1.000
Encuentre la suma de los números de Fibonacci pares que no excedan los 4.000.000
¿Cuál es el número primo 10.001?
![Page 30: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/30.jpg)
Mi Desafío Personal
![Page 31: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/31.jpg)
Mi Desafío Personal
«Estos son los mejores tiempos para ser desarrollador, pero también son los peores tiempos para ser desarrollador. Como dice Jano González, parece que tenemos un nuevo paradigma: "Hacker News Driven Development".
Todas las semanas, o quizás todos los días aparecen nuevos Frameworks, Lenguajes de Programación, Tecnologías en Hacker News y las nuevas generaciones de desarrolladores, afectadas por el síndrome de déficit atencional corren a re implementar su último proyecto con la herramienta que tenga más likes.»
![Page 32: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/32.jpg)
Mi Desafío Personal
«Pero, como dice Charly:
ya no quiero criticar,sólo quiero ser un enfermero
Así que me propongo aliviar un poco esa angustia de algunos desarrolladores que nos saben si vale la pena aprender alguno de esos nuevos lenguajes que están apareciendo o re apareciendo por todos lados.
Voy a asumir el siguiente desafío, voy a resolver 9 desafíos de programación en 9 lenguajes de programación.»
![Page 33: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/33.jpg)
Los 9 (+1) Lenguajes
CLOJURE
ERLANG
(ELIXIR)
F#
GO
HASKELL
KOTLIN
RUST
SCALA
SWIFT
![Page 34: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/34.jpg)
Motivaciones
Programación de Sistemas: Go y Rust
La JVM: Scala, Clojure y Kotlin
Programación funcional: F# y Haskell
Apple Fanboy: Swift
Actores y Whatsapp: Erlang (y Elixir)
![Page 35: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/35.jpg)
Taxonomía
![Page 36: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/36.jpg)
![Page 37: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/37.jpg)
Lenguajes Tipo D
Estructurados
Imperativos (Cómo)
Mutabilidad de estados
Programación de Sistemas
Cercanos a la máquina
![Page 38: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/38.jpg)
Lenguajes Tipo D
Go
Kotlin
Rust
Swift
![Page 39: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/39.jpg)
Ejemplo 2
Go: un lenguaje tipo D
![Page 40: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/40.jpg)
Lenguajes Tipo M
Funcionales
Declarativos (Qué)
Inmutabilidad de estado
Composición
Orientados al dato
![Page 41: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/41.jpg)
Lenguajes Tipo M
Clojure
Haskell
Erlang
Elixir
![Page 42: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/42.jpg)
Ejemplo 3
Clojure: un lenguaje tipo M
![Page 43: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/43.jpg)
Lenguajes tipo O
Múltiples Paradigmas
Orientación a Objetos
Funcionales
Imperativos
Funciones <-> Objetos
![Page 44: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/44.jpg)
Lenguajes tipo O
Scala
F#
Swift
Rust
Kotlin
![Page 45: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/45.jpg)
Ejemplo 4
Scala: un lenguaje tipo O
![Page 46: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/46.jpg)
Mi Desafío Personal
«La idea es crear desafíos que permitan destacar las bondades de algunos lenguajes y que sean prácticos, que muestren situaciones similares a problemas que uno enfrenta en el "mundo real”.»
![Page 47: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/47.jpg)
¿y cómo vamos?
![Page 48: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/48.jpg)
3 Desafíos completados
Repositorio GitHub: https://github.com/lnds/9d9l
2.600 lineas de código aproximadamente
108 Horas en 12 meses
Desafío 1: 24 horas
Desafío 2: 32 horas
Desafío 3: 52 horas
![Page 49: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/49.jpg)
3 Desafíos completados
Desafío 1: Toque y Fama
Un juego interactivo usando la consola
Desafío 2: Weather Report
Reporte de tiempo usando paralelismo simple, invocando API Web XML
Desafío 3: Vectores
Procesar un archivo de 1 millón de vectores numeréicos ordenando y clasificando en el menor tiempo posible
![Page 50: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/50.jpg)
Esos Raros Lenguajes Nuevos…
![Page 51: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/51.jpg)
ClojureRich Hickey
2007
10 años
Versión Estable: 1.8
JVM, JS, CLR, Dinámico, Strong Typing Licencia Eclipse
![Page 52: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/52.jpg)
Clojure
(def edc {:nombre “Eduardo”, :apellido “Diaz”, :nick @LNDS})
(println “Hola” (:nombre persona) “ alias ” (persona :nick))
![Page 53: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/53.jpg)
Clojure
(defn div-by? [n m] (zero? (mod n m))
(defn div-by-3-or-5? [n] (or (div-by? n 3) (div-by? n 5)))
(—> (range 1000) (filter div-by-3-or-5?) (reduce +))
![Page 54: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/54.jpg)
ErlangJoe Armstrong
1986
37 años
Versión Estable: 19.2
Dinámico, Strong Typing, BEAM
Apache License 2.0
![Page 55: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/55.jpg)
Erlang
solve() ->
solve(1, 0).
solve(Number, Sum) when Number == 1000 ->
Sum;
solve(Number, Sum) when ((Number rem 3) == 0) or ((Number rem 5) == 0) ->
solve(Number + 1, Sum + Number);
solve(Number, Sum) ->
solve(Number + 1, Sum).
![Page 56: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/56.jpg)
ElixirJosé Valim
2011
6 años
Versión Estable: 1.4.0
Dinámico, Strong Typing, BEAM
Apache License 2.0
![Page 57: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/57.jpg)
Elixir
1..999 |> Enum.filter (fn(x) -> rem(x,3) == 0 || rem(x,5)==0 end) |> Enum.sum
![Page 58: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/58.jpg)
F#Don Syme
2005
12 años
Versión Estable: 4.0.1.20
Estático, Strong Typing, Inferencia, CLR
Apache License 2.0
![Page 59: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/59.jpg)
F#
[1..999] |> List.filter (fun n -> n % 5 == 0 || n % 3 == 0) |> List.sum
![Page 60: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/60.jpg)
GoRobert Griesemer, Rob Pike, Ken Thompson
2009
12 años
Versión Estable: 1.7.4
Estático, Strong Typing, Inferred, Structural, Native Code
BSD Style
![Page 61: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/61.jpg)
Go
sum := 0
for i := 0; i < 1000; i++ {
if i % 3 == 0 || i % 5 == 0 { sum += i }
}
![Page 62: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/62.jpg)
HaskellComité
1990
27 años
Versión Estable: Haskell 2010
Estático, Strong Typing, Inferred, Native Code
BSD Style
![Page 63: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/63.jpg)
Haskell
import Data.List (union)
problema_1 = sum (union [3,6..999] [5,10..999])
![Page 64: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/64.jpg)
KotlinJetbrains
2011
6 años
Versión Estable: Kotlin 1.0.6
Estático, Inferred, JVM
Apache 2
![Page 65: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/65.jpg)
Kotlin
(1..999).asSequence()
.filter(dividesBy(3))
.filter(dividesBy(5))
.sum()
![Page 66: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/66.jpg)
RustGraydon Hoare
2010
7 años
Versión Estable: 1.14
Estático, Strong, Inferred, Nominal, linear
Apache 2/ MIT
![Page 67: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/67.jpg)
Rust
let mut sum = 0;
for i in range(1, 1000) {
if i % 3 == 0 || i % 5 == 0 {
sum += i;
}
}
sum
![Page 68: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/68.jpg)
ScalaMartin Odersky
2004
12 años
Versión Estable: 2.12.1
Estático, Strong, Inferred, Structural, JVM
BSD
![Page 69: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/69.jpg)
Scala
(1 until 1000) .filter(n => n % 3 == 0 || n % 5 == 0) .sum
![Page 70: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/70.jpg)
SwiftCris Later
2014
2 años
Versión Estable: 3.0.2
Estático, Strong, Inferred, Nativo
Apache 2
![Page 71: Esos Raros Lenguajes Nuevos](https://reader035.vdocuments.co/reader035/viewer/2022062310/58b8a7261a28abc06d8b6145/html5/thumbnails/71.jpg)
Swift
let filtered = (1..<1000).filter {
$0 % 3 == 0 || $0 % 5 == 0
}
filtered.reduce(0, combine: +)