![]() |
|
Модераторы: Се ля ви |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
В чем разница между static/dynamic typing и strong/weak typing?
1) Объявление типа данных 2)Смена типа в процессе работы программы? (a = 5; a = "hello") 3) Автоматическое приведение типа? (a = 5; b = "10"; c = a + b;) Т.е. что из пунктов относится к static/dynamic typing и что относится к strong/weak typing? Это сообщение отредактировал(а) nerezus - 4.11.2006, 12:19 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
static/dynamic типизация - это возможность объявить явно или типизирование в момент присвоения. Статическая типизация: объявил единожды, как целое число - будь добр, работай аки с целым.
Динамическая типизация: присвоил a= "sssss"; компилятор/интерпретатор сам выделит память под массив знаков, сам создаст переменную типа string. А слабая/сильная типизация определяется приведением типов(в любом случае - это будет "ослаблением" типизации, даже если приводится целое число к вещественному типу - с точки зрения человека точность повышается, а с точки зрения машины число может измениться; вобщем, слабая типизация) и тем, как проверяются/не проверяются параметры функций: если вместо массива(ожидаемого) можно передать целое число и никак нельзя это дело проконтролировать "автоматически" - это слабая типизация. зы Не встречалось мне ещё сочетание динамической и сильной типизации - если уж присвоение без "ошибки типа", то и в функцию, как в мусорный бак, можно что угодно скидывать. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Спасибо за разъяснения. Это сообщение отредактировал(а) nerezus - 4.11.2006, 12:54 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
Статическая типизация, это проверка типов во время компиляции программы. Динамическая - во время исполнения.
Пример статической: объявляем переменную типа int и мы можем быть уверены, что в ней будут храниться только целые числа, в некотором диапазоне (от -2^31 до +2^31-1). О том чтобы в нее не попали строка, или дробное число или еще какое нибудь другое значение, позаботится компилятор. Пример динамической типизации: в Perl объявляем скалярную переменную, записываем туда число 5, и пытаемся эту переменную умножить на другое число. Интерпретатор проверяет, что переменная действительно хранит в себе число во время выполнения программы. Большинство современных языков используют оба типа типизации. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
и не только "современные". если мне не изменяет память, в BASIC(реализация для ПК "Микроша") можно было объявить переменную целого типа(именно "объявить"), а позже записать в него число - я так понимаю, ты об этом говоришь про "оба типа" ;) Правда, там никакой "проверки во время компиляции" быть не могло, т.к. не было самой компиляции... |
|||
|
||||
![]()
|
| Правила раздела "Философия программирования": | |
|
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Философия программирования | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |