Другие языки программирования и технологии

Объясните пожалуйста простыми словами что такое статический язык программирования а что такое динамический яп

Динамический язык — язык программирования, который позволяет определять типы данных и осуществлять синтаксический анализ и компиляцию «на лету», на этапе выполнения программы. Динамические языки удобны для быстрой разработки приложений.
Динамическая типизация является основным, но не единственным критерием динамического языка программирования.
К динамическим языкам относятся: Perl, Tcl, Python, PHP, Ruby, Smalltalk, JavaScript. Некоторыми динамическими чертами обладает также Visual Basic.

Статически язык программирования является полной противоположностью динамически типизированному языку: проверка его типа данных происходит на этапе компиляции, что означает, что тип данных переменной должен быть объявлен при написании программы. C / C ++, C # и JAVA являются типичными представителями статически типизированных языков.
ДБ
Денис Булгаков
79 414
Лучший ответ
Алексей Ярошенко а когда некто быстро разработал нечто на python, но начальник сказал, а теперь для ускорения выполнения пеереведи на... XYZ
Динамический язык - жаргонизм для обозначения языка с динамической типизацией. Статический язык - жаргонизм для обозначения языка со статической типизацией.

Статическая типизация:
Все переменные объявляются явно.
Тип переменной задаётся в момент объявления, он всегда однозначен и неизменен: не может быть такого, чтобы одна и та же локальная переменная внутри функции при разных вызовах этой функции получала разные типы.
Переменной можно присваивать только значения типа, указанного при объявлении этой переменной.

Динамическая типизация:
В некоторых языках переменные создаются автоматически - при первом присваивании значения переменной.
Даже если переменная объявляется явно, её тип не указывается.
Переменная не имеет типа - тип имеет только значение, присвоенное переменной.
Любой переменной можно присвоить значение любого типа.

Статическая типизация позволяет проверять очень многие вещи на этапе компиляции: в месте выполнения конструкции r + q компилятор знает типы r и q и сразу генерирует либо код сложения чисел, либо код конкатенации строк, либо сообщение об ошибке компиляции при несовместимости типов. В результате во время работы скомпилированной программы время на проверку типов не тратится.

В случае динамической типизации все проверки типов производятся во время выполнения программы: только в момент выполнения кода r + q интерпретатор может узнать типы значений r и q.

В результате код на динамическом языке проще и быстрее писать (не надо думать заранее о типах переменных), но он получается менее надёжным и намного (в среднем, раз в 10) более медленным, чем аналогичный код на статическом языке.

P.S. В динамическом PHP используется гибридная модель: поле класса и формальный параметр подпрограммы (это тоже виды переменных) могут иметь явно объявленный тип, блокирующий присваивание этой переменной значений других типов, но сами проверки типов производятся динамически - во время выполнения кода. Это не улучшает быстродействие (впрочем, у Python с быстродействием всё намного хуже), но существенно повышает надёжность кода.

Похожие вопросы