Python vs C#, Django vs ASP: проблема выбора

от автора

Наверное я один из немногих, которые желают опубликовать материал не просто, чтобы было, или чтобы высказать свое «авторитетное» мнение по тем или иным вопросам, а чтобы получить обратную связь. И за эту самую связь в комментариях я был бы весьма признателен!

Эта статья является немного более детальным изложением моего видео

Статья называется «проблема выбора» потому, что проблема действительно есть, и я попытаюсь изложить свое отношение.

А что сравнивать?

Действительно. Python — объектно-ориентированный, интерпретируемый язык программирования с динамической типизацией, а C# такой же объектно-ориентированный, но компилируемый и со статической типизацией. На этом, казалось бы, можно и закончить, однако предлагаю порассуждать подробнее.

Компилируемый vs интерпретируемый

Знаете, складывается такое ощущение, что вокруг одни кодеры. Да-да, не программисты, не разработчики, а кодеры.

Конечно, ни всем же получать высшее образование и т. д., но лично мне кажется, что не понимать различие компилируемости и интерпретируемости, это как не знать нот, будучи музыкантом. Играть можно, петь можно, но представьте, как такой музыкант будет учить играть на музыкальном инструменте или записывать свои произведения: нажмите кнопочку, семнадцатую по счету слева, находящуюся рядом с черной клавишей…

Компиляция — не просто перевод текста языка программирования в машинные коды, а в некоторых языках (C#, Java), в байт-код.

Я надеюсь, что среди присутствующих не возникнет разногласий по поводу того, что C# и Java компилируемые языки.

При запуске Python-кода, он компилируется в байт-код, который за тем выполняется в Python Virtual Machine.

И здесь в головах многих может возникнуть диссонанс. А вы знали, что PHP также компилируется?

На дворе почти 2025 год, а я до сих пор встречаю определение Python как медленного. Спрашиваешь, почему, а в ответ: так он же интерпретируемый!

Я не стану отрицать, когда‑то я и сам считал также. Как? А вот что наш текст выполняется интерпретатором как текст, и все. А ведь текст — набор символов какой‑то кодировки, явно не машинный код!

Так почему же Python интерпретируемый? Из‑за способа исполнения, поскольку байт‑код выполняется пошагово.

А дальше даже пытаться рассуждать об этом не стану, потому что это надо быть кем‑то очень опытным и образованным, чтобы не сломать ногу в нововведениях того же Python 3.13, введенной JIT и возможности отключить GIL.

Производительность.

Вопрос компилируемости или интерпретируемости встает обычно из-за производительности. Дескать, оно компилируемое, а значит, по умолчанию быстрее, и кривой алгоритм совсем не беда!

Многие библиотеки на Python написаны на C/C++, а соответственно, вызывают тот самый, невероятный C/C++ код! И все, что медленно, так это по сути вызовы этого самого кода.
Мне тут в комментах под одним из видео написали, что Python не вывозит рендеринг 10_000 спрайтов. Я лично не проверял, но подозреваю, что если заморочиться, то и не то можно.

А почему же тогда игры не пишут на Python? Такое утверждение я также встречаю достаточно часто. И сразу вопросы, очень много! Кто не пишет? Что не пишет?

Компании не пишут? Так у компании наверно есть деньги на свои движки и C++ программистов.

А вот Маркус Перссон взял и создал на Java самую продоваемую игру в истории, Minecraft, если кто не понял. И плевать ему было, чем там компании занимаются, и на чем пишут.

Так вот, многие говоря о геймдеве забывают, что есть игровая логика, а есть игровая механика. И зачем писать движок на Python, если тот же Pygame использует вполне себе сишный SDL. А движок? Извините, язык программирования лишь инструмент, и Python не для тех задач. Но если вопрос в написании игровой логики на Python, возможно весьма!

Выбор

И когда мы смотрим на вопрос выбора сквозь открывшиеся факты, этот вопрос становится не таким и глупым, и весьма даже объективным.

С появлением top level в C#, теперь тот же Hello World можно уместить в одну лишь строку.

И теперь различия между Python и C# стали минимальными. Оба просты, один чуть проще, другой чуть подробнее (но ведь подробнее не = сложнее?), один с каким-то ООП без инкапсуляции, второй же с полной моделью (хотя и в Python можно сделать подобие идеальной модели), и даже задачи можно решать те же, я знаю, что Microsoft развивает тему с ML, но я не вникал, не моя тема.

Личная история

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

Я не планировал и не планирую быть профессиональным разработчиком. Но поработать надо, для иммиграционных причин.

И когда я смотрю в разработку, понимаю, скорее всего, лишь Backend. При этом, я боюсь сложных задач. Не в смысле задач боюсь, а боюсь не справиться. Не хочу изучать глубоко алгоритмы и т.д.

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

И казалось бы, выбирай Python/Django, и не парься! Однако, такой выбор сделает Python моим основным языком, а мне хотелось бы полной свободы.

Есть лишь одна интересная мне сфера, в которой Python слаб. И если бы не она, мой личный выбор однозначно был бы за ним. Android разработка!

Вот вокруг говорят, что мобильная разработка — либо Java/Kotlin, либо Swift. Кроссплатформенная, Dart. И нигде! Ни разу! Не говорят о MaUI, где когда пишем на C#, получаем нативные приложения под обе платформы, Android и IOS.

Вы мне скажете: ведь у Python есть Kivy. А я отвечу, что развивается он непойми как, и к сожалению, Kivy это open source проект, неподдерживаемый крупными компаниями (насколько я знаю).

Сразу хотелось бы отметить, что я ничего не имею против open source. Более того, это круто, когда проекты создаются идейными. Но за многими действительно качественными продуктами, с которыми я когда‑либо был знаком, стоят крупные компании.

Тот же чтец экрана Orca для слепых и слабовидящих для Linux был создан сотрудником Sun Microsystems. А знакомым с Linux так и вообще думаю не следует рассказывать о Fedora, и чем она отличается от иных дистрибутивов.

Короче, Kivy за которым стоят энтузиасты мне нравится меньше MaUI, за которым стоит Microsoft.

И казалось бы, радуйся, иди практикуй себе C#/ASP, но ведь ASP преимущественно используют в корпоративном секторе, где самое важное бизнес‑логика, именно то, где бы я не хотел находиться!

Иногда встречал рекомендации реализовать что‑то одно на двух фреймворках, и посмотреть, что и как. Когда я только начинал, реализация блога на ASP у меня вышла немного дольше, чем на Django. Быть может, если быть опытным и все знать это нивелируется, но я не уверен.

А тех, которые работали с обеими платформами, я пока еще не встречал. Быть может, здесь такие найдутся?

Надеюсь, эта статья окажется кому-то полезной, спасибо за внимание!


ссылка на оригинал статьи https://habr.com/ru/articles/863778/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *