The world is changing faster than ever before, applications such as Netflix, Uber, Tinder, Google, Facebook, among others, are generating profound social changes. We cannot afford to stagnate we need to update our knowledge. In this workshop, we will analyze the languages we previously learned to program. We will discuss how the hardware has evolved, and the new tools we need to program processors with hundreds of cores, and other programming paradigms.
2. Juan Carlos Zuluaga
44 “Añazos”
Married
Father of 3 children
Passionate developer (22 years of experience)
Teacher by conviction (19 years of experience)
Software Designer in Globant
Tattooed
Modern
ABOUT ME
8. GO BACK TO 90’s
Why were we taught to
program in Pascal?
9. In 1996 there were no jobs in Java. But when we
graduated in 2000, we were the only ones available.
As we learned, we teach. And the teachers of the
time did not know Java or OOP.
Renewing a curriculum takes 5 years, but changing
the paradigm takes 25 years (structured to OOP).
10. WHICH IS THE PASCAL OF YOUR
GENERATION?
What current programming languages are
about 20 years old or more?
What programming languages represent an
old paradigm?
Which programming languages are in great
demand now, but will not have it in the future?
Niklaus Wirth Father of Pascal
11. GO BACK TO 90’s
Which is the PASCAL
of your generation?
16. If today your personal
computer cost USD $ 1,000
and it has 8 cores.
Within 5 years you will have:
8 * 2 * 2 = 32 cores
Personal
If today a server cost USD
$10,000 and it has 48 cores.
Within 5 years you will have:
48 * 2 * 2 = 192 cores
Server
If we extrapolate Moore's law
17.
18. AN PREDICT THAT THE COMPUTERS OF THE
FUTURE WE WILL BE MORE “FAST” AND WITH
MORE PROCESSORS
22. HOW ARE YOU GOING TO
PROGRAM THEM?
“The way the processor industry is
going, is to add more and more cores,
but nobody knows how to program
those things. I men, two, yeah; four, not
really, eight, forget it”
Steve Jobs
23. ANOTHER PARADIGM IS NECESSARY
One that allows us to program hundreds
of computers at the same time
24. THE FUTURE OF PROGRAMMING
IS CONCURRENT AND FUNCTIONAL
29. NATURAL EVOLUTION COULD BE…
Java Scala
Ruby Elixir
C GoLang
C++ Rust
C# F#
PHP GoLang
Javascript Elm
Python Elixir / GoLang
Honorable mention to: Erlang and Haskell
32. Google influence his language to grow as Python
It appears on 2009
Very fast - programs / compile
Concurrency
Multi platform
Garbage collection
Productive & Readable
Netflix, Docker, Dropbox, Soundcloud, Uber, Google
Go (Golang)
33. Developed by Mozilla
Most loved language on StackOverflow
Create fast and secure apps
Rust
Takes advantage of multicore processors
Large / client server programs
Low level programing, multi paradigm language,
concurrent operations
Unique language not garbage collection
Applications: Dropbox, NPM, Chef
34. General purpose programming language
Statically typed
Support OOP, Functional programming
Scala
Interoperates with Java and .NET
Spark is the most popular framework that uses Scala
Applications: LinkedIn, Airbnb, Foursquare, Netflix,
Tumblr, Sony, Twitter, The guardian
35. Is a strongly typed
Multi-paradigm programming language that encompasses
functional
Imperative
F#
F# is most often used as a cross-platform Common
Language Infrastructure (CLI) language, but it can also
generate JavaScript and graphics processing unit (GPU)
code
36. Safe, fast and interactive programming language
Optimized compiler
Apple is slowly down away with Objective-C in favor of Swit
Swift
Less errors and less code
Speed
Open source, dynamic libraries
Powerful type interface & pattern matching
IBM, Uber, Apple, Firefox, LinkedIn
37. It is a language addressed to the front-end
Offers a different vision for the creation of
dynamic Web applications
Pure functional language
Elm
Paradigm of reactive programming
Strongly typed language
Designed to make the compiler look like a friend and
give you useful tips to guide you in the right direction
38. General purpose programming language
Functional programing paradigm
Based on Erlang virtual machine
Elixir
Applications: message processing Whatsapp,
Connecting IoT devices, data streaming
39. Functional language with more than 20 years of research
Parallelism and concurrency incorporated
Based on the mathematical concept of function
Haskell
Hierarchical names for modules, for example Data.Bool
Guardians with patterns
Foreign Function Interface (FFI), which allows you to
use C code in a Haskell program and Haskell code in a
C program
40. Oriented to concurrency and distributed systems
Erlang is a declarative language
Concurrency in Erlang is fundamental to its success
Erlang
Erlang concurrency is fast and scalable
Processes communicate with each other via
message passing, where the message can be any
Erlang data value at all
41. WHAT WILL YOU START STUDYING, WHEN
THIS PRESENTATION FINISH?