La Place des Développeurs Newbie en assembleur Les IA sont-elles fiables ?
Bonsoir à tous,
Oui, je sais, je n'ai pas fait ma présentation (ou plutôt refait car j'étais déjà présent du temps du MSX Café et je suis même venu une fois ou deux chez JP en 2007-2008 pour les réunions d'alors, mais je me suis lassé de devoir la refaire après chaque putsch du tenancier de l'époque
Promis je m'en occuperai prochainement 
Quand j'ai eu mon MSX en 1985, j'avais 12 ans et je n'avais personne dans mon entourage pour m'expliquer l'assembleur. Je me suis contenté du Basic en déplorant le fait qu'animer deux sprites en même temps mettait ma machine en PLS.
Aujourd'hui, je me dis que l'IA devrait pouvoir me servir de super-professeur à domicile pour l'assembleur et j'ai jeté mon dévolu sur Claude, d'Anthropic, réputé plutôt bon en codage.
Bon, je connais le principe des LLM et je m'attendais à tout et à rien.
A l'arrivée, je suis plutôt content car j'ai appris des choses mais je voudrais l'avis de spécialistes concernant ma première collaboration avec Claude : le fameux "Hello world!".
Je vous rassure, je ne viendrai pas toutes les cinq minutes faire corriger du code, c'est juste pour juger de ce premier essai.
Donc Claudio commence par me dire : on va appeler une routine STROUT en #00A2 et elle affichera la chaine de caractère précédemment chargée en hl.
Code :
org #C000
START:
ld hl, MESSAGE
call #00A2
ret
MESSAGE:
db "HELLO, WORLD!", #0D, #0A, #00
Ça n'a jamais fonctionné...
Après moults essais (j'ai aussi un peu pataugé à créer un fichier lisible par OpenMSX), on en est arrivé à :
CHPUT equ $00A2
org $C000
START:
ld hl, MESSAGE
LOOP:
ld a, (hl)
or a
ret z
call CHPUT
inc hl
jr LOOP
MESSAGE:
db "HELLO WORLD!", $0D, $0A, $00
Qui fonctionne (avec une lecture de la phrase caractère par caractère donc).
Je voudrais juste savoir : est-ce que c'est comme ça que ça fonctionne l'affichage de texte basique ? Claude a-t-il raison ou est-ce le hasard de son système probabiliste qui l'a fait tomber sur cette solution alors qu'il existe beaucoup plus élégant ou fonctionnel ?
Merci d'avance pour votre éclairage, c'est pour savoir si je m'obstine avec l'IA ou s'il vaut mieux partir sur des sources plus conventionnelles (livres, forums, etc).
Oui, je sais, je n'ai pas fait ma présentation (ou plutôt refait car j'étais déjà présent du temps du MSX Café et je suis même venu une fois ou deux chez JP en 2007-2008 pour les réunions d'alors, mais je me suis lassé de devoir la refaire après chaque putsch du tenancier de l'époque
Promis je m'en occuperai prochainement 
Quand j'ai eu mon MSX en 1985, j'avais 12 ans et je n'avais personne dans mon entourage pour m'expliquer l'assembleur. Je me suis contenté du Basic en déplorant le fait qu'animer deux sprites en même temps mettait ma machine en PLS.
Aujourd'hui, je me dis que l'IA devrait pouvoir me servir de super-professeur à domicile pour l'assembleur et j'ai jeté mon dévolu sur Claude, d'Anthropic, réputé plutôt bon en codage.
Bon, je connais le principe des LLM et je m'attendais à tout et à rien.
A l'arrivée, je suis plutôt content car j'ai appris des choses mais je voudrais l'avis de spécialistes concernant ma première collaboration avec Claude : le fameux "Hello world!".
Je vous rassure, je ne viendrai pas toutes les cinq minutes faire corriger du code, c'est juste pour juger de ce premier essai.
Donc Claudio commence par me dire : on va appeler une routine STROUT en #00A2 et elle affichera la chaine de caractère précédemment chargée en hl.
Code :
org #C000
START:
ld hl, MESSAGE
call #00A2
ret
MESSAGE:
db "HELLO, WORLD!", #0D, #0A, #00
Ça n'a jamais fonctionné...
Après moults essais (j'ai aussi un peu pataugé à créer un fichier lisible par OpenMSX), on en est arrivé à :
CHPUT equ $00A2
org $C000
START:
ld hl, MESSAGE
LOOP:
ld a, (hl)
or a
ret z
call CHPUT
inc hl
jr LOOP
MESSAGE:
db "HELLO WORLD!", $0D, $0A, $00
Qui fonctionne (avec une lecture de la phrase caractère par caractère donc).
Je voudrais juste savoir : est-ce que c'est comme ça que ça fonctionne l'affichage de texte basique ? Claude a-t-il raison ou est-ce le hasard de son système probabiliste qui l'a fait tomber sur cette solution alors qu'il existe beaucoup plus élégant ou fonctionnel ?
Merci d'avance pour votre éclairage, c'est pour savoir si je m'obstine avec l'IA ou s'il vaut mieux partir sur des sources plus conventionnelles (livres, forums, etc).
Sony HB-F700F/HB-F501F/PRN-C41/Nemesis 1 sous blister (!) + d'autres babioles
Comment tu executes ton programme ?
Tu fais un fichier binaire que tu charges en RAM puis execute depuis le BASIC ?
Pour répondre à ta question, l'IA a inventé une fonction qui n'existe pas. Ou plutôt, elle utilisait mal une fonction qui existe et n'affiche qu'un seul caractère à l'écran.
La 2e proposition de l'IA elle est correcte.
Tant que tu arrives à détecter ses erreurs et que tu ne lui demande pas un travail, original, l'IA finira sûrement toujours par converger vers un programme fonctionnel.
Personnellement je préfère utiliser mon temps pour apprendre pour moi-même, plutôt que de passer du temps à comprendre les erreurs des IAs et les aider à s'améliorer. Mais bon, c'est a toi de voir.
En tout cas, le BIOS du MSX est assez simple et bien documenté. Par exemple :
https://map.grauw.nl/resources/msxbios.php
Tu fais un fichier binaire que tu charges en RAM puis execute depuis le BASIC ?
Pour répondre à ta question, l'IA a inventé une fonction qui n'existe pas. Ou plutôt, elle utilisait mal une fonction qui existe et n'affiche qu'un seul caractère à l'écran.
La 2e proposition de l'IA elle est correcte.
Tant que tu arrives à détecter ses erreurs et que tu ne lui demande pas un travail, original, l'IA finira sûrement toujours par converger vers un programme fonctionnel.
Personnellement je préfère utiliser mon temps pour apprendre pour moi-même, plutôt que de passer du temps à comprendre les erreurs des IAs et les aider à s'améliorer. Mais bon, c'est a toi de voir.

En tout cas, le BIOS du MSX est assez simple et bien documenté. Par exemple :
https://map.grauw.nl/resources/msxbios.php
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie

