Задать вопрос
@procode
Разработчик

Почему столько восторгов вокруг типизации? По-моему без нее намного проще, не?

Здравствуйте.

Я простой веб-разработчик и откровенно не понимаю почему столько шума вокруг "строгой типизации" и всего такого прочего.

Лично меня наоброт запарила бы необходимость везде прописывать тип данных.

По-моему, возможность этого не делать в PHP и JS - это как раз-таки преимущество.

Так ведь?
  • Вопрос задан
  • 512 просмотров
Подписаться 2 Простой 6 комментариев
Решения вопроса 3
Minifets
@Minifets
Hello world!!!
Дополню все остальные ответы, что не стоит путать строгую типизация со статической.

Typehint-ы в том же php намного упрощают понимание и разработку кода, оставляя его все также слабо типизированным языком.
Ответ написан
be_a_dancer
@be_a_dancer
Backend/Fullstack Developer
Дополню предыдущие ответы - строгая типизация предотвращает ряд ошибок. Рекомендую загуглить, например, JS WAAAT, чтобы понять к чему это может привести.

Как вариант.

console.log(typeof("5" + 2));
// Ожидаешь увидеть 7, получаешь 52 строкой, потому что JS автоматом приведет к строке.
Ответ написан
@Vitsliputsli
Столько всего написали, и только один человек отметил, что не стоит путать сильную (в неправильном переводе "строгая") типизацию со статической.
В PHP динамическая типизация, это преимущество данного языка, т.к. не нужно писать дополнительный код для обработки разных типов. В PHP даже нет классической перегрузки, т.к. она там попросту не нужна. Но динамическая типизация в PHP ни разу не отменяет возможности работать с типами, и хороший программист так и делает.
Статически типизированные языки делятся на языки с сильной типизацией, например Java, и слабой типизацией, например Си. Сильная типизация это преимущество Java, как уже писали это облегчает отлов ошибок. Слабая типизация это преимущество Си, т.к. позволяет более гибко работать с данными, что повышает производительность.
Т.е. для каждого языка своя типизация в зависимости от направления этого языка, а все восторги у тех, кто не понимает что нет "серебренной пули", универсального решения на все случаи жизни, и всегда приобретая, чем-то жертвуешь. Заметьте, как много писали про компилятор и сильную типизацию, но по факту, интерпретирующий язык Java использует сильную типизацию, а компилирующий язык Си использует слабую типизацию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@EvgeniiR
https://github.com/EvgeniiR
Писать код и не знать с какими вы типами работаете не нормально.
Это приводит к ошибкам, усложняет понимание кода, сильно усложняет статический анализ.
Поэтому в php есть vimeo psalm, phpdoc'и с типами и type hints с 7 версии, а в js typescript(ещё всякие kotlin native кстати )
Ответ написан
Комментировать
@koperagen
Зная тип переменной среда разработки может подсказать:
  1. можно ли присвоить ей результат функции
  2. можно ли её передать как аргумент функции
  3. к каким методам и свойствам можно обратиться

В некоторых языках, например Kotlin, система типов позволяет отслеживать null значения и обрабатывать их в коде.
Более того, в большинстве статически типизированных языков есть возможность вывода типа исходя из выражения. Т.е. можно писать тип только там, где это действительно необходимо. Отличие от JS в том, что типы все равно отслеживаются на этапе компиляции и нельзя присвоить переменной значение другого типа.
Запись вида
val a = 2 + 3
Эквивалентна записи
val a : Int = 2 + 3
Это приведет к ошибке:
val a = 2 + 3
a = "Hello"

Все это помогает переместить целые категории ошибок из времени исполнения в этап компиляции (Для IDE и вовсе этап написания кода)
Ответ написан
@Urukhayy
Если есть типы и компиляция, то больше половины багов отлавливает компилятор.
Ответ написан
Комментировать
BorLaze
@BorLaze
Java developer
Вот тут, как по заказу - отличный пример, зачем нужны объявления переменных, типизация и прочие "излишества, ограничивающие программиста" :-)))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы