"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Salut,
Pourquoi ?
Je voyais le langage machine comme un langage (un peu galère à écrire car il faut se farcir les reference manual du processeur, mais possible, je l'ai déjà fait (enfin, me suis limité à quelques instructions).)
Après, je suis d'accord avec Noteworthy sur le fait que le mot "Assembleur" est utilisé pour 2 choses différentes : Le compilateur du langage d'assemblage vers du code machine et le langage d'assemblage en lui même.
Je ne répondrai à aucune question technique en privé
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Pour comprendre les references manuel d'un processeur (pour la première fois), c'est toujours bon d'essayer d'écrire directement quelques trucs en binaires (ou en héxa) pour ce processeur.
Donc grosso modo, faut écrire les quelques lignes en langage d'assemblage puis tenter de convertir à la main en code machine en utilisant le livre. Et si le matériel le permet, d'écrire directement en mémoire le code machine puis exécuter pour voir
Je ne répondrai à aucune question technique en privé
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
C'est ce que je dis plus haut : le terme langage est utilisé pour définir un moyen de communication. Ecrire du binaire, c'est communiquer avec une machine, presque de la manière la plus directe qui soit ( la plus directe serait de se brancher avec une pince crocodile sur les pattes du processeur et de lancer des impulsions électriques )
A+
K
yes twisted...
On peut cependant admettre que dans l'acception "langage de programmation", on parle d'écrire du texte, lisible, qui ensuite est transformé par un outiil pour être compréhensible par la machine.
Dans cette acception, écrire du binaire n'est ni courant, ni un "langage de programmation". A contrario, un assembleur (ou l'assembleur" de manière générale, comme pour l'anglais ci-dessus) en est un..
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
As-tu déjà vu Ook ?
Il est compréhensible par les orangs-outangs !
K
Je vois pas trop la comparaison avec Anglais/Américain
Pour moi, l'Assembleur 80X86 est un langage, et l'Assembleur 68000 en est un autre.
Ce n'est pas parce que l'on programme dans l'un que l'on va comprendre l'autre
a+ François
edit : il manquait le 68000 à ma phrase
Donc c'est un langage!L'assembleur est le premier langage informatique qui ait été utilisé. Celui-ci est très proche du langage machine mais reste compréhensible pour des développeurs. Toutefois, un tel langage est tellement proche du langage machine qu'il dépend étroitement du type de processeur utilisé (chaque type de processeur peut avoir son propre langage machine). Ainsi, un programme développé pour une machine ne pourra pas être porté sur un autre type de machine. Le terme « portabilité » désigne l'aptitude d'un programme informatique a être utilisé sur des machines de types différents. Pour pouvoir utiliser un programme informatique écrit en assembleur sur un autre type de machine, il sera parfois nécessaire de réécrire entièrement le programme !
A+
On rêvait tous d'une Barack blanche pour Obama
Tout ce que je voulais dire dans ce message trollesque c'est qu'il me semble naturelle d'attendre d'un langage de programmation qu'il apporte un minimum d'abstraction, et que ce n'est clairement pas le cas de l'assembleur. C'est tout.
Maintenant que je sais ce que tu voulais dire -- je me doutais qu'il ne s'agissait pas de la nuance stupide "l'assembleur n'est pas un langage, MASM 6 en est un" --, on peut essayer d'argumenter.
Par rapport au langage machine sous-jacent, l'assembleur apporte deja pas mal d'abstractions: representation symbolique des donnees -- 3.141592693 pour une approximation de PI et pas un codage en binaire, de meme pour les caracteres; noms symboliques pour les emplacement memoire pour continuer et finir quand on parle de programmer directement en assembleur, c'est d'un macro-assembleur dont on parle ce qui te permet de construire tes abstractions et je t'assures que ceux qui ont programmer des OS ou des appli importantes en assembleur ont utilises ce genre de possibilites.
Et en dessous, par rapport aux circuits sous-jacent, le langage machine apporte aussi des abstractions. En fait, le langage machine n'est guere plus qu'une interface abstraite (voir le titre du bouquin d'Hennesy et Patterson destine aux debutants en architecture des ordinateur Computer Organization and Design: The Hardware/software Interface) qui peut etre implementee de diverses manieres (c'est apres tout l'idee fondamentale derriere le systeme/360 d'IBM, introduit dans les annees 60). Une technique, populaire jusque dans les annees 80, etait d'ailleurs d'implementer avec un interpreteur ecrit dans un autre langage machine (micro-code).
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
L’assembleur est un langage informatique !!!
Je peux confirmer cela en te donnant au moins 20 sources différentes.
Alors peux-tu me donner au moins un lien ou un texte disant comme quoi l’assembleur ce n’est pas un langage de prog?
Je crois que tu confonds entre langage haut niveau et bas niveau.
PS : regarde dans le dico la définition de "langage (de prog)"
On rêvait tous d'une Barack blanche pour Obama
Un langage de programmation, c'est quelque chose qui te permet de programmer ton ordinateur. De ce point de vue, le plus pertinent à mon avis, l'assembleur est le plus proche puisqu'il te permet de manipuler directement ton microprocesseur.
J'ai tendance à penser que l'assembleur est à la programmation ce que l'atomistique est à la chimie, par exemple.
Maintenant, si pour toi, la programmation n'est qu'une activité secondaire te permettant de mener à bien la première (des sciences plus classiques), que tu as appris le C ou d'autres langages pour faire faire des calculs et que ce n'est qu'en dernier ressort que tu as fait un peu d'assembleur à la fac pour le principe, alors oui : tu as dû passer à côté de l'essentiel. Ce n'est pas un vice au demeurant, loin de là, mais c'est des coups à tuer des vocations même chez les plus motivés.
Par contre, si tu avais eu l'occasion de travailler avec des machines fonctionnant à 1 Mhz (il y a 20 ans), tu aurais pu sentir le « coût » de chaque programme, tu aurais pu toucher un peu au temps réel, lorsque l'on calculait cycle par cycle la durée exacte d'exécution d'une routine (le bon temps des CLI sur x86 ou des ORG #$50 sur 6809E), les moments où l'on essayait de trouver la signification des instructions non documentées du processeur et de déduire leur durée en les insérant au milieu d'une boucle calibrée, etc.
Tu aurais également goûté à une manière complètement différente de programmer. Par exemple, comment construit-on un circuit qui sache gérer un if() ? Dans les langages fonctionnels, on ne retrouve que rarement, par exemple, les opérations arithmétiques et logiques qui mettent à jour des flags, et les sauts conditionnels qui sont inféodés à l'état de ceux-ci. Ça permettait de faire beaucoup de choses, notamment des sauts conditionnels à durée constante quel que soit le résultat.
C'est aussi une bonne manière de voir ce dont la machine est capable. Autrefois, il y avait plein de machines différentes qui avaient chacune leur caractéristes. Aujourd'hui, il y a 99% de PC, et quand il y a autre chose, on lance un système d'exploitation dessus dont la première fonctionner est de faire abstraction de la machine et d'uniformiser le tout. Moralité : tous les atouts et les particuliarités d'une machine sont passés sous silence. Et pour compenser, on ajoute toujours plus de puissance. C'est comme si, au lieu de dessiner des avions aérodynamiques, on partait de l'existant - un autobus -, qu'on lui collait deux ailes et qu'on motorisait suffisamment jusqu'à ce que ça vole.
Et pour finir, sur le plan formel : si chaque jeu d'instruction est propre à un microprocesseur, la manière de construire un programme en assembleur est toujours la même : une ligne contenant un code opération, découpée en quatre champs : l'étiquette (directement soluble en adresse mémoire), le mnémonique de l'instruction, la ou les opérandes, et le commentaire.
Si, avec tout ça, l'assembleur n'est pas un langage, c'est que la programmation n'existe pas.
Sans parler du fond, avec lequel je suis d'accord (voir plus haut), j'adore cette image
ça me de voir tous ces programmes qui bouffent et qui bouffent et qui bouffent de la mémoire, du temps, du disque, etc etc.... juste parce que "c'est pas cher"........
Résultat : pour faire une malheureuse petite opération ou interface, il te faut un truc qui servirait à piloter Ariane, quasiment.... (des gigs de mémoire, des gigs (ou des kilogigs) de disque....
Du gaspillage à l'état pur....
Et après on râle contre "la société de consommation" et pour "les économies" et le "développement durable"
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Héhé ! J'avais déjà sorti cette métaphore je ne sais plus où (peut-être ici) et quelqu'un m'avait répondu que c'était en substance l'approche des polytechniciens. :-) Je ne suis pas X, je ne sais pas ce qu'il en est vraiment ...
En fait, je suis longtemps parti en croisade pour les mêmes raisons, puis j'ai fini par mettre un peu d'eau dans mon vin, pour deux raisons : La première, c'est que le temps est la seule chose que l'on ne peut pas acheter. La seconde, c'est que la gloutonerie des logiciels contemporains ramènent les machines surpuissantes dans la norme du marché. Ça permet aux gens qui « savent coder » de s'offrir aujourd'hui l'équivalent d'un Cray-2 pour l'équivalent de quelques jours de salaire.ça me de voir tous ces programmes qui bouffent et qui bouffent et qui bouffent de la mémoire, du temps, du disque, etc etc.... juste parce que "c'est pas cher"........ [...] Du gaspillage à l'état pur....
Et puis quand la débauche de puissance atteint un certain stade, ça permet souvent d'ouvrir brusquement la voie à quelque chose de complètement nouveau. C'est ce qui s'est passé avec les CD-ROM par exemple, quand on a eu du jour au lendemain l'équivalent de 600 disquettes sur un même support, au coût de revient comparable. La technologie derrière était la même, mais ça devenait envisageable de mettre des vidéos et du son, là où on faisait rentrer au chausse-pied des tout petits extraits.
Dans le même goût, je suis toujours émerveillé de voir ce que fait Stellarium, par exemple. Des millions de calculs en temps réel pour chaque pixel de l'écran, pour un travail qui reste bien en dessous de celui d'un jeu vidéo actuel. La puissance est tellement énorme, toutes choses égales par ailleurs, que sa majorité est employé à donner un rendu visuellement réaliste du ciel ! Le calcul de la trajectoire des astres étant une formalité. C'est grâce à ça que j'ai pu observer Neptune dans le ciel récemment (avec un ETX-125). Un petit « = » et on saute instantanément 24h. On peut ainsi s'amuser à observer le déplacement d'un astre faiblement lumineux sur un ciel étoilé et faire pratiquement ce que font les astronomes professionnels.
Et toute cette puissance est accessible à n'importe qui pour 60 € en moyenne. Je trouve cela formidable d'un point de vue académique. L'ironie du sort fait d'ailleurs que la micro-informatique de pointe, dont la production est pourtant très difficile à maîtriser, est aujourd'hui un des produits les meilleurs marchés. Un sac de pommes de terre coûte parfois plus cher qu'une carte SD de 2 giga-octets. :-)
Par contre, le pendant pervers de ce phénomène est que les informaticiens deviennent souvent fainéants : tout l'espoir du progrès en informatique repose sur les épaules des micro-électroniciens et des fondeurs.
En même temps, puisqu'un compilo produit de l'assembleur de meilleur qualité que ce que peut faire n'importe quel être humain... Je vois mal l'intéret de "programmer" en assembleur mis à part dans les très rare cas où il faut effectivement parler directement au processeur (comme les petits bouts d'assembleur qu'on trouve dans le noyaux Linux par exemple).
C'est aussi en ça que je dis que de parler de langage de programmation dans le cas de l'assembleur alors qu'il n'a plus vocation qu'à être produit par un compilateur, boarf...
Je ne vois pas en quoi c'est un troll. Le sujet n'était absolument pas une discussion entre assembleur vs compilateurs, et en plus, c'est vrai que les compilateurs sont beaucoup plus performants aujourd'hui qu'on veut le croire au premier abord. Pour le reste, je pense que tout le monde dans ce fil est suffisamment mature pour éviter d'atteindre le point Godwin tout seul.
Es-tu sûr d'avoir bien compris mon post ?
(Ça c'est encore un troll, par contre).
La raison, c'est que ce point est très discutable, et ne peut l'être qu'à partir du moment où l'on a soi même écrit beaucoup de code à la fois en assembleur et dans des langages compilés de plus haut niveau. Mais, en fait, elle se résume en un concept très simple :
« Si tu n'en vois pas l'intérêt, c'est que tu n'en as pas besoin. »
Personne ne t'oblige à développer en assembleur. Il n'en reste pas moins que je trouve cela énorme d'affirmer que ce n'est pas un langage.
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