Unit
Но
Tishka17
Отсутствие нормальных типов, возможность внесения изменений в объекты на ходу (что означает, что isinstance начинает врать), __приватные_имена__, YOBA-функции на пару десятков именованных параметров, абсолютно неинформативные сообщения об синтаксических ошибках, тайп-хинты которые НИЧЕГО БЛЯТЬ НЕ ДЕЛАЮТ, считается нормой возвращать значения разных типов при разных входных аргументах, мутабельность является свойством типа, а не значения, иммутабельность проверяется в рантайме, все почти пишут красивый код в угоду производительности, странное убеждение, что свободные функции, засирающие неймспейс читабельнее методов, абсолютно не масштабирующиеся list comprehension/generator expressions, однострочные блять лямбды, нет pattern matching-а или даже банального switch, встроенные списки гетерогенные, для нормальных массивов приходится юзать numpy, datatypes только в 3.7 завезли, None, None everywhere, иммутабельные строки, различие copy vs deepcopy, return обязателен даже в однострочниках, уёбищный тернарный оператор, изменение импорта всех элементов модуля на импорт только выделеных элементов меняет слово в начале, импорты могут кидать эксепшены, итераторы кидают эксепшены, отрицательные индексы.
Вот навскидку набросал.
Постарался хоть на что-то ответит, по всем пунктам не готов спорить, слишком много и все более предвзято там
Unit
короче
Unit
Питон хорошо для прототипирования
Unit
Большую питонячую кодбазу поддерживать тяжелей чем такую же на языках со статической типизацией
Anonymous
Тут есть ещё один коммент))
Anonymous
И от меня ещё:
- низкое быстродействие
- невозможность модификации встроенных классов
- глобальная блокировка интерпретатора
- бардак в репозиториях
- отбивка отступами блоков
- несовместимость версий 2 и 3
Unit
Тому що статическая типизация действительно помогает отсечь много проблем при рефакторинге что в большой кодбазе процесс перманентный
Проксимов
Unit
В питоне тоже можно достиьючь такого но для этого надо 1) изначально писать с заделом 2) покрывать тестами
Sergey
Да вообще, всегда на смех разбирет от этого аргумента любителей писать лапшу.
Unit
проблема глобальной блокировки интерпретатора сильно преувиличена
Проксимов
Tishka17
1. Ок. Но есть инструменты его в частных случаях повышающее. Но часто питон не является узким место в проекте
2. Если речь про свифтовые экстеншены, это спорный момент
3. Gil - камень в сторону пункта 1. Зачастую это вообще не проблема
4. Бардак в репозиториях будет всегда когда есть пользовательские репозитории. Увы :(
5. Во всех языках считается правильным делать отбивку отступами. Просто в питоне за этим следит компилятор, а не тимлид
6. Увы, версии действительно не совместимы. Но вообще прошло уже много лет, поря только на 3 писать
Maksym
Прошу прощения, чатом ошибся
Tishka17
Anonymous
Unit
Короче минусы питона от людей которые им не пользовались
Unit
Информагенство ОБС сообщает что GIL это плохо
Nikolai
Tishka17
Гил это настолько плохо, что в вебприложениях его вообще сложно заметить
Tishka17
Если запускать проект правильно
Sergey
Несовместимость - тоже такая себе. Начиная с 2.7 уже можно было писать так, что для перехода на 3 не требовалось бы почти ничего. Но большинство тупо забивало на это, а теперь ноют.
Unit
большинство из них не в курсе что GIL отпускается во время IO (стоит помнить что 90% задач которые стоит решать питоном IO-тяжелые а не CPU-тяжелые)
Unit
Плюс всегда есть опция использовать мультипроцесссинг искаропки
Unit
Треды все равно сложная фигня вне зависимости от языка
Sergey
для CPU-bound задач есть куча сишных либ, которым тоже пофиг на GIL
Unit
Нужно не использовать треды как можно дольше пока есть такая возможность
Unit
ага
Unit
Или numpy которая вообще на ФОРТРАНЕ написана
Aragaer
тут очередное шоу с набросом "ваш питон говно, потому что раз-два-три доводы"?
Sergey
Да с приходом asyncio треды в питоне вообще нафиг никому не упали
Unit
Sergey
Вообще главный аргументов у питон-хэйтеров - сложнее писать говнокод неподдерживаемый, который они так любят.
Tishka17
Sergey
Глобальной несовместимости нет. Правильно написанный код на 2.7 вообще не требовал ничего для перевода на 3
Aragaer
есть же всякие поллы и селекты
🇺🇦
Надеюсь правила не нарушил
🇺🇦
Есть тут моделлеры? Сделать стикеры для пиар хода казиноса. Деньгами не обижу
Tishka17
Tishka17
Апач
Aragaer
ясно
Aragaer
значит показалось
Tishka17
есть же всякие поллы и селекты
Ну поллинг там разный. Например несколько очередей кафки читать и ещё базу опрашивать и ещё куда-то по хттп ходить.
Unit
Unit
Или треды да
Unit
Штош поделоеш
Tishka17
Вообще вещи независимые, но нагрузка маленькая и с деплоем проще если треды
Unit
Треды это сложно просто
Tishka17
Вообще не сложно, если не надо синхронизировать
Aragaer
ну вот ради такого поллинга лично я бы сделал "очень маленький" тредик, который бы поллил эту штуку по ее правилам, а наружу выдавал какой-нибудь bytesio, который бы в основном треде можно было поллить по общим
Aragaer
но это я
Tishka17
Ну я бы разными процессами
Aragaer
да, тоже вариант, потому что между процессами опять же есть пайпы, которые можно поллить по общим правилам
Unit
Треды в питоне конкретно плохо управляемы
Tishka17
Но это если оно реально начнет юзатьсч
Апач
Отсутствие нормальных типов, возможность внесения изменений в объекты на ходу (что означает, что isinstance начинает врать), __приватные_имена__, YOBA-функции на пару десятков именованных параметров, абсолютно неинформативные сообщения об синтаксических ошибках, тайп-хинты которые НИЧЕГО БЛЯТЬ НЕ ДЕЛАЮТ, считается нормой возвращать значения разных типов при разных входных аргументах, мутабельность является свойством типа, а не значения, иммутабельность проверяется в рантайме, все почти пишут красивый код в угоду производительности, странное убеждение, что свободные функции, засирающие неймспейс читабельнее методов, абсолютно не масштабирующиеся list comprehension/generator expressions, однострочные блять лямбды, нет pattern matching-а или даже банального switch, встроенные списки гетерогенные, для нормальных массивов приходится юзать numpy, datatypes только в 3.7 завезли, None, None everywhere, иммутабельные строки, различие copy vs deepcopy, return обязателен даже в однострочниках, уёбищный тернарный оператор, изменение импорта всех элементов модуля на импорт только выделеных элементов меняет слово в начале, импорты могут кидать эксепшены, итераторы кидают эксепшены, отрицательные индексы.
Вот навскидку набросал.
И всё по делу
Aragaer
мне в питоне не нравится только "ну я так, немного на питоне пишу" - "о, тогда расскажи про то, как использовать редис с целери и джангой"
Unit
Треды например тяжело прибить если они начинают исполнять
Проксимов
Апач
У меня кажется есть идея как сделать паттернматч в питоне
Unit
то есть с большой еблец но можно
Апач
В питоне нет тредпулов?
Fᴏʀᴅᴇɴ
Unit
Не по парадигме
Unit
в том смвсле что использтвания isinstance не поощряется и не соответствует изначальной идее утиной типизации
Unit
Типа
Unit
Вместо того чтобы спрашивать у обьекта "что ты такое"
Unit
Нужно справшивать "сделай X"
Unit
И уже обрабатывать ситуацию если обьект этого не умеет