Наверное я один из немногих, которые желают опубликовать материал не просто, чтобы было, или чтобы высказать свое «авторитетное» мнение по тем или иным вопросам, а чтобы получить обратную связь. И за эту самую связь в комментариях я был бы весьма признателен!
Эта статья является немного более детальным изложением моего видео
Статья называется «проблема выбора» потому, что проблема действительно есть, и я попытаюсь изложить свое отношение.
А что сравнивать?
Действительно. 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/
Добавить комментарий