Download Paradigmas en lenguajes de programación

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Paradigmas en lenguajes de programación h4p://en.wikipedia.org/wiki/
Programming_paradigm qué es un paradigma? •  un paquete de decisiones que suelen venir juntas •  un es@lo de programación •  una forma de entender los problemas, de aplicar las capacidades de los lenguajes de programación qué es un paradigma •  los paradigmas emergen como resultado de
los procesos sociales en los que la gente
desarrolla ideas y crea principios y prácticas
que instancian esas ideas
Thomas Kuhn. La estructura de las revoluciones científicas
•  los paradigmas de programación son la
consecuencia de las ideas de la gente sobre
cómo hacer programas
paradigmas •  lenguajes de marcado (no turing completos) •  precursores: lenguajes máquina •  declara@vos (sin efectos secundarios) –  funcionales: lisp, haskell, scheme, ML –  lógicos: prolog –  constraint sa@sfac@on •  impera@vos (con estado) y luego... •  orientados a objetos •  scrip@ng •  concurrentes •  para aplicaciones específicas record
Descriptive
declarative
programming
XML,
S−expression
Data structures only
Turing equivalent
Observable
nondeterminism? Yes No
The principal programming paradigms
"More is not better (or worse) than less, just different."
v1.08 © 2008 by Peter Van Roy
+ procedure
First−order
functional
programming
+ cell (state)
Imperative
programming
Pascal, C
+ closure
Imperative
search
programming
Functional
programming
+ unification
(equality)
+ continuation
Continuation
programming
Deterministic
logic programming
+ search
Relational & logic
programming
Scheme, ML
+ by−need
synchron.
Prolog, SQL
Lazy
embeddings
functional
+ solver
programming
Constraint (logic)
Haskell
SNOBOL, Icon, Prolog
+ name
(unforgeable constant)
ADT
functional
programming
+ cell
ADT
imperative
programming
Scheme, ML
Haskell, ML, E
CLU, OCaml, Oz
+ thread
+ single assign.
+ nondeterministic
+ port
choice
(channel)
Monotonic
dataflow
Nonmonotonic
Multi−agent
programming
dataflow
dataflow
programming
programming
Declarative
programming
concurrent
Concurrent logic
Oz, Alice, AKL
programming
programming
CLP, ILOG Solver
Pipes, MapReduce
Oz, Alice, Curry, Excel,
+ thread
+ thread
+ by−need
AKL, FGHC, FCP
Concurrent
+ single assignment
synchronization
+ synch. on partial termination
constraint
Lazy
programming
Functional reactive
dataflow
programming (FRP)
LIFE, AKL
programming
Weak synchronous
+ by−need synchronization
Lazy
programming
Lazy concurrent
declarative
FrTime, SL
constraint
concurrent
programming
programming
+ instantaneous computation
Oz, Alice, Curry
Oz, Alice, Curry
Strong synchronous
programming
Logic and
Esterel, Lustre, Signal
Dataflow and
Functional
constraints
message passing
Unnamed state (seq. or conc.)
More declarative
+ search
Nondet. state
+ port
(channel)
+ cell
(state)
Event−loop
programming
E in one vat
+ thread
Multi−agent
programming
Message−passing
concurrent
programming
Erlang, AKL
+ local cell
Active object
programming
Object−capability
programming
+ closure
Sequential
object−oriented
programming
Stateful
functional
programming
Java, OCaml
+ thread
Concurrent
object−oriented
programming
Shared−state
concurrent
programming
Smalltalk, Oz,
Java, Alice
+ log
CSP, Occam,
E, Oz, Alice,
publish/subscribe,
tuple space (Linda)
SQL embeddings
Message passing
Shared state
Software
transactional
memory (STM)
Named state
Less declarative
comparación •  h4p://en.wikipedia.org/wiki/
Comparison_of_programming_paradigms los lenguajes más usados •  h4p://redmonk.com/sogrady/2015/01/14/
language-­‐rankings-­‐1-­‐15/