Динамический язык программирования

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Динамический язык программирования, в информатике — класс языков программирования высокого уровня, которые в runtime выполняют многие общие действия программирования, которые статический язык программирования выполняет во время компиляция.

Такое поведение может включать расширение программы путем добавления нового кода, расширения объектов и определений или изменения системы типов. Хотя подобное поведение может быть эмулировано практически в любом языке, с разной степенью сложности, трудности и затрат производительности, динамические языки предоставляют прямые инструменты для их использования. Многие из этих возможностей были впервые реализованы как собственные в языке программирования Lisp.

Большинство динамических языков также являются динамически типизированными, но не все. Динамические языки часто (но не всегда) называют скриптовый язык, хотя этот термин в узком смысле относится к языкам, специфичным для конкретной среды выполнения.

Оценка[править]

Некоторые динамические языки предлагают функцию eval'. Эта функция принимает строку или абстрактное синтаксическое дерево, содержащее код на языке, и выполняет его. Если этот код обозначает выражение, то возвращается результирующее значение. Erik Meijer и Peter Drayton отличают runtime code generation, предлагаемую eval, от dynamic loading, предлагаемой shared libraries, и предупреждают, что во многих случаях eval используется только для реализации функций высшего порядка (путем передачи функций в виде строк) или десериализации. [1].

Изменение объекта во время выполнения[править]

В динамическом языке тип или система объектов обычно могут быть изменены во время выполнения. Это может означать генерацию новых объектов из определения во время выполнения или на основе подмешивания ("примесь") существующих типов или объектов. Это также может означать изменение наследовяния или дерева типов и, таким образом, изменение поведения существующих типов (особенно в отношении вызова методов).

Источники[править]

Ссылки[править]

 
Используемые
в разработке

Ада A+ APL Atlast Forth AWL Язык ассемблера ActionScript ABAP/4 AutoIt AWK BeanShell Бейсик Си Кобол C++ C# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava JavaScript Limbo Lua Модула-3 Object Pascal Objective-C OCaml Oz Parser Паскаль Компонентный Паскаль Perl Pixilang PHP PowerBASIC Python ПЛ/1 Пролог Qi Ruby Scala Scheme Seed7 Smalltalk SQL PL/SQL Tcl TouchDesigner Vala Visual Basic (.NET) • X-Robot

Академические

Agda Clean Curry Idris Лого ML Оберон Planning C РЕФАЛ Симула

IEC 61131-3

Instruction List ST FBD Ladder Diagram (LD) • SFC

Прочие

Алгол Алгол 68 Модула-2 Миранда Hope НОРМИН Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL Brainfuck Befunge Malbolge Piet Spoon Unlambda Whitespace FALSE LOLCODE Глагол

Визуальные

G (LabVIEW) • Microsoft VPL Sikuli VisSim Алиса ДРАКОН Скретч

Прочее

ДинамическиеКомпилируемыеС ключевыми словами не на английском языке С C-style синтаксисом СинтаксисYoptaScript

Категория Языки программирования

Runi.svg Одним из источников этой статьи является статья в википроекте «Руниверсалис» («Руни», руни.рф), называющаяся «Динамический язык программирования».
Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC BY-SA.
Всем участникам Руниверсалиса предлагается прочитать «Обращение к участникам Руниверсалиса» основателя Циклопедии и «Почему Циклопедия?».