Esta es una lista de lenguajes de programación notables , agrupados por tipo.
Las agrupaciones se superponen, no son mutuamente excluyentes. Un idioma puede aparecer en varias agrupaciones.
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.
Lenguajes de matriz
Los lenguajes de programación matricial (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 nueva funcionalidad al código, conocida como "consejo", sin modificar el código en sí; en cambio, utiliza un punto de corte para implementar el consejo 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 correspondencia uno a uno entre una declaración individual y una instrucción individual. Los lenguajes ensambladores permiten a los programadores utilizar 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 .
Lenguajes de creación
Un lenguaje de creación es un lenguaje de programación diseñado para que lo utilice un usuario no experto en informática para crear fácilmente tutoriales, sitios web y otros programas informáticos interactivos.
Lenguajes de interfaz de línea de comandos
Los lenguajes de interfaz de línea de comandos (CLI) también se denominan lenguajes de procesamiento por lotes o lenguajes de control de trabajos. Ejemplos:
- 4DOS (shell para IBM PC )
- 4OS2 (shell para IBM PC )
- bash (el shell Bourne-Again de GNU , Free Software Foundation )
- CLIST ( Lista de comandos MVS )
- EJECUTIVO CMS
- csh y tcsh (por Bill Joy UC Berkeley )
- CLI de lenguaje de comandos DIGITAL para VMS ( DEC , Compaq , HP )
- Lenguaje de procesamiento por lotes DOS (para IBM PC DOS , anterior a Windows )
- EJECUTAR 2
- Expect (una herramienta de automatización y prueba de Unix )
- pez (un shell de Unix )
- Hamilton C shell (un C shell para Windows)
- ksh (un shell Unix estándar , escrito por David Korn )
- PowerShell ( CLI basada en .NET )
- rc (shell para Plan 9 )
- Rexx
- sh (shell estándar de Unix , por Stephen R. Bourne )
- TACL (lenguaje de comandos avanzado en tándem)
- Lenguaje por lotes de Windows (entrada para COMMAND.COM o CMD.EXE )
- zsh (un shell de Unix )
Lenguajes compilados
Se trata de lenguajes que normalmente son procesados por compiladores , aunque teóricamente cualquier lenguaje puede ser compilado o interpretado.
- Arca TS
- Script de acción
- Ada (lenguaje multipropósito)
- ALGOL 58
- ALGOL 60 (diseño influyente)
- PEQUEÑA máquina ALGOL
- ALGOL 68
- Bailarina → tiempo de ejecución del bytecode
- BASIC (incluida la primera versión de Dartmouth BASIC)
- BCP
- C (lenguaje procedimental ampliamente utilizado)
- C++ (lenguaje multiparadigma derivado de C)
- C# (en tiempo de ejecución CIL )
- Ceilán (en bytecode JVM )
- ENFRIAR
- CLIPPER 5.3 (basado en DOS)
- CLEO para ordenadores Leo
- Clojure (en bytecode de JVM )
- COBOL
- Cobra
- Ceceo común
- Cristal
- Rizo
- D (de una reingeniería de C++)
- DASL → Java, JS , JSP, Flex.war
- Delphi ( sistema de desarrollo Object Pascal de Borland )
- DIBOL (un COBOL digital)
- Dylan
- Eiffel (desarrollado por Bertrand Meyer )
- Olmo
- Emacs Lisp
- Esmeralda
- Erlang
- Factor
- Fortran (compilado por primera vez por John Backus de IBM )
- GAUSS
- Ir (Golang)
- Gosu (en el bytecode de JVM )
- Groovy (en código de bytes de JVM )
- Haskell
- Puerto
- Santo C
- Informar (normalmente archivos de historias para Glulx o Z-code )
- Java (normalmente código de bytes JVM ; a código de máquina )
- JOVIAL
- Julia (sobre la marcha al código de máquina)
- Kotlin (Kotlin/Native usa LLVM para producir binarios)
- LabVIEW
- Mercurio
- Colina baja
- Nemerle (en código de bytes de lenguaje intermedio)
- Nim
- Objetivo-C
- PAG
- Pascal (la mayoría de las implementaciones)
- PL/I (originalmente para mainframes IBM)
- Más
- Python (a código de bytes de VM intermedio )
- RPG (Generador de informes)
- Rojo
- Óxido
- Scala (en bytecode de JVM )
- Esquema (por ejemplo, Gambit)
- SequenceL : puramente funcional, paralelizante y sin carreras
- Simula (superconjunto orientado a objetos de ALGOL 60 )
- Código de bytes de máquina virtual independiente de la plataforma Smalltalk
- Rápido
- Ml
- Aprendizaje automático estándar (SML)
- OCaml
- F# (en CIL , genera tiempo de ejecución)
- Turing
- V (lenguaje)
- Vala (sistema de tipos GObject)
- Visual Basic ( tiempo de ejecución CIL JIT)
- Visual FoxPro
- Prólogo visual
- Xojo
- Zig
Lenguajes de programación concatenativo
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 construir subrutinas .
Idiomas concurrentes
Los lenguajes de paso de mensajes proporcionan estructuras lingüísticas para la concurrencia . El paradigma predominante para la concurrencia en lenguajes convencionales como Java es la concurrencia de memoria compartida . Los lenguajes concurrentes que hacen uso del paso de mensajes generalmente se han inspirado en cálculos de procesos como los procesos secuenciales de comunicación (CSP) o el cálculo π .
- Ada – lenguaje multipropósito
- Alef : lenguaje concurrente con subprocesos y paso de mensajes, utilizado para la programación de sistemas en las primeras versiones de Plan 9 de Bell Labs
- Ateji PX : una extensión del lenguaje Java para el paralelismo
- Ballerina : un lenguaje diseñado para implementar y orquestar microservicios. Proporciona un modelo de concurrencia basado en mensajes que prioriza el uso de paralelismos.
- ChucK : lenguaje de programación específico para audio, control preciso sobre la concurrencia y el tiempo
- Cilk – un C concurrente
- Cω – C Omega, un lenguaje de investigación que extiende C#, utiliza comunicación asincrónica
- Clojure : un dialecto de Lisp para la máquina virtual Java
- Capilla
- Matriz conjunta Fortran
- Pascal concurrente (por Brinch-Hansen)
- Curry
- E – utiliza promesas y garantiza que no se produzcan bloqueos
- Eiffel (a través del mecanismo SCOOP , Computación Orientada a Objetos Concurrentes Simples)
- Elixir (se ejecuta en la máquina virtual Erlang)
- Emerald – utiliza subprocesos y monitores
- Erlang : utiliza el paso de mensajes asincrónico sin compartir nada
- Esquema Gambit : uso de la biblioteca Termite
- Gleam (se ejecuta en la máquina virtual Erlang)
- Ir (Golang)
- Haskell : admite programación simultánea, distribuida y paralela en varias máquinas
- Java
- Únase a Java : lenguaje concurrente basado en Java
- X10
- Julia
- Joule : lenguaje de flujo de datos, se comunica mediante el paso de mensajes
- LabVIEW
- Limbo – pariente de Alef , utilizado para la programación de sistemas en Inferno (sistema operativo)
- MultiLisp : variante de Scheme ampliada para soportar paralelismo
- OCaml
- occam – fuertemente influenciado por los procesos secuenciales de comunicación (CSP)
- Occam-π – una variante moderna de Occam , que incorpora ideas del cálculo π de Milner
- Orco
- Oz : lenguaje multiparadigma, compatible con concurrencia de estado compartido y paso de mensajes, y futuros, y sistema de programación multiplataforma Mozart Oz
- PAG
- Pict : esencialmente una implementación ejecutable del cálculo π de Milner
- Python : utiliza paralelismo basado en subprocesos y paralelismo basado en procesos [6]
- Raku [7]
- Óxido
- Scala : implementa actores de estilo Erlang en la JVM
- SequenceL : puramente funcional, paralelización automática y sin carreras
- SR – lenguaje de investigación
- V (lenguaje)
- C Paralelo Unificado
- XProc : lenguaje de procesamiento XML que permite la concurrencia
Lenguajes de programación con restricciones
Un lenguaje de programación con restricciones es un lenguaje de programación declarativo en el que las relaciones entre variables se expresan como restricciones . La ejecución se lleva a cabo intentando encontrar valores para las variables que satisfacen todas las restricciones declaradas.
Lenguajes con llaves
Un lenguaje de 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 de llaves descienden de C o están fuertemente influenciados por él . Ejemplos:
{}
- ABCL/c+
- Alef
- AWK
- Arca TS
- B
- antes de Cristo
- BCP
- Bailarina
- C – desarrollado alrededor de 1970 en Bell Labs
- C++
- DO#
- Ceilán
- Chuck – lenguaje de programación de audio
- Cilk – C concurrente para programación paralela multiproceso
- Ciclón : una variante C más segura
- D
- Dardo
- DASL – basado en Java
- mi
- Script ECMA
- GLSL
- Ir (Golang)
- Nivel de inglés alto y medio
- Java
- Limbo
- PCL
- MEL
- Nemerle (llaves opcionales) [9]
- Objetivo-C
- PCASTL
- Perl
- PHP
- Pico
- Lucio
- Potencia Shell
- R
- Raku
- Óxido
- Jerga
- Scala (llaves opcionales)
- sed
- Solidez [10]
- Supercolisionador
- Rápido
- Script irreal
- V (lenguaje)
- Yorick
- ¡Sí!
Lenguajes de flujo de datos
Los lenguajes de programación de flujo de datos se basan en una representación (normalmente visual) del flujo de datos para especificar el programa. Se utilizan con frecuencia para reaccionar ante eventos discretos o para procesar flujos de datos. Algunos ejemplos de lenguajes de flujo de datos son:
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 relación de entidades que asignan un conjunto de cosas a otros conjuntos. [ cita requerida ] Algunos ejemplos de lenguajes orientados a datos incluyen:
- Clarín
- Clíper
- dBase un lenguaje de acceso a bases de datos relacionales
- Duendecillo
- MUMPS (un lenguaje de propósito general estándar ANSI con especializaciones para trabajo con bases de datos)
- Caché ObjectScript (un superconjunto propietario de MUMPS)
- RECUPERAR
- RDQL
- SPARQL
- SQL
- Visual FoxPro : un motor RDBMS nativo, orientado a objetos, RAD
- ADN web
- Wolfram Mathematica ( lenguaje Wolfram )
Lenguajes de tablas de decisión
Las tablas de decisión se pueden utilizar como ayuda para aclarar la lógica antes de escribir un programa en cualquier lenguaje, 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 los 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 la lógica también son declarativos y constituyen las principales subcategorías de la categoría declarativa. En esta sección se enumeran ejemplos adicionales que no se encuentran en esas subcategorías.
- Analítica
- Ant (combina programación declarativa y programación imperativa )
- Curry
- Cifrar
- Registro de datos
- Lenguaje de especificación de aplicaciones distribuidas (DASL) (combina programación declarativa y programación imperativa )
- ECL
- Duendecillo
- Informar (combinar programación declarativa y programación imperativa )
- Lustre
- Mercurio
- Metafont
- MetaPost
- Modelica
- Nada
- Prólogo
- QML
- Onz
- RDQL
- SequenceL : puramente funcional, paralelización automática y sin carreras
- SPARQL
- SQL (solo DQL, no DDL, DCL y DML)
- Soufflé
- Wolfram Mathematica ( lenguaje Wolfram )
- xBase
- Transformaciones XSL
Idiomas integrables
En código fuente
Los lenguajes integrables en código fuente incorporan pequeños fragmentos de código ejecutable dentro de un fragmento de texto de formato libre, generalmente una página web.
Los lenguajes integrados del lado del cliente están limitados por las capacidades del navegador o del cliente de destino. Su objetivo es aportar dinamismo a las páginas web sin necesidad de volver a contactar con el servidor.
Los lenguajes integrados en el 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 servidor integrados en una página web es generar marcado adicional de forma dinámica; el código en sí desaparece cuando se muestra la página y es reemplazado por su salida.
Lado del servidor
- PHP
- VBScript
- Tcl : componente del lado del servidor en NaviServer y un componente esencial en los sistemas de la industria electrónica
- WebDNA : dedicado a sitios web basados en bases de datos
Los ejemplos anteriores están especialmente 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 incorporar una amplia variedad de lenguajes dinámicos o de scripting en el código ejecutable compilado. Básicamente, el código objeto para el intérprete del lenguaje debe vincularse al ejecutable. Los fragmentos de código fuente para el lenguaje incorporado 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 código fuente lo ingresa el usuario. Se prefieren los lenguajes con intérpretes pequeños.
Lenguajes de programación educativa
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 del lenguaje de programación informática, como una prueba de concepto o como una broma.
Lenguajes de extensión
Los lenguajes de programación de extensión son lenguajes integrados en otro programa y utilizados para aprovechar sus características en scripts de extensión.
- AutoLISP (específico para AutoCAD )
- Cáscara de frijol
- CALIFORNIA
- C/AL (C/LADO)
- Engaño
- Emacs Lisp
- JavaScript y algunos dialectos, por ejemplo, JScript
- Lua (integrado en muchos juegos)
- OpenCL (extensión de C y C++ para utilizar la GPU y extensiones paralelas de la CPU)
- OptimJ (extensión de Java con soporte de lenguaje para escribir modelos de optimización y abstracciones potentes para el procesamiento masivo de datos)
- Perl
- Lucio
- Potencia Shell
- Python (integrado en Maya, Blender y otros paquetes de animación 3D)
- Rexx
- Anillo
- Rubí (Google SketchUp)
- Jerga
- SQL
- Ardilla
- Tcl
- Script de Vim (vim)
- Visual Basic para aplicaciones (VBA)
Lenguas de cuarta generación
Los lenguajes de programación de cuarta generación son lenguajes de alto nivel creados en torno a sistemas de bases de datos. Se utilizan generalmente en entornos comerciales.
- 1C: Lenguaje de programación empresarial
- ABAP
- CorVisión
- GraphTalk de CSC
- CA-IDEAL (Entorno de desarrollo interactivo para la vida de las aplicaciones) para usar con CA-DATACOM/DB
- Generador de informes Easytrieve (ahora CA-Easytrieve Plus)
- ENFOCAR
- IBM Informix-4GL
- Linc 4GL
- LiveCode (no se basa en una base de datos; aun así, el objetivo es trabajar en un nivel de abstracción más alto que 3GL).
- MAPPER ( Unisys/Sperry ): ahora parte de BIS
- MARK-IV ( Sterling/Informatics ) ahora VISION:BUILDER de CA
- NATURAL
- Progreso 4GL
- Ondas fotovoltaicas
- RECUPERAR
- SAS
- SQL
- Ubercode (VHLL, o lenguaje de muy alto nivel)
- Uniface
- Visual DataFlex
- Visual FoxPro
- xBase
Lenguajes funcionales
Los lenguajes de programación funcional definen los programas y subrutinas como funciones matemáticas y los tratan como de primera clase. Muchos de los denominados lenguajes funcionales son "impuros" y contienen características imperativas. Muchos lenguajes funcionales están vinculados a herramientas de cálculo matemático. Entre los lenguajes funcionales se incluyen:
Puro
Impuro
- APL
- ATS
- CALIFORNIA
- C++ (desde C++11 )
- DO#
- VB.NET
- Ceilán
- Rizo
- D
- Dardo
- Script ECMA
- Erlang
- felx
- Flix
- G (usado en LabVIEW)
- Genial
- Brincar
- Yo
- Java (desde la versión 8)
- Julia
- Kotlin
- Ceceo
- Ml
- Nemerle
- Nim
- Ópalo
- OPS5
- Perl
- PHP
- PL/pgSQL
- Pitón
- Q (lenguaje de programación ecuacional)
- Q (lenguaje de programación de Kx Systems)
- R
- Raku
- Rebol
- Rojo
- Anillo
- Rubí
- Refracción
- Óxido
- Escala
- Rápido
- Hojas de cálculo
- V (lenguaje)
- Tcl
- Wolfram Mathematica ( lenguaje Wolfram )
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, circuitos lógicos digitales. Las dos variedades de HDL más utilizadas y con mayor respaldo en la industria son Verilog y VHDL . Los lenguajes de descripción de hardware incluyen:
HDL para el diseño de circuitos analógicos
- Verilog-AMS (Verilog para señales analógicas y mixtas)
- VHDL-AMS (VHDL con extensión analógica/señal mixta)
HDL para el diseño de circuitos digitales
Lenguas imperativas
Los lenguajes de programación imperativos pueden ser multiparadigmáticos y aparecer en otras clasificaciones. A continuación, se incluye una lista de lenguajes de programación que siguen el paradigma imperativo :
- Ada
- ALGOL 58
- ALGOL 60 (diseño de lenguaje muy influyente)
- ALGOL 68
- BÁSICO
- do
- C++
- DO#
- Ceilán
- ENFRIAR
- COBOL
- D
- Dardo
- Script ECMA
- FORTRAN
- GAUSS
- Ir
- Genial
- Icono
- Java
- Julia
- Lua
- MATLAB
- Lenguajes de máquina
- Módulo-2 , Módulo-3
- PAPERAS
- Nim
- OCaml
- Oberón
- Objeto Pascal
- Objeto abierto Rexx (ooRexx)
- Lenguaje de programación abierto (OPL)
- Lenguaje empresarial avanzado (ABL) de OpenEdge
- Pascal
- Perl
- PHP
- PL/YO
- PL/S
- Potencia Shell
- PROSA
- Pitón
- Raku
- Rexx
- Anillo
- Rubí
- Óxido
- Conjunto
- Bar clandestino
- Rápido
- Tcl
- V (lenguaje)
- Wolfram Mathematica ( lenguaje Wolfram )
Idiomas del modo interactivo
Los lenguajes en modo interactivo actúan como una especie de shell: se pueden ingresar expresiones o declaraciones de a una por vez y el resultado de su evaluación se ve de inmediato. El modo interactivo también se denomina bucle de lectura-evaluación-impresión (REPL).
- APL
- BASIC (algunos dialectos)
- Clojure
- Ceceo común
- Dart (con Observatory o las herramientas para desarrolladores de Dartium)
- Script ECMA
- Erlang
- Elixir (con iex)
- F#
- Volante
- GAUSS
- Genial
- Engaño
- Haskell (con el intérprete GHCi o Hugs)
- IDL
- Yo
- Java (desde la versión 9)
- Julia
- Lua
- MUMPS (un lenguaje de propósito general estándar ANSI)
- Arce
- MATLAB
- Ml
- OCaml
- Perl
- PHP
- Lucio
- Posdata
- PowerShell ( CLI basada en .NET )
- Prólogo
- Pitón
- PROSA
- R
- Raku
- Rebol
- Rojo
- Rexx
- Anillo
- Ruby (con IRB )
- Escala
- Esquema
- Smalltalk (en cualquier lugar en un entorno Smalltalk)
- S-Lang (con el shell S-Lang, slsh)
- Bar clandestino
- Rápido
- Tcl (con el shell Tcl, tclsh)
- Concha de Unix
- Visual FoxPro
- Wolfram Mathematica ( lenguaje Wolfram )
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 ser compilado o interpretado, por lo que el término lenguaje interpretado generalmente se refiere a lenguajes que normalmente se interpretan en lugar de compilarse.
- Hormiga
- APL
- Lenguaje de programación AutoHotkey
- Lenguaje de programación AutoIt
- BASIC (algunos dialectos)
- Lenguaje de programación para empresas (PL/B, anteriormente DATABUS, versiones posteriores agregaron compilación opcional)
- Eiffel (vía Melting Ice Technology en EiffelStudio )
- Emacs Lisp
- FOCAL
- Lenguaje GameMaker
- Genial
- Yo
- yo q
- Julia (compilada sobre la marcha en código máquina , por defecto, interpretación también disponible)
- JavaScript
- Lisp (versiones tempranas, anteriores a 1962, y algunas experimentales; los sistemas Lisp de producción son compiladores, pero muchos de ellos todavía proporcionan un intérprete si es necesario)
- PCL
- Lua
- MUMPS (un lenguaje de propósito general estándar ANSI)
- Arce
- MATLAB
- OCaml
- Pascal (primeras implementaciones)
- PCASTL
- Perl
- PHP
- Posdata
- Potencia Shell
- PROSA
- Pitón
- Rexx
- R
- Raku
- Rebol
- Rojo
- Anillo
- Rubí
- Jerga
- Semilla7
- Bar clandestino
- Aprendizaje automático estándar (SML)
- Girar
- Tcl
- Té
- Script de torsión
- Lenguaje de programación thinBasic
- VBScript
- CLI basada en Windows PowerShell – .NET
- Algunos lenguajes de programación: a continuación
- Wolfram Mathematica ( lenguaje Wolfram )
Lenguajes iterativos
Los lenguajes iterativos se construyen alrededor de generadores que los ofrecen .
Idiomas por tipo de gestión de memoria
Idiomas que recogen basura
La recolección de basura (GC) es una forma de administración automática de la memoria. El recolector de basura intenta recuperar la memoria que el programa asignó pero que ya no se utiliza.
Idiomas con gestión manual de memoria
- ALGOL 68
- Montaje (varios)
- DICHA
- do
- C++
- Componente Pascal
- Adelante
- Fortran
- LibreBASIC
- Módulo-2
- Oberón
- Pascal
- PL/YO
- Zig
Idiomas con gestión de memoria manual opcional
- No es necesario que las implementaciones de Ada ofrezcan recolección de basura, pero la semántica del lenguaje lo admite y muchas implementaciones lo incluyen.
- Blitz BASIC (también conocido como BlitzMax) suele contar referencias [12] y también admite un recolector de basura. Sin embargo, también incluye utilidades opcionales para usar punteros [13] y para asignar y liberar memoria directamente [14] .
- COBOL admite punteros [15] y asignación de montón [16] a partir de COBOL 2002, junto con un recolector de basura. [17]
- Cython proporciona una gestión de memoria manual opcional al permitir al usuario importar
malloc,realloc, yfreedesde C, que luego puede usar en el código Python. [18] - D proporciona a los programadores control total sobre su propio recolector de basura, incluida la capacidad de desactivarlo por completo. [19]
- Generalmente, Nim se recolecta como basura o se cuentan las referencias de forma predeterminada, según su configuración, pero el programador puede usar el interruptor
--mm:nonepara desasignar memoria manualmente. [20] - Objective-C y Objective-C++ admiten el conteo de referencias opcional y la recolección de elementos no utilizados como alternativas a la gestión manual de la memoria (Apple dejó obsoleto el recolector de elementos no utilizados).
- PostScript originalmente requería que los desarrolladores recuperaran memoria manualmente usando los operadores
saveyrestore. PostScript Nivel 2 introdujo un recolector de basura, pero su uso es opcional. [21] - Rust admite el conteo de referencias opcional, pero se prefiere la gestión manual de la memoria.
- Scala normalmente administra la memoria automáticamente en sus destinos JVM y JavaScript. Sin embargo, el compilador nativo de Scala basado en LLVM admite el uso de punteros, así como la asignación de montón al estilo C (por ejemplo
malloc,realloc,free) y la asignación de pila (stackalloc). [22] - Swift normalmente utiliza el conteo de referencias, pero también permite al usuario administrar manualmente la memoria usando
mallocyfree. En las plataformas de Apple, estas funciones se importan desde la biblioteca estándar de C (que se importa desdeFoundation,AppKitoUIKit); en Linux, el desarrollador debe importarGlibc, yucrten Windows. - V (Vlang) utiliza GC de forma predeterminada para comodidad del usuario, que se puede desactivar (-gc none). Los usuarios pueden administrar la memoria manualmente. También pueden utilizar la liberación automática (-autofree) o la asignación de arena (-prealloc).
- Vala utiliza el conteo de referencias de forma predeterminada, pero el usuario es libre de administrar la memoria manualmente si lo desea. [23]
Lenguajes 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 basa en la estructura de datos de lista .
Pequeños idiomas
Los lenguajes pequeños [26] atienden a un dominio de problemas especializado.
- awk – se utiliza para manipular archivos de texto.
- sed – analiza y transforma texto
- SQL : tiene solo unas pocas palabras clave y no todas las construcciones necesarias para un lenguaje de programación completo [a] : muchos sistemas de administración de bases de datos extienden SQL con construcciones adicionales como lenguaje de procedimiento almacenado
Lenguajes basados en lógica
Los lenguajes basados en la lógica especifican un conjunto de atributos que debe tener una solución, en lugar de un conjunto de pasos para obtener una solución.
Los lenguajes notables que siguen este paradigma de programación incluyen:
- ALF
- Alma-0
- Curry
- Registro de datos
- Volante
- Flix (un lenguaje de programación funcional con restricciones de registro de datos de primera clase)
- Jano
- λProlog (un lenguaje de programación lógica que presenta tipado polimórfico, programación modular y programación de orden superior)
- Oz y el sistema de programación Mozart multiplataforma Oz
- Prolog (formula datos y el mecanismo de evaluación del programa como una forma especial de lógica matemática llamada lógica de Horn y un mecanismo de prueba general llamado resolución lógica )
- Mercurio (basado en Prolog)
- Visual Prolog (extensión de Prolog orientada a objetos)
- ROOP
- Soufflé
Lenguajes de máquina
Los lenguajes de máquina son ejecutables directamente por la CPU de una computadora. Por lo general, se formulan como patrones de bits, generalmente representados en 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 de 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 soportarlo (por ejemplo, los procesadores DEC VAX incluyeron un modo de compatibilidad PDP-11). Son (esencialmente) siempre definidos por el desarrollador de la CPU, no por terceros. [b] La versión simbólica, el lenguaje ensamblador del procesador , también es definido por el desarrollador, en la mayoría de los casos. Algunos conjuntos de instrucciones de código de máquina comúnmente utilizados son:
- RISC-V
- BRAZO
- Original de 32 bits
- Instrucciones Thumb de 16 bits (subconjunto de registros utilizados)
- 64 bits (cambio importante en la arquitectura)
- DIC :
- Intel 8008 , 8080 y 8085
- x86 :
- 16 bits x86 , utilizado por primera vez en Intel 8086
- Intel 8086 y 8088 (este último se utilizó en la primera y temprana IBM PC )
- Intel 80186
- Intel 80286 (el primer procesador x86 con modo protegido , utilizado en el IBM PC AT )
- IA-32 , introducido en el 80386
- x86-64 : la especificación original fue creada por AMD . Existen variantes de distintos proveedores, pero básicamente son las mismas:
- 16 bits x86 , utilizado por primera vez en Intel 8086
- IBM [c]
- MIPS
- Motorola 6800 ( 8 bits )
- Serie Motorola 68000 (CPU utilizadas en los primeros ordenadores Macintosh y Sun )
- Tecnología MOS 65xx ( 8 bits )
- 6502 (CPU para computadoras VIC-20 , BBC Micro , Apple II y Atari de 8 bits )
- 6510 (CPU para Commodore 64 )
- Western Design Center 65816/65802 (CPU para Apple IIGS y (variante) Super Nintendo Entertainment System )
- Semiconductor nacional NS320xx
- POWER , utilizado por primera vez en IBM RS/6000
- PowerPC – utilizado en Power Macintosh y en muchas consolas de juegos , particularmente las de séptima generación .
- Power ISA : una evolución de PowerPC .
- Sun Microsystems (ahora Oracle ) SPARC
- UNIVAC [c]
- Computadoras de 30 bits: 490 , 492, 494, 1230
- Computadoras
de 36 bits
- 1101 , 1103 , 1105
- Serie 1100/2200
- Estación de esquí Elbrus 2000
Lenguajes macro
Lenguajes con macrosustitución textual
Los lenguajes macro transforman un archivo de código fuente en otro. Una "macro" es esencialmente un fragmento de texto corto que se expande en uno más largo (no debe confundirse con las macros higiénicas ), posiblemente con sustitución de parámetros. Se utilizan a menudo para preprocesar el código fuente. Los preprocesadores también pueden proporcionar funciones como la inclusión de archivos .
Los lenguajes macro pueden estar restringidos a actuar en regiones de código especialmente etiquetadas (prefijadas con un #en el caso del preprocesador de C). Alternativamente, pueden no hacerlo, pero en este caso sigue siendo a menudo indeseable (por ejemplo) expandir una macro incrustada en un literal de cadena , por lo que aún necesitan un conocimiento rudimentario de la sintaxis. Siendo ese el caso, a menudo siguen siendo aplicables a más de un lenguaje. Contraste con los lenguajes que se pueden incrustar en el código fuente como PHP , que tienen todas las funciones.
- cpp (el preprocesador C)
- m4 (originalmente de AT&T, incluido con Unix)
- ML/I (procesador de macros de propósito general)
- TTM (desarrollado en el Instituto Tecnológico de California)
Lenguajes de macros de aplicación
Se han incorporado a las aplicaciones lenguajes de programación como Tcl y ECMAScript ( ActionScript , ECMAScript para XML , JavaScript , JScript ). A veces se los denomina "lenguajes de macros", aunque en un sentido algo diferente al de las macros de sustitución de texto 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 realizaría en tiempo de ejecución durante el tiempo de compilación . En muchos casos, esto permite a los programadores hacer más en la misma cantidad de tiempo que les llevaría escribir todo el código manualmente.
- C++
- CWIC
- Rizo
- D
- Emacs Lisp
- Elixir
- F#
- Genial
- Haskell
- Julia
- Ceceo
- Lua
- Sistema Maude
- META II (y META I, un subconjunto)
- Meta OCaml
- Nemerle
- Nim
- Perl
- Pitón
- Raku [27]
- Rojo
- Anillo
- Rubí
- Óxido [28]
- Esquema
- SecuenciaL
- Charla informal
- Fuente
- ÁRBOL-META
- Wolfram Mathematica ( lenguaje Wolfram )
Lenguajes multiparadigma
Los lenguajes multiparadigma admiten 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 que los programadores utilicen la mejor herramienta para un trabajo, admitiendo que ningún paradigma resuelve todos los problemas de la manera más fácil o eficiente.
- 1C: Lenguaje de programación empresarial (genérico, imperativo, orientado a objetos, basado en prototipos, funcional)
- Ada ( concurrente , distribuida , genérica ( metaprogramación de plantillas ), imperativa , orientada a objetos ( basada en clases ))
- ALF ( funcional , lógico )
- Alma-0 (restricción, imperativo, lógica)
- APL (funcional, imperativo, orientado a objetos (basado en clases))
- BETA (funcional, imperativo, orientado a objetos (basado en clases))
- C++ (genérico, imperativo, orientado a objetos (basado en clases), funcional, metaprogramación)
- C# (genérico, imperativo, orientado a objetos (basado en clases), funcional, declarativo)
- Ceilán (genérico, imperativo, orientado a objetos (basado en clases), funcional, declarativo)
- ChucK (imperativo, orientado a objetos, basado en el tiempo, concurrente, sobre la marcha)
- Cobra (genérico, imperativo, orientado a objetos (basado en clases), funcional, contractual)
- Common Lisp (funcional, imperativo, orientado a objetos (basado en clases), orientado a aspectos (el usuario puede agregar otros paradigmas, por ejemplo, lógica))
- Curl (funcional, imperativo, orientado a objetos (basado en clases), metaprogramación)
- Curry (concurrente, funcional, lógico)
- D (genérico, imperativo, funcional, orientado a objetos (basado en clases), metaprogramación)
- Dart (genérico, imperativo, funcional, orientado a objetos (basado en clases))
- Delphi Object Pascal (genérico, imperativo, orientado a objetos (basado en clases), metaprogramación)
- Dylan (funcional, orientado a objetos (basado en clases))
- ECMAScript (funcional, imperativo, orientado a objetos (basado en prototipos))
- Eiffel (imperativo, orientado a objetos (basado en clases), genérico, funcional (agentes), concurrente (SCOOP))
- F# (funcional, genérico, orientado a objetos (basado en clases), orientado al lenguaje)
- Fantom (funcional, orientado a objetos (basado en clases))
- Go , Golang (imperativo, procedimental),
- Groovy (funcional, orientado a objetos (basado en clases), imperativo, procedimental)
- Puerto
- Brincar
- J (funcional, imperativo, orientado a objetos (basado en clases))
- Julia (imperativo, despacho múltiple ("orientado a objetos"), funcional, metaprogramación)
- LabVIEW ( visual , flujo de datos , concurrente, modular, funcional, orientado a objetos, secuencias de comandos)
- Lua (funcional, imperativo, orientado a objetos ( basado en prototipos ))
- Mercurio (funcional, lógico, orientado a objetos)
- Protocolos de metaobjetos (orientados a objetos (basados en clases, basados en prototipos))
- Nemerle (funcional, orientado a objetos (basado en clases), imperativo, metaprogramación)
- Objective-C (imperativo, orientado a objetos (basado en clases), reflexivo)
- OCaml (funcional, imperativo, orientado a objetos (basado en clases), modular)
- Oz (funcional (evaluación: ansioso , perezoso ), lógico, de restricción , imperativo, orientado a objetos (basado en clases), concurrente, distribuido) y sistema de programación Mozart multiplataforma Oz
- Object Pascal (imperativo, orientado a objetos (basado en clases))
- Perl (imperativo, funcional (no puede ser puramente funcional), orientado a objetos, orientado a clases, orientado a aspectos (a través de módulos))
- PHP (imperativo, orientado a objetos, funcional (no puede ser puramente funcional))
- Pike (lenguaje de programación interpretado, de propósito general, de alto nivel, multiplataforma y dinámico)
- Prograph (flujo de datos, orientado a objetos (basado en clases), visual)
- Python (funcional, compilado, interpretado, orientado a objetos (basado en clases), imperativo, metaprogramación, extensión, impuro, modo interactivo, iterativo, reflexivo, secuencias de comandos)
- R (matriz, interpretada, impura, modo interactivo, basada en listas, orientada a objetos, basada en prototipos, secuencias de comandos)
- Racket (funcional, imperativo, orientado a objetos (basado en clases) y puede ser ampliado por el usuario)
- Raku (concurrente, concatenativo, funcional, metaprogramación genérica, imperativa, orientada a objetos de reflexión, pipelines, reactiva y a través de restricciones de bibliotecas, distribuida)
- Rebol (funcional, imperativo, orientado a objetos (basado en prototipos), metaprogramación (dialecto))
- Rojo (funcional, imperativo, orientado a objetos (basado en prototipos), metaprogramación (dialecto))
- ROOP (imperativo, lógico, orientado a objetos (basado en clases), basado en reglas)
- Anillo (imperativo, funcional, orientado a objetos (basado en clases), metaprogramación, declarativo, natural)
- Ruby (imperativo, funcional, orientado a objetos (basado en clases), metaprogramación)
- Rust (concurrente, funcional, imperativo, orientado a objetos, genérico, metaprogramación, compilado)
- Scala (funcional, orientado a objetos)
- Seed7 (imperativo, orientado a objetos, genérico)
- SISAL (concurrente, flujo de datos, funcional)
- Hojas de cálculo (funcionales, visuales)
- Swift (orientado a protocolos, orientado a objetos, funcional, imperativo, estructurado en bloques)
- Tcl (funcional, imperativo, orientado a objetos (basado en clases))
- Té (funcional, imperativo, orientado a objetos (basado en clases))
- V (Vlang) (funcional, imperativo, procedimental, estructurado, concurrente)
- Windows PowerShell (funcional, imperativo, canalización, orientado a objetos (basado en clases))
- Wolfram Mathematica ( lenguaje Wolfram )
Análisis numérico
Varios lenguajes de programación de propósito general, como C y Python , también se utilizan para la computación técnica; esta lista se centra en lenguajes utilizados casi exclusivamente para la computación técnica.
Idiomas distintos del inglés
- Chino BÁSICO (Chino)
- Fjölnir (islandés)
- Idioma Symbolique d'Enseignement (francés)
- Rapira (ruso)
- ezhil (Tamil)
Lenguajes basados en clases y 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 los miembros. El paso de mensajes es un concepto clave, si no el principal, en los lenguajes orientados a objetos.
Las funciones polimórficas parametrizadas por la clase de algunos de sus argumentos se denominan normalmente métodos . En lenguajes con un único envío , las clases normalmente también incluyen definiciones de métodos. En lenguajes con varios envíos , los métodos se definen mediante funciones genéricas . Hay excepciones en las que los métodos de un único envío son funciones genéricas (por ejemplo, el sistema de objetos de Bigloo ).
- Ceceo común
- Cecilio
- Dylan
- Julia [d]
- Raku [29]
Despacho único
- ActionScript 3.0
- Actor
- Ada 95 y Ada 2005 (lenguaje multipropósito)
- APL
- BETA
- C++
- DO#
- Ceilán
- Dardo
- Oxygene (antes llamado Chrome)
- Arrojar
- Cobra
- Fusión fría
- Rizo
- D
- Lenguaje de especificación de aplicaciones distribuidas (DASL)
- Objeto Pascal de Delphi
- mi
- Ñu E
- Torre Eiffel
- Fortran 2003
- Fortaleza
- Gambas
- Lenguaje del creador de juegos
- Puerto
- Yo
- Java
- LabVIEW
- Lua
- Modula-2 (abstracción de datos, ocultamiento de información, tipificación fuerte, modularidad total)
- Modula-3 (se agregaron más funciones orientadas a objetos a Modula-2)
- Nemerle
- NetRexx
- Oberon-2 (equivalencia total de orientación a objetos en un estilo wirthiano original y fuertemente tipado)
- Objeto Pascal
- Objeto REXX
- Objective-C (un superconjunto de C que agrega un modelo de objetos derivado de Smalltalk y una sintaxis de paso de mensajes)
- OCaml
- Lenguaje empresarial avanzado (ABL) de OpenEdge
- Oz, sistema de programación de Mozart
- Perl 5
- PHP
- Lucio
- Prólogo
- Python (lenguaje interpretativo, opcionalmente orientado a objetos)
- Revolución (el programador no puede elegir los objetos)
- Anillo
- Rubí
- Escala
- Bar clandestino
- Simula (primer lenguaje orientado a objetos, desarrollado por Ole-Johan Dahl y Kristen Nygaard )
- Smalltalk (orientación a objetos pura, desarrollado en Xerox PARC )
- GIRAR
- Supercolisionador
- VBScript (lenguaje de 'scripts de macro' de Microsoft Office)
- Visual DataFlex
- Visual FoxPro
- Prólogo visual
- X++
- Xojo
- XOTcl
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:
- 1C: Lenguaje de programación empresarial
- Lenguaje concurrente basado en actores (ABCL, ABCL/1, ABCL/R, ABCL/R2, ABCL/c+)
- Ágora
- Cecilio
- Script ECMA
- Script de acción
- ECMAScript para XML
- JavaScript (primero llamado Mocha, luego LiveScript)
- Script JavaScript
- Juguetes electrónicos en Squeak
- Yo
- Lua
- MUGIR
- Escritura de Newton
- Obliq
- R
- Rebol
- Rojo
- Self (primer lenguaje basado en prototipos, derivado de Smalltalk )
- TADS
Reglas del fuera de juego en distintos idiomas
Los lenguajes de reglas fuera de juego denotan bloques de código por su sangría .
Lenguajes procedimentales
Los lenguajes de programación procedimental se basan en el concepto de unidad y alcance (el rango de visualización de datos) de una sentencia de código ejecutable. Un programa procedimental 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 se compone de uno o más procedimientos, también llamados función, rutina, subrutina o método, según el lenguaje. Algunos ejemplos de lenguajes procedimentales son:
- Ada (lenguaje multipropósito)
- ALGOL 58
- ALGOL 60 (diseño de lenguaje muy influyente)
- Lenguaje tipo ALGOL de máquina pequeña
- ALGOL 68
- Alma-0
- BÁSICO (éstos carecen de la mayor modularidad en (especialmente) las versiones anteriores a 1990)
- BCP
- DICHA
- do
- C++
- C# (similar a Java/C++)
- Ceilán
- ENFRIAR
- ChucK (sintaxis similar a C/Java, con nuevos elementos de sintaxis para tiempo y paralelismo)
- COBOL
- Cobra
- Fusión fría
- CPL (lenguaje de programación combinado)
- Rizo
- D
- Lenguaje de especificación de aplicaciones distribuidas (DASL) (combina programación declarativa y programación imperativa )
- Script ECMA
- Script de acción
- ECMAScript para XML
- JavaScript (primero llamado Mocha, luego LiveScript)
- Script JavaScript
- Fuente
- Torre Eiffel
- Adelante
- Fortran (mejor modularidad en estándares posteriores)
- GAUSS
- Ir
- Puerto
- Hiperconversación
- Java
- JOVIAL
- Julia
- Idioma H
- Lazo
- Modula-2 (basado fundamentalmente en módulos)
- MATLAB
- Colina baja
- MUMPS (la primera versión fue más modular que otros lenguajes de la época; el estándar se ha vuelto aún más modular desde entonces)
- Nemerle
- Nim
- Oberon , Oberon-2 (seguimientos mejorados, más pequeños, más rápidos y más seguros de Modula-2)
- OCaml
- Occam
- Mirador
- Pascal (sucesor de ALGOL 60, predecesor de Modula-2)
- Pascal libre (FPC)
- Objeto Pascal , Delphi
- PCASTL
- Perl
- Lucio
- SOCIEDAD ANÓNIMA
- PL/I (lenguaje de propósito general de gran tamaño, originalmente para mainframes IBM)
- Más
- Potencia Shell
- PROSA
- Pitón
- R
- Raku
- Rapira
- Juego de rol
- Óxido
- Jerga
- VBScript
- Visual Basic
- Visual FoxPro
- Wolfram Mathematica ( lenguaje Wolfram )
- Microsoft Dynamics AX (X++)
Lenguajes 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 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 nivel inferior como C. Lenguajes y plataformas que admiten la reflexión:
- Desconfianza
- Ceilán
- Encanto
- Arrojar
- CLI
- Cobra
- Componente Pascal BlackBox Component Builder
- Rizo
- Cifrar
- Objeto Pascal de Delphi
- Script ECMA
- Emacs Lisp
- Torre Eiffel
- Puerto
- Julia
- Máquina virtual Java
- Ceceo
- Lua
- Sistema Maude
- Oberon-2 – Sistema Oberon de la ETH
- Objetivo-C
- PCASTL
- Perl
- PHP
- Pico
- Poplog
- Potencia Shell
- Prólogo
- Pitón
- Raku [30]
- Rebol
- Rojo
- Anillo
- Rubí
- Smalltalk (orientación a objetos pura, originalmente de Xerox PARC )
- SNOBOL
- Tcl
- Wolfram Mathematica ( lenguaje Wolfram )
- XOTcl
- X++
- Xojo
Lenguajes basados en reglas
Los lenguajes basados en reglas crean instancias de reglas cuando se activan por condiciones en un conjunto de datos. De todas las activaciones posibles, se selecciona algún conjunto y se ejecutan las instrucciones que pertenecen a esas reglas. Los lenguajes basados en reglas incluyen: [ cita requerida ]
- ¡Ay!
- CLIPS
- Clara
- Reglas de manejo de restricciones
- Babea
- Lenguaje de programación del agente GOAL
- Cadena
- OPS5
- Prólogo
- ToonTalk – Los robots son reglas
- Wolfram Mathematica ( lenguaje Wolfram )
- XSLT [ cita requerida ]
Lenguajes de script
- Escritura de ángel
- Script de Apple
- Tecla de acceso rápido automática
- AutoEs
- AWK
- antes de Cristo
- Cáscara de frijol
- Intento
- Ch (Intérprete C/C++ integrable)
- CLI
- CLISTO
- Fusión fría
- Script ECMA
- Script de acción
- ECMAScript para XML
- JavaScript (primero llamado Mocha, luego LiveScript)
- Script JavaScript
- Fuente
- Emacs Lisp
- EJECUTIVO CMS
- EJECUTAR 2
- Lenguaje de creación de juegos (GML)
- Script GD
- Yo
- Jasón
- Julia (compilada sobre la marcha en código máquina , por defecto, interpretación también disponible)
- Máquina virtual Java
- Ksh
- Lazo
- Lua
- MAXScript
- MEL
- Objeto REXX (OREXX, OOREXX)
- Mirador
- Guión Pascal
- Perl
- PHP (destinado a servidores web)
- Potencia Shell
- Pitón
- R
- Raku
- Rebol
- Rojo
- Rexx
- Revolución
- Anillo
- Rubí
- Jerga
- sed
- Ella
- Charla informal
- Ardilla
- Té
- Tcl
- Script de torsión
- VBScript
- WebDNA , dedicado a sitios web basados en bases de datos
- Windows PowerShell ( CLI basada en .NET )
- Muchos lenguajes de comandos de shell, como Unix shell o DIGITAL Command Language (DCL) en VMS, tienen potentes capacidades de creación de scripts.
Lenguajes basados en pila
Los lenguajes basados en pila son un tipo de lenguaje estructurado de datos que se basa en la estructura de datos de pila .
Lenguajes sincrónicos
Los lenguajes de programación síncrona están optimizados para la programación de sistemas reactivos, sistemas que se interrumpen con frecuencia 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 constar de tipos de datos especiales, como "color" y "normal". Debido a la variedad de mercados de destino de los gráficos informáticos 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 un contenido más completo con menos gastos generales.
- Lenguaje ensamblador de gráficos de Adobe (AGAL) [31]
- Lenguaje ensamblador ARB (ensamblador ARB)
- Lenguaje de sombreado OpenGL (GLSL o glslang)
- Lenguaje de sombreado de alto nivel (HLSL) o lenguaje ensamblador de sombreadores DirectX
- Lenguaje de sombreado de PlayStation (PSSL)
- Lenguaje de sombreado de metales (MSL)
- Cg
Representación sin conexión
Los lenguajes de sombreado que se utilizan en la renderización sin conexión producen una calidad de imagen máxima. El procesamiento de estos sombreadores requiere mucho tiempo y la potencia computacional necesaria puede ser costosa debido a su capacidad para producir resultados fotorrealistas.
Lenguajes que manejan sintaxis
Estos lenguajes ayudan a generar analizadores léxicos y analizadores sintácticos para gramáticas libres de contexto .
- ANTR
- Coco/R (EBNF con semántica)
- GNU bison (versión de Yacc de la FSF)
- GNU Flex (versión FSF de Lex)
- lex (Análisis léxico, de Bell Labs)
- M4
- Análisis gramatical de expresiones (PEG)
- Prólogo
- Emacs Lisp
- Ceceo
- Raku [32]
- Sablé CC
- Esquema
- yacc (otro compilador-compilador, de Bell Labs)
- JavaCC
Idiomas del sistema
Los lenguajes de programación de sistemas se utilizan para tareas de bajo nivel, como la gestión de memoria o la gestión de tareas. Un lenguaje de programación de sistemas suele hacer referencia 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 normalmente requiere enfoques de desarrollo diferentes en comparación con el software de aplicación.
System software is computer software designed to operate and control the computer hardware, and to provide a platform for running application software. System software includes software categories such as operating systems, utility software, device drivers, compilers, and linkers. Examples of system languages include:
Transformation languages
Transformation languages serve the purpose of transforming (translating) source code specified in a certain formal language into a defined destination format code. It is most commonly used in intermediate components of more complex super-systems in order to adopt internal results for input into a succeeding processing routine.
Visual languages
Visual programming languages let users specify programs in a two-(or more)-dimensional way, instead of as one-dimensional text strings, via graphic layouts of various types. Some dataflow programming languages are also visual languages.
Wirth languages
Computer scientist Niklaus Wirth designed and implemented several influential languages.
- ALGOL W
- Euler
- Modula
- Oberon (Oberon, Oberon-07, Oberon-2)
- Pascal
- Object Pascal (umbrella name for Delphi, Free Pascal, Oxygene, others)
XML-based languages
These are languages based on or that operate on XML.
See also
- Programming paradigm
- IEC 61131-3 – a standard for programmable logic controller (PLC) languages
- List of educational programming languages
- List of markup languages
- Esoteric programming language
Notes
- ^ The objects of SQL are collections of database records, called tables. A full programming language can specify algorithms, irrespective of runtime. Thus an algorithm can be considered to generate usable results. In contrast, SQL can only select records that are limited to the current collection, the data at hand in the system, rather than produce a statement of the correctness of the result.
- ^ A notable exception would be the Soviet/Russian 1801 series CPU, which originally used their own domestic ISA, but were later redesigned to be PDP-11 compatible as a policy decision.
- ^ a b Submodels are not listed, only base models.
- ^ The concept of object with the traditional single-dispatch OO semantics is not present in Julia, instead with the more general multiple dispatch on different types at runtime.
- ^ Swift uses automatic reference counting.
References
- ^ "Operators". Retrieved 2024-05-13.
- ^ "wrap".
- ^ ""Aspects in Raku"".
- ^ "Christopher Diggins: What is a concatenative language". Drdobbs.com. 2008-12-31. Retrieved 2013-07-01.
- ^ "Feed operator".
- ^ Documentation » The Python Standard Library » Concurrent Execution
- ^ "Channels and other mechanisms".
- ^ "ProblemSolver".
- ^ a b "Indentation based syntax · rsdn/nemerle Wiki". GitHub. Retrieved 2022-03-18.
- ^ "Solidity: Solidity 0.8.11 documentation".
- ^ "Iterator".
- ^ "Memory Management · BlitzMax". Retrieved 2023-07-14.
- ^ "Pointers · BlitzMax". Retrieved 2023-07-14.
- ^ "BRL.Blitz · BlitzMax". Retrieved 2023-07-14.
- ^ "Using Pointers in an ILE COBOL Program - IBM Documentation". IBM. Retrieved 2023-07-14.
- ^ "HEAP - IBM Documentation". IBM. Retrieved 2023-07-14.
- ^ "SOM-based OO COBOL language elements that are changed - IBM Documentation". IBM. Retrieved 2023-07-14.
- ^ "Memory Allocation — Cython 3.0.0.dev0 documentation". Retrieved 2023-07-14.
- ^ "Garbage Collection". D Programming Language. Retrieved 2022-03-18.
- ^ "Nim's Memory Management". Retrieved 2022-03-18.
- ^ Adobe (February 1999). PostScript Language Reference, third edition (PDF). Addison-Wesley Publishing Company. pp. 56–65.
- ^ "Native code interoperability – Scala Native 0.4.14 documentation". Retrieved 2023-07-05.
- ^ "Projects/Vala/ReferenceHandling - GNOME Wiki!". Archived from the original on 2024-01-21. Retrieved 2022-03-21.
- ^ "Understanding Ownership - The Rust Programming Language". doc.rust-lang.org.
- ^ "Smart Pointers - The Rust Programming Language". doc.rust-lang.org.
- ^ Jon Bentley (AT&T) August 1986 CACM 29 (8) "Little Languages", pp 711-721 from his Programming Pearls column
- ^ "Meta-programming: What, why and how". 2011-12-14.
- ^ "Macros de procedimiento para generar código a partir de atributos". doc.rust-lang.org .
- ^ "Clases y roles".
- ^ "Protocolo de metaobjetos (MOP)".
- ^ Scabia, Marco. «¿Qué es AGAL?». Adobe Developer Connection . Adobe . Consultado el 8 de mayo de 2018 .
- ^ "Gramáticas".
- ^ Wulf, WA; Russell, DB; Haberman, AN (diciembre de 1971). "BLISS: Un lenguaje para la programación de sistemas". Comunicaciones de la ACM . 14 (12): 780–790. CiteSeerX 10.1.1.691.9765 . doi :10.1145/362919.362936. S2CID 9564255.
- ^ "Aplicaciones C++".
- ^ "Organizaciones que utilizan el lenguaje D". Lenguaje de programación D .
- ^ "Investigación de Mozilla". 1 de enero de 2014.