stringtranslate.com

Lista de lenguajes de programación por tipo

Esta es una lista de lenguajes de programación destacados , agrupados por tipo.

Las agrupaciones se superponen; No mutuamente exclusivo. Un idioma puede aparecer en varios grupos.

Lenguajes de programación orientados a agentes

La programación orientada a agentes permite al desarrollador crear, ampliar y utilizar agentes de software , que son abstracciones de objetos que pueden enviar mensajes a otros agentes.

Idiomas de matriz

Los lenguajes de programación de matrices (también denominados vectoriales o multidimensionales ) generalizan operaciones en escalares para aplicarlas de forma transparente a vectores , matrices y matrices de dimensiones superiores .

Lenguajes de programación orientados a aspectos

La programación orientada a aspectos permite a los desarrolladores agregar nuevas funciones al código, conocidas como "consejos", sin modificar el código en sí; más bien, utiliza un punto de corte para implementar los consejos en bloques de código.

Lenguajes ensambladores

Los lenguajes ensambladores corresponden directamente a un lenguaje de máquina (ver más abajo), por lo que las instrucciones de código de máquina aparecen en una forma comprensible para los humanos, aunque puede que no haya una correlación uno a uno entre una declaración individual y una instrucción individual. Los lenguajes ensambladores permiten a los programadores usar direcciones simbólicas, que el ensamblador convierte en direcciones absolutas o reubicables . La mayoría de los ensambladores también admiten macros y constantes simbólicas .

Idiomas de autoría

Un lenguaje de creación es un lenguaje de programación diseñado para que lo utilice un experto no informático para crear fácilmente tutoriales, sitios web y otros programas informáticos interactivos.

Idiomas de la interfaz de línea de comandos

Los lenguajes de interfaz de línea de comandos (CLI) también se denominan lenguajes por lotes o lenguajes de control de trabajos. Ejemplos:

Idiomas compilados

Estos son lenguajes típicamente procesados ​​por compiladores , aunque teóricamente cualquier lenguaje puede compilarse o interpretarse.

Lenguajes de programación concatenativos

Un lenguaje de programación concatenativo es un lenguaje de programación informática sin puntos en el que todas las expresiones denotan funciones y la yuxtaposición de expresiones denota composición de funciones . [4] La programación concatenativa reemplaza la aplicación de funciones , que es común en otros estilos de programación, con la composición de funciones como la forma predeterminada de crear subrutinas .

Idiomas concurrentes

Los lenguajes de paso de mensajes proporcionan construcciones lingüísticas para la concurrencia . El paradigma predominante de concurrencia en lenguajes convencionales como Java es la concurrencia de memoria compartida . Los lenguajes concurrentes que utilizan el paso de mensajes generalmente se han inspirado en cálculos de procesos como la comunicación de procesos secuenciales (CSP) o el cálculo π .

Lenguajes de programación de restricciones

Un lenguaje de programación de restricciones es un lenguaje de programación declarativo donde las relaciones entre variables se expresan como restricciones . La ejecución continúa intentando encontrar valores para las variables que satisfagan todas las restricciones declaradas.

Idiomas entre llaves

Un lenguaje de llaves o llaves tiene una sintaxis que define un bloque como las declaraciones entre llaves, también conocidas como llaves{} . Esta sintaxis se originó con BCPL ( 1966 ) y fue popularizada por C. Muchos lenguajes entre llaves descienden de C o están fuertemente influenciados por él . Ejemplos:

Idiomas de flujo de datos

Los lenguajes de programación de flujo de datos se basan en una representación (generalmente visual) del flujo de datos para especificar el programa. Se utiliza frecuentemente para reaccionar ante eventos discretos o para procesar flujos de datos. Ejemplos de lenguajes de flujo de datos incluyen:

Lenguajes orientados a datos

Los lenguajes orientados a datos proporcionan formas poderosas de buscar y manipular las relaciones que se han descrito como tablas de relaciones entre entidades que asignan un conjunto de cosas a otros conjuntos. [ cita necesaria ] Ejemplos de lenguajes orientados a datos incluyen:

Idiomas de la tabla de decisiones

Las tablas de decisión se pueden utilizar como ayuda para aclarar la lógica antes de escribir un programa en cualquier idioma, pero en la década de 1960 se desarrollaron varios lenguajes donde la lógica principal se expresa directamente en forma de tabla de decisión, entre ellos:

Lenguajes declarativos

Los lenguajes declarativos expresan la lógica de un cálculo sin describir en detalle su flujo de control. La programación declarativa contrasta con la programación imperativa a través de lenguajes de programación imperativos, donde el flujo de control se especifica mediante órdenes en serie (imperativos). Los lenguajes de programación (puros) funcionales y basados ​​en lógica también son declarativos y constituyen las principales subcategorías de la categoría declarativa. Esta sección enumera ejemplos adicionales que no se encuentran en esas subcategorías.

Idiomas integrables

En el código fuente

Los lenguajes fuente integrables incorporan pequeños fragmentos de código ejecutable dentro de un fragmento de texto de formato libre, a menudo una página web.

Los idiomas integrados del lado del cliente están limitados por las capacidades del navegador o del cliente previsto. Su objetivo es dotar de dinamismo a las páginas web sin necesidad de volver a contactar con el servidor.

Los lenguajes integrados del lado del servidor son mucho más flexibles, ya que casi cualquier lenguaje puede integrarse en un servidor. El objetivo de tener fragmentos de código del lado del servidor incrustados en una página web es generar marcado adicional dinámicamente; el código en sí desaparece cuando se entrega la página y es reemplazado por su salida.

Lado del servidor

Los ejemplos anteriores están particularmente dedicados a este propósito. Se pueden adaptar una gran cantidad de otros lenguajes, como Erlang , Scala , Perl , Ring y Ruby (por ejemplo, convirtiéndolos en módulos de Apache ).

Lado del cliente

En código objeto

Se puede incrustar una amplia variedad de lenguajes dinámicos o de secuencias de comandos en el código ejecutable compilado. Básicamente, el código objeto para el intérprete del idioma debe estar vinculado al ejecutable. Luego, los fragmentos de código fuente para el lenguaje integrado se pueden pasar a una función de evaluación como cadenas. Los lenguajes de control de aplicaciones se pueden implementar de esta manera, si el usuario ingresa el código fuente. Se prefieren los idiomas con pequeños intérpretes.

Lenguajes de programación educativos

Lenguajes desarrollados principalmente con el propósito de enseñar y aprender programación.

Lenguajes esotéricos

Un lenguaje de programación esotérico es un lenguaje de programación diseñado como una prueba de los límites del diseño de lenguajes de programación de computadoras, como una prueba de concepto o como una broma.

Idiomas de extensión

Los lenguajes de programación de extensión son lenguajes integrados en otro programa y se utilizan para aprovechar sus funciones en scripts de extensión.

Lenguas de cuarta generación

Los lenguajes de programación de cuarta generación son lenguajes de alto nivel construidos alrededor de sistemas de bases de datos. Generalmente se utilizan en entornos comerciales.

Lenguajes funcionales

Los lenguajes de programación funcional definen programas y subrutinas como funciones matemáticas y los tratan como de primera clase. Muchos de los llamados lenguajes funcionales son "impuros" y contienen características imperativas. Muchos lenguajes funcionales están vinculados a herramientas de cálculo matemático. Los lenguajes funcionales incluyen:

Puro

Impuro

Lenguajes de descripción de hardware

En electrónica, un lenguaje de descripción de hardware (HDL) es un lenguaje informático especializado que se utiliza para describir la estructura, el diseño y el funcionamiento de circuitos electrónicos y, más comúnmente, de circuitos lógicos digitales. Las dos variedades de HDL más utilizadas y con mayor soporte en la industria son Verilog y VHDL . Los lenguajes de descripción de hardware incluyen:

HDL para el diseño de circuitos analógicos

HDL para el diseño de circuitos digitales

Idiomas imperativos

Los lenguajes de programación imperativos pueden tener múltiples paradigmas y aparecer en otras clasificaciones. Aquí hay una lista de lenguajes de programación que siguen el paradigma imperativo :

Idiomas del modo interactivo

Los lenguajes en modo interactivo actúan como una especie de caparazón: las expresiones o declaraciones se pueden ingresar una a la vez y el resultado de su evaluación se ve inmediatamente. El modo interactivo también se denomina bucle de lectura, evaluación e impresión (REPL).

Idiomas interpretados

Los lenguajes interpretados son lenguajes de programación en los que un intérprete puede ejecutar programas desde el código fuente. En teoría, cualquier lenguaje puede compilarse o interpretarse, por lo que el término lenguaje interpretado generalmente se refiere a lenguajes que generalmente se interpretan en lugar de compilarse.

Lenguajes iterativos

Los lenguajes iterativos se construyen alrededor de generadores o los ofrecen .

Idiomas por tipo de gestión de memoria

Lenguas recolectadas de basura

La recolección de basura (GC) es una forma de gestión automática de la memoria. El recolector de basura intenta recuperar la memoria asignada por el programa pero que ya no se utiliza.

Idiomas con gestión de memoria manual.

Idiomas con gestión de memoria manual parcial.

Idiomas con gestión de memoria manual opcional

Idiomas con gestión de memoria determinista.

Idiomas con recuento automático de referencias (ARC)

Lenguajes basados ​​en listas: LISP

Los lenguajes basados ​​en listas son un tipo de lenguaje estructurado de datos que se basan en la estructura de datos de listas .

Pequeños idiomas

Los pequeños lenguajes [27] sirven a un dominio de problemas especializados.

Lenguajes basados ​​en lógica

Los lenguajes basados ​​en lógica especifican un conjunto de atributos que una solución debe tener, en lugar de un conjunto de pasos para obtener una solución.

Los lenguajes notables que siguen este paradigma de programación incluyen:

Lenguajes de máquina

Los lenguajes de máquina son directamente ejecutables por la CPU de una computadora. Por lo general, se formulan como patrones de bits, generalmente representados en formato octal o hexadecimal . Cada patrón de bits hace que los circuitos de la CPU ejecuten una de las operaciones fundamentales del hardware. La activación de entradas eléctricas específicas (por ejemplo, pines del paquete de CPU para microprocesadores) y configuraciones lógicas para los valores de estado de la CPU controlan el cálculo del procesador. Los lenguajes de máquina individuales son específicos de una familia de procesadores; El código en lenguaje de máquina para una familia de procesadores no puede ejecutarse directamente en procesadores de otra familia a menos que los procesadores en cuestión tengan hardware adicional para admitirlo (por ejemplo, los procesadores DEC VAX incluían un modo de compatibilidad PDP-11). Siempre están (esencialmente) definidos por el desarrollador de la CPU, no por terceros. [b] La versión simbólica, el lenguaje ensamblador del procesador , también la define el desarrollador, en la mayoría de los casos. Algunos conjuntos de instrucciones de código de máquina comúnmente utilizados son:

Lenguajes de macros

Lenguajes de macros de sustitución textual

Los lenguajes de macros transforman un archivo de código fuente en otro. Una "macro" es esencialmente un fragmento de texto breve que se expande hasta convertirse en uno más largo (que no debe confundirse con macros higiénicas ), posiblemente con sustitución de parámetros. A menudo se utilizan para preprocesar el código fuente. Los preprocesadores también pueden proporcionar funciones como la inclusión de archivos .

Los lenguajes de macros pueden restringirse a actuar en regiones de código especialmente etiquetadas (prefijadas con a #en el caso del preprocesador C). Alternativamente, puede que no lo hagan, pero en este caso a menudo sigue siendo indeseable (por ejemplo) expandir una macro incrustada en una cadena literal , por lo que todavía necesitan un conocimiento rudimentario de la sintaxis. Siendo ese el caso, a menudo siguen siendo aplicables a más de un idioma. Compare con los lenguajes de código fuente integrados como PHP , que cuentan con todas las funciones.

Lenguajes de macros de aplicaciones

Se han integrado lenguajes de secuencias de comandos como Tcl y ECMAScript ( ActionScript , ECMAScript para XML , JavaScript , JScript ) en las aplicaciones. A veces se les llama "lenguajes de macros", aunque en un sentido algo diferente a las macros de sustitución de textos como m4 .

Lenguajes de metaprogramación

La metaprogramación es la escritura de programas que escriben o manipulan otros programas, incluidos ellos mismos, como sus datos o que realizan parte del trabajo que de otro modo se realiza en tiempo de ejecución durante el tiempo de compilación . En muchos casos, esto permite a los programadores hacer más cosas en la misma cantidad de tiempo que les llevaría escribir todo el código manualmente.

Lenguajes multiparadigma

Los lenguajes multiparadigmas soportan más de un paradigma de programación . Permiten que un programa utilice más de un estilo de programación . El objetivo es permitir a los programadores utilizar la mejor herramienta para un trabajo, admitiendo que ningún paradigma resuelve todos los problemas de la manera más fácil o más eficiente.

Análisis numérico

Varios lenguajes de programación de propósito general, como C y Python , también se utilizan para la informática técnica; esta lista se centra en lenguajes utilizados casi exclusivamente para la informática técnica.

Idiomas no basados ​​en inglés

Lenguajes basados ​​en clases orientados a objetos

Los lenguajes de programación orientados a objetos basados ​​en clases admiten objetos definidos por su clase. Las definiciones de clase incluyen datos de miembros. El paso de mensajes es un concepto clave, si no el concepto principal, en los lenguajes orientados a objetos.

Las funciones polimórficas parametrizadas por la clase de algunos de sus argumentos suelen denominarse métodos . En lenguajes con despacho único , las clases normalmente también incluyen definiciones de métodos. En lenguajes con despacho múltiple , los métodos se definen mediante funciones genéricas . Hay excepciones en las que los métodos de despacho único son funciones genéricas (por ejemplo, el sistema de objetos de Bigloo ).

Despacho múltiple

Despacho único

Lenguajes basados ​​en prototipos orientados a objetos

Los lenguajes basados ​​en prototipos son lenguajes orientados a objetos donde se ha eliminado la distinción entre clases e instancias:

Idiomas de reglas fuera de juego

Los lenguajes de reglas fuera de juego denotan bloques de código por su sangría .

Lenguajes procesales

Los lenguajes de programación procesal se basan en el concepto de unidad y alcance (el rango de visualización de datos) de una declaración de código ejecutable. Un programa de procedimiento se compone de una o más unidades o módulos, ya sea codificados por el usuario o proporcionados en una biblioteca de códigos; cada módulo está compuesto por uno o más procedimientos, también llamados función, rutina, subrutina o método, según el lenguaje. Ejemplos de lenguajes procesales incluyen:

Idiomas de consulta

Lenguajes reflexivos

Los lenguajes de programación reflexivos permiten que los programas examinen y posiblemente modifiquen su estructura de alto nivel en tiempo de ejecución o en tiempo de compilación. Esto es más común en lenguajes de programación de máquinas virtuales de alto nivel como Smalltalk y menos común en lenguajes de programación de bajo nivel como C. Lenguajes y plataformas que apoyan la reflexión:

Lenguajes basados ​​en reglas

Los lenguajes basados ​​en reglas crean instancias de reglas cuando se activan mediante condiciones en un conjunto de datos. De todas las activaciones posibles, se selecciona algún conjunto y se ejecutan las declaraciones que pertenecen a esas reglas. Los lenguajes basados ​​en reglas incluyen: [ cita necesaria ]

Lenguajes de scripting

Lenguajes basados ​​en pila

Los lenguajes basados ​​en pila son un tipo de lenguaje estructurado de datos que se basan en la estructura de datos de la pila .

Lenguajes sincrónicos

Los lenguajes de programación síncronos están optimizados para programar sistemas reactivos, sistemas que a menudo se interrumpen y deben responder rápidamente. Muchos de estos sistemas también se denominan sistemas en tiempo real y se utilizan a menudo en sistemas integrados .

Ejemplos:

Lenguajes de sombreado

Un lenguaje de sombreado es un lenguaje de programación de gráficos adaptado a la programación de efectos de sombreado. Estas formas de lenguaje suelen consistir en tipos de datos especiales, como "color" y "normal". Debido a la variedad de mercados objetivo para los gráficos por computadora en 3D.

Representación en tiempo real

Proporcionan una mayor abstracción de hardware y un modelo de programación más flexible que los paradigmas anteriores que codificaban ecuaciones de transformación y sombreado. Esto le da al programador un mayor control sobre el proceso de renderizado y ofrece contenido más rico con menores gastos generales.

Representación sin conexión

Los lenguajes de sombreado utilizados en el renderizado fuera de línea producen la máxima calidad de imagen. Procesar estos sombreadores lleva mucho tiempo. La potencia computacional requerida puede resultar costosa debido a su capacidad para producir resultados fotorrealistas.

Lenguajes de manejo de sintaxis

Estos lenguajes ayudan a generar analizadores léxicos y analizadores para gramáticas libres de contexto .

Idiomas del sistema

Los lenguajes de programación del sistema son para tareas de bajo nivel como gestión de memoria o gestión de tareas. Un lenguaje de programación de sistemas generalmente se refiere a un lenguaje de programación utilizado para la programación de sistemas; Dichos lenguajes están diseñados para escribir software de sistemas, lo que generalmente requiere enfoques de desarrollo diferentes en comparación con el software de aplicación.

El software del sistema es software de computadora diseñado para operar y controlar el hardware de la computadora y para proporcionar una plataforma para ejecutar software de aplicación. El software del sistema incluye categorías de software como sistemas operativos, software de utilidad, controladores de dispositivos, compiladores y enlazadores. Ejemplos de lenguajes del sistema incluyen:

Lenguajes de transformación

Los lenguajes de transformación sirven para transformar (traducir) el código fuente especificado en un determinado lenguaje formal a un código de formato de destino definido. Se utiliza más comúnmente en componentes intermedios de supersistemas más complejos para adoptar resultados internos para ingresarlos en una rutina de procesamiento posterior.

Lenguajes visuales

Los lenguajes de programación visual permiten a los usuarios especificar programas en dos (o más) dimensiones, en lugar de cadenas de texto unidimensionales, mediante diseños gráficos de varios tipos. Algunos lenguajes de programación de flujo de datos también son lenguajes visuales.

con idiomas

El informático Niklaus Wirth diseñó e implementó varios lenguajes influyentes.

Lenguajes basados ​​en XML

Son lenguajes basados ​​o que operan sobre XML .

Ver también

Notas

  1. ^ Los objetos de SQL son colecciones de registros de bases de datos , llamadas tablas. Un lenguaje de programación completo puede especificar algoritmos , independientemente del tiempo de ejecución . Por tanto, se puede considerar que un algoritmo genera resultados utilizables. Por el contrario, SQL sólo puede seleccionar registros que se limiten a la colección actual, los datos disponibles en el sistema, en lugar de producir una declaración de la exactitud del resultado.
  2. ^ Una excepción notable sería la CPU de la serie 1801 soviética/rusa , que originalmente usaba su propia ISA nacional, pero luego fue rediseñada para ser compatible con PDP-11 como una decisión política.
  3. ^ ab Los submodelos no figuran en la lista, solo los modelos base.
  4. ^ El concepto de objeto con la semántica OO tradicional de envío único no está presente en Julia, sino con el envío múltiple más general en diferentes tipos en tiempo de ejecución.
  5. ^ Swift utiliza el recuento automático de referencias .

Referencias

  1. ^ "Operadores" . Consultado el 13 de mayo de 2024 .
  2. ^ "envolver".
  3. ^ ""Aspects in Raku"".
  4. ^ "Christopher Diggins: What is a concatenative language". Drdobbs.com. 2008-12-31. Retrieved 2013-07-01.
  5. ^ "Feed operator".
  6. ^ Documentation » The Python Standard Library » Concurrent Execution
  7. ^ "Channels and other mechanisms".
  8. ^ "ProblemSolver".
  9. ^ a b "Indentation based syntax · rsdn/nemerle Wiki". GitHub. Retrieved 2022-03-18.
  10. ^ "Solidity: Solidity 0.8.11 documentation".
  11. ^ "Iterator".
  12. ^ "eC - Overview". Retrieved 2023-07-14.
  13. ^ "Memory Management · BlitzMax". Retrieved 2023-07-14.
  14. ^ "Pointers · BlitzMax". Retrieved 2023-07-14.
  15. ^ "BRL.Blitz · BlitzMax". Retrieved 2023-07-14.
  16. ^ "Using Pointers in an ILE COBOL Program - IBM Documentation". IBM. Retrieved 2023-07-14.
  17. ^ "HEAP - IBM Documentation". IBM. Retrieved 2023-07-14.
  18. ^ "SOM-based OO COBOL language elements that are changed - IBM Documentation". IBM. Retrieved 2023-07-14.
  19. ^ "Memory Allocation — Cython 3.0.0.dev0 documentation". Retrieved 2023-07-14.
  20. ^ "Garbage Collection". D Programming Language. Retrieved 2022-03-18.
  21. ^ "Nim's Memory Management". Retrieved 2022-03-18.
  22. ^ Adobe (February 1999). PostScript Language Reference, third edition (PDF). Addison-Wesley Publishing Company. pp. 56–65.
  23. ^ "Native code interoperability – Scala Native 0.4.14 documentation". Retrieved 2023-07-05.
  24. ^ "Projects/Vala/ReferenceHandling - GNOME Wiki!". Archived from the original on 2024-01-21. Retrieved 2022-03-21.
  25. ^ "Understanding Ownership - The Rust Programming Language". doc.rust-lang.org.
  26. ^ "Smart Pointers - The Rust Programming Language". doc.rust-lang.org.
  27. ^ Jon Bentley (AT&T) August 1986 CACM 29 (8) "Little Languages", pp 711-721 from his Programming Pearls column
  28. ^ "Meta-programming: What, why and how". 2011-12-14.
  29. ^ "Procedural Macros for Generating Code from Attributes". doc.rust-lang.org.
  30. ^ "Classes and Roles".
  31. ^ "Meta-object protocol (MOP)".
  32. ^ Scabia, Marco. "What is AGAL". Adobe Developer Connection. Adobe. Retrieved 8 May 2018.
  33. ^ "Grammars".
  34. ^ Wulf, W.A.; Russell, D.B.; Haberman, A.N. (December 1971). "BLISS: A Language for Systems Programming". Communications of the ACM. 14 (12): 780–790. CiteSeerX 10.1.1.691.9765. doi:10.1145/362919.362936. S2CID 9564255.
  35. ^ "C++ Applications".
  36. ^ "Organizations using the D Language". D Programming Language.
  37. ^ "Mozilla Research". 1 January 2014.