![]() |
|
Модераторы: Се ля ви |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Пишу в основном на пхп и питоне. Динамическая типизация.
Но в чем плюсы этой динамической типизации? Вижу только минусы: - Нет нормальной проверки кода на лету в IDE(перебрал все лучшие IDE). - Нет, к примеру, автодополнения в IDE, кроме примитивных случаев типа $a = new SomeClass(); $a->... А плюсы? |
|||
|
||||
| VaiMR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 25.11.2006 Репутация: нет Всего: 2 |
Если я правильно понимаю термин "динамическая типизация", то плюсы есть.
Например ты описываешь класс, который работает с обьектом (например по экрану его перемещает), но сам обект не известен и класс при этом самодостаточен (инкапсуляция). А затем от него уже порождаются новые классы (точка, квадрат, куб и т. д.), но уже не надо писать код для их перемещения (вращения или еще чего), они уже наследовали эти свойства от предка(наследование), при этом могут приобретать новые свойства (полиморфизм). На этом построено все современное программирование (Обьектно-Ориентированное Программирование). вот в си++: ios <- предок istream ostream <- потомки 1 предка iostream <- потомок потомков 1 ... Аналогичный пример: список, который работает с любыми данными (стандартными или определенными пользователем(в см. программистом)). Он умеет все что должен уметь класс - список, но самостоятельно работать не может, а в его потомках определяется тип данных и с ними уже можно работать. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
VaiMR, эм... это называется наследование и абстрактные классы.
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Возможность не описывать интерфейсами что ты хочешь. К тому же в популярных языках нет "вычисляемых" интерфейсов, т.е. разработчик класса должен сам обьявить какие интерфейсы он имплементирует. Отсюда при склейке нескольких либ потребуються адаптеры/врапперы. В динамике в обьекты добавляемой либы можно добавить (на лету) необходимое API, хотя на практике так мало кто делает.
Если в языке есть:
Ну и раньше когда была разница между обьект-значение и ссылка-на-обьект (C++), то жёсткие типы имели значение. Сейчас по моему такое редко встретишь. Все поняли, что обьекты в куче, а оперируем через ссылки - это наиболее гибкая техника. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: нет Всего: 50 |
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
Lotus Script можно поставить инструкцию в начале кода и у тебя динамическая типизация. а не поставил - нужно прописывать что и какого типа
|
|||
|
||||
| Tamerlann |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 10.11.2002 Где: Минск, Беларусь Репутация: нет Всего: 2 |
Динамическая типизация, как правило, является аатрибутом скриптовых языков (например, Python). Главное приемущество динамической типизации, как и многих других особенностей этих языков, в том, что это значительно сокращает время разработки и время изменения программы. Элементарно - просто не нужно указывать типы всех переменыых, и это уже экономит время.
Кроме того, динамическая типизация дает еще более высокий уровень абстракции. Нас уже не интересует конкретный тип переменной, мы просто используем объект, зная, что он обладает нужными нам свойствами и поведением. Мы можем заменить его на другой, удовлетворяющий тем же требованиям объект, и при этом, не переколбасив весь код изменяя тип переменной! Такие программы очень легко изменять, когда, например, заказчик круто изменяет требования, а это уж конечно --------------------
http://timursdev.blogspot.com/ |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: нет Всего: 62 |
||||
|
||||
| nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
||||
|
|||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
||||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Намёк: 1) Zend Studio 5 (не 4, а именно 5); 2) /** @var my_class */ перед свойством объекта; 3) /* @var $my_var my_class */, например, внутри foreach ($something as $my_var). |
|||
|
||||
| Tamerlann |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 10.11.2002 Где: Минск, Беларусь Репутация: нет Всего: 2 |
ну, есть хорошие IDE, а есть не очень ;)
--------------------
http://timursdev.blogspot.com/ |
||||
|
|||||
| Tamerlann |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 10.11.2002 Где: Минск, Беларусь Репутация: нет Всего: 2 |
100% agree. В случае разработки более менее крупных проектов с использованием динамических языков приходится больше внимания уделять проектировнию. При кодировании накосячить можно запросто, это действительно минус. --------------------
http://timursdev.blogspot.com/ |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
||||
|
||||
| serger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: нет Всего: 5 |
ИМХО...
Языки с динамической типизацией удобнее для представления данных. Когда нужно, допустим, просто отобразить данные или перевести в стандартную форму.. Соответственно, принцип отображения у каждого типа свой, но если сложным образом не обрабатывать значения или обрабатывать в одном контексте, то все обращиня к типам можно свести к нескольким типовым однообразным операциям. И наоборот, строгая типизация помогает для универсальной обработке данных, где важно знать что мы обрабатываем и контролировать область обработки объектов. И это в принципе логично. -------------------- упс! |
|||
|
||||
![]()
|
| Правила раздела "Философия программирования": | |
|
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Философия программирования | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |