@kot-samolet

Какая разница между C# и Python?

Вопрос не ради холивара и не о том какой язык лучше.
Допустим мне надо написать десктопное приложение для винды. Какая разница между написанием его на C# и Python?
Первый пункт, вероятно, будет вес инсталлятора. В винде может быть не установлен Python поэтому мне надо упаковать его в exe файл тоже, что увеличит его размер ~ на 80 Мб, но допустим это не проблема и вес инсталлятора значения не имеет...

Просто, что отличает эти языки при написании десктопных приложений?
Скорость? (хотя это метрика относительная, у любого языка есть 100500 способов ускориться)
На каком языке проще использовать возможности 64-битной архитектуры?
На каком языке проще сделать программу что бы она запускалась как можно на больших версиях винды без переделки, т.е. XP, Vista, 7, 8, 8.1, 10 и т.д.?
На каком языке проще добраться до системных API если мне надо добраться до аудиоустройства или видеокарты? (ну просто С мы тут не рассматриваем в сравнении)
  • Вопрос задан
  • 16344 просмотра
Решения вопроса 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
что отличает эти языки

Основное отличие - статическая типизация.

На каком языке проще добраться до системных API

Если под Windows, то на C#.
Ответ написан
Комментировать
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Просто, что отличает эти языки при написании десктопных приложений?
Нативность процесса, в первую очередь. И возможно конечная кросс-платформенность полученных решений. В C#, точнее в платформе .NET есть отличная интеграция (лучше слова подобрать не смог) с такими привычными многим штуками как WinForms например, и вообще он изначально создавался конкретно для разработки чего-то подобного, именно под Windows (в первую очередь). Python изначально разрабатывался как платформо-независимый язык и в своём базовом арсенале, чего-либо сравнимого с функционалом построения различных форм на C#/.NET, из коробки не имеет. А ещё у C# есть отличная IDE идущая вместе с ним в комплекте (Visual studio), причём бесплатная, а ещё там есть WPF и разные другие штуки. Но я бы всё равно не сравнивал языки в таком контексте, слишком "топорное" сравнение.

Скорость? (хотя это метрика относительная, у любого языка есть 100500 способов ускориться)
Я бы не стал заострять внимание на этом показателе.

На каком языке проще использовать возможности 64-битной архитектуры?
Не понятно, про какие именно возможности идёт речь... Но, по моему, от языка это вообще мало зависит.

На каком языке проще сделать программу что бы она запускалась как можно на больших версиях винды без переделки, т.е. XP, Vista, 7, 8, 8.1, 10 и т.д.?
На любом языке, в но в качестве платформы - я бы порекомендовал конкретно .NET Framework 4.0, т.к. более поздних версий оного под XP, насколько я помню, не существует.

*но тут стоит обратить внимание, на то, что с большей долей вероятности, в систему для начала всё-таки придётся установить .NET, т.к. нужная версия оной есть далеко не всегда. Эту проблему так же решают инсталляторы, но размер инсталлятора самой платформы - тоже далеко не маленький. Современные ОС семейства Windows (10-ка точно) предалгают пользователю загрузить нужный .NET Framework при его отсутствии - автоматически.

На каком языке проще добраться до системных API если мне надо добраться до аудиоустройства или видеокарты? (ну просто С мы тут не рассматриваем в сравнении)
Не могу сказать наверняка, но скорее всего, ни на каком из них. Из коробки, языки высокого уровня, обычно не поддерживают низкоуровневые операции. Готовых же библиотек, в т.ч. низкоуровневых, для компенсации данного недостатка хватает обычно для любых языков. А вообще, это очень обширная тема, "добраться" до устройства можно очень разными способами... и на разных уровнях. Можно написать свой драйвер (в этом случае, вряд ли какой-то язык из списка подойдёт), а можно использовать WinAPI или какие-то готовые функции написанных кем-то ранее драйверов...
Ответ написан
Комментировать
FeNUMe
@FeNUMe
C# - компилируемый со статической типизацией, но завязан на наличие в системе библиотек .Net. Разрабатывается MS, потому естественно интеграция с виндой будет лучше.

Python - интерпретируемый с динамической типизацией, для работы требуется либо установленный интерпретатор, либо включать его в поставку(но это не 80мб, а примерно 13 без применения доп. сжатия)

Если нужен нативный GUI то лучше остановится на С#, хотя питоновские tk/pyqt/pyside/wxwidgets вполне могут выглядеть родными, но усилий придется приложить больше.
Если нужна кроссплатформенность - выбирайте питон.
Ответ написан
@DarkByte2015
Странное сравнение. Для десктопа под винду выбирать без вариантов C# (WPF). Питон хоть и можно использовать для десктопа (PyQt в основном), но это не лучший выбор, использующийся в основном под линуксом, где питон по умолчанию стоит в системе и не надо тащить его с инсталятором.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы