| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Философия программирования > В чем прикол динамической типизации? |
| Автор: nerezus 14.1.2007, 16:04 |
| Пишу в основном на пхп и питоне. Динамическая типизация. Но в чем плюсы этой динамической типизации? Вижу только минусы: - Нет нормальной проверки кода на лету в IDE(перебрал все лучшие IDE). - Нет, к примеру, автодополнения в IDE, кроме примитивных случаев типа $a = new SomeClass(); $a->... А плюсы? |
| Автор: VaiMR 16.1.2007, 03:45 |
| Если я правильно понимаю термин "динамическая типизация", то плюсы есть. Например ты описываешь класс, который работает с обьектом (например по экрану его перемещает), но сам обект не известен и класс при этом самодостаточен (инкапсуляция). А затем от него уже порождаются новые классы (точка, квадрат, куб и т. д.), но уже не надо писать код для их перемещения (вращения или еще чего), они уже наследовали эти свойства от предка(наследование), при этом могут приобретать новые свойства (полиморфизм). На этом построено все современное программирование (Обьектно-Ориентированное Программирование). вот в си++: ios <- предок istream ostream <- потомки 1 предка iostream <- потомок потомков 1 ... Аналогичный пример: список, который работает с любыми данными (стандартными или определенными пользователем(в см. программистом)). Он умеет все что должен уметь класс - список, но самостоятельно работать не может, а в его потомках определяется тип данных и с ними уже можно работать. |
| Автор: nerezus 16.1.2007, 07:49 |
| VaiMR, эм... это называется наследование и абстрактные классы. |
| Автор: Sardar 16.1.2007, 16:53 |
| Возможность не описывать интерфейсами что ты хочешь. К тому же в популярных языках нет "вычисляемых" интерфейсов, т.е. разработчик класса должен сам обьявить какие интерфейсы он имплементирует. Отсюда при склейке нескольких либ потребуються адаптеры/врапперы. В динамике в обьекты добавляемой либы можно добавить (на лету) необходимое API, хотя на практике так мало кто делает. Если в языке есть:
Ну и раньше когда была разница между обьект-значение и ссылка-на-обьект (C++), то жёсткие типы имели значение. Сейчас по моему такое редко встретишь. Все поняли, что обьекты в куче, а оперируем через ссылки - это наиболее гибкая техника. |
| Автор: Artemios 24.1.2007, 03:06 | ||
|
| Автор: pythonwin 24.1.2007, 14:27 |
| Lotus Script можно поставить инструкцию в начале кода и у тебя динамическая типизация. а не поставил - нужно прописывать что и какого типа |
| Автор: Tamerlann 22.8.2007, 10:40 |
| Динамическая типизация, как правило, является аатрибутом скриптовых языков (например, Python). Главное приемущество динамической типизации, как и многих других особенностей этих языков, в том, что это значительно сокращает время разработки и время изменения программы. Элементарно - просто не нужно указывать типы всех переменыых, и это уже экономит время. Кроме того, динамическая типизация дает еще более высокий уровень абстракции. Нас уже не интересует конкретный тип переменной, мы просто используем объект, зная, что он обладает нужными нам свойствами и поведением. Мы можем заменить его на другой, удовлетворяющий тем же требованиям объект, и при этом, не переколбасив весь код изменяя тип переменной! Такие программы очень легко изменять, когда, например, заказчик круто изменяет требования, а это уж конечно |
| Автор: Maksym 22.8.2007, 11:48 |
Спорно. Динамическая типизация требует от программиста очень высокой дисциплины, чтобы стабильно писать управляемый, простой в сопровождении код. |
| Автор: nerezus 22.8.2007, 12:24 | ||||
|
| Автор: dm9 1.9.2007, 16:56 | ||
Намёк: 1) Zend Studio 5 (не 4, а именно 5); 2) /** @var my_class */ перед свойством объекта; 3) /* @var $my_var my_class */, например, внутри foreach ($something as $my_var). |
| Автор: Tamerlann 27.10.2007, 19:38 | ||||
ну, есть хорошие IDE, а есть не очень ;)
|
| Автор: Tamerlann 27.10.2007, 20:04 | ||
100% agree. В случае разработки более менее крупных проектов с использованием динамических языков приходится больше внимания уделять проектировнию. При кодировании накосячить можно запросто, это действительно минус. |
| Автор: pythonwin 28.10.2007, 06:53 | ||
можно и в паскале накосячить - косяки зависят больше от программиста, чем от языка |
| Автор: serger 7.11.2007, 08:36 |
| ИМХО... Языки с динамической типизацией удобнее для представления данных. Когда нужно, допустим, просто отобразить данные или перевести в стандартную форму.. Соответственно, принцип отображения у каждого типа свой, но если сложным образом не обрабатывать значения или обрабатывать в одном контексте, то все обращиня к типам можно свести к нескольким типовым однообразным операциям. И наоборот, строгая типизация помогает для универсальной обработке данных, где важно знать что мы обрабатываем и контролировать область обработки объектов. И это в принципе логично. |