Вопрос к апологетам шарпа.
Если он такой классный, почему к нему так мало батареек?
Говорят питон медленный. Нет! Пробовал запустить небольщую настолку.
ракета. даже нет смысла сравнивать с шарпами. причем и фазы компиляции нет,
и все равно быстрее)) Ну, а если нужны готовые компоненты то тут вообще
и кол-во и качество сильно меньше чем в питоне.
>Вопрос к апологетам шарпа. >Если он такой классный, почему к нему так мало батареек?
Мало чего? >Говорят питон медленный. Нет! Пробовал запустить небольщую настолку.
Запустить накуда?
Апологеты шарпа не знают зумерского жаргона и не понимают о чём вообще речь.
Здравствуйте, Разраб, Вы писали:
Р>почему к нему так мало батареек?
Шта?
Р>Пробовал запустить небольщую настолку.
Что пробовал запустить?
Р>ракета
Бобр!
Здравствуйте, imh0, Вы писали:
I>на Питоне вообще мало кто умеет писать — то что вижу из написанного, выглядит как написанное на СИ или C# ))
Так питон и нужен что бы х%%як-х%%к и в продакшен. Это язык склейки уже готовых библиотек. Писать на нём конечно-же можно, но не опускаясь до деталей.
I>Питон это язык для манипулирования массивами.
Нет он позволяет просто и быстро использовать накопленный другими опыт.
Здравствуйте, kov_serg, Вы писали:
_>Так питон и нужен что бы х%%як-х%%к и в продакшен. Это язык склейки уже готовых библиотек. Писать на нём конечно-же можно, но не опускаясь до деталей.
Это отличный язык для любых IO-bound задач.
Используется в куче серьезных систем, включая высоконагруженные.
Здравствуйте, Буравчик, Вы писали:
Б>Т.е. очень удобный.
Может и не очень важна, но как из этого следует "очень удобный"? Б>Для io-bound задач не сильно важна скорость языка.
Здравствуйте, Буравчик, Вы писали:
_>>Может и не очень важна, но как из этого следует "очень удобный"?
Б>Почему ты решил, что одно следует из другого?
Кстати а какой питон чаще используется с аннотацией типа TS или без аннотаций типа JS
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Кстати а какой питон чаще используется с аннотацией типа TS или без аннотаций типа JS
Имхо, современный питон весь с аннотациями. Свежие версии библиотек также имеют аннотации
В целом, чем крупнее проект, тем чаще используются аннотации. Без аннотаций пишут совсем что-то простое.
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, Serginio1, Вы писали:
S>>Кстати а какой питон чаще используется с аннотацией типа TS или без аннотаций типа JS
Б>Имхо, современный питон весь с аннотациями. Свежие версии библиотек также имеют аннотации Б>В целом, чем крупнее проект, тем чаще используются аннотации. Без аннотаций пишут совсем что-то простое.
Увы состояние аннотаций в Python довольно уныло.
Да есть, да используется, но по сравнению с TypeScript небо и земля.
Я не говорю даже про саму систему аннотаций, которая не такая выразительная.
Обычно когда пишут на Python аннотации это последнее о чём думают.
Разве, что в проект приходят любители статической типизации и легкоподдерживаемого кода.
По моему опыту серьёзных пайтонщиков очень нелегко убедить в необходимости аннотировать.
Здравствуйте, Pzz, Вы писали:
Pzz>У питона проблема та, что батарейка, которую ты использовал, после минорного обновления может без предупреждения поменять полярность.
Здравствуйте, _NN_, Вы писали:
_NN>Да есть, да используется, но по сравнению с TypeScript небо и земля. _NN>Я не говорю даже про саму систему аннотаций, которая не такая выразительная.
Здравствуйте, Буравчик, Вы писали:
Pzz>>У питона проблема та, что батарейка, которую ты использовал, после минорного обновления может без предупреждения поменять полярность.
Б>Пример в студию
Ну извини. Глазами такое вокруг себя много раз видел, но полицейский протокол не составлял.
Здравствуйте, Pzz, Вы писали:
Pzz>>>У питона проблема та, что батарейка, которую ты использовал, после минорного обновления может без предупреждения поменять полярность. Pzz>Ну извини. Глазами такое вокруг себя много раз видел, но полицейский протокол не составлял.
Потому что такой проблемы нет, по крайней мере массово.
Большинство библиотек поддерживают правила версионирования и не ломают совместимость.
В библиотеках питона порядка намного больше, чем в том же js
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, Pzz, Вы писали:
Pzz>>>>У питона проблема та, что батарейка, которую ты использовал, после минорного обновления может без предупреждения поменять полярность. Pzz>>Ну извини. Глазами такое вокруг себя много раз видел, но полицейский протокол не составлял.
Б>Потому что такой проблемы нет, по крайней мере массово.
Б>Большинство библиотек поддерживают правила версионирования и не ломают совместимость. Б>В библиотеках питона порядка намного больше, чем в том же js
ну я питон не использую, но всё равно знаю, что там была ломающая версия 2-3 вроде. Я так понимаю, что переписывать приложение надо было чтобы в новой версии питона заработало?
Здравствуйте, Буравчик, Вы писали:
Б>Используется в куче серьезных систем, включая высоконагруженные.
а мне всегда было интересно почему тормозной питон используется в высоконагруженных системах?
то что есть готовые либы и можно легко подцепить? но ведь нам там важна скорость и, возможно, лучше написать своё на плюсах, чтобы не было узкого горлышка в виде питона
Здравствуйте, 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, тогда не нужно было бы наследование.
Здравствуйте, Разраб, Вы писали:
Р>Вопрос к апологетам шарпа. Р>Если он такой классный, почему к нему так мало батареек?
Потому, что он нишевый. Питон же используется как клей к сильно оптимизированним C-м числодробилкам, там и на C++ чтоб угнаться за numpy — нужно заморочится с оптимизациями.
Б>Используется в куче серьезных систем, включая высоконагруженные.
В высоконагруженных системах он работает ВОПРЕКИ, а не благодаря. Сервер Инстаграма, например, который тянет 100 (сто!) клиентов, — весьма серьезная машина с кучей памяти и CPU.
P>а мне всегда было интересно почему тормозной питон используется в высоконагруженных системах?
Потому что на начальном этапе нужно уяк-уяк-в-продакшн, а когда ВНЕЗАПНО продукт взлетел, переписать на что-то менее ужасное уже нет ни времени, ни бюджета, ни разработчиков.