В чем разница между статическими и динамическими языками программирования? Я знаю, что речь идет о системах типов, но я ищу более четкие разъяснения.
Разница между статическим и динамическим языками программирования
Ответ 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++ и т.д.) Предназначен для оптимизации эффективности аппаратного обеспечения, чтобы код, который вы пишете, выполнялся как можно быстрее.