Articulo de referencia

Lista de lenguajes de programación por tipo

Esta es una lista de lenguajes de programación destacados , agrupados según sus atributos más relevantes. Dado que un lenguaje puede tener múltiples atributos, puede aparecer en...

Esta es una lista de lenguajes de programación destacados , agrupados según sus atributos más relevantes. Dado que un lenguaje puede tener múltiples atributos, puede aparecer en varios grupos.

Lenguajes de programación orientados a agentes

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

lenguajes de matrices

Los lenguajes de programación de matrices (también denominados vectoriales o multidimensionales ) generalizan las operaciones sobre 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 añadir nuevas funciones al código, conocidas como consejos , sin modificar dicho código. En su lugar, utiliza un punto de corte para implementar los consejos en bloques de código.

lenguajes ensamblador

Los lenguajes ensamblador se corresponden directamente con un lenguaje máquina (véase más abajo ), por lo que las instrucciones en código máquina aparecen en un formato comprensible para los humanos, aunque puede que no exista una correspondencia uno a uno entre una instrucción y una sentencia. Los lenguajes ensamblador 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 .

Lenguajes de autoría

Un lenguaje de autoría es un lenguaje de programación diseñado para que lo utilice una persona sin conocimientos técnicos 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:

Lenguajes compilados

Se trata de lenguajes que normalmente son procesados ​​por compiladores , aunque teóricamente cualquier lenguaje puede ser compilado o interpretado.

lenguajes de programación concatenativos

Un lenguaje de programación concatenativo es un lenguaje de programación de computadora sin puntos en el que todas las expresiones denotan funciones , y la yuxtaposición de expresiones denota composición de funciones .

Lenguajes concurrentes

Los lenguajes de paso de mensajes proporcionan construcciones de lenguaje para la concurrencia . El paradigma predominante para la 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 los procesos secuenciales comunicantes (CSP) o el cálculo π .

Lenguajes de programación con restricciones

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

Idiomas contractuales

El diseño por contrato (o programación por contrato) es la programación que utiliza precondiciones , postcondiciones e invariantes definidos .

Lenguajes de llaves

Un lenguaje de llaves tiene una sintaxis que define un bloque como las instrucciones entre llaves, también llamadas corchetes . 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:{}

Lenguajes 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 utilizan a menudo para reaccionar a eventos discretos o para procesar flujos de datos. Los 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 relación de entidades, las cuales asignan un conjunto de elementos a otros conjuntos. Los lenguajes orientados a datos incluyen:

Lenguajes de tablas de decisión

Las tablas de decisión pueden utilizarse 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 en los que 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 su flujo de control en detalle. La programación declarativa se contrapone a la programación imperativa mediante lenguajes de programación imperativos, donde el flujo de control se especifica mediante órdenes secuenciales (imperativos). Los lenguajes de programación (puramente) funcionales y lógicos también son declarativos y constituyen las principales subcategorías de la categoría declarativa. Esta sección incluye ejemplos adicionales que no pertenecen a dichas subcategorías.

Lenguajes integrables

En el código fuente

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

Los lenguajes integrados del lado del cliente están limitados por las capacidades del navegador o del cliente previsto. Su objetivo es proporcionar 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 prácticamente cualquier lenguaje puede integrarse en un servidor. El objetivo de tener fragmentos de código del lado del servidor integrados en una página web es generar marcado adicional de forma dinámica; el código en sí desaparece cuando se sirve la página, siendo reemplazado por su resultado.

Lado del servidor

  • PHP
  • VBScript
  • Tcl : lenguaje del lado del servidor en NaviServer y un componente esencial en los sistemas de la industria electrónica.

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

Lado del cliente

En código objeto

Se puede integrar una amplia variedad de lenguajes dinámicos o de scripting en código ejecutable compilado. Básicamente, el código objeto del intérprete del lenguaje debe vincularse al ejecutable. A continuación, se pueden pasar fragmentos de código fuente del lenguaje integrado a una función de evaluación como cadenas de texto. Los lenguajes de control de aplicaciones pueden implementarse de esta forma si el usuario introduce el código fuente. 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.

Lenguas esotéricas

Un lenguaje de programación esotérico es un lenguaje de programación diseñado para poner a prueba los límites del diseño de lenguajes de programación informática, como 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.

Lenguas de cuarta generación

Los lenguajes de programación de cuarta generación son lenguajes de programación de alto nivel diseñados en torno a sistemas de bases de datos . Generalmente se utilizan en entornos comerciales.

Lenguajes funcionales

Los lenguajes de programación funcional definen los programas y las subrutinas como funciones matemáticas y los tratan como de primera clase. Muchos de los llamados lenguajes funcionales son "impuros", ya que 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 los circuitos electrónicos, y más comúnmente, de los circuitos lógicos digitales. Las dos variantes de HDL más utilizadas y con mayor soporte en la industria son Verilog y VHDL . Los lenguajes de descripción de hardware incluyen:

Lenguajes de descripción de hardware (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/de señal mixta)

Lenguajes de descripción de hardware (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. Aquí hay una lista de lenguajes de programación que siguen el paradigma imperativo :

Idiomas del modo interactivo

Conocidos como REPL (por sus siglas en inglés), los lenguajes en modo interactivo actúan como una especie de intérprete de comandos: las expresiones o instrucciones se pueden introducir una a una, y el resultado de su evaluación se ve inmediatamente.

Lenguas interpretadas

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

Lenguajes iterativos

Los lenguajes iterativos se construyen en torno a generadores o los ofrecen .

Idiomas según el tipo de gestión de memoria.

Idiomas recogidos de basura

La recolección de basura (GC, por sus siglas en inglés) es una forma de administración automática de memoria. El recolector de basura intenta recuperar la memoria que fue asignada por el programa pero que ya no se utiliza.

Lenguajes con gestión manual de la memoria

Idiomas con gestión de memoria manual opcional

Algunos lenguajes de programación que no tienen la capacidad inherente de administrar manualmente la memoria, como Cython , [ 31 ] Swift , [ c ] y Scala [ 32 ] (solo Scala Native), pueden importar o llamar funciones como mallocy freedesde C a través de una interfaz de función externa .

Lenguajes con gestión de memoria determinista

Lenguajes con conteo 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 lista .

Lenguas pequeñas

Los lenguajes pequeños [ 35 ] sirven a un dominio de problemas especializado.

  • awk – se utiliza para la manipulación de 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 [ d ] – muchos sistemas de gestión de bases de datos extienden SQL con construcciones adicionales como lenguaje de procedimientos almacenados
  • XPL : un lenguaje diseñado para, aunque no limitado a, la escritura de compiladores.

Lenguajes basados ​​en la lógica

Los lenguajes basados ​​en 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.

Entre los lenguajes de programación más destacados que siguen este paradigma se incluyen:

Lenguajes de máquina

Los lenguajes de máquina son ejecutables directamente por la CPU de una computadora. Suelen formularse como patrones de bits, representados normalmente 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, los pines del encapsulado de la CPU para microprocesadores) y la configuración lógica de 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 incluían un modo de compatibilidad con PDP-11). Estos lenguajes son (esencialmente) siempre definidos por el desarrollador de la CPU, no por terceros. [ e ] La versión simbólica, el lenguaje ensamblador del procesador , también es definida por el desarrollador, en la mayoría de los casos. Algunos conjuntos de instrucciones de código máquina de uso común son:

Lenguajes de macro

Lenguajes de macros de sustitución de texto

Los lenguajes de macros 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 (que 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 funcionalidades como la inclusión de archivos .

Los lenguajes de macros pueden estar restringidos a actuar sobre regiones de código especialmente etiquetadas (con el prefijo `a` #en el caso del preprocesador de C). Alternativamente, pueden no estarlo, 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 requieren un conocimiento básico de sintaxis. En ese caso, a menudo siguen siendo aplicables a más de un lenguaje. Compárese con lenguajes incrustables en el código fuente como PHP , que son completamente funcionales.

  • Preprocesador de 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

Los lenguajes de scripting como Tcl y ECMAScript ( ActionScript , ECMAScript para XML , JavaScript , JScript ) se han integrado en las aplicaciones. A veces se les 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 consiste en escribir programas que escriben o manipulan otros programas, incluso a sí mismos, como si fueran sus datos, o que realizan parte del trabajo que normalmente se haría en tiempo de ejecución , pero durante la compilación . En muchos casos, esto permite a los programadores hacer más en el mismo tiempo que les llevaría escribir todo el código manualmente.

Lenguajes modulares

La programación modular es un paradigma de programación que organiza funciones y símbolos en módulos independientes.

Lenguas multiparadigmáticas

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 que los programadores puedan usar la herramienta más adecuada para cada tarea, reconociendo que ningún paradigma resuelve todos los problemas de la manera más sencilla o eficiente.

  • 1C: Lenguaje de programación empresarial (genérico, imperativo, orientado a objetos, basado en prototipos, funcional)
  • Ada ( concurrente , distribuido , genérico ( metaprogramación con plantillas ), imperativo , orientado a objetos ( basado en clases ))
  • ALF ( funcional , lógica )
  • 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)
  • Ceylon (genérico, imperativo, orientado a objetos (basado en clases), funcional, declarativo)
  • ChucK (imperativo, orientado a objetos, basado en tiempo, concurrente, sobre la marcha)
  • Cobra (genérica, imperativa, orientada a objetos (basada en clases), funcional, contractual)
  • Common Lisp (funcional, imperativo, orientado a objetos (basado en clases), orientado a aspectos (el usuario puede añadir otros paradigmas, por ejemplo, lógica))
  • Curl (funcional, imperativo, orientado a objetos (basado en clases), metaprogramación)
  • Curry (concurrente, funcional, lógica)
  • 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))
  • Ir (imperativo, procedimental),
  • Groovy (funcional, orientado a objetos (basado en clases), imperativo, procedimental)
  • Puerto
  • Brincar
  • J (funcional, imperativo, orientado a objetos (basado en clases))
  • Java (genérico, imperativo, orientado a objetos (basado en clases), funcional)
  • Julia (imperativo, despacho múltiple ("orientado a objetos"), funcional, metaprogramación)
  • LabVIEW ( visual , flujo de datos , concurrente, modular, funcional, orientado a objetos, scripting)
  • 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: ansiosa , perezosa ), lógica, restricción , imperativo, orientado a objetos (basado en clases), concurrente, distribuido) y Oz multiplataforma del sistema de programación Mozart
  • 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, scripting)
  • R (matriz, interpretado, impuro, modo interactivo, basado en listas, basado en prototipos orientado a objetos, scripting)
  • Racket (funcional, imperativo, orientado a objetos (basado en clases) y extensible por el usuario)
  • Raku (concurrente, concatenativo, funcional, metaprogramación genérica, imperativo, orientado a objetos por reflexión, pipelines, reactivo y mediante restricciones de bibliotecas, distribuido)
  • Rebol (funcional, imperativo, orientado a objetos (basado en prototipos), metaprogramación (dialectal))
  • Rojo (funcional, imperativo, orientado a objetos (basado en prototipos), metaprogramación (dialectal))
  • 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))
    • (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

Si bien 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 los lenguajes que se utilizan casi exclusivamente para la computación técnica.

Idiomas no basados ​​en el inglés

Lenguajes orientados a objetos basados ​​en clases

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 principal, en los lenguajes orientados a objetos.

Las funciones polimórficas parametrizadas por la clase de algunos de sus argumentos se denominan típicamente métodos . En lenguajes con despacho simple , las clases también suelen incluir definiciones de métodos. En lenguajes con despacho múltiple , los métodos se definen mediante funciones genéricas . Existen excepciones en las que los métodos de despacho simple son funciones genéricas (por ejemplo, el sistema de objetos de Bigloo ).

Envío único

Object-oriented prototype-based languages

Prototype-based languages are object-oriented languages where the distinction between classes and instances has been removed:

Off-side rule languages

Off-side rule languages denote blocks of code by their indentation.

Procedural languages

Procedural programming languages are based on the concept of the unit and scope (the data viewing range) of an executable code statement. A procedural program is composed of one or more units or modules, either user coded or provided in a code library; each module is composed of one or more procedures, also called a function, routine, subroutine, or method, depending on the language. Examples of procedural languages include:

Query languages

Reflective languages

Reflective programming languages let programs examine and possibly modify their high-level structure at runtime or compile-time. This is most common in high-level virtual machine programming languages like Smalltalk, and less common in lower-level programming languages like C. Languages and platforms supporting reflection:

Rule-based languages

Rule-based languages instantiate rules when activated by conditions in a set of data. Of all possible activations, some set is selected and the statements belonging to those rules execute. Rule-based languages include:

Scripting languages

Stack-based languages

Stack-based languages are a type of data-structured language that are based on the stack data structure.

Synchronous languages

Synchronous programming languages are optimized for programming reactive systems, systems that are often interrupted and must respond quickly. Many such systems are also called realtime systems, and are used often in embedded systems.

Examples:

Shading languages

A shading language is a graphics programming language adapted to programming shader effects. Such language forms usually consist of special data types, like "color" and "normal". Due to the variety of target markets for 3D computer graphics.

Real-time rendering

They provide both higher hardware abstraction and a more flexible programming model than previous paradigms which hardcoded transformation and shading equations. This gives the programmer greater control over the rendering process and delivers richer content at lower overhead.

Offline rendering

Shading languages used in offline rendering produce maximum image quality. Processing such shaders is time-consuming. The computational power required can be expensive because of their ability to produce photorealistic results.

Syntax-handling languages

These languages assist with generating lexical analyzers and parsers for context-free grammars.

System languages

A system programming language is for low-level tasks like memory management or task management; it usually refers to a language used for systems programming; such languages are designed for writing system software, which usually requires different development approaches relative to application software.

System software is computer software designed to operate and control computer hardware, and provide a platform to run 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.

XML-based languages

These are languages based on or that operate on XML.

See also

Notes

  1. Some Ada implementations include a garbage collector,[17] though the language specification does not require its inclusion.
  2. Developers initially had to manually reclaim memory using the save and restore operators. PostScript Level 2 introduced a garbage collector, but its usage is optional.[28]
  3. On Apple platforms, these functions are imported from the C standard library (which is imported from Foundation, AppKit or UIKit); on Linux, the developer needs to import Glibc, and ucrt on Windows.
  4. 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.
  5. 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.
  6. 12Submodels are not listed, only base models.
  7. 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.
  8. Swift uses automatic reference counting.

References

  1. "Operators". Retrieved 2024-05-13.
  2. "wrap".
  3. ""Aspects in Raku"".
  4. Documentation » The Python Standard Library » Concurrent Execution
  5. "Channels and other mechanisms".
  6. "ProblemSolver".
  7. Bright, Walter (2014-11-01). "D Programming Language, Contract Programming". Digital Mars. Retrieved 2014-11-10.
  8. Hodges, Nick. "Write Cleaner, Higher Quality Code with Class Contracts in Delphi Prism". Embarcadero Technologies. Archived from the original on 26 April 2021. Retrieved 20 January 2016.
  9. Findler, Felleisen Contracts for Higher-Order Functions
  10. "Scala Standard Library Docs - Assertions". EPFL. Retrieved 2019-05-24.
  11. Strong typing as another "contract enforcing" in Scala, see discussion at scala-lang.org/.
  12. 12"Indentation based syntax · rsdn/nemerle Wiki". GitHub. Retrieved 2022-03-18.
  13. "Solidity: Solidity 0.8.11 documentation".
  14. "Iterator".
  15. 12"std::pointer_safety - cppreference.com". en.cppreference.com. Retrieved 2024-12-09.
  16. JF Bastien; Alisdair Meredith (2021-04-16). "Removing Garbage Collection Support".
  17. "Conservative Garbage Collection for GNAT". Florian Weimer's Home Page. Retrieved 2025-03-12.
  18. "Memory Management · BlitzMax". Retrieved 2023-07-14.
  19. "Pointers · BlitzMax". Retrieved 2023-07-14.
  20. "BRL.Blitz · BlitzMax". Retrieved 2023-07-14.
  21. JF Bastien; Alisdair Meredith (2021-04-16). "Removing Garbage Collection Support".
  22. "Using Pointers in an ILE COBOL Program - IBM Documentation". IBM. June 2012. Retrieved 2023-07-14.
  23. "HEAP - IBM Documentation". IBM. Retrieved 2023-07-14.
  24. "SOM-based OO COBOL language elements that are changed - IBM Documentation". IBM. Retrieved 2023-07-14.
  25. "Garbage Collection". D Programming Language. Retrieved 2022-03-18.
  26. "Nim's Memory Management". Retrieved 2022-03-18.
  27. "About Memory Management". Apple Developer. Retrieved 2025-03-12.
  28. Adobe (February 1999). PostScript Language Reference, third edition(PDF). Addison-Wesley Publishing Company. pp. 56–65.
  29. "V Documentation". Retrieved 2025-03-12.
  30. "Projects/Vala/ReferenceHandling - GNOME Wiki!". Archived from the original on 2024-01-21. Retrieved 2022-03-21.
  31. "Memory Allocation — Cython 3.0.0.dev0 documentation". Retrieved 2023-07-14.
  32. "Native code interoperability – Scala Native 0.4.14 documentation". Retrieved 2023-07-05.
  33. "Understanding Ownership - The Rust Programming Language". doc.rust-lang.org.
  34. "Smart Pointers - The Rust Programming Language". doc.rust-lang.org.
  35. Jon Bentley (AT&T) August 1986 CACM29 (8) "Little Languages", pp 711-721 from his Programming Pearls column
  36. "Meta-programming: What, why and how". 2011-12-14.
  37. "Procedural Macros for Generating Code from Attributes". doc.rust-lang.org.
  38. ECMAScript® 2015 Language Specification, 15.2 Modules
  39. "class Module - Documentation for Ruby 3.5".
  40. "Classes and Roles".
  41. "Meta-object protocol (MOP)".
  42. The Rust Team (25 May 2026). "Module any". docs.rust-lang.org. The Rust Team.
  43. El equipo de Rust (25 de mayo de 2026). "Campo de módulo" . docs.rust-lang.org . El equipo de Rust.
  44. "JBang" . jbang.dev . Consultado el 11 de septiembre de 2025 .
  45. Scabia, Marco. "¿Qué es AGAL?" . Adobe Developer Connection . Adobe . Consultado el 8 de mayo de 2018 .
  46. "Gramáticas" .
  47. Wulf, WA; Russell, DB; Haberman, AN (diciembre de 1971). "BLISS: Un lenguaje para la programación de sistemas". Communications of the ACM . 14 (12): 780– 790. CiteSeerX 10.1.1.691.9765 . doi : 10.1145/362919.362936 . S2CID 9564255 .  
  48. "Aplicaciones C++" .
  49. "Organizaciones que utilizan el lenguaje D" . Lenguaje de programación D.
  50. "Investigación de Mozilla" . 1 de enero de 2014.