Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> строгая vs не строгая типизация, что лучше 
:(
    Опции темы
 
Какая типизация лучше?
не строгая [ 15 ]  [23.44%]
строгая [ 49 ]  [76.56%]
Всего проголосовавших: 64
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
k0rvin
Дата 24.4.2010, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(nerezus @ 23.4.2010,  22:42)
При динамической(как правило в нестрогой она, ну за исключением всяких там C) все равно приходится вести xxxdoc теги, в итоге кода больше выходит...

что? переформулируйте мысль на более литературном или техническом языке.

Цитата(nerezus @ 23.4.2010,  22:42)
При динамической ... проферок типизации нету.

Код

CL-USER> (numberp 1)
T

CL-USER> (numberp "a")
NIL

CL-USER> (stringp "a")
T

CL-USER> (type-of 1)
FIXNUM

CL-USER> (type-of "a")
SIMPLE-TEXT-STRING

ня?

Это сообщение отредактировал(а) k0rvin - 24.4.2010, 00:43


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
qweqwe
Дата 24.4.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(nerezus @  23.4.2010,  22:42 Найти цитируемый пост)
а проферок типизации нету

есть, но только в рантайме

Цитата(SneG0K @  23.4.2010,  23:29 Найти цитируемый пост)
В зависимости от задачи.

как вы все ### тыкать сюда эту абсолютную истину
вот приведи пример задачи, которая выигрывает от нестрогой типизации

Цитата(SneG0K @  23.4.2010,  23:29 Найти цитируемый пост)
При строгой типизации производительность выше, вроде.

товарищ главнокомандующий, вы путаете строгую типизацию и статическую типизацию
PM MAIL   Вверх
JackYF
Дата 24.4.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Цитата(qweqwe @  24.4.2010,  08:52 Найти цитируемый пост)
вот приведи пример задачи, которая выигрывает от нестрогой типизации

Любая задача, выполнение которой занимает меньше времени, чем написание кода для неё. Например, скрипты.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
kemiisto
Дата 24.4.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(JackYF @  24.4.2010,  20:00 Найти цитируемый пост)
Любая задача, выполнение которой занимает меньше времени, чем написание кода для неё. Например, скрипты.

Хм... Что-то я сомневаюсь. 

Итак,
Цитата(Logo @  10.2.2010,  13:45 Найти цитируемый пост)
Да как и все - строгая, когда не производятся не явные приведения типов, не строгая - когда производятся.
Динамическая - когда можно менять тип по ходу выполнения программы, и соответственно проверка типов на этапе исполнения - статическая, наоборот, на этапе компиляции.


JackYF, я бы ещё понял, если бы речь шла о преимуществах динамической типизации в плане высокой скорости прототипирования. Но нестрогая будет только мешать. Если исходить из вышеупомянутых определений, то, скажем, в Python типизация динамическая строгая, а в PHP - динамическая нестрогая. Бенефиты от динамической типизации получим и там и там, а вот об грабли нестрогой типизации, расставленные в PHP, мы весь лоб расшибём.

P.S. В Python типизация не совсем строгая...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
k0rvin
Дата 24.4.2010, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(qweqwe @ 24.4.2010,  09:52)

как вы все ### тыкать сюда эту абсолютную истину
вот приведи пример задачи, которая выигрывает от нестрогой типизации

пример:
Код

(let ((x (assoc 'b '((a . 1) (b . 2) (c . 3)))))
  (when x (cdr x)))
; => 2

будь типизация сильно строгой, результат assoc необходимо было бы писать "(when (not (null x)) ..." или типа того
мелочь, но чем больше кода, тем количество таких мелочей растет в геометрической прогресси => растёт трудность восприятия кода

Цитата(qweqwe @ 24.4.2010,  09:52)

товарищ главнокомандующий, вы путаете строгую типизацию и статическую типизацию

не совсем, чем строже типизация, тем уверенней компилятор может производить оптимизации, ведь он может однозначно установить тип, а не думать "тут возможны такие типы: ..."

Это сообщение отредактировал(а) k0rvin - 24.4.2010, 19:51


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
kemiisto
Дата 24.4.2010, 20:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(k0rvin @  24.4.2010,  20:49 Найти цитируемый пост)
пример

k0rvin, я смотрю ты Лисп(?) используешь строго по назначению - толстый троллинг. smile Ты бы хоть пояснял нам, императивным нищебродам, что там происходит. smile 

Цитата(k0rvin @  24.4.2010,  20:49 Найти цитируемый пост)
не совсем, чем строже типизация, тем уверенней компилятор может производить оптимизации, ведь он может однозначно установить тип, а не думать "тут возможны такие типы: ..."

qweqwe, вот, смотри. И ещё один путает. Речь идёт о том, что со строгой типизацией нужно явно указывать свои намерения при приведении типов. Таким образом транслятор языка со строгой типизацией будет увереннее находить ошибки, которые транслятор языка с нестрогой типизацией будет "проглатывать", предполагая неявное приведение типов. Эти ошибки очень часто являются логическими ошибками. Чем раньше они будут отловлены, тем лучше.

Логическую ошибку можно:
  • отловить в compile-time;
  • отловить в run-time;
  • не отловить вовсе.
Чем раньше - тем лучше. Вероятность успешного "отлова" в compile-time будет максимально в случае использование компиляторов языков со строгой типизацией. Если для этих языков использовать интерпретаторы - мы просто спускаемся на уровень ниже. Вероятность локализовать ошибку - та же. В случаем нестрогой типизации ошибку очень трудно локализовать.

Это сообщение отредактировал(а) kemiisto - 24.4.2010, 20:15


--------------------
PM MAIL WWW GTalk Jabber   Вверх
nerezus
Дата 24.4.2010, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

что? переформулируйте мысль на более литературном или техническом языке.
какие слова не понятны? буду разъяснять их значение.

Цитата

Любая задача, выполнение которой занимает меньше времени, чем написание кода для неё. Например, скрипты.
 Попробуйте скрипты документировать. И сравните )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
kemiisto
Дата 24.4.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



k0rvin, кстати говоря, все Лиспы, вроде как, строго типизированные языки. 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
qweqwe
Дата 24.4.2010, 20:44 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(k0rvin @  24.4.2010,  19:49 Найти цитируемый пост)
не совсем, чем строже типизация, тем уверенней компилятор может производить оптимизации, ведь он может однозначно установить тип, а не думать "тут возможны такие типы: ..."

нестрогая типизация, это когда компилятор видит, скажем сравнение строки и null, и генирирует такой код, который проверяет, пустая ли строка, и если она пустая - сравнение возвращает true, это крайне весело и остроумно, но к счастью - не ведет к ускорению программ (иначе ПэХаПэ был бы самым быстрым языком на свете) smile 

Цитата(kemiisto @  24.4.2010,  20:24 Найти цитируемый пост)
все Лиспы, вроде как, строго типизированные языки

так точно, лиспы не пальцем деланы smile 
PM MAIL   Вверх
k0rvin
Дата 24.4.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(kemiisto @ 24.4.2010,  20:14)
k0rvin, я смотрю ты Лисп(?) используешь строго по назначению - толстый троллинг. smile Ты бы хоть пояснял нам, императивным нищебродам, что там происходит. smile 

Нет такого языка "лисп". а Common Lisp весьма императивный язык. в том числе.
Код

(assoc 'b '((a . 1) (b . 2) (c . 3))) ; => (b . 2)
(cdr '(b . 2)) ; => 2

(macroexpand '(when x (cdr x))) ; => (if x (progn (cdr x)))


Добавлено @ 21:27
Цитата(nerezus @ 24.4.2010,  20:23)
какие слова не понятны? буду разъяснять их значение.

все слова понятны. по-отдельности. вместе же они у Вас составляют кашу

Добавлено @ 21:37
Цитата(kemiisto @ 24.4.2010,  20:24)
k0rvin, кстати говоря, все Лиспы, вроде как, строго типизированные языки.

откуда такая уверенность? "диалектов лиспа больше, чем программ, написанных на нём".

в Common Lisp типизация не сильно строгая:
nil используется и как пустой список, и как "ложь",
истиной является значение любого типа, кроме nil.
ну и полиморфизм никто не отменял, благо CLOS предоставляет классы для всех встроенных типов, соответственно можно написать свои сколь угодно нестрогие функции =)

в Scheme чуть по-строже, есть специальные булевы константы: #t и #f, пустой список '() не является "ложью", однако как и любое другое значение, отличное от #f, является "истиной"

ну и конечно же и в том, и в другом списки и массивы гетерогенны
однако типизация в CL и Scheme построже Сишной

Это сообщение отредактировал(а) k0rvin - 24.4.2010, 22:08


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
k0rvin
Дата 24.4.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(qweqwe @ 24.4.2010,  20:44)
нестрогая типизация, это когда компилятор видит, скажем сравнение строки и null, и генирирует такой код, который проверяет, пустая ли строка, и если она пустая - сравнение возвращает true, это крайне весело и остроумно, но к счастью - не ведет к ускорению программ (иначе ПэХаПэ был бы самым быстрым языком на свете) smile 

я разве писал, что нестрогая типизация приводит к ускорению программы?

впрочем Вы правы, для статически типизированных языков разницы в производительности никакой. для динамически типизированных разница есть, ведь проверки типов придётся проводить в рантайме


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
qweqwe
Дата 24.4.2010, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(k0rvin @  24.4.2010,  21:43 Найти цитируемый пост)
впрочем Вы правы, для статически типизированных языков разницы в производительности никакой. для динамически типизированных разница есть, ведь проверки типов придётся проводить в рантайме 

проверки типов есть всегда, только в случае строгой типизации - проверка приведет к одному результату, а в случае не строгой - к другому
PM MAIL   Вверх
nerezus
Дата 25.4.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

вместе же они у Вас составляют кашу
 Жаль (
Тогда советую перечитывать до тех пор, пока полностью не поймете смысл, но не более 4 часов подряд.

Добавлено через 4 минуты и 39 секунд
Цитата

При динамической(как правило в нестрогой она, ну за исключением всяких там C) все равно приходится вести xxxdoc теги, в итоге кода больше выходит...

При динамической типизации(как правило она "в комплекте" с нестрогой типизацией, за исключением языков типа C) все равно приходится вести phpdoc/etc теги для работы автокомплита типов и документации, в итоге кода больше выходит...


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
qweqwe
Дата 25.4.2010, 18:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(nerezus @  25.4.2010,  16:26 Найти цитируемый пост)
При динамической типизации(как правило она "в комплекте" с нестрогой типизацией, за исключением языков типа C) все равно приходится вести phpdoc/etc теги для работы автокомплита типов и документации, в итоге кода больше выходит... 

у вас PHP головного мозга, уважаемый
нестрогая и динамическая типизация - ортогональные вещи smile 
PM MAIL   Вверх
nerezus
Дата 25.4.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



qweqwe, а у вас ПГМ)
читаем первую часть моего поста, долго думаем. Специально же РАЗДЕЛИЛ эти понятия в сообщении.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1651 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.