Re[4]: Python vs C#
От: peer  
Дата: 24.04.24 06:16
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Используется в куче серьезных систем, включая высоконагруженные.


а мне всегда было интересно почему тормозной питон используется в высоконагруженных системах?
то что есть готовые либы и можно легко подцепить? но ведь нам там важна скорость и, возможно, лучше написать своё на плюсах, чтобы не было узкого горлышка в виде питона
Re[6]: Python vs C#
От: Буравчик Россия  
Дата: 24.04.24 07:09
Оценка:
Здравствуйте, peer, Вы писали:

P>ну я питон не использую, но всё равно знаю, что там была ломающая версия 2-3 вроде


Во-первых, речь была про библиотеки. И тезис был о том, что минорная версия меняет совместимость. Но изменение питон 2-3 это не минорная версия.

Во-вторых, даже при появлении питона 3, предыдущая версия 2 поддерживалась несколько лет! Поэтому все плавно (!) переходили на питон 3.

Сйчас, в питоне 3, все хорошо с совместимостью. И в части языка, и в части библиотек

P>Я так понимаю, что переписывать приложение надо было чтобы в новой версии питона заработало?


Да, переписывать код было надо. Точнее портировать, полностью переписывать не надо.
В большинство случаев переход мог быть сделан с помощью автоматических конвертаторов типа 2to3.
Также была возможность писать код так, чтобы он работал в обеих версиях питона.

Но вопросы тестирования кода с библиотеками оставались. Т.к. для нового питона часто выпускали новые (мажорные) версии библиотек.
Больше напряга было для разработчиков библиотек, т.к. им приходилось поддерживать библиотеки для обеих версий сразу.

https://habr.com/ru/companies/nmg/articles/762702/
Best regards, Буравчик
Re[5]: Python vs C#
От: Буравчик Россия  
Дата: 24.04.24 07:11
Оценка:
Здравствуйте, peer, Вы писали:

P>а мне всегда было интересно почему тормозной питон используется в высоконагруженных системах?

P>то что есть готовые либы и можно легко подцепить? но ведь нам там важна скорость и, возможно, лучше написать своё на плюсах, чтобы не было узкого горлышка в виде питона

Потому что в io-bound системах нет "узкого горлышка в виде питона". Там узкое место сеть и БД. А скорость и удобство разработки на питоне выше.
Best regards, Буравчик
Re[12]: Python vs C#
От: _NN_ www.nemerleweb.com
Дата: 24.04.24 19:05
Оценка: 2 (1)
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, _NN_, Вы писали:


_NN>>Да есть, да используется, но по сравнению с TypeScript небо и земля.

_NN>>Я не говорю даже про саму систему аннотаций, которая не такая выразительная.

Б>Пример есть?

Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs.
При чём пришлось создать новый тип в замену TypeGuard.

Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[13]: Python vs C#
От: Буравчик Россия  
Дата: 24.04.24 21:31
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs.

_NN>При чём пришлось создать новый тип в замену TypeGuard.
_NN>Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.

Но добавили же, т.е. выразительность сравнялась.

Есть пример по-свежее, где python действительно менее выразителен (на данный момент)?
Best regards, Буравчик
Re[13]: Python vs C#
От: Буравчик Россия  
Дата: 24.04.24 21:41
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs.

_NN>При чём пришлось создать новый тип в замену TypeGuard.
_NN>Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.

А вот C# умеет такое в своей системе типов?
Best regards, Буравчик
Re: Python vs C#
От: Teolog  
Дата: 25.04.24 07:37
Оценка: 1 (1)
C# в производительности умудряется конкурировать с C++ за счет более удобной многопоточности и развитой библиотеки.
Он предназначен для написания корпоративного софта и средне и низко нагруженного кода.
Потому что писать на нем быстро и надежно.

Питон — язык автоматизации, софт на нем писать нельзя — переписывать придется.
Производительность родного питонистого кода отсутсвует как класс и она ему и не нужна.
Re: Python vs C#
От: Maniacal Россия  
Дата: 25.04.24 08:13
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>Вопрос к апологетам шарпа.

Р>Если он такой классный, почему к нему так мало батареек?
Тебе .NET мало или WinForms, WPF?
Re[14]: Python vs C#
От: hardcase Пират http://nemerle.org
Дата: 25.04.24 10:19
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>А вот C# умеет такое в своей системе типов?


Объединения типов (int | float) от рождения в .NET невозможны, вместо этого применяются перегрузки методов. Можно конечно изобрести надстройки из собственных классов, но как правило объединение простых типов за каким-то обобщенным фасадом перекладывается на плечи разработчиков библиотек. В подавляющем же большинстве случаев, если либа умеет работать с параметром int и float, то она умеет вообще во все простые типы и потому используется object.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[14]: Python vs C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.04.24 10:50
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, _NN_, Вы писали:


_NN>>Вот например, MyPy вышел только сегодня MyPy с поддержкой TypeIs.

_NN>>При чём пришлось создать новый тип в замену TypeGuard.
_NN>>Здорово, что наконец добавили, но занимает уж очень много времени пока необходимая функциональность подходит.

Б>А вот C# умеет такое в своей системе типов?

В шарпе есть дженерики с ограничениями, есть Арифметические операторы в универсальных типах.
Есть перегрузки методов
Есть Сопоставление шаблонов — is выражения и switch операторы and, or а также not в шаблонах

Аналога TS ограничения object нет. Там проще перегрузку методов использовать.
и солнце б утром не вставало, когда бы не было меня
Re[2]: Python vs C#
От: Разраб  
Дата: 27.04.24 11:56
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Здравствуйте, Разраб, Вы писали:


Р>>Вопрос к апологетам шарпа.

Р>>Если он такой классный, почему к нему так мало батареек?
M>Тебе .NET мало или WinForms, WPF?
Да
Из реальных обломов.
1. Криптопро в корке
2. тг-клиент поддерживающий профиль офклиента
3. ну и вообще, если даже с явой сравнить кол-во компонентов сильно меньше для решения прикладных задач(я не фанат своих велосипедов)
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Python vs C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.04.24 13:29
Оценка: +2
Здравствуйте, Разраб, Вы писали:

Р>>>Вопрос к апологетам шарпа.

Р>>>Если он такой классный, почему к нему так мало батареек?
M>>Тебе .NET мало или WinForms, WPF?
Р>Да
Р>Из реальных обломов.
Р>1. Криптопро в корке
Р>2. тг-клиент поддерживающий профиль офклиента
Р>3. ну и вообще, если даже с явой сравнить кол-во компонентов сильно меньше для решения прикладных задач(я не фанат своих велосипедов)

Питон использует тот же интероп, что и .Net
Тот же Xamarin использует Java и для совместимости библиотек можно делать биндинги.
Ну и используй питон, раз он тебе нужны фичи которых нет в C#.
Тем кто использует C# не нужен. Нельзя объять необъятное.
А вот батареек в C# с каждым годом все больше и больше. Когда появился .Net Core тут кричали не взлетит. Однако летит и взлетает еще выше.
и солнце б утром не вставало, когда бы не было меня
Re[4]: Python vs C#
От: Буравчик Россия  
Дата: 28.04.24 09:31
Оценка: :))
Здравствуйте, Serginio1, Вы писали:

S> А вот батареек в C# с каждым годом все больше и больше. Когда появился .Net Core тут кричали не взлетит. Однако летит и взлетает еще выше.


Скоро появится еще какой-нибудь .Net Super Puper Mega от микрософта с супер-фичами и все начнут переписывать на него.

А в питоне/js/java для поддержки этих фич просто добавится еще пара библиотек/фреймворков.
Best regards, Буравчик
Re[14]: Python vs C#
От: _NN_ www.nemerleweb.com
Дата: 28.04.24 13:12
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, _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
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[15]: Python vs C#
От: Буравчик Россия  
Дата: 28.04.24 17:54
Оценка: 2 (1)
Здравствуйте, _NN_, Вы писали:

_NN>С getattr вот были проблемы решил через Any.

_NN>Может подскажете решение заодно.

Я что-то не понял, в чем была проблема. Можно онлайн-пример?
Вроде, все работает в strict-режиме

https://mypy-play.net/?mypy=latest&python=3.12&gist=94349d6abee3dfe2636d0a39bc32519a&flags=strict
Best regards, Буравчик
Re[16]: Python vs C#
От: _NN_ www.nemerleweb.com
Дата: 29.04.24 07:16
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, _NN_, Вы писали:


_NN>>С getattr вот были проблемы решил через Any.

_NN>>Может подскажете решение заодно.

Б>Я что-то не понял, в чем была проблема. Можно онлайн-пример?

Б>Вроде, все работает в strict-режиме

Б>https://mypy-play.net/?mypy=latest&python=3.12&gist=94349d6abee3dfe2636d0a39bc32519a&flags=strict


Да, работает.
Не помню почему у меня здесь не получилось тогда.
Как найду другие примеры отпишусь.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[16]: Python vs C#
От: _NN_ www.nemerleweb.com
Дата: 29.04.24 07:51
Оценка: 3 (1) +1
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, _NN_, Вы писали:


_NN>>С getattr вот были проблемы решил через Any.

_NN>>Может подскажете решение заодно.

Б>Я что-то не понял, в чем была проблема. Можно онлайн-пример?

Б>Вроде, все работает в strict-режиме

Вот, что останавливало:

https://onlinegdb.com/ODB2VhaI-

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

http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[17]: Python vs C#
От: Буравчик Россия  
Дата: 29.04.24 20:09
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Вот, что останавливало:


_NN>https://onlinegdb.com/ODB2VhaI-


_NN>

_NN>TypeError: Multiple inheritance with NamedTuple is not supported


Да, действительно.
Можно (стоит всегда) использовать датаклассы, с ними таких проблем нету.
Best regards, Буравчик
Re[18]: Python vs C#
От: _NN_ www.nemerleweb.com
Дата: 01.05.24 08:02
Оценка: 3 (1)
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, _NN_, Вы писали:


_NN>>Вот, что останавливало:


_NN>>https://onlinegdb.com/ODB2VhaI-


_NN>>

_NN>>TypeError: Multiple inheritance with NamedTuple is not supported


Б>Да, действительно.

Б>Можно (стоит всегда) использовать датаклассы, с ними таких проблем нету.
Можно использовать датаклассы, но тогда деструктуризации нет из коробки.

Как я понимаю было предложение на синтаксис A[T] в PEP-695, тогда не нужно было бы наследование.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[19]: Python vs C#
От: Буравчик Россия  
Дата: 01.05.24 21:49
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Можно использовать датаклассы, но тогда деструктуризации нет из коробки.


unpacking из коробки есть, но не такой красивый — через astuple.

Ну и необходимость в нем уменьшается, т.к. можно обращаться по имени.
По-крайней мере в представленном примере будет выглядеть нормально
Best regards, Буравчик
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.