Здравствуйте, Буравчик, Вы писали:
Б>Используется в куче серьезных систем, включая высоконагруженные.
а мне всегда было интересно почему тормозной питон используется в высоконагруженных системах?
то что есть готовые либы и можно легко подцепить? но ведь нам там важна скорость и, возможно, лучше написать своё на плюсах, чтобы не было узкого горлышка в виде питона
Здравствуйте, peer, Вы писали:
P>ну я питон не использую, но всё равно знаю, что там была ломающая версия 2-3 вроде
Во-первых, речь была про библиотеки. И тезис был о том, что минорная версия меняет совместимость. Но изменение питон 2-3 это не минорная версия.
Во-вторых, даже при появлении питона 3, предыдущая версия 2 поддерживалась несколько лет! Поэтому все плавно (!) переходили на питон 3.
Сйчас, в питоне 3, все хорошо с совместимостью. И в части языка, и в части библиотек
P>Я так понимаю, что переписывать приложение надо было чтобы в новой версии питона заработало?
Да, переписывать код было надо. Точнее портировать, полностью переписывать не надо.
В большинство случаев переход мог быть сделан с помощью автоматических конвертаторов типа 2to3.
Также была возможность писать код так, чтобы он работал в обеих версиях питона.
Но вопросы тестирования кода с библиотеками оставались. Т.к. для нового питона часто выпускали новые (мажорные) версии библиотек.
Больше напряга было для разработчиков библиотек, т.к. им приходилось поддерживать библиотеки для обеих версий сразу.
Здравствуйте, peer, Вы писали:
P>а мне всегда было интересно почему тормозной питон используется в высоконагруженных системах? P>то что есть готовые либы и можно легко подцепить? но ведь нам там важна скорость и, возможно, лучше написать своё на плюсах, чтобы не было узкого горлышка в виде питона
Потому что в io-bound системах нет "узкого горлышка в виде питона". Там узкое место сеть и БД. А скорость и удобство разработки на питоне выше.
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, _NN_, Вы писали:
_NN>>Да есть, да используется, но по сравнению с TypeScript небо и земля. _NN>>Я не говорю даже про саму систему аннотаций, которая не такая выразительная.
Б>Пример есть?
Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs.
При чём пришлось создать новый тип в замену TypeGuard.
Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.
Здравствуйте, _NN_, Вы писали:
_NN>Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs. _NN>При чём пришлось создать новый тип в замену TypeGuard. _NN>Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.
Но добавили же, т.е. выразительность сравнялась.
Есть пример по-свежее, где python действительно менее выразителен (на данный момент)?
Здравствуйте, _NN_, Вы писали:
_NN>Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs. _NN>При чём пришлось создать новый тип в замену TypeGuard. _NN>Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.
C# в производительности умудряется конкурировать с C++ за счет более удобной многопоточности и развитой библиотеки.
Он предназначен для написания корпоративного софта и средне и низко нагруженного кода.
Потому что писать на нем быстро и надежно.
Питон — язык автоматизации, софт на нем писать нельзя — переписывать придется.
Производительность родного питонистого кода отсутсвует как класс и она ему и не нужна.
Здравствуйте, Разраб, Вы писали:
Р>Вопрос к апологетам шарпа. Р>Если он такой классный, почему к нему так мало батареек?
Тебе .NET мало или WinForms, WPF?
Здравствуйте, Буравчик, Вы писали:
Б>А вот C# умеет такое в своей системе типов?
Объединения типов (int | float) от рождения в .NET невозможны, вместо этого применяются перегрузки методов. Можно конечно изобрести надстройки из собственных классов, но как правило объединение простых типов за каким-то обобщенным фасадом перекладывается на плечи разработчиков библиотек. В подавляющем же большинстве случаев, если либа умеет работать с параметром int и float, то она умеет вообще во все простые типы и потому используется object.
Здравствуйте, Maniacal, Вы писали:
M>Здравствуйте, Разраб, Вы писали:
Р>>Вопрос к апологетам шарпа. Р>>Если он такой классный, почему к нему так мало батареек? M>Тебе .NET мало или WinForms, WPF?
Да
Из реальных обломов.
1. Криптопро в корке
2. тг-клиент поддерживающий профиль офклиента
3. ну и вообще, если даже с явой сравнить кол-во компонентов сильно меньше для решения прикладных задач(я не фанат своих велосипедов)
Здравствуйте, Разраб, Вы писали:
Р>>>Вопрос к апологетам шарпа. Р>>>Если он такой классный, почему к нему так мало батареек? M>>Тебе .NET мало или WinForms, WPF? Р>Да Р>Из реальных обломов. Р>1. Криптопро в корке Р>2. тг-клиент поддерживающий профиль офклиента Р>3. ну и вообще, если даже с явой сравнить кол-во компонентов сильно меньше для решения прикладных задач(я не фанат своих велосипедов)
Питон использует тот же интероп, что и .Net
Тот же Xamarin использует Java и для совместимости библиотек можно делать биндинги.
Ну и используй питон, раз он тебе нужны фичи которых нет в C#.
Тем кто использует C# не нужен. Нельзя объять необъятное.
А вот батареек в C# с каждым годом все больше и больше. Когда появился .Net Core тут кричали не взлетит. Однако летит и взлетает еще выше.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> А вот батареек в C# с каждым годом все больше и больше. Когда появился .Net Core тут кричали не взлетит. Однако летит и взлетает еще выше.
Скоро появится еще какой-нибудь .Net Super Puper Mega от микрософта с супер-фичами и все начнут переписывать на него.
А в питоне/js/java для поддержки этих фич просто добавится еще пара библиотек/фреймворков.
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, _NN_, Вы писали:
_NN>>Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs. _NN>>При чём пришлось создать новый тип в замену TypeGuard. _NN>>Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.
Б>Но добавили же, т.е. выразительность сравнялась.
Б>Есть пример по-свежее, где python действительно менее выразителен (на данный момент)?
С getattr вот были проблемы решил через Any.
Может подскажете решение заодно.
T = TypeVar("T")
class Comparison(NamedTuple):
comparer: Callable[[Any, Any], bool]
default: Any
def compare(old: T, new: T, comparison: dict[str, Comparison]) -> bool:
for field, (comparer, default) in comparison.items():
if comparer(getattr(old, field, default), getattr(new, field, default)):
return True
return False
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, _NN_, Вы писали:
_NN>>С getattr вот были проблемы решил через Any. _NN>>Может подскажете решение заодно.
Б>Я что-то не понял, в чем была проблема. Можно онлайн-пример? Б>Вроде, все работает в strict-режиме
Traceback (most recent call last):
File "/home/main.py", line 7, in <module>
class Comparison(NamedTuple, Generic[T]):
File "/usr/lib/python3.10/typing.py", line 2330, in _namedtuple_mro_entries
raise TypeError("Multiple inheritance with NamedTuple is not supported")
TypeError: Multiple inheritance with NamedTuple is not supported
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, _NN_, Вы писали:
_NN>>Вот, что останавливало:
_NN>>https://onlinegdb.com/ODB2VhaI-
_NN>>
_NN>>TypeError: Multiple inheritance with NamedTuple is not supported
Б>Да, действительно. Б>Можно (стоит всегда) использовать датаклассы, с ними таких проблем нету.
Можно использовать датаклассы, но тогда деструктуризации нет из коробки.
Как я понимаю было предложение на синтаксис A[T] в PEP-695, тогда не нужно было бы наследование.