Los lenguajes de programación pueden ser clasificados en familias de
acuerdo con su modelo de computación [].
declarativo
funcional Lisp, Scheme, Clojure, ML, Haskell, Scala
flujo de datos (dataflow) Id, Val
logicos, basados-en-restricciones Prolog
basados en templates XSLT
imperativos
von Neuman C, Ada, Fortran
scripting Perl, Python, PHP
orientados a objetos Smalltalk, Ruby, Eiffel, C++, Scala
- Los lenguajes funcionales usan un modelo computacional basado en la definición de funciones recursivas. Se inspiran en el lambda cálculo
(Lisp, ML, Haskell, Erlang, Elixir)
- Los lenguajes dataflow realizan su cálculo
según el flujo de información entre nodos funcionales.
Son ejemplos de Dataflow
los lenguajes Id y Val.
Las hojas de cálculo también pueden considerarse un ejemplo, ya
que el cambio de una variable fuerza el re-cálculo de todas las celdas que dependen de ella
- Los lenguajes lógicos y los lenguajes de restricciones se inspiran en la
lógica de predicados
- Los lenguajes de von Neumann
se basan en la ejecución de las sentencias de un programa
almacenado en memoria y que cambian los valores de las variables
almacenadas en la memoria
- Los lenguajes de scripting o lenguajes dinámicos
facilitan la combinación de componentes que fueron desarrolladas
como programas independientes. Son lenguajes de scripting
bash, csh, awk, PHP, JavaScript, Perl, Python, Ruby, ...
- Los Lenguajes orientados a objetos
describen la solución en base a objetos que interactuan entre si.
Los objetos disponen de su propio estado interno y un conjunto de subrutinas
(denominadas métodos) que modifican dicho estado.
el lenguaje orientado a objetos
por excelencia es Smalltalk
En cuanto a la concurrencia,
las mas de las veces
es implementada mediante librerías, paquetes y compiladores
extendiendo las capacidades de un lenguaje secuencial como
C o Fortran.
Algunos lenguajes, entre ellos Java, C#, Ada, Modula-3, Erlang y Elixir contienen
características explícitamente concurrentes.
Para ver como diferentes lenguajes resuelven el mismo problema puede consultarse:
- Rosetta Code:
A site with solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different
Casiano Rodriguez León
2015-01-07