ANtlord
@ANtlord

Целесообразна ли статическая типизация в веб-программировании?

Добрый день! Я не жду конкретного ответа, и ряд ссылок на то, что следует почитать, меня вполне устроит, если вопрос абсолютно не корректен.

Недавно я задумался над тем, на чем вообще в основном пишется backend для веб сервисов. В основном это Python, Ruby, PHP, JS. Все это языки с нестрогой типизацией, и получив опыт в разработке достаточно большого проекта (~8000 строк) и большой команде, 7 человек, включая меня. Я заметил, что достаточно часто выпадают ошибки, связанные с тем, что пришла переменная не того типа, как ожидалось, и все потому что программист не проверил ту часть проекта, в которой возникла ошибка, или проверил, но с другими входящим данными. Я знаю, что подобные вещи можно решить модульным тестированием. Однако нередко случается так, что на него нет времени. И я знаю, что тип данных в вышеупомянутых ЯП можно проверить и поставить assert. Но статическая типизиация, мне кажется, что все-таки лучше решает подобные проблемы.

Я задумался, об использовании языка программирования (ЯП) со статической типизацией и увидел, что для backend довольно популярен Java, однако, насколько я понял, что по потреблению памяти она Python обгоняет. Мне не ясна ситуация с C#. Я видел есть проект Nancy, который, благодря Mono можно запустить на Linux. Еще я знаю, что у D, Rust, Go есть веб-фреймворки. Точнее у D есть фреймворк для создания приложений для обработки асинхронных запросов, но эти проекты пока что рискованно использовать в production.

После всего этого я подумал, что статическая типизация при веб-разработке нецелесообразна, или же все несколько сложнее? Я имею ввиду, что может после определенного этапа часть функционала уходит в библиотеки, написанные как раз на ЯП со статической типизацией.

Заранее спасибо!
  • Вопрос задан
  • 437 просмотров
Пригласить эксперта
Ответы на вопрос 4
sim3x
@sim3x
Дело в разработчиках ЯП
Им статтипизация не нужна - они не говнокодятошибаются

Перенос функционала проверки типов в фреймворки ~ костыли со стразами

А в erlang пошли дальше, там вообще нельзя переписать значение переменной

Однако, считать, что строгая типизация позволит отказаться от юнит тестов - утопия
Ответ написан
Комментировать
max-kuznetsov
@max-kuznetsov
Главный IT-архитектор
Наверное, эта статья Вам поможет: habrahabr.ru/post/161205
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
На самом деле статическая типизация нужна всегда и везде. Другой вопрос, что программист не должен объявлять типы самостоятельно, этим должен заниматься компилятор (выводить типы из самой программы).
Ответ написан
Комментировать
@iskateli
Зависит от того, сколько вы времени готовы потратить на тестирование. В большом проекте разница становится очень существенна.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы