Разница между статическим и динамическим языками программирования

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

Ответ 1

Статический ввод

Статическая типизация означает, что типы известны и проверяются на правильность перед запуском вашей программы. Это часто выполняется компилятором языка. Например, следующий метод Java вызовет ошибку компиляции перед запуском вашей программы:

public void foo() {
    int x = 5;
    boolean b = x;
}

Динамический ввод

Динамическое типирование означает, что типы известны только как ваша программа. Например, следующий Python (3, если это имеет значение) script может запускаться без проблем:

def erroneous():
    s = 'cat' - 1

print('hi!')

Он действительно выведет hi!. Но если мы назовем erroneous:

def erroneous():
    s = 'cat' - 1

erroneous()
print('hi!')

A TypeError будет поднят во время выполнения, когда вызывается erroneous.

Ответ 2

Разница между статической и динамической заключается в том, что перед запуском программы, если проверяется и проверяется тип данных каждой переменной, то это язык программирования статического типа (например: - в случае C++ это делается компилятором). В динамическом языке программирования во время выполнения, если существует недопустимое присвоение переменной, которая нарушает ее тип данных, то для этого выдается ошибка.

Summary- Язык статического типа проверяет любое нарушение перед запуском программы, тогда как в языке динамического типа ошибка выдается, когда программа выполняется и переходит к той части, в которой было совершено нарушение.

Ответ 3

Язык статического типа проверяет любое нарушение перед запуском программы, тогда как в языке динамического типа ошибка выдается, когда программа работает и переходит к той части, где было совершено нарушение.

Ответ 4

Статически типизированный язык:

  • Вам нужно заранее объявить "тип" переменной.
NSString *string = @"Hello";
  • Вы не можете сохранить объект (конкретный или примитивный) другого типа в переменной с тем же именем
NSString *string = @"Hello";  
int string = 9; // Not legal, compile type warning

например, статически типизированный язык: Java, Objective-C и т.д.

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

  • Не нужно объявлять тип объекта. это будет выяснено во время выполнения.

string = 'Hello'

  • Нам разрешено изменять тип объекта для той же переменной, поскольку имена привязаны к объекту с оператором присваивания.
   string = 'Hello'  
   string = 9 // Allowed

например. динамически типизированного языка: Python и т.д.

Ответ 5

Если какой-либо язык программирования позволяет распределение памяти, выполняется во время компиляции, тогда этот язык программирования называется STATIC Programming Language. Примеры: C, C++... и т.д.

Если какой-либо язык программирования допускает выделение памяти во время выполнения, тогда этот язык программирования называется ДИНАМИЧЕСКИМ языком программирования. Примеры: Java, Python... и т.д.

Ответ 6

Все языки предназначены для перевода удобочитаемого кода в машинные инструкции. Динамический язык (Lisp, Perl, Python, Ruby) предназначен для оптимизации эффективности работы программиста, поэтому вы можете реализовать функциональность с меньшим количеством кода. Статический язык (C, C++ и т.д.) Предназначен для оптимизации эффективности аппаратного обеспечения, чтобы код, который вы пишете, выполнялся как можно быстрее.