it-swarm-fr.com

Pourquoi devrions-nous utiliser des langues de bas niveau si un niveau élevé d'un niveau similaire python peut-il faire presque tout?

Je sais python ne convient pas à des choses comme des microcontrolers, de faire des conducteurs, etc., mais vous pouvez tout faire en utilisant Python, les compagnons sont bloqués avec des optimisations de vitesse pour un système de temps difficile, mais vous oublie d'autres Facteurs que vous pouvez simplement mettre à niveau votre matériel pour obtenir des propositions de vitesse afin d'obtenir votre python Cipper le programme, si vous pensez à quel point la société peut conserver le système en C, La comparaison est comme celle-là: Par exemple: 10 programmeurs à Mantain Un système écrit en C et un seul programmeur à Mantain Un système écrit en Python, avec python Vous pouvez acheter un meilleur matériel à adapter votre =python Programme, je pense que les langues de faible niveau ont tendance à obtenir plus de coûts, car les programmeurs ne sont pas tellement à moindre coût qu'une mise à niveau matérielle, c'est là que c'est mon point, pourquoi un système être écrit en C au lieu de python?

6
killown

La raison principale est que le logiciel était déjà écrit en C (ou C++ ou autre) avant Python est devenu légitime choix.

Si c'est une question de réécrire votre million de lignes de code C dans Python ou continuez avec le code C, le choix est clair. Si vous passez 12 mois de réécrire au code de Python, alors c'est 12 mois où vous êtes ne pas ajouter de nouvelles fonctionnalités et vous passerez essentiellement 12 mois de retour à exactement où vous étiez.

Sans parler de ce fait que vous aurez probablement manqué tous ces bugs de coins qui avaient été corrigés au fil des ans de la version C, mais pas vraiment appelé dans le code, alors lorsque votre Python = devient sur le port et dit: "Pourquoi le code fait-il cela? Cela semble bizarre ... je vais le faire aussi cette autre façon" Il oublie réellement que ce client de 6 ans a perdu 12 mois de paie En raison de ce bogue obscur dans leur contrôleur RAID qui a été travaillé avec , ce code de code spécifique .

Il s'agit essentiellement de la même réponse que les gens obtiennent quand ils demandent "pourquoi Microsoft ne réécrit pas Windows ou Office ou (insert-produit-ici) dans .net? Je pensais que .net était l'affiches-enfant pour tout le développement de Microsoft?"

Maintenant, quand il s'agit de développer de nouveaux produits , alors Python (et tous les autres choix possibles) deviennent plus option viable. Mais vous devez toujours peser l'avantage d'aller avec Python (ou autre) sur C ou C++, en particulier lorsque votre nouveau produit peut être interfaçant avec beaucoup de code existant que vous " J'ai déjà écrit en C ou C++.

24
Dean Harding

Parce que même lorsque vous n'écrivez pas "applications de bas niveau" telles que les pilotes de périphérique, la nécessité de bas niveau -code a tendance à apparaître dans toutes sortes d'endroits, en particulier pour les optimisations de performance en calcul parties intensives de votre application. Ceci est suffisamment courant, même dans les applications écrites dans C et d'autres langages statiques, entièrement compilés, et cela ne s'aggrave que lorsque vous commencez à lancer des fonctionnalités linguistiques "de haut niveau", telles que la typage dynamique et les pointeurs gérés dans l'équation.

Lorsque vous avez une langue qui résume tous les détails de bas niveau, tels que Python, vous n'êtes pas en mesure de descendre au niveau requis pour résoudre des problèmes tels que celui-ci. C'est pourquoi vous avez tendance à voir le modèle d'écriture du code principal dans une langue compilée, puis à mettre en œuvre une logique commerciale léger dans un langage de script qui fonctionne au-dessus du code de base, ce qui augmente en popularité ces derniers temps.

9
Mason Wheeler

J'ai bien compris votre question comme "Pourquoi continuer à écrire des choses en C/C++ lorsque de meilleures alternatives sont présentes." Ne réécrivez pas tout simplement parce que nous avons un meilleur marteau. Et je suis d'accord avec vous en théorie. Pourquoi écrit plus de nouvelles choses en C ou ASM, car il s'avère qu'il existe de nombreux problèmes qui fonctionnent mieux pour les langages "de haut niveau" que non.

Je pense à une histoire que James Gosling s'est rappelé à propos de Java équipe. Ils regardaient d'énormes sections de code dans le VM qui a été écrit à l'origine en C parce que ils pensaient que c'était plus rapide. Comme le temps continuait et ils devaient l'améliorer, le maintenir et ajouter de nouvelles fonctionnalités. L'équipe a commencé à se demander pourquoi ne pas le déplacer à Java. Ils ont fait et il s'est avéré être aussi performant, plus simple et plus facile à modifier. Je pense que le nouveau développement ne devrait pas être fait en C/C++, à l'exception de ces exceptions notées, mais ce qui rend notre industrie continuer à croître est le changement de plate-forme. Nous n'avons pas vraiment répondu à de nouvelles questions sur l'ordinateur la science depuis les années 70, mais nous continuons de croître dans des directions étonnantes. C'est en grande partie parce que tous les 10 ans, nous créons de nouvelles plateformes où nous devons tout mettre en œuvre là-bas d'ouvrir des possibilités de transition des langues précédentes à de nouvelles langues. C'est le secret à notre succès de nos industries.

Voici une simple conclusion de 1980-2010: UNIX C-> Windows C++ -> Web Java/JavaScript/Python/Ruby-> Objectif mobile C/Java).

7
chubbsondubs

Parce que si le "système" est une bibliothèque scientifique ou un programme de lecture aller, il peut nécessiter des performances supérieures, c'est pourquoi. Si vous achetez du matériel 10 fois plus rapide, la mise en œuvre de bas niveau sera toujours meilleure.

Et puis il y a une raison assez philosophique, à mon avis: nous devons rester en contact avec le niveau le plus bas de nos machines. Perdre la connaissance des instruments de base comme le langage C serait comme couvrant chaque pouce de la Terre avec ciment et construire un "système" parfaitement travaillant sur elle, oubliant ce qui était là une fois que cela nous a donné la naissance et condamnant la race humaine à l'éternel ignorance.

Kernighan et Ritchie seraient très contrarié à ce sujet.

7
Lorenzo Stella

Quelques observations:

  • L'énorme tendance en informatique est mobile, qui de plusieurs aspects n'est pas loin du microcontrôleur et du développement du système intégré. Python n'est pas encore la langue dédiée pour iOS, Android ou Windows Phone 7.

  • Dans l'informatique de bureau, obtenir du matériel plus rapide est de plus en plus difficile: la vitesse du processeur est bloquée autour de 3GHz et que tout le pouvoir de plusieurs cœurs est loin d'être facile. Les langues de faible niveau ont un avantage sur Python ici.

  • Sur la maintenabilité, le ratio 10: 1 peut être vrai avec des personnes juste graduées qui n'ont jamais été exposées à c mais savent Python et Ruby et tout autre nouveau Langues. Pour la majorité des développeurs seniors, le ratio ne favorise pas Python.

  • Il y a quelques années, tout pourrait être fait de Java et être portable en même temps. Quelques années avant, c'était Perl. Clairement les gagnants de ces jours sont C, C++, C # et objectif C.

4
mouviciel