1

21h40 nous sommes un mardi soir, en train de me battre avec mon paquet de lignes paquet de lignes écrites dans un langage appelé Assembleur, douleur pour certains, fierté pour d'autres. Langage qu'on adore ou déteste mais pas d'intermédiaire. Une petite discution avec Zerosquare me revient la maintenant a l'esprit, qui utilise encore ce langage ?

Ce langage est bientot un langage mort, car qui l'utilise actuellement ? On parle partout de C, avec son langage scryptique a souhait, qui pour un être comme moi est plus une corvée qu'autre chose avec ces i++=1 (Clin d'oeil a Zerosquare et SCPCD). Alors l'assembleur finira t'il en Retro-langage ? Dans la rubrique divers du forum Retro-gaming ?

Est ce que nos petits enfants entendront ils parler un jour de ce beau langage qui pour reprendre les paroles de Zappy est :

le seul moyen -d'arriver au but recherché: le programme parfait, maîtrisé de A à Z, qui ne gaspille pas un seul cycle, juste pour la beauté du code. Oui, la beauté!

(Merci a Xerus pour le lien wink )

Et dire que ce langage est un morceau de l'histoire de l'informatique et on va le passer a la trappe sans protester Arghhh !!

Ca me brise le coeur, fini les optimisations 'polonaises', bientot on aura oublié qu'un micro processeur possèdes des registres oui

Merci a tous les constructeurs de micro-ordinateur, qui au lieu de laisser certaines personnes optimisé leur code font une pitoyable et commercial course de puissance sur leur machine. RaZ m'a donné un PC mais je vous avoues qu'après quelques jours passé dessus, j'ai l'impression que le TOS est quand meme mieux fini que Windows.....


GT octopus



avatar
Accrochez vous ca va être Cerebral !!

2

J'ai beaucoup entendu parler de l'assembleur comme étant l'un des meilleurs langage de programmeur. Moi perso, j'y connais rien. Mais pour exemple sur un ST, de l'assembleur s'en tire parfaitement bien non ?

Des langages plus ancien comme le basic, le Pascal ou le Turbo Pascal, ça vaut quoi ? C'est utilisable sur les gros PC d'aujourd'hui ?

3

mmmh est ce la bonne section ? Pas plutot en dev Jag ?

4

En fait l'assembleur a sa place sur toute les machines.

Aussi bien sur l'Atari ST que sur Jaguar ou tout autre machine. L'assembleur est un langage ardu, mais une fois maîtrisé, sa impressionne les foules.

5

Pocket Magazine :
mmmh est ce la bonne section ? Pas plutot en dev Jag ?



Cela s'applique aussi bien a une Jag qu'un Falcon, qu'un PC je parlais de l'assembleur en général wink
Odie_one :
J'ai beaucoup entendu parler de l'assembleur comme étant l'un des meilleurs langage de programmeur. Moi perso, j'y connais rien. Mais pour exemple sur un ST, de l'assembleur s'en tire parfaitement bien non ?

Des langages plus ancien comme le basic, le Pascal ou le Turbo Pascal, ça vaut quoi ? C'est utilisable sur les gros PC d'aujourd'hui ?


L'assembleur est un langage ardu dans le sens, ou il faut minimun 20 lignes pour afficher un cercle, la ou le basic fait cela en une ligne et le C en 3 lignes. On utilisait beaucoup l'assembleur pour sa vitesse car c'est le langage le plus rapide existant. On l'utilisera plus car on a 'trouvé une parade', au lieu de se prendre la tete a écrire 20 lignes on gonfle les machines, comme cela on peut utiliser le C et on a plus a se faire c... Heuresement qu'il reste des programmeurs en assembleur meme sur les PC actuels (Zerosquare top) et second atout de l'assembleur les programmes en sorti sont beaucoup plus court, actuellement on veut le contraire car cela fait vendre de la ram et des disques durs.....


GT tombe
avatar
Accrochez vous ca va être Cerebral !!

6

ok smile

7

GT, tu fais ton Don Quichotte... Essaye au moins le C, sans forcément utiliser les syntaxes 'scryptique' (i++=1, en fait i+=1 qui est la simplification de i=i+1, comme en basic). Tu verras que le C n'est qu'une autre syntaxe de l'assembleur (si si), que l'on peut intégrer des morceaux d'assembleur directement dans le code C (si si), et que le C++ ensuite va te permettre de construire ton programme avec une souplesse incroyable (si si).

Je reste moi même très très très attaché à l'assembleur (si si), mais il faut reconnaitre la supériorité du C dans l'écriture et la maintanabilité du code (si si). Pour ça, il faut apprendre à l'utiliser. Je m'y suis mis quand j'ai dévelloepé SSAVCALL, puisqu'il me fallait comprendre comme le C gerait les tableau de l'AES et du VDI. C'est à ce moment là, alors que moi je me battait avec des pointeurs indexés que j'ai compris la souplesse du C.

Et comme la plupart du temps on ne gère pas des routines hyper rapide façon démomaker, mais plutôt gèrer une interface avec un utilisateur qui tape plutôt lentement au clavier, le C est laaaaaargement suffisant (si si). Et si tu as la possibilité d'y inclure un peu d'assembleur dans les moments critiques, et bien c'est parfait, tu ne crois pas ?

Franchement, met toi au C ! Tu continuera d'aimer l'assembleur, il ne t'en voudra pas de cette infidelité, mais ça t'ouvriras d'autres horizons...

Juste à savoir pour 'déscryptiser' la syntaxe de C, c'est comme le GFA, à quelques détails pret :

var_float=1.2
var_int%=250

S'écrit :

float var_float=1.2;
int var_int=250;

A noter, le ';' derrière chaque instruction, puisqu'on peut en mettre plusieures par ligne (comme n'importe quel BASIC en fait, sauf GFA). Ensuite les fonctions :

IF var_float=1.2 THEN
var_float=var_float+1
ELSE
var_float=var_float*2
ENDIF

S'écrit en C :

if(float == 1.2)
{
var_float = var_float + 1; // ou var_float += 1;
}
else
{
var_float = var_float * 2; // ou var_float *= 2;
}

Simple, non ? A savoir :

Le = en C correspond au := du Pascal, c'est à dire à l'affectation, le MOVE de l'assembleur
Le == en C correspond au = du Pascal, c'est à dire au test d'égalité, le CMP de l'asembleur

C'est le = multi-usage du GFA qui brouille les pistes. Fauzami !

Les (sous) fonction, c'est pareil :

PROCEDURE test
truc%=1
RETURN

En C :

void test(void)
{
truc = 1;
}

Le premier 'void' indique que la fonction ne renvoie rien (le compilateur ne fera une erreur que si on fait un 'return truc;' quelque part).
Le second 'void' indique que la fonction ne prend aucun parametre en entrée.

FUNCTION machin(valeurcheeky
truc%=valeur%
RETURN truc%
ENDFUNC

S'écrit

int machin(int valeur)
{
truc = valeur;
return truc;
}

Le premier 'int' indique que la fonction renvoie un 'int' (signed long), le deuxième indique que la fonction ne prend qu'un seul 'int' en parametre. Le compilateur va donc savoir :

- Qu'à la fin de la fonction, il FAUT renvoyer un 'int' : ca bloque s'il n'y à pas de 'return' ou si on essaye de renvoyer autre chose qu'un 'int' (genre un 'float').
- Que la fonction attend OBLIGATOIREMENT un 'int' en entrée, et bloque si y'en à pas ou si autre chose.

En fait, on instrumente son code pour bien indiquer de quel type est chaque variable, et aider le compilateur à vous resortir vos erreurs. C'est pour ça qu'on dit que le C est un langage très 'typé' (strongly typed language), parce qu'il faut tout lui indiquer clairement. Comme en assembleur, quand tu indiques un .W ou un .L smile

Voilà voilà, c'est un mix entre le BASIC et l'assembleur. Et tes bonnes habitudes de l'assembleur seront précieuses en C smile

Kochise

avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

8

GT Turbo :
L'assembleur est un langage ardu dans le sens, ou il faut minimun 20 lignes pour afficher un cercle, la ou le basic fait cela en une ligne et le C en 3 lignes.


Pour info, voici UNE implémentation d'une routine de cercle, en C :

http://raphaello.univ-fcomte.fr/IG/Algorithme/ExemplesAux/BresenhamCercle.htm

3 lignes, hein ?

Kochise

PS : D'autres algo ici http://raphaello.univ-fcomte.fr/IG/Algorithme/algorithmique.htm

Il utilise Glut (wrapper OpenGL) pour développer rapidement du graphisme, comme la VDI sur Atari...
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

9

Je t'apprécies beaucoup Kochise, mais je veux pas revenir sur ce chère a nos coeurs de la gue-guerre des langages, mais je voulais parler de ma peur d'enterrer ce langage qui est chère a mon heart !

(Pour info cela fait plusieurs jours qu'Azrael cherchait une bug dans son code C, et tout cela venait d'un point virgule en trop, erreur que je ne pourrais jamais avoir avec l'assembleur happy )


GT surf

P.S. : J'aime beaucoup de morceau ce phrase Tu continuera d'aimer l'assembleur , ca c'est sur. il ne t'en voudra pas de cette infidelité non car je lui en ferais pas. (Petite info il n'y a pas de C pour les processeurs Gpu et Dsp de la Jag donc....)

GT calin Assembleur
avatar
Accrochez vous ca va être Cerebral !!

10

Non, mais en assembleur, on fait bien d'autres erreur que le C t'empèche de faire. Genre tu commences à travailler avec des long, puis sans faire gaffe, tu écrase le word faible d'un registre, puis ensuite tu continues ton bonhomme de chemin avec des longs, jusqu'au crash smile

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

11

Kochise :
Pour info, voici UNE implémentation d'une routine de cercle, en C :

http://raphaello.univ-fcomte.fr/IG/Algorithme/ExemplesAux/BresenhamCercle.htm

3 lignes, hein ?


Je parlais d'utiliser les fonctions systemes, car si on commence comme cela je continues avec une routine de bresenham en assembleur a la sauce demomaker, et alors mon code asm passe a 100 lignes minimun (Et je te parles meme pas de la version Gpu de la Jag que j'ai gni)

Mon Kochise, j'arretes ici on va pas reprendre ce débat wink

GT surf
avatar
Accrochez vous ca va être Cerebral !!

12

Rhaaa lala !! incorrigible ce GT... Je suis forcé de me rallier à Kochise tout simplement parceque je pense la même chose... Il n'y a pas de routine de tracer de cercle en C grin il faut avoir la bonne bibliothèque et zou !!! soit il y en a une qui affiche ça avec un bête circle(x,y,r); soit il faut le faire point par point, comme en asm smile

Ce que tu repproches le plus au C c'est souvent sa syntaxe i++; ou i+=1; ... ben c'est une syntaxe et si tu ne veux pas l'utiliser fait plutôt un i=i+1;. Ce qu'on pourrait repprocher à l'asm 68000 c'est le move.w #2,d0 alors qu'en X86 on a mov ax,#2... lequel est bizarre ? C'est une syntaxe, ni plus, ni moins. On peut écrire un asm 68000 qui change l'ordre des opérandes et ferait move.w d0,#2... syntaxe toujours.

Sur la taille des programmes je suis plutôt d'accord avec toi GT, les initialisations prennent beaucoup de place, mais il faut savoir qu'une boucle en C est assez bien optimisée par le compilateur. Ce n'est pas optimal mais au moins ton code est portable grin J'ai du porter des programmes (Fortran, ne me jetez pas de tomates, merci tomato) sur des machines qui ont des architectures completement différentes (scalaires ou vectorielles)... et faire un code en ASM est tout simplement inimaginable car on a peu de temps pour le développer et ensuite si on veut porter ça sur une autre machine il faut recoder en réapprenant la structure et jeu d'instruction du nouveau processeur... quel boulot ! et pourtant j'aurais eu besoin de vitesse !!! Pour avoir cette vitesse j'utilise des bibliothèques spécialement optimisées pour la machine sur laquelle j'exécute mon programme.

GT, pour ta crainte de voir l'ASM disparaitre, ne t'en fait pas, il faudra toujours écrire des compilateurs C wink ou autres pour les nouveaux processeurs. Il a de beaux jours devant lui sur tout ce qui est systèmes temps réel.

Pour ce qui est de mon bug, c'est pas plusieurs jours mais plutôt une demi journée, mais c'est ce qui arrive quand on ne surveille pas ses copier/coller et décommentaires grin. Je ne sais pas si tu te souviens des journéesqu'on a passé à débugger des programmes en ASM tout simplement parcequ'on s'était trompé dans un test (Ah ! ces beq, blt, bgt... !) ou bien qu'une instruction agit sur un mot au lieu d'un long... Si je ne programmai pas en C je ne pourrais jamais dévelloper le jeu que je suis en train de faire pour la Jag... tout simplement parceque ce n'est pas commode (PC + Jag + écran péritel) alors que là je suis juste sur mon PC et je peux me à un niveau ASM quand je veux (arithmétique entière, décalages) pour transférer plus rapidement sur Jag... Tiens, ce n'est pas toi qui m'a dit que le GEM a été dévellopé en C ?

Finalement je ne sais pas ce que tu repproches au C. J'ai l'impression que c'est surtout parceque le C n'est pas de l'ASM. L'important quand on se demande quel langage utiliser c'est de savoir combien de temps on veut mettre à développer quelque chose, sa taille, sa protabilité, sa modularité, sa lisibilité et s'il y a une vitesse d'exécution critique...

Az, (ASM, C, F90, perl et démineur convaincu !)
Gare à celui qui touche a mes chips quand je code !

13

Oh, je veux pas rouvrir la guerre ASM C, je parlais de l'avenir de l'asm, et après qu'on vienne pas me dire que c'est moi qui ait du mal a comprendre..... wink


Pour une fois que c'est pas moi qui relance ce débat, donc je retournes faire du surf



GT Plus pour ce débat non
avatar
Accrochez vous ca va être Cerebral !!

14

GT Turbo :
Oh, je veux pas rouvrir la guerre ASM C,

post initial :
GT Turbo :
On parle partout de C, avec son langage scryptique a souhait, qui pour un être comme moi est plus une corvée qu'autre chose avec ces i++=1

J'ai eu l'impression de voir passer un missile smile

je parlais de l'avenir de l'asm

L'asm a toujours de l'avenir, mais il est bien caché... c'est la petite souris qui survivra au déclin des autres espèces de langages...
./1
RaZ m'a donné un PC mais je vous avoues qu'après quelques jours passé dessus, j'ai l'impression que le TOS est quand meme mieux fini que Windows.....

Je me risque à une comparaison grotesque :
Vu de près, Un avion en papier aura toujours des lignes épurées comparé à une Ariane...
Il y a beaucoup de composants dans Windows, ce qui rend bien sûr son fonctionnement un peu "chaotique". Je ne suis pas sûr que le TOS aurait mieux évolué si Atari était devenu grand public comme les PC smile
Gare à celui qui touche a mes chips quand je code !

15

Juste pour dire, j'ai jamais été aussi 'productif' que depuis que je programme en C, et sur PC smile La puissance et les possibilités du PC face au Flocon, ça aide, même si l'assembleur x86 est une daube finie ! Et t'inquiètes pô l'ami, y'aura toujours des softs écrits en assembleur...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

16

Optimisons pour rien le code C de mister GT :

if (float == 1.2) var_float += 1;
else var_float *= 2;

...

void test() {
truc = 1;
}

...

int machin(int valeur) {
return truc = valeur;
}

Bref je brasse bcp d'air car je fume...
Freddo aka Zorro2.

17

Berk, j'aime pas l'indentation 'à-la-Java' avec les accolades ouvrantes à la fin des lignes... On peu encore mieux faire, ça reste du C :

(var_float == 1.2) ? var_float += 1 : var_float *= 2;

...

void test() { truc = 1; }

...

int machin(int valeur) truc = valeur { return truc; }

GT dingue

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

18

Allez bandes de canailloux, on arrete de jouer et on passe aux choses sérieuses :


fmove.x #2,fp1
fsub.x #-2,fp1
fdiv.x #500-1,fp1
fmul.w d6,fp1
fadd.x #-2,fp1

fmove.x #0,fp2
fmove.x #0,fp3

moveq #64-1,d5 * A

Colors_16:

fmove.x fp2,fp4 * fp4=rz
fmul.x fp4,fp4

fmove.x fp3,fp5 * fp5=iz
fmul.x fp5,fp5

fsub.x fp5,fp4 * Rz^2-Iz^2
fadd.x fp0,fp4 * +rk fp4=r

******************************************************

fmove.x #2,fp5
fmul.x fp2,fp5
fmul.x fp3,fp5
fadd.x fp1,fp5 * fp5=i

fmove.x fp4,fp2



Tout de suite effet Kiss Cool !! froid

GT Un Fpu ooh

(Morceau de vieille routine de calcul de fractal au 68882) wink et tout en précision étendu top
avatar
Accrochez vous ca va être Cerebral !!

19

Je ne comprends pas le comment du pourkoi de ce fil?

L'assembleur restera TOUJOURS suppérieur au n'importe quel langage sur les anciennes machines comme le ST... A niveau optimisation ya pas mieux.

Mais il est clair que sur les nouvelles architectures avec pipeline et autres caches, tournant sur des OS treadés a donf avec des memoires virtualisées etc (je rentre pas trop dans les détails, hein) on a plutot intérêt faire confiance au compilo pour l'optimisation de son code...

Ben oui c'est la fin d'une époque.

Moi j'avais commencé le X86 sur PC ya pus de de 10 ans. C'est clair que ct juste pour des effefs en MS-DOS (on s'en souviens de ce truc?). Au passage de Windows, j'ai vite fait d'oublier smile

Sur mac, c'est pareil, l'asm PPC est génial, mais uniquement sur les OS < MacOSX...

Ben oui c'est la fin...

STK rulez!

20

Hmmmm, c'est oublier un peu vite que 90% de l'informatique est embarquée, et donc que l'assembleur y est de mise (rien que pour le bootstrap)...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

21

jace_stknights :
Mais il est clair que sur les nouvelles architectures avec pipeline et autres caches, tournant sur des OS treadés a donf avec des memoires virtualisées etc (je rentre pas trop dans les détails, hein) on a plutot intérêt faire confiance au compilo pour l'optimisation de son code...

Ben oui c'est la fin d'une époque.


Ah ! Je l'entends souvent celle-là : "les compilateurs C actuels optimisent mieux que n'importe quel programmeur en assembleur".
Ben vous savez quoi ? C'est faux, et la virtualisation et le multitâche ne changent rien à l'affaire.

Premièrement, il est tout à fait possible de faire de l'ASM pur sous Windows et Linux (je le sais, j'en fais tongue). Même une appli complète de A à Z, si vous en avez envie.

Deuxièmement, j'ai déjà eu l'occasion de comparer les résultats d'un compilateur C x86 avec toutes les optimisations activées (en l'occurence GCC, considéré comme l'un des meilleurs, il paraît) avec du code ASM que j'ai optimisé à la main. Résultat : le GCC, je lui mets entre +100% et +300% de performance dans la vue. Et je ne parle même pas de la taille du code : sur un PC, ça passe, mais amusez-vous à utiliser un compilateur C sur un microcontrôleur (testé aussi, GCC en mode "small" sur un Atmel AVR : de 2 à 3 fois plus gros que du "fait main").

De toutes façons, indépendamment du progrès des compilateurs, il ne peuvent que deviner ce que fait vraiment votre code et optimiser en conséquence, alors que vous vous savez précisément ce qu'il fait, et vous pouvez donc trouver des optimisations beaucoup plus poussées.

Mais il faut aussi voir que :
- des programmeurs compétents en assembleur, on n'en voit plus beaucoup
- il n'y a pas de mystère, au niveau productivité pure y'a pas photo. À moins d'être un dieu, ça va quand même plus vite de bidouiller un truc en C que d'optimiser un code en assembleur. Et comme la tendance actuelle est de sortir les trucs le plus vite possible, quitte à ce que ça bouffe des ressources hardwares démesurées, le calcul est vite fait pour les entreprises.

Pour rebondir sur ce que dit Kochise, il reste encore de l'assembleur dans l'embarqué, mais il se fait de plus en plus bouffer par le C, pour les raisons évoquées plus haut (les processeurs embarqués deviennent eux aussi de plus en plus rapides et puissants).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22

-

23

Orion_ :
l'asm est mort depuis bien longtemps déja, et le C le deviens, aujourd'hui on parle même plus de C, tout le monde n'a qu'un mot a la bouche: le C++
a chaque fois qu'un pote viens me voir pour me dire qu'il veut commencer a programmer il me parle de C++, il ne sais même pas que le C existe, alors qu'il y a déja largement de quoi faire en C avant d'utiliser ne serais-ce que le 10éme des possibilité du C++.

Et encore, maintenant y'a des microcontrolleurs qui se programment soit en Basic, soit en... Java ! Youpiiiii... Je voudrait bien voir ce que ça donne, une Dreamcast programmée en Java. On a déjà pu voir la différence entre un jeu codé en assembleur SH4 et un jeu WindowsCE, donc je vous laisse imaginer la 'puissance' du Java. Mais y'a pas une pub qui dit "que c'est à l'ordinateur de comprendre l'homme (ou le programmeur)" ?

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

24

Ecrire un programme en assembleur, c'est long (en temps, et en nombre de lignes). Tout le monde n'a pas le temps nécessaire à y consacrer, et préfère utiliser un langage de plus haut niveau (C, pascal, basic ou autre).

En ce qui me concerne, j'ai très peu de temps libre pour programmer, donc passer mon temps sur des routines asm n'est pas forcément productif. En revanche, je n'hésite pas à l'utiliser là où c'est nécessaire. Par exemple, dans Doom, juste réécrire les routines de texturage (vertical pour les objets/ennemis et les murs, horizontal pour les sols/plafonds), multiplie par 2 la vitesse, vu que ce sont les routines à la fois les plus utilisées, et les plus consommatrices de temps. Il y a un outil qui fait ces mesures très bien pour gcc: gprof. De même, la routine de mixage audio était celle qui suivait, donc là aussi, gain important.

C'est pour ça que de mon point de vue, écrire un programme en asm, je ne peux plus. Je préfère optimiser seulement les routines qui le nécessitent. Néanmoins, je n'hésite pas à regarder le code produit par gcc, pour voir si je ne pourrais pas faire mieux, ça arrive quelques fois.

C'est pour ça que je pense que ce serait sympa d'avoir un compilateur C pour Tom et Jerry sur Jaguar, qui pourrait faire une grosse partie du boulot. Et ensuite réécrire les routines qui le nécessitent vraiment.
Web: http://pmandin.atari.org/
Programmeur Linux, Atari
Spécialité: Développement, jeux

25

pmandin :
C'est pour ça que je pense que ce serait sympa d'avoir un compilateur C pour Tom et Jerry sur Jaguar, qui pourrait faire une grosse partie du boulot. Et ensuite réécrire les routines qui le nécessitent vraiment.


Bonne chance, fait juste gaffe a une chose le pipeline des ces deux procs est une 'catastrophe national', car le rajout de nop peut etre obligatoire dans certains cas de figure, si tu veux des détails exactes, prends donc contact avec SCPCD.

et surtout n'hésite pas si tu veux des détails sur ces deux compères wink


GT (JagWare) info
avatar
Accrochez vous ca va être Cerebral !!

26

Hola !

L'assembler n'est pas un language perdu, pas du tout.
On l'utilise encore dans les libs de math sur consoles par exemple.

Par contre c'est vrai qu'on utilise de moins en moins le 68000 ^_^
Mefiez vous du Dr H qui sommeil en moi !
Muhahahahahahahahaha !
Muuuuhahaha...kof...kof...hahaha !

27

Le débat lancé par GT est très juste. C'est une question à laquelle j'ai souvent réfléchi ces dernières années.

L'assembleur, c'est de l'artisanat, nous en sommes tous convancus, mais est-ce de l'art?
GT Turbo (qui cîte Zappy) :
le seul moyen -d'arriver au but recherché: le programme parfait, maîtrisé de A à Z, qui ne gaspille pas un seul cycle,
Là, on est dans l'artisanat...
GT Turbo (qui finit de cîter Zappy) :
juste pour la beauté du code. Oui, la beauté!
Et ici, on est dans le domaine de l'art!
(un art fondé de surcroît sur un postulat paradoxal, puisqu'il associe la beauté au code assembleur, qui habituellement semble indigeste!)

La difficulté, c'est que le code, ce n'est pas le produit fini. Dans le produit final, on se fiche pas mal de la beauté du code. Tout comme l'auditeur du début du siècle se fichait pas mal des commentaires humoristiques qu'Erik Satie (le compositeur) mettait sur ses partitions de piano!... et qui de fait, n'avait pour seul lecteur que le pianiste!

Nous c'est pire! Notre code assembleur, il a pour seul lecteur un micro-processeur! Pour la reconnaissance de la beauté de notre "geste", c'est pas gagné!
GT Turbo :
Et dire que ce langage est un morceau de l'histoire de l'informatique et on va le passer a la trappe sans protester Arghhh !!
Très juste! Car en tout état de cause, si nous sommes effectivement en face d'un patrimoine qui a une certaine valeur, doit-on alors le laisser mourir? laisser tomber dans l'oubli cet artisanat (ou cet art) sans essayer d'en préserver quoi que ce soit?

(vous comprenez le pourquoi de WikiPendium, maintenant?wink)
GT Turbo :
Ca me brise le coeur, fini les optimisations 'polonaises', bientot on aura oublié qu'un micro processeur possèdes des registres oui
Oui, car on peut parler de "l'art" d'optimiser, surtout quand c'est juste pour la beauté du code (comme le souligne si bien Zappy)!

Et vous tous le savez bien, vous programmeurs en assembleur (devrait-on dire créateurs en assembleur?), qui avez vécu comme moi cette expérience où l'on prend soudain conscience de cette forme de beauté, de perfection qui se dégage du code...

C'est une expérience un peu mystique en fin de compte : il faut l'avoir vécue pour la comprendre. Les arts Zen, également fondés sur de telles expériences, sont pour leur part longtemps restés hors de portée des occidentaux. Jusqu'à ce que certains s'y initie et vivent l'expérience de la "plénitude" à travers la pratique d'un art Zen (tir à l'arc par exemple). En fin de compte, le résultat de notre expérience est comparable : un expérience de satisfaction intense devant le résultat qu'on a réussi à obtenir.

Dans une démo, c'est le beau (du code) qui est caché derrièrer le beau (de la démo). Mais comment faire connaître aux gens ce beau? En tout cas, si on trouve une réponse, il faudra en parler à Erik Satiehehe (son génie n'a jamais été reconnu de son vivant).

Autre point d'écueil, c'est que cette satisfaction est en vérité double, et cela est une source d'ambiguité : le code est beau et il produit le résultat attendu. C'est ambigü parce qu'on peut mettre l'accent sur l'un ou l'autre des deux aspects (soit je cherche à ce que ça marche, quitte à écrire comme un cochon, soit je fais un truc élégant, quitte à ce qu'il ne marche pas bien dans tous les cas), mais au final, il restent liés, car il est difficile d'en écarter complètement un pour ne garder que l'autre.

Par exemple, les entreprises se focaliseraient volontiers sur le seul résultat (vis-à-vis de leurs clients, c'est la seule chose qui compte), mais (mêmes elles!) elles ne peuvent le faire totalement au détriment de tout le reste. On peut peut-être même voir sous cet angle ce qui est arrivé à MS avec Win95. Puristes dans leur démarche, ils voulaient peut-être ne se focaliser que sur le résultat, mais la réalité les aura rattrappé, car le code de mauvaise qualité ne produisait pas le résultat attendu! Il leur a donc fallu se soucier aussi de la gueule du code.
GT Turbo :
Merci a tous les constructeurs de micro-ordinateur, qui au lieu de laisser certaines personnes optimisé leur code font une pitoyable et commercial course de puissance sur leur machine. RaZ m'a donné un PC mais je vous avoues qu'après quelques jours passé dessus, j'ai l'impression que le TOS est quand meme mieux fini que Windows.....
Ils ne sont pas dans le même domaine. Ils sont bien loin de l'artisanat, et donc encore plus loin de l'art. Ils sont dans la production commerciale, les volumes de masse, l'efficacité, l'attention au résultat. Rien de mal à cela (ça donne du pain à manger à plein de gens!) mais il n'empèche que ça n'a rien à voir avec une démarche attentive à la beauté du "geste". Ca ne part pas sur les mêmes bases, c'est un autre objectif, c'est autre chose tout simplement.
Kochise :
(i++=1, en fait i+=1 qui est la simplification de i=i+1, comme en basic).

Ce que voulait dire GT, c'est que en C, l'instruction i++=1 est valide, mais son résultat est indéfini. Le C ne dit pas si ça retourne 1 ou 2. Personne ne peut le prédire, et c'est le compilateur qui décide ce que ça va retourner.hehe (c'est un exemple classique, cité par tous les détracteurs du Cwink)

Mais tout cela n'enlève rien du génie absolu du C : créer une couche d'abstraction pour favoriser la portabilité (une idée toute con, mais géniale quand même!). Linux existerait-il sans le C? Sur combien de plateformes on arrive à faire tourner Linux? N'est-ce pas là un tour de force?
Zerosquare :
- des programmeurs compétents en assembleur, on n'en voit plus beaucoup
Des artistes du code assembleur non plus loupe
Zerosquare :
- il n'y a pas de mystère, au niveau productivité pure y'a pas photo. À moins d'être un dieu, ça va quand même plus vite de bidouiller un truc en C que d'optimiser un code en assembleur. Et comme la tendance actuelle est de sortir les trucs le plus vite possible, quitte à ce que ça bouffe des ressources hardwares démesurées, le calcul est vite fait pour les entreprises.
Ce qui veut bien dire qu'on est passé d'un monde à l'autre : de l'artisanat/art à la production de masse.
Orion_ :
l'asm est mort depuis bien longtemps déja
Ca dépend de quoi on parle. Mort pour les entreprises, peut-être, mais mort pour nous autres artisans, je ne pense paswink
Orion_ :
ça me motive plus de coder comme ça une fois arriver a la maison, c'est pour ça que en hobby j'ai decider maintenant de m'eloigner le plus possible des PC et autres machines d'aujourd'hui pour m'orienter vers du oldschool avec du bon vieux code et bidouille d'époque, donc asm smile mais ça reste parceque je suis passioné d'oldschool smile
bien d'accord, et c'est normal. La logique d'entreprise est bonne pour le développement de l'entreprise, mais pas forcément en accord avec le développement de l'individu. Quand tu rentres chez toi, tu t'occupes avant tout de toi, et le "oldschool" est plus satisfaisant pour toi (comme pour moi d'ailleurswink), c'est plus positif pour ton développement personnel (pour le mien aussi), pour ta vie à toi quoi. hehe non?





En conclusion de ce post très philo, je propose qu'on rédige un jour un manifeste grin et on l'appellera le "manifeste des créateurs en assembleur" !

(et si j'ai dit plein de conneries, faites m'en part, mais tapez pas trop fort fear )
Stabylo/The Removers
http://removers.atari.org/

28

avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

29

Vous avez oublié l'universalité du code : ASM, C, GFA... c'est pas le langage qui compte, c'est l'esprit qui le met en oeuvre.

Ma chtite contrib : http://membres.lycos.fr/nef/blog/bonheur/coder.htm

30

Je dirais oui et non...

Exemples pris aux extrêmes :
A) Un codeur assembleur qui a réussi à faire une routine ultra-optimisée où y'a pas une instruction en trop, qui pousse à fond le hardware, etc.
B) Un concepteur de site web qui a réussi à faire une page complexe mais bien foutue, qui passe sur tous les navigateurs, qui respecte à la lettre les dernières recommandations W3C, etc.

Fondamentalement, A et B font la même chose : pousser leur "art" à son maximum, et je crois qu'effectivement l'état d'esprit est semblable. Cependant, pensez-vous qu'il n'y ait pas de différence significative ?

Je crois que ça vient surtout de l'absence de contraintes qu'apporte l'assembleur : pas besoin de se casser la tête pour la portabilité, pour faire plaisir à un compilateur, pour suivre la dernière tendance à la mode dans le domaine..., et la possibilité de pouvoir faire tout ce qui est techniquement possible (à condition de s'en donner la peine), même les choses auxquelles on n'a pas encore pensé...

Avec l'assembleur disparaît aussi l'esprit "demomaker" d'origine, au profit du "machin ça tourne partout, c'est génial" (et peu importe de savoir comment et à quel prix). Pour rebondir sur la remarque de Stabylo, seul le résultat compte. (Je ne dis pas que cette méthodologie est à jeter, mais je pense qu'effectivement on est en train de perdre quelque chose.)

stabylo :
En conclusion de ce post très philo, je propose qu'on rédige un jour un manifeste biggrin.gif et on l'appellera le "manifeste des créateurs en assembleur" !
Faut signer où ? tongue

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo