Search
Write a publication
Pull to refresh

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. Быть может, если быть опытным и все знать это нивелируется, но я не уверен.

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

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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.