Quelles différences entre langages haut et bas niveau ? Une copie d'étudiant fait le tour du Net et déchaîne les passions

Le 06/09/2010, par Idelways, Responsable Actualités


Le scan d'une feuille d'examen fait le buzz sur Internet. Il déchaine les passions sur les blogs et les sites spécialisés entre partisans des langages haut et bas-niveau.

L'étudiant y répond à la question qui demande de décrire la hiérarchie des langages de programmation et l'usage de chaque niveau. Mais sa réponse se prend un impitoyable zéro.

Étourdi ou incompris ?

Sa réponse est très simple (voire simpliste) mais pas complètement inintéressante : Plus le langage est convivial pour le développeur, plus lent sera le programme. Et plus le langage est « convivial pour l'ordinateur », plus rapide sera le programme.



Réponse stupide ? Provocante ? Ou plutôt bien vue ?

Et vous ?

Quelle note auriez-vous mis à cette réponse ?

Partagez-vous cette conception de la différence entre les langages haut et bas niveau ?

Préférez-vous les langages haut-niveau ou bas-niveau ?
Ce choix a-t-il été déterminant pour l'orientation de votre carrière de développeur ?

Lire aussi :

Un designer crée une nouvelle police de caractères pour développeurs censée faciliter l'écriture du code, comment la trouvez-vous ?

En collaboration avec Gordon Fowler

Les rubriques (actu, forums, tutos) de Développez :
 ASP
 C
 C++
 PHP


Les derniers commentaires postés :
Réponse Retrouver la discussion sur le forum

Avatar de ALT ALT
Membre Expert
le 13/10/2010
Pierre Dolez : Oui, le prof demandait de décrire brièvement la hiérarchie des langages & leurs usages respectifs. Ce qu'à mon avis l'étudiant n'a pas fait.
D'où mon message précédent.
Non ?
Mais bon, c'était en réaction à certains messages qui divaguaient sur la valeur intrinsèque de la réponse, indépendamment de la question posée.
D'autres ont répondu comme moi, le temps que j'écrive ledit message. Donc, celui-ci arrivait mal à propos.

Voilà.
Avatar de Pierre Dolez Pierre Dolez
Inactif
le 13/10/2010
Aucun problème, il s'agit d'une discussion qui fait appel à des impressions.
Ca détend qu'autres discussions où il ne s'agit plus d'impressions personnelles, et où malheureusement c'est pas si simple (exemple en cours où j'attends avec une certaine impatience une mise au point claire et nette et où le terme d'ineptie doit être rectifié. Hors-sujet, je sais, mais c'est entre parenthèses.)
Avatar de romuald59220 romuald59220
Invité de passage
le 14/10/2010
Ca réponse mérite 0 d'aprés moi.

On trouve deux choses dans sa réponse
Rapidité d'éxecution (Critère de différence)
Convivialité (pour l'un ou l'autre) (Critère de différence)

Nul part il parle de la hierarchie des langages et de leurs différences : L2G, L3G, L4G...

Au commencement était le code Machine puis vint le langage machine...
Un programme qui affiche bonjour à l'écran écrit en code machine est moins conviviale (compréhensible pour un humain) qu'un programme écrit en langage machine. Pourtant les deux programmes sont identiques, en rapidité et en taille.
Je répète 0 pointé
Avatar de Pacifick_FR42 Pacifick_FR42
Invité de passage
le 03/12/2010
Ben.... je dirais, que tous dépends (et seulement) à quoi est destiner le programme, par exemple, personne ne peut concevoir de coder le dernier "Call of Duty" en VBA ou pire... en Java... en fin, si, vous aurez enfin la réponse à la question de Fernand Reynault : "Combien met de temps, le fut du canon..."
Pas plus qu'il me viendrait à l'idée d'utiliser C++ ou l'assembleur pour faire un simple formulaire relatif à une base de données
Avatar de THOMSONfan THOMSONfan

le 27/08/2011

Citation:





Envoyé par Chauve souris
Voir le message

A ma gauche le C/C++ (bas niveau) on peut tout faire avec, même des con**ries, on peut (pouvait, je crois que c'est interdit dans Windows) même y mettre des bouts d'assembleur. On contrôle (ce qui ralentit) les paramètres comme on veut. Idéal pour les applis rapides techniques, lme graphisme et les jeux. Par contre, pour la gestion, c'est s'embêter pour rien car la vitesse dépend des petits doigts des utilisateurs et des accès BDD.

A ma droite le Basic (Visual et autres). Pratiquement impossible de faire du graphisme avec ou alors des figures simples. Faut pas trop lui demander des appels système même s'il arrive à utiliser des fonctions qui ressemblent furieusement à des fonctions C. Idéal par contre pour la gestion, les formulaires, les tableaux.

Avec quelques détails de programmation ne serait-ce pas une bonne réponse ?



Pitié, stop! J'ai les yeux qui saignent là!

Le C et le C++ des langages de bas niveau? Je crois que l'on aura tout vu.

Les seuls langages de bas niveau que je connaisse sont le langage machine et le langage d'assemblage. LE C et le C++ eux sont des langages évolués comme pascal, cobol, forth, basic, java, rebol, etc...

Un langage de bas niveau est un langage qui manipule directement les registres, les adresses mémoires et qui oblige à tenir compte des cycles machine.

Bon maintenant revenons à la réponse de l'étudiant. Le correcteur a eu raison de lui mettre zéro, car sa réponse mélange beaucoup de choses et en ignore certaines autres.

D'abord sa réponse ne tient pas compte du fait qu'un langage peut être compilé ou interprété. Ensuite, elle ne tient pas compte de l'influence du programmeur qui optimise ou pas son code.

Sa réponse aurait pu être considérée comme bonne si tous les langages évolués étaient interprétés. Car un langage interprété sera toujours plus lent qu'un langage de bas niveau. Mais comme dans la réalité on a des langages compilés et des langages interprétés, sa réponse est totalement fausse.

Pour ce qui est de l'influence du programmeur, elle peut être très importante dans certaines applications. Et si un programmeur en langage d'assemblage travaille comme un cochon en ignorant les cycles machine et les temps d'exécution des instructions, il peut fortement ralentir le fonctionnement de son programme voir même le rendre totalement inopérant.

Bref, un programme en langage d'assemblage peut très bien être plus lent qu'un programme écrit dans un langage évolué.

Maintenant, il ne faut pas oublier que dans le cas d'un langage évolué compilé, on traduit le code source en code machine. Donc le résultat final ne sera pas différent de celui que l'on aurait pu obtenir en programmant directement en langage d'assemblage. Seulement, si le compilateur est programmé par dessus la jambe ou non optimisé, le programme obtenu pourra être plus lent qu'un programme écrit à la main en langage d'assemblage.

Sinon pour finir, dire que programmer un jeu comme call of duty en langage d'assemblage est idiot ou impossible est absurde puisque les langages évolués dépendent eux même directement ou pas d'un langage de bas niveau pour leur création.
Avatar de goomazio goomazio
Membre chevronné
le 27/08/2011
Je pense qu'il aurait pu mériter 1 point. Mais c'est le prof. qui connaît l'élève et qui sait si sa réponse est plutôt un vague souvenir inexploitable, ou bien s'il pense que l'étudiant ne voulait pas parler de la vitesse d'exécution mais bien de la vitesse du processus entre la fin de la rédaction du code et le lancement de l'application etc.

Sans parler du fait qu'il manque la liste des niveaux et leur description.

[humour]
Il a fait une réponse de haut niveau : avec un compilateur adapté, en sortie de chaîne on pourrait obtenir la liste donnée par _skip. (http://fr.wikipedia.org/wiki/L4G, 2e chapitre)
Mais comme on sait tous qu'un langage de haut niveau ne vient pas sans compilateur => 0/6
Edit : ou plutôt, il a peut-être oublié de compiler sa copie avant de la rendre (parce que son langage a lui doit être compilé et n'est pas interprété à la volée)
Avatar de THOMSONfan THOMSONfan

le 27/08/2011

Citation:





Envoyé par goomazio
Voir le message

Je pense qu'il aurait pu mériter 1 point. Mais c'est le prof. qui connait l'élève et qui sait si sa réponse est plutôt un vague souvenir inexploitable, ou bien le signe d'une mauvaise mémoire etc.

Sans parler du fait qu'il manque la liste des niveaux et leur description.

Sinon, si on joue sur les mots, est-ce qu'il n'est pas aussi idiot de parler de convivialité pour une machine ?

[humour]
Il a fait une réponse de haut niveau : avec un compilateur adapté, en sortie de chaîne on pourrait obtenir la liste donnée par _skip. (http://fr.wikipedia.org/wiki/L4G, 2e chapitre)
Mais comme on sait tous qu'un langage de haut niveau ne vient pas sans compilateur => 0/6



Depuis quand langages de haut niveau et compilateurs sont devenus indissociables? N'importe quel langage de haut niveau peut être interprété. Et il existe toujours de nos jours des langages interprétés. Sauf que les interpréteurs sont appelés machines virtuelles.

Sinon, pour remplacer le terme convivialité, il vaut mieux parler de facilité de compréhension. Car plus un programme est facile à comprendre pour le programmeur et plus sont exécution sera lente car il faut l'interpréter pour que le processeur puisse l'exécuter. Et plus le langage est proche du langage machine, ce qui facile l'interprétation, plus son exécution sera rapide.
Avatar de goomazio goomazio
Membre chevronné
le 27/08/2011

Citation:




Depuis quand langages de haut niveau et compilateurs sont devenus indissociables?


Ok. Par contre, un langage tout seul ne risque pas de faire grand chose. Je voulais parler des possibilités en générales (compilateur, interpréteur...).

Et d'ailleurs, je rajouterai que même au niveau 0 il doit bien falloir un compilateur mais je ne sais pas comment c'est fait.


Citation:




Sinon, pour remplacer le terme convivialité, il vaut mieux parler de facilité de compréhension. Car plus un programme est facile à comprendre pour le programmeur et plus sont exécution sera lente car il faut l'interpréter pour que le processeur puisse l'exécuter. Et plus le langage est proche du langage machine, ce qui facile l'interprétation, plus son exécution sera rapide.


Ok, je retire ma petite pique concernant l'interprétation possible. Je la trouve aussi inadaptée finalement.

...non ce n'est pas moi cet étudiant !
Avatar de THOMSONfan THOMSONfan

le 27/08/2011

Citation:





Envoyé par goomazio
Voir le message

Ok. Par contre, un langage tout seul ne risque pas de faire grand chose. Je voulais parler des possibilités en générales (compilateur, interpréteur...).

Et d'ailleurs, je rajouterai que même au niveau 0 il doit bien falloir un compilateur mais je ne sais pas comment c'est fait.

Ok, je retire ma petite pique concernant l'interprétation possible. Je la trouve aussi inadaptée finalement.

...non ce n'est pas moi cet étudiant !



Disons que tout ce qui se trouve au dessus du langage machine n'est pas compréhensible par le processeur. Même le langage d'assemblage qui est pourtant très proche du langage machine doit être traduit pour que le processeur puisse l'exécuter. Mais pour le langage d'assemblage, la différence avec le langage machine est tellement minime que la phase de traduction ou d'assemblage (compilation) est négligeable.

La compilation d'un code source écrit en C par contre, prendra beaucoup plus de temps, car une boucle for, c'est très différent d'une incrémentation ou d'une décrémentation de registre associée à un saut conditionnel.

Pour finir, le niveau 0 n'a pas besoin de compilateur puisque c'est le langage parlé par le processeur. Par contre, c'est la barbe de rentrer chaque octet à la bonne adresse pour que le message soit compréhensible pour la machine.
Avatar de megs megs
Invité de passage
le 01/09/2011
Je suis d'accord, il est totalement hors sujet...d 'ou le 0 pointé... C'est comme si on lui demandai :"déclinez les types de nuages en fonctions de leurs altitude" et qu'il répondait :"les nuages les plus haut sont les plus rapides et les nuages les plus bas sont les plus lents" .
De plus même si il n'a pas tord, il n'a pas forcement raison non plus... Ca dépend du codeur...on peut tres bien faire un code plus merdique en ASM qu'en VB.. c'est dure mais c'est possible. Je ne parle pas du C vu que l'optimisation du compilateur permet parfois de faire des miracles.
Retrouvez la suite de la discussion

Réponse

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. Index Tiobe : Java recule encore, mais demeure toujours numéro 1, suivi de près par C, Visual Basic cède des parts à VB.NET 427
  2. Chrome 17 disponible en version finale : plus rapide et sécurisé avec des correctifs pour 20 vulnérabilités dont une critique 23
  3. Microsoft ouvre aux autres compilateurs C++ AMP, la spécification pour la conception d'applications parallèles C++ utilisant le GPU 22
  4. Android : Counterclank ne serait pas un cheval de troie, Symantec se rétracte et rejoint l'avis de Lookout 10
  5. Les données des logs Web pourraient identifier l'activité des machines et menacer la vie privée, selon les chercheurs de Microsoft 87
  6. RIM : « 13% des développeurs ont gagné plus de 100.000 $ sur l'AppWord », Qt et open-source au menu du BlackBerry DevCon Europe 0
  7. Des disques durs 100 fois plus rapides bientôt disponibles ? Des chercheurs accélèrent la vitesse de stockage avec la chaleur 19
  8. Accenture recrute des développeurs et des ingénieurs d'études SAP, Siebel, Java J2EE..., stagiaires, jeunes diplômés et expérimentés 3
  9. Canonical stoppe le financement de Kubuntu, l'avenir de l'OS désormais entre les mains de sa communauté 12
  10. Firefox : Mozilla travaille sur un système de notifications Push pour son navigateur, le futur remplaçant du RSS ? 4
Page suivante
  1. Index Tiobe : Java recule encore, mais demeure toujours numéro 1, suivi de près par C, Visual Basic cède des parts à VB.NET 427
  2. Free Mobile prendrait les français « pour des cons » et détruirait le modèle social, d'après un syndicat d'Orange 113
  3. Le SDK Kinect pour Windows disponible en version finale 19
  4. Windows 8 : les modifications apportées à la gestion des fichiers suite aux retours des utilisateurs 39
  5. Chat du Club : nouvelle version avec envoi de fichiers et messages privés améliorés 148
  6. Megaupload : le point sur la première "cyber-guerre" de 2012, quelle technologie voyez-vous succéder au DDL et au streaming ? 127
  7. Megaupload : deux semaines de plus avant la suppression des fichiers des utilisateurs, L'EFF lance MegaRetrieval pour aider ceux-ci 490
  8. Sortie de la 6ème Release Candidate de PHP 5.4.0, avec plusieurs corrections de bogues 9
  9. NetBeans 7.1 disponible en français grace à la traduction de sa communauté. 33
  10. Brevets : jugement préliminaire en faveur de Motorola dans la bataille avec Apple pour violation de brevets dans Android 87
Page suivante
  1. jQuery Mobile fin prêt pour la production, la version 1.0 finale de l'UI pour appareils mobiles est 30 à 50 % plus rapide depuis la RC2 4
  2. LimeOS : le fork de Chrome OS disponible avec 11 mois de retard, mais avec les mises à jour automatiques 211
  3. Index Tiobe : Java recule encore, mais demeure toujours numéro 1, suivi de près par C, Visual Basic cède des parts à VB.NET 427
  4. Comment prendre en compte l'utilisateur dans vos applications ? Pour un développeur, « 90 % des utilisateurs sont des idiots » 225
  5. Quels sont vos hébergeurs Web préférés ? 84
  6. Firefox 4 déjà téléchargé plus de 15 millions de fois, le navigateur de Mozilla connaît un beau succès 337
  7. Google Chrome arrache la deuxième place à Firefox en terme de parts de marché des navigateurs 328
  8. Quel est LE livre que tout développeur doit lire absolument ? Celui qui vous a le plus marqué et inspiré 96
  9. Android 3.0 : SDK et API en versions finales 69
  10. Quelles règles les programmeurs débutants devraient-ils toujours respecter ? Un développeur expérimenté livre ses 7 règles d'or 177
Page suivante

Developpez.com

Communauté

Formez-vous

Evénements

Décideurs

Téléchargez

 
 
 
 
Partenaires

Hébergement Web