".NET" n'est pas un langage. Peut-être s'agit-il de Python contre C# ou de Python/Django contre C#/ASP.NET (ou choisissez le "réseau web" que vous voulez ; il existe de très nombreuses solutions différentes pour Python et ".NET" et choisir Django ou MVC2 d'emblée pourrait limiter considérablement les meilleures options viables). Pour contrer l'opposition entre Python et ".NET" : Il y a IronPython (Python "en .NET")
J'y réfléchirais : Confort du développeur avec un langage et, s'ils sont égaux en Python et ".NET", alors je considérerais les délais de développement et choisirais le langage/le "webwork" qui minimise cela (encore une fois, il ne doit pas s'agir de contraintes antérieures).
Bien que le test d'unité/intégration soit indispensable pour tout projet [important], je trouve qu'un test d'unité et d'intégration est plus facile à réaliser. langage statiquement typé (C#/F#) peut réduire considérablement le nombre de "bugs stupides" relatifs aux types.
Ouvrez le terrain de jeu :-)
Modifier pour le commentaire :
Alors vous ne faites que comparer les langues.
Dans ce cas, le C# est un langage impératif statiquement typé très ennuyeux, avec un système d'exploitation basé sur les classes à héritage unique/interface (mais avec un peu plus d'astuces que Java, qui est carrément de l'âge de pierre). Ceci est le même type d'OO de base que celui de Python et en excluant le bit statique/dynamique, les deux langages sont fortement typés (les mécanismes sont différents, mais le résultat final est assez similaire dans le spectre des langues). En fait, python dispose de MI, mais cela semble moins accepté en python que l'utilisation du mot-clé "lambda" et, comme python est typée dynamiquement, il n'y a pas de support de compilation pour déterminer les contrats d'interface/type (il y a cependant quelques modules qui essaient de le faire).
Si vous pouvez apprendre/connaître Python, alors vous pouvez apprendre/connaître C#. Ce n'est pas un changement de paradigme. Quelques mots-clés par-ci, des accolades par-là, la nécessité de dire de quel type on parle par-là, une bibliothèque de base différente... un environnement différent (il faut se battre pour accéder à un REPL, mais c'est faisable dans VS.) La façon dont les développeurs l'apprécient, l'apprennent et l'utilisent est une autre histoire. Alors que je qualifiais auparavant le C# d'impératif, il est agréable de voir l'ajout de certaines fonctionnalités "de type fonctionnel" telles que les extensions LINQ/IEnumerable et les closures-without-delegates, même si la syntaxe de base du C# est très procédurale -- une fois de plus, assez proche de celle de Python (for-expressions, fonctions imbriquées, division des déclarations/expressions).
Alors que le nouveau "dynamic" brouille les pistes (il n'est que très rarement utilisé à bon escient - dans à peu près tous les endroits où l'on aurait pu se rabattre sur la réflexion dans les versions antérieures de C# - ce n'est pas vrai, mais le fait est que c'est généralement "la mauvaise méthode", sauf dans les rares cas où c'est "la meilleure/la seule méthode"), "var" ne le fait pas. C'est-à-dire que le type d'une variable 'var' est connu au moment de la compilation y n'a rien à voir avec le typage dynamique Il s'agit d'une inférence de type. Certains langages comme F#/SML et Haskell ont une inférence de type beaucoup, beaucoup plus puissante, supprimant le besoin de "toutes ces affreuses déclarations de type" (bien que l'annotation explicite des types ou des ensembles de types autorisés puisse rendre l'intention plus claire) tout en préservant le typage statique.
Personnellement, tout le reste mis à part je choisirais un langage à typage statique. Je ne dis pas C# (et je ne dis certainement pas Java !), mais les langages à typage statique peuvent faire passer les erreurs de type au premier plan et exiger des contrats explicites dès le départ (c'est une grande, grande victoire pour moi). Bien que vous ne puissiez pas profiter de certaines astuces dynamiques, il existe presque toujours une meilleure façon d'effectuer la même action dans le langage cible - vous devez simplement penser en termes de ce langage et utiliser un tournevis pour une vis et un marteau pour un clou. Par exemple, n'espérez pas transposer tel quel en C# du code Python reposant sur l'utilisation (ou l'absence d'utilisation) de local() ou global().
Du côté négatif, la plupart des langages typés statiquement (ici C#) nécessitent une compilation explicite en premier (mais ce n'est pas si mal car cela permet de faire de jolis assemblages) et des outils comme le "REPL" ne sont pas considérés comme des citoyens de première classe (c'est un citoyen de première classe dans F#/VS2010). De plus, si vous avez une bibliothèque essentielle pour Python/C# (et qu'elle n'est pas disponible dans l'autre langage), cela peut être un facteur décisif pour choisir un langage plutôt que l'autre.
0 votes
Développez-vous un site web ou une application web ? Parce que je pense que des outils comme GWT sont beaucoup plus adaptés aux "applications".
0 votes
Merci pour la suggestion Matt ! Nous développons une application web avec ajax, traitement asynchrone, etc. Par exemple, les utilisateurs entrent certains paramètres pour mettre en file d'attente des opérations intensives en calcul (qui impliquent alors l'interrogation des tables de la base de données) et ils commencent à fonctionner avec les résultats présentés dès qu'ils sont disponibles. Il y a beaucoup, beaucoup de pages différentes, de widgets, etc. Certes, nous n'avons pas investi trop de temps dans l'exploration de GWT car il est très similaire à ce que nous avons actuellement. À ce stade, nous cherchons à aller de l'avant et nous nous concentrons sur Python vs .Net.
3 votes
".NET" n'est pas un langage. Il s'agit peut-être de Python contre C# ou de Python/Django contre C#/ASP.NET (ou choisissez n'importe quel "réseau web" que vous voulez ; il y a beaucoup, beaucoup de solutions différentes pour Python et ".NET") -- Il y a IronPython[ [ironpython.net/]](http://ironpython.net/]) (Python "en .NET")
1 votes
Bon point pst, je parle de C#ASP.NET avec MVC2.
0 votes
Je parle de GWT parce que si vous faites quelque chose qui ressemble à une "application" de bureau, il est beaucoup plus adapté que, à ma connaissance, tout ce qui est fourni par .NET ou Python. Bien que je pense qu'il y a un projet GWT-like pour Python.
0 votes
Vous pouvez combiner les deux avec quelque chose comme IronPython ou PythonNET.