LINUX.ORG.RU

Ответ на: комментарий от monk

Зато работает такое:

Если слово explicit тебе не знакомо, то заработает.

kawaii_neko ★★★★
()
Ответ на: комментарий от anonymous

Так утверждение «просто на уровне типов нельзя передать 5 вместо Foo и 15 вместо Bar, а получившийся string запихнуть в int.» получается не всегда верно.

monk ★★★★★
()
Ответ на: комментарий от stasolog

В IDE будут видны типы аргументов.

В смысле, тип числа 5? Или ожидаемый? Ожидаемый и в питоне виден (из документации).

monk ★★★★★
()
Ответ на: комментарий от x3al

Суть нормальных типов — в том, что их проверяют задолго до рантайма. В питоне все проверки — в рантайме.

Просто разные подходы, что значит «нормальных», нормальных по версии тебя?

anonymous
()
Ответ на: комментарий от anti_win

питон — хорошая замена башу для автоматизации и системных скриптов

Удобный инструмент топор: и дрова поколоть, и саморез забить, и курице голову снести. А еще им можно бриться.

anonymous
()
Ответ на: комментарий от monk

Если ты не пишешь в конструкторе explicit, то ты про себя говоришь:«Да, я разрешаю приводится инту к Foo и Bar, а std::string может привестись к mystring».

snake266 ★★
()
Ответ на: комментарий от anonymous

Просто разные подходы

Ну да, подход питона — упасть в продакшне когда небольшая правка кода для другой фичи сломала что-то ещё, подход языков с нормальным типами (sound type system) — попытаться хоть что-то проверить задолго до этого.

Отсюда и проблемы когда питон пытаются использовать для крупных проектов. Разработчики mercurial говорили, что если бы тот же rust был раньше — вместо питона3 mercurial бы переписали на rust.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Изначально речь была про строгость системы типов. Рухнувший в продакшн питон – это лучше или хуже C++, который продолжает работать с неверным результатом от того что, скажем, где-то double привелся к int?

anonymous
()
Ответ на: комментарий от snake266

С учётом того, что конструкторов без explicit хватает и в стандартной библиотеке, о каком-то строгом контроле типов речи не идёт.

Причём неизвестно, что хуже, когда как в питоне упадёт при запуске или как в C++ преобразуется в другой тип и как-то выполнится.

monk ★★★★★
()
Ответ на: комментарий от stasolog

Документацию еще прочесть нужно.

Я про ту, которая docstring. Её IDE читает.

monk ★★★★★
()
Ответ на: комментарий от monk

С учётом того, что конструкторов без explicit хватает и в стандартной библиотеке, о каком-то строгом контроле типов речи не идёт.

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

Причём неизвестно, что хуже, когда как в питоне упадёт при запуске или как в C++ преобразуется в другой тип и как-то выполнится.

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

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

snake266 ★★
()
Ответ на: комментарий от monk

В std по-моему неплохо продумано, что сделать explicit, а что нет. Вообще, в плюсах подход explicit by default. Причем, в отличие от ошибок с типами в Питоне, здесь это контролируется статично, и некоторые линтеры выдают предупреждение, если не написать explicit.

Реально остается проблема со встроенными типами. Хотя они тоже статично проверяются, но проблема хотя бы в том, что на одной платформе сужение произойдет, на на другой (где делался анализ) – нет.

Надо бы strong typedefs, но что-то в языке их нет, только костыли в левых библиотеках.

anonymous
()
Ответ на: комментарий от anonymous

Рухнувший в продакшн питон – это лучше или хуже C++, который продолжает работать с неверным результатом от того что, скажем, где-то double привелся к int?

Это разные типы. Большинство ситуаций, от которых питон рухнет, в плюсах поймает компилятор и в продакшне их тупо не будет.

И да, питон спокойно даст, например, умножить на double вместо int.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Разработчики mercurial говорили, что если бы тот же rust был раньше — вместо питона3 mercurial бы переписали на rust.

Вот и задача нашлась для лоровских растишек. Все равно mercurial умер, так что никто не пострадает. А вдруг получится убийца гита? Заманчиво. Так что налетай, народ, скоро каникулы как раз.

bread
()
Ответ на: комментарий от x3al

Большинство ситуаций, от которых питон рухнет, в плюсах поймает компилятор и в продакшне их тупо не будет

Это-то понятно, но там человек говорил что в Питоне строгая типизация, а ты перевел на то что она динамическая. Ясно что лучше быть здоровым и богатым, но уже хорошо, что от каких-то плюсовых (например) ошибок Питон может защитить.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.