Pull to refresh

Comments 12

UFO just landed and posted this here
Быстрое прототипирование без типов по-прежнему вариант, написали прототип, протестили, а перед мержем добавили аннотаций чтобы удовлетворить mypy и получить зеленую галку от CI.
Возможно я задам глупый вопрос, так как только начинаю свой путь в разработке, прошу не серчать, и не минусовать, а просто объяснить:
зачем выбирать язык с динамической типизацией, а потом, по сути, приводить его к статической?
  • Выбирают потому, что кажется, что не надо будет думать об этом (ошибаются, конечно — типы не куда не деваются, просто тогда их в уме держать надо).
  • На определенном этапе роста держать в уме эту метаинформацию не получается даже в отдельных участках кода.
  • Сам Python объявляет это своей необычайной гибкостью и свободой. Ну может быть оно и так. К тому же, система типов MyPy намного гибче, чем у многих распространенных более статических ЯП.
  • А еще обилие разных библиотек под Python, включая системные, научные и даже лучшие биндинги Qt.
у питона все хорошо с производительностью пока используешь функции основанные на си.
  • иногда в проекте появляется узкое место в производительности и тогда либо переписывать на си этот участок либо это.
  • + динамика да позволяет делает быстро многие вещи.
  • но когда идет поиск ошибок и рефактор вполне удобно пройти добавить типы когда не спешишь и менеджер уже не стоит за душой
  • Когда сам уже забыл какие параметры нужны твоей функции удобно видеть тип в подсказке. Конечно ты можешь передать параметры любых типов компиляция пройдет, но функция от этого не будет работать верно?



Все равно, исходя из сказанного, я категорически не понимаю — в чем преимущество (читай: «смысл») динамической типизации. Да, наверное, на коротких дистанциях — это дает некоторое преимущество в скорости разработки (все равно, не думаю, что это преимущество существенное), но ведь любой проект имеет свойство становиться больше и больше с течением времени, имеют свойство уходить старые разработчики, и приходить новые -> из всего этого следует, что выбор языка с динамической типизацией крайне недальновиден, и не имеет под собой никаких оснований.
Если я ошибаюсь — опять же, прошу объяснить, ибо, честно, я понимаю, что могу чего-то не понимать.
Меньше порог вхождения, что позволяет студентам, ученым и devops программировать алгоритмы. Когда синтаксис простой проще сконцентрироваться на самом алгоритме и выше читаемость, а значит и проще разобраться, что он делает.
Единственное надо указать на вход типы и набор параметров, чтобы легче было применить функцию без копания в ней вообще и все. А те кто захочет разобраться код будет читаем. А читаемость кода тоже очень важный момент при больших проектах, рефракторах и т.д.
Если речь идет о веб то просто идет куча шаблонного кода выполнения запросов, где и так все понятно, там статика и не нужна.
Си может что угодно от ОС, драйверов до сайтов. Но подождите сайты на си делать конешно можно, но Очень геморойно. По этому каждый язык на самом деле под свою задачу.
Если тебе нужен овер стабильное и надежное мультиплатформенное приложение, или на андройд ты берешь JAVA. Если тебе надо чтобы программа супер быстро обрабатывала и ела немного ресурсов (особенно если нужно системить типо драйвер написать) ты берешь c/c++ (надеюсь что и rust добавится сюда), а если тебе надо сделать сайт, скрипт для бекапа, протестировать научный алгоритм, бота, парсер ты берешь питон, потому что это просто быстро и понятно! И то если вдруг у тебя узкое место ты можешь его переписать на си! Беспроигрышный вариант по моему мнению. Кроме того сам по себе как и доказывает статья питон не язык — это концепция языка. Он уже реализован десятками способов под разные оболочки в основном конечно на си, но и на java есть jpython. Вообще все потихоньку идет к универсальному языку в котором все моменты будут сбалансированы, на котором будет удобно делать и ОС и сайты. Даже называют питона прадедушкой такого языка.
Вообщем если сильно заморочится можно сидеть и не слазить практически с любого языка, вопрос в том как эффективнее решить задачу?
Питон решает эффективно очень широкий спектр задач, больше чем любой другой язык о котором я слышал, поэтому его учить и использовать эффективно. А эти все дополнения делают его применение ещё удобнее — если требуется.
В остальных случаях да — полная статика, но статику я буду использовать только в тех случаях когда вообще никак по другому не достигнуть требуемых параметров программы. Читаемость и универсальность лично для меня важнее. Учитывая как он развился и сколько способов придумали как, и что ускорить это требуется все меньше.

Вообщем я вижу современного прогера это питон + си + java (там где они действительно нужны).
Вообщем я вижу современного прогера это питон + си + java (там где они действительно нужны).

iOS — не прогеры? ))
прогеры это как раз таки специфичная си подобная задача, если ты решил серьезно iOS зачем вообще сыр бор, правда? хотя в принципе движки тот же godot под ios компилятся, поэтому необязательно писать на яблочном языке. Тут всегда выгодно веб приложение оно работает везде )
UFO just landed and posted this here
Возможно я задам глупый вопрос, так как только начинаю свой путь в разработке, прошу не серчать, и не минусовать, а просто объяснить:
зачем выбирать язык с динамической типизацией, а потом, по сути, приводить его к статической?


Для прототипирования язык с динамической типизацией удобнее.
типы нагромождают код, и без них удобнее и быстрее, но только пока ты не забыл какие типы ты хотел передавать в свою или чужую функцию. Функция — черный ящик, тебе не важно что внутри, в этом случае аннотации типов на вход тупо помогут быстрее понять как её использовать в будущем или не тебе.
Sign up to leave a comment.