В чем для многих заключается проблема, что php динамический язык?

scb

Новичок
Я вот реально не понимаю.

Что в этом плохого? Можно попросить показать примеры?
 

Фанат

oncle terrible
Команда форума
Ну, например, при отсутствии акселератора динамический язык должен пропарсить весь код при каждом обращении. Кода может быть много
 

С.

Продвинутый новичок
Фанат купился! Он про типы данных спрашивает.
 

Absinthe

жожо
Ну, например, при отсутствии акселератора динамический язык должен пропарсить весь код при каждом обращении
Ложь. Это ты про скриптовые говоришь.

В том же Objective-C динамическая типизация.
 

AmdY

Пью пиво
Команда форума
scb
в php очень хитрое преобразование типов и иногда при сложении или сравнении может вылезти неочевидный с первого взгляда результат. в языках со статической типизацией таких фокусов не бывает и можно отлавливать подобные глюки ещё на этапе компиляции, но с другой стороны когда надо преобразовать типы, то приходится писать лишний код.
В php в последнее время начали вводить тайпхинтинг, но пока можно хинтить только объекты и массивы, ожидается что появятся и другие типы. К тому же есть в pecl расширения, которые разрешают создавать переменные со статическим типом $intValue = new Int(5), при магической смене будем получать ошибку. Но все эти изменения нужны очень малому количеству людей, для 99%(с потолка) проектов на php строгая типизация не нужна, а когда нужна, то программисты вводят свою прослойку для её эмуляции и контроля над типами.
 

Фанат

oncle terrible
Команда форума
Хех. Ну тогда всё проще.
Попробуй объяснить кому-нибудь со стороны, что "0" == "". или, другими словами, если пользователь ввёл в поле формы ноль, то он, оказывается, не ввёл ничего!
или, к примеру, почему "25 лошадок" == 5*5
 

Gas

может по одной?
Absinthe
и какое отношение ruby имеет к "0" == "" ?

вопрос конкретно о динамической типизации в php, а не вообще.
 

fixxxer

К.О.
Партнер клуба
Динамическая типизация - это очень хорошо, а вот строгой типизации не хватает.
Например.
У меня был баг, который я далеко не сразу нашел: в некоторые нутря передается строка либо null, этой строке в нутрях может приписаться префикс.
Из-за забытой проверки на null получалось $result = $prefix . $str === $result = $prefix . "". При строгой типизации я бы получил ошибку конкатенации строки с null сразу же.
 

С.

Продвинутый новичок
Из-за забытой проверки на null получалось $result = $prefix . $str === $result = $prefix . "". При строгой типизации я бы получил ошибку конкатенации строки с null сразу же.
Не стоит списывать свою забывчивость на недостатки языка. А если бы ты забыл проверку не на null, а на "", то кто бы был виноват?
 

Absinthe

жожо
и какое отношение ruby имеет к "0" == "" ?

вопрос конкретно о динамической типизации в php, а не вообще.
Ну это пример слабой типизации. В ruby же типизация динамическая, но строгая, и такого он не допускает.
Т.е. налицо подмена терминов.

Слабая типизация - это причина множества ошибок, и в разных языках(Objective-C, JS, PHP) они разные. Вред от нее есть, а пользы от нее никакой не вижу.

Не стоит списывать свою забывчивость на недостатки языка.
Еще как стоит. Язык должен препятствовать простреливанию ног. Если он не делает - это недостаток.
Может еще скажешь, что в шаблонизаторах не должно быть автоэкранирования, и PHP хороший шаблонизатор? :D
 

fixxxer

К.О.
Партнер клуба
Не стоит списывать свою забывчивость на недостатки языка. А если бы ты забыл проверку не на null, а на "", то кто бы был виноват?
Если бы я спроектировал все так, что особым случаем, когда не нужен префикс, является не null, а "", в этом случае я бы был не то, что виноват, а полным чудаком на букву м, которого следует немедлено спустить с лестницы.
Против хинтов в объявлении функции никто же вроде не возражает, нет? Тоже можно было бы говорить, что не надо забывать, какой класс у передаваемого объекта.
 

Gas

может по одной?
Absinthe
В чем для многих заключается проблема, что php динамический язык?
к примеру, почему "25 лошадок" == 5*5
пример говорит сам за себя, то что в других языках используется другой тип динамической типизации и ты об этом сказал - прекрасно, но может хватит раздавать безапеляционные замечания "Ложь" уходя в от конкретного вопроса и устремляя взгляд за горизонт.
 

Ragazzo

TDD interested
Лет через десять будет тайпхинтинг на базовые типы возможно, они же там в команде вроде как никак не могут договорится между собой, не?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
тайпхинтинга на скаляры не будет (С) Размус
 

Ragazzo

TDD interested
grigori
Я не зря написал там через лет 10. Сколько сейчас ему лет?Вот именно.
 
Сверху