Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
Tout dépend de comment la matière avait été abordée !
Langage de programmation de haut niveau = "..." dans la tête de leur professeur ?
Je ne suis pas d' accord, il faut prendre en compte le développement et la qualité du langage:
-faire un programme en C est plus difficile qu' en Java (c' est un exemple et c' est en général), un développeur peut plus facilement et plus rapidement faire un code "propre" en Java, celui-ce sera donc peut être plus rapide.
plus le langage est bas niveau, plus il est proche de la machine. D' UNE machine. faire de l' asm sera peut être plus rapide pour 1 machine, mais quelques années plus tard, les machines auront évoluées . . . (cf real mode en 286 et 386)
-cela dépend beaucoup du compilateur: pour avoir fait des tests brutes de tri par tas entre C et Java, j' ai été assez surpris de voir que le C n' est 'que' 30% plus rapide que le Java (environ)
Personnellement, je pense surtout que l'étudiant a du restituer tel quel ce qu'il a entendu en cours...
Et après ça, avis personnel : à moins d'avoir un algorithme trivial, ou d'être le dieu des dieux comme programmeur, on a presque toujours un résultat plus rapide avec un langage de haut niveau de nos jours, car non seulement les compilateurs sont plus intelligents que la plupart des programmeurs (capables d'éliminer d'eux-même des parties redondantes ou inutiles dans un programme par exemple), mais surtout c'est essentiellement avec des langages de haut niveau qu'on arrive à s'y repérer une fois le programme fait, pour analyser où passe le temps (et la mémoire aussi d'ailleurs...). Et en général, on est bien surpris de voir où ça passe... et on ne l'aurait jamais trouvé de soi-même en programmant ex nihilo avec un langage bas niveau.
Par contre, je ne dis pas qu'éventuellement, une fois qu'on a écrit un programme dans un langage haut niveau, qu'on l'a correctement analysé et totalement compris ce qui impacte les performances (donc a priori, on parle là d'un fragment de logiciel relativement restreint), il n'est alors pas impossible d'arriver peut-être à un résultat un peu plus rapide en le reprogrammant dans un langage bas niveau. Mais c'est bien rare que le jeu en vaille la chandelle... Personnellement je développe du logiciel scientifique en Java depuis près de 10 ans, je n'ai jamais eu le cas d'une situation où on aurait eu besoin d'aller voir ailleurs pour des questions de performances.
Ce à quoi j'ajouterais qu'on optimise nettement plus facilement dans un langage haut niveau que dans un langage bas niveau...
Et questions performances, un langage haut niveau après une optimisation raisonnée et correctement conduite, ça bat n'importe quel langage bas niveau programmé "au pif".
Sa réponse n'est pas stupide, et suit même une certaine logique. Je n'aurais pas mis 0 à cette réponse, même si elle ne répond pas à la question.
Assurément, d'une manière générale, il a raison. Quoique d'aucuns prétendent que des programmes en langage de haut niveau puissent être plus rapide?!
Peut-être en effet qu'un mauvais programme en langage de bas niveau est parfois, à ce point de vue, moins bon qu'un programme en langage de haut niveau.
Je ne suis pas informaticien de métier mais je crois connaître Java et C++ pour avoir réalisé quelques extensions de logiciels importants. J'ai aussi dans ma jeunesse été automaticien et j'ai dû écrire des programmes pour animer des machines (mécaniques) très rapides. A l'époque (il y a trente ans), il fallait avoir balayé le programme (lu les nombreuses entrées, fait les traitements logiques et rafraîchi les sorties ) en moins de 20 ms. De plus certaines parties étaient traitées en interruption de cette tâche de fond. Nous programmions alors en assembleur ASM86 ou au plus en PLM directement sur la couche matérielle et il était inconcevable de faire autrement. Je doute un peu que les choses aient changé depuis.
Néanmoins, l'aspect vitesse n'est qu'un aspect du problème qui sépare ces différents langage. Les langages de haut niveau permettent une abstraction de plus en plus grande et décuplent les possibilités du programmeur de manière parfois vertigineuse.
Je ne suis pas très fort en dissertation donc je n'irai pas plus loin.
Mais zéro c'est un peu sévère car la réponse est sensée même si elle reste très limitée.
Non, l'assembleur n'est qu'un langage qui présente la particularité de générer très peu d'instructions annexes une fois compilé, le programme résultant n'est pas "forcémment" plus rapide qu'un langage au niveau => ce n'est pas le langage qui fait la rapidité, ou plutôt la concision d'un programme...
@Meaulnes :
Ce que tu dit est vrai, aujourd'hui pour ces tâches, on utilise encore l'assembleur, mais parceque celui-ci permet une programmation très fine, alors que les compilations des langages de haut niveau appliquent en général des modèles génériques pour sortir des instructions, qui ne sont pas forcemment les plus adaptées pour la situation...
The magic of Opera, La magie de l'Opera
The mysteries of Space Opera, Les mystères de l'Opera Spatial
Mr. Know-it-all, M. Je-Sais-Tout
Prelude in C sharp minor, the most beautiful piano song and the best C sharp prelude ever, Prélude en do dièse mineur, le plus beau morceau de piano et le meilleur prélude au C#
The Mesmerizing Saphir Division for Nerds, L'Hypnotisante Division Saphire pour les Nerds (HDSN)
@cs_ntd
Bon ça me rassure. Je ne suis pas tout à fait à coté de mes chaussures malgré mon âge avancé.
Je crois que tu as bien mis le point sur la chose essentielle. Le choix du langage dépend plutôt de la capacité à s'adapter à certaine spécificités du besoin. Ce n'est pas une question de performance temporelle.
Et, comme tu le dis implicitement, sans les langages de haut niveau on ne pourrait pas s"élever très haut dans l'abstraction et aborder les choses sous leur aspect générique par exemple.
La réponse me fait rire mais il a pas tord .
Langage bas niveau -> assembleur = bonheur de la machine = cauchemar du programmeur;
Langage haut niveau -> java = effet contraire à assembleur
Le prof n'est pas du tout philosophe !
Allez ma note 8/10
Double zéro au prof pour son prosélytisme rétrograde.
Double zéro à l'élève pour son goût de l'aphorisme vulgaire.
Et même une grande baffe à chacun pour les faire atterrir dans le monde réel !
'Google' ou 'Skype' ont été développés en Delphi.
Mais il n'a jamais été question, malgrè le succès de ces applications et les moyens financiers qu'elles ont engendrés, de les ré-écrire en asm pour obtenir de meilleures perf'.
'faudrait p'têt se demander pourquoi avant de vouloir hiérarchiser les langages actuels avec des dogmes qui puent la vieille fripe !
Il faut en effet mettre un zéro ... pour le professeur dont on cherche où est sa faculté d'analyse et d'interprétation.
Il est certain que les programmes au plus bas niveau, donc en assembleur, sont les plus performants, et de très loin.
Le problème est que l'incroyable complexité des CPU actuels ne permet plus cet usage, du moins si on doit être rentable.
Dommage, mais irrémédiable.
Je donnerai la moitié des points, car il y a une réponse, mais complètement non argumentée. Ça fait que je donnerai la moitié des points pour cette réponse, car il manque la moitié de la réponse (l'argumentation).
Sa réponse est réductrice et caricaturale, ça manque de discernement, j'estime que le zéro est mérité. Chaque langage a ses forces et ses faiblesses mais on peut tout à fait concilier performance et lisibilité.
L'interface utilisateur Windows a été développé en Pascal Object avec Delphi Win32, la version Linux en C++ avec Qt et celle de Mac OS X en Objective-C avec Cocoa.
http://fr.wikipedia.org/wiki/Skype
Pourquoi introduire 4 comparses. Deux suffisent.
Asm vs C++. Bas only vs multi-niveaux & directions dont assez haut mine de rien.
A niveau de compétence médians, le binaire issu du C++ a toute les chances d'avoir de meilleures perf. Pourquoi ? Parce que les compilos savent exploiter pour nous pipeline (i.e. les déroulages de boucles) & cie, ou même remplacer une multiplication par 247 par les décalages de bits et autres additions qui sont plus les efficaces sur la plateforme cible.
L'étudiant a pondu une approximation qui était vraie il y a 10 ans (et encore) avec la masse de développeurs. (Et je ne parle même pas des recompilations à la volée que permettent certains environnements)
Sous-entendu : un développement asm qui cible la plateforme exacte sera bien évidemment plus rapide. Mais le boulot exigé est titanesque, non maintenable (nouvelle génération du proc, maintenant c'est mul qui est plus rapide que les shift + add, que fait-on ? On change toutes les multiplications dans le code, on indique au compilo C/C++ qu'elle est la nouvelle cible?), et pas vraiment portable.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Comme je le suggérais plus haut dans la discussion. Il n'y a pas antagonisme entre les différents langages. Le langage de bas niveau peut-être nécessaire quand on est très près de la couche matérielle et que l'on veut régler des problèmes très ciblés et très spécifiques.
Par contre, dès qu'on s"éloigne de ce niveau matériel, les langages évolués deviennent rapidement plus performants car mieux optimisés après compilation et surtout plus aptes à manipuler des niveaux d'abstraction de plus en plus élevés.
Donc chacun sont rôle, en toute complémentarité.
Bonjour,
Ce serait intéressant d'avoir des propositions de réponse à la question posée (d'ailleurs sans avoir aucune information sur la teneur du cours).
Libre à d'autres membres de noter ces réponses.
Par ailleurs, quelles sont les opinions de professeurs (cad des confrères de celui qui a donné le cours, posé la question et mis 0 à la réponse).
Ce que l'on ne vous dit pas, c'est que l'élève est un étudiant de philosophie qui a pris le pari d'avoir une bonne note à un devoir de langage informatique.
Visiblement, il a perdu...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager