.NET не является языком.Возможно, это Python против C # или Python / Django против C # / ASP.NET (или выберите любую «веб-работу», которую вы хотите; есть много-много разных решений для Python и .NET, и выбор Django или MVC2 из битой можетстрого ограничивая лучшие жизнеспособные варианты).В противовес Python и ".NET": IronPython (Python "в .NET")
Я бы рассмотрел: Комфорт разработчика сязык и, если они равны в Python и ".NET", я бы рассмотрел сроки выполнения разработки и выбрал язык / "веб-работу", которая минимизировала это (опять же, это не должно быть предыдущими ограничениями).
В то время как модульное / интеграционное тестирование является обязательным для любого [большого] проекта, я считаю, что статически типизированный язык (C # / F #) может значительно уменьшить количество «глупых ошибок»."относящиеся к типам.
Откройте игровое поле: -)
Редактировать для комментария:
Тогда вы просто сравниваете языки.
В этом случае C # - очень скучный императивный статически типизированный язык с ОО на основе классов с единичным наследованием / интерфейсом (но несколько более изящных трюков, чем Java, что является просто каменным веком).Это тот же базовый тип ОО, что и у Python , и исключая статический / динамический бит, , оба языка строго типизированы (механика различна, но конечный результат очень похож вязыковой спектр).На самом деле, Python имеет MI, но это кажется менее приемлемым в Python как использование ключевого слова 'lambda', и, поскольку python динамически типизирован, отсутствует поддержка во время компиляции для определения контрактов интерфейса / типа (однако, есть некоторые модули, которыепопробуйте это представить).
Если вы можете изучать / знать Python, то вы можете изучать / знать C #. Это не смена парадигмы.Некоторые ключевые слова здесь, фигурные скобки, должны сказать, какой тип вы имеете в виду, другую базовую библиотеку ... другую среду (вам нужно бороться с некоторыми, чтобы получить REPL, но это выполнимо в VS.) Как разработчики любят / изучают /использовать это другая история.Хотя я и раньше называл C # императивом, приятно видеть добавление некоторых «функционально-подобных» функций, таких как расширения LINQ / IEnumerable и замыкания без делегатов, даже если базовый синтаксис C # очень процедурный - еще раз, довольноочень похоже на python (для выражений, вложенных функций, деления операторов / выражений).
В то время как новый «динамический» действительно размывает линию (очень редко его можно использовать - практически все то же самое)места, в которых, возможно, приходилось возвращаться к размышлениям в предыдущих версиях C # - это неправда, но дело в том, что это, как правило, «неправильный путь», за исключением тех немногих случаев, когда это оказывается «лучшим / единственным»way "), 'var' нет.То есть тип переменной 'var' - , известный во время компиляции , а не имеет ничего общего с динамической типизацией ;это все вывод типа.Некоторые языки, такие как F # / SML и Haskell, имеют гораздо более мощный вывод типов, устраняя необходимость «всех этих уродливых объявлений типов» (хотя явное аннотирование разрешенных типов или наборов типов может сделать намерение более ясным) при сохранении статической типизации.
Лично все остальное, кроме , я бы использовал статически типизированный язык.Я не говорю о C # (и я определенно не говорю о Java!), Но статически типизированные языки могут выдвинуть ошибки типов наверх и требуют предварительных явных контрактов (это большой, большой выигрышдля меня).Несмотря на то, что вы упускаете некоторые изящные динамические трюки, почти всегда есть лучший способ выполнить то же действие на целевом языке - вы просто должны думать об этом языке и использовать отвертку для винта и молоток дляГвоздь.Например, не ожидайте, что код Python, основанный на (ab) использовании local () или global (), будет перенесен в C # как есть.
С другой стороны, большинство статически типизированных языков (здесь C #) требуют явной компиляции вначале (но это не так уж плохо, так как это делает симпатичные сборки), а инструменты типа "REPL" не используются как первоклассные граждане (это первоклассный гражданин в F # / VS2010). Кроме того, если у вас есть необходимая библиотека для Python / C # (а она недоступна на другом языке), это может стать решающим фактором в отношении выбора одного языка перед другим.