Et c'est reparti sur le n'importe quoi complet...
-----
Et c'est reparti sur le n'importe quoi complet...
Plus précisément,
je ne sais pas avec quoi tu travailles, mais je dois te dire que c'est le dernier de mes soucis. Alors accepte une bonne fois pour toute que d'autres font autrement que toi, mais surtout accepte qu'ils ont le droit de dire comment eux on fait.
Mais encore, si d'autres font autrement que toi ça ne te donne en aucun cas le droit de dénigrer leur façon de faire.
Si j'utilise un outil peu connu, c'est parce qu'un cahier de charge à conduit à un tel choix.
Cordialement
Ludwig
Salut,
Donc si je comprend bien, selon toi si quelqu'un ne fait pas comme tout le monde il faut le mettre à l'index.
Même si à la fin il obtient la même chose.
Comme tu sais,
Quand tu écris des instructions avec n'importe quel langage, à la fin tu obtient quelque-chose qui ressemble à ceci.
see getlist
4A523F 49D9FF ( split# ) CALL E8BB87FFFF
4A5244 4A007F ( Evalf ) CALL E836AEFFFF
4A5249 EBX 9B194 [EDI] MOV 899F94B10900
4A524F 0 [EBP] EBX MOV 8B5D00
4A5252 4 # EBP ADD 83C504
4A5255 4 # EBP SUB 83ED04
4A5258 EBX 0 [EBP] MOV 895D00
4A525B A30B4 [EDI] EBX LEA 8D9FB4300A00
4A5261 1 # 0 [EBX] ADD 830301
4A5264 0 [EBP] EBX MOV 8B5D00
4A5267 4 # EBP ADD 83C504
4A526A 49D9FF ( split# ) CALL E89087FFFF
4A526F 40471F ( 2SWAP ) CALL E8ABF4F5FF
4A5274 0 # EBX CMP 83FB00
4A5277 4A5255 JNZ 0F85D8FFFFFF
4A527D 4 [EBP] EBX MOV 8B5D04
4A5280 8 # EBP ADD 83C508
4A5283 4 # EBP SUB 83ED04
4A5286 EBX 0 [EBP] MOV 895D00
4A5289 A30B4 [EDI] EBX MOV 8B9FB4300A00
4A528F RET C3
et implanté dans la mémoire ça fait ça (Hexadécimal )
4A523F E8 BB 87 FF FF E8 36 AE FF FF tList.......6.
4A5249 89 9F 94 B1 09 00 8B 5D 00 83 C5 04 83 ED 04 89 .......]........
4A5259 5D 00 8D 9F B4 30 0A 00 83 03 01 8B 5D 00 83 C5 ]....0......]...
4A5269 04 E8 90 87 FF FF E8 AB F4 F5 FF 83 FB 00 0F 85 ................
4A5279 D8 FF FF FF 8B 5D 04 83 C5 08 83 ED 04 89 5D 00 .....]........].
4A5289 8B 9F B4 30 0A 00 C3
et t'es en train de me raconter que ta méthode de travail pour obtenir ce résultat est la meilleure.
Mais tu sais, il y a 50 ans c'était déjà ça,
La représentation hexadécimale des bandes perforées utilisé sur les métiers à tisser de Jacquards en 1800 et quelque c'était déjà ça aussi.
T'es en train de m'expliquer que ta façon de faire pour obtenir des 0 et des 1 est la bonne et ma façon à moi date du néolithique, peut' être, mais ça fait toujours des 0 et des 1.
In fine, comme avec toute machine, le dernier critère de jugement restera le temps mis pour obtenir le résultat.
Et là mon pote t'as aucune chance.
Cordialement
Ludwig
On remonte encore plus dans le temps, on est passé à l'assembleur...
Et oui, il y a plein de façons d'obtenir ce genre de résultat et certaines sont meilleures. C'est d'ailleurs pour cela qu'on a inventé les langages de haut niveau, pour ne plus avoir à tout faire en assembleur.
Avec tes technos d'il y a 30 ans, tu n'obtiens pas la même chose. Tu obtiens du code illisible, non maintenable, non extensible et j'en passe...
SalutOn remonte encore plus dans le temps, on est passé à l'assembleur...
Et oui, il y a plein de façons d'obtenir ce genre de résultat et certaines sont meilleures. C'est d'ailleurs pour cela qu'on a inventé les langages de haut niveau, pour ne plus avoir à tout faire en assembleur.
Avec tes technos d'il y a 30 ans, tu n'obtiens pas la même chose. Tu obtiens du code illisible, non maintenable, non extensible et j'en passe...
C'est de ça que tu veux parler ?Code:: Abortf S( adr,len --- ) \ Installe un message d'erreur et met celui-ci à lécran. La Cloud Machine est arrêtée. \ :USAGE ( #Message No Label #Fonction Setf )Abortf \ L'ordre d'écriture n'est pas important. Abortf$ $! \ On enregistre les Infos dans la Chaine de nom Abortf$ ( #Base Tas )InitBasefx \ On active la base Tas pour enregistrer les Infos sous forme splitée. Abortf$ ( #Base Tas )ToBase \ Passage des Données de Forth vers une base de données Easywindow sous forme splitée ( #Base Tas #LastPath LastPath )PlusListf ( #Base Tas #Erreur Erreur )PlusListf Getpathf$ ( #LastPath Tas )Setf ( #Base Tas #Fonction )SetErrLabel \ On installe le label source d'erreur ( #Base Tas #Langue Langue$ )PlusListf \ On Rajoute une étiquette #Langue dans la base Tas, information dans Langue$ ( #Base Tas #Path Path )PlusListf \ On rajoute une étiquette #Path dans la Base Tas, information = Path ( #Base Tas #Constants HWND )PlusListf \ On ajoute le Handel de la fenêtre mère ( #Base Tas #Titre Titre )PlusListf \ On ajoute une étiquette #Titre ( #Base Tas #Showf MessageBox )Pluslistf ( #Base Tas #orf MB_ZERO MB_ICONSTOP )Pluslistf \ ( #Fonction Abortf )Getpathf \ Retourne le Path d'accès à la fonction Abortf ( Abortf contient la liste des messages ) ( #Path Tas )Setf \ Dans la base Tas on enregistre le chemin d'accès (Path) sous l'étiquette #Path ( #Base Tas #Path #Message )Loadf \ Dans le fichier #Path, cherche le contenu de #Message et charge celui-ci dans la base Tas \ sous l'étiquette #Message ( #Base Tas #Path #Titre )Loadf \ Dans le fichier #Path, cherche le contenu de #Titre et charge celui-ci dans la base Tas \ Sous l'étiquette #Titre ( #Message )Eval# \ Retourne dans #Message, la valeur de #Message formaté. Les balises #... sont remplacées \ Par leur valeur. ( #Message )Eval$ ( #Titre )Eval# \ Retourne dans #Titre, la valeur de #Titre formaté. Les balises #... sont remplacées \ Par leur valeur. ( #Base Stack #Constants #Message #Titre #Orf #Showf )Consf \ Création du message dans la base de données de nom Stack Base_Handel @ BaseEval Abort" [ I. C. M. ] Cloud Machine Arrêtée" ;
Exemple:
Un gestionnaire d'erreur dans une cloud machine
Cordialement
Ludwig
Oui, totalement illisible, inutilement complexe, complètement obsolète...
Un sommet dans le ridicule.
OuiOui fait de l'IT ....mais ça fait trente ans que ça dure.
Re,
Tes remarques montrent bien que t'as pas vu le peuck.
ça montre surtout à quel point t'es pressé pour démolir.
Il y' a deux niveaux de programmation, le premier consiste à concevoir des outils, la c'est vrai, ça peut être
très très complexe, et ce que je vient de monter est encore relativement simple.
Puis il y a le niveau 2 qui est la mise en Oeuvre classique par l'utilisateur (Programmeur)
qu'il peut écrire comme ça
GetPathf$ File-Exists
NOT IF ( #Message No File #Fonction GetPathf )Abortf THEN
ou comme ça
GetPathf$ File-Exists
NOT IF ( #Message No File #Fonction GetPathf ) Abortf THEN
Il me semble que ceci est sufisement parlant et sufisement simple
La complexité est pour l'utilisateur totalement transparente, il passe deux paramètres
1) Le type de message Ici " No File"
2) Le nom du mot qu'il est en train de définir ici " Getpathf"
Inutile de dire que la gestion messagerie est multilangue.
Cordialement
Ludwig
Non c'est très simple, c'est la notation polonaise inversée
on met une info sur la pile de données, puis on appelle le mot qui va traiter l'info il retournera ou non un résultat du traitement
sur la pile de donnée, résultat qui servira de donnée pour le mot suivant etc...
Il n'y a rien d'autre à apprendre que ceci, disposer correctement les informations sur la pile de données puis appel du mot qui fera le traitement.
Je crois qu'on peut difficilement faire plus simple.
Explications de ce qui précède:
GetPath$ est le nom d'une chaine de caractères qui contient le chemin d'accès C:\... etc...
Schématiquement on représente ceci de la façon suivante:
Code:Mot Pile de Données Avant action Après Getpath$ S( --- addr,len ) \ laisse sur la pile un bi pointeur len. File-Exists S( addr,len --- flag ) \ Test si Getpath$ est bien path de fichier NOT S( flag --- /flag ) \ Inverse la valeur au sommet de la pile IF S( /flag --- ) \ Test oui ou non ( xxxxxx ) S( --- addr,len ) \ un bi pointeur sur la chaine explicite xxxxxx Abortf S( addr,len --- ) \ ramasse xxxxx et organise le traitement THEN \ en fonction du contenu de celle-ci. On ferme IF avec S( pour stack le mot S( ignore ce qui suit jusqu'à ce qu'il rencontre le mot ) Le mot ( marque le début d'une chaine de caractère explicite jusqu'à ce qu'il rencontre le mot ) qui retourne la longueur de la dite chaine
SI on décompose en ne mettant qu'un seul mot par ligne avec l'action du mot sur la pile de donnée, on obtient
une vision très claire et extrêmement lisible des choses. Souvent pas besoin de Debug il suffit d'observer
l'évolution de la pile de données pour voir une erreur.
Cordialement
Ludwig
Désolé, mise en page dificile
Mot Pile de Données
Avant action Après
Getpath$ S( --- addr,len ) \ laisse sur la pile un bi pointeur len.
File-Exists S( addr,len --- flag ) \ Test si Getpath$ est bien path de fichier
NOT S( flag --- /flag ) \ Inverse la valeur au sommet de la pile
IF S( /flag --- ) \ Test oui ou non
( xxxxxx ) S( --- addr,len ) \ un bi pointeur sur la chaine explicite xxxxxx
Abortf S( addr,len --- ) \ ramasse xxxxx et organise le traitement
THEN \ en fonction du contenu de celle-ci. On ferme IF
avec S( pour stack
le mot S( ignore ce qui suit jusqu'à ce qu'il rencontre le mot )
Le mot ( marque le début d'une chaine de caractère explicite jusqu'à ce qu'il rencontre le mot )
qui retourne la longueur de la dite chaine
Je laisse tomber la discussion... Je préfère largement retourner à mon interpreteur brainfuck sur ma machine d-wave plutôt que d'essayer de discuter avec des gend trop "procéduraux". Vous serrez où bandes de vieux croutons à l'avénement des ordi quantiques ?
Re
Ben ça c'est pas demain la veille que t'écriras du code sur un ordi quantique
Ceci étant explique-moi pour quelle raison je dois faire comme toi?
Avec la méthode que j'utilise je suis au moins 2 fois plus rapide que toi pour obtenir un résultat,
je ne suis jamais bloqué par la limitation d'un compilateur, alors indique moi une raison valable pour changer.
Cordialement
Ludwig
Tu sais au moins ce que tu veux tu pose une question je te réponds. Ceci étant je me fou complétement d'être ridicule, obsolète
par rapport à quoi d'ailleurs? la nouvelle mode? les couleurs qui ont changées? le nouveau mode d'emploi? les drivers de périphériques qui merdent sous Windows 10 ? dit-moi ?
Ceci étant explique-moi pour quelle raison je dois faire comme toi?
Avec la méthode que j'utilise je suis au moins 2 fois plus rapide que toi pour obtenir un résultat, ça fonctionne, pas de Bug,
je ne suis jamais bloqué par la limitation d'un compilateur, alors indique moi une raison valable pour changer.
Cordialement
Ludwig
En plus puisque tu sais tu aurais du remarquer que c'était de la notation Polonaise inversée, alors pourquoi tu poses la question?
En plus t'as même pas remarqué que c'est le contenu des chaines de caractères qui définit le déroulement des séquences d'ou comportement adaptatif du système et exécution dynamique, je ne suis pas sur que t'as remarqué la subtilité. Les chaines de caractères forment des gabarits, le déroulement de la bataille est guidé par ce qui est écrit dedans. Donc exécution totalement dynamique et adaptative, ça c'est le secret de l'IA mon pote.
Ici également deux niveaux,
1) On construit une structure procédurale avec des bi pointeurs,
2) A l'utilisation on modifie le contenu de façon dynamique puis on exécute le contenu que l'on vient de modifier.
Résultat des courses, c'est l'état des données au temps T qui définiront le comportement au temps T+1
Essai donc de faire avec tes outils.
En termes de dynamique, ce que tu fabriques avec ta méthode de travail, c'est la chaine directe en boucle ouverte, il te manque la boucle de retour et le correcteur, et ça c'est irréalisable avec la méthode de développement que tu utilises.
Le choix d'un outil se fait en fonction de ce que l'on veut obtenir que je sache. Non?
Maintenant libre à toi de me traiter de tous ce que tu veux c'est ton PB pas le mien.
Cordialement
Ludwig
Je suis désolé : tu n'as pas remarqué que je me moquais de toi quand j'ai parlé de langage Yoda ?
Vu que tu ne sais pas quelle méthode de développement j'utilise, tu viens encore de dire un truc totalement ridicule.
Bon, on s'est bien amusé mais comme lou_ibmix_xi (qui se moquait aussi de toi avec brainfuck sur d-wave), je te laisse aux cartes perforées et à l'IA en Forth. Merci pour la rigolade ceci dit.
Mais de rien, mais tu sais c'est pas nouveaux, la dialectique est l'instrument favoris des ingnares. Je ne sais pas ce que tu programmes, mais je dois admettre qu'en dialectique t'es doué, malheureusement ça ne se vend pas. (Typiquement French d'ailleurs).Je suis désolé : tu n'as pas remarqué que je me moquais de toi quand j'ai parlé de langage Yoda ?
Vu que tu ne sais pas quelle méthode de développement j'utilise, tu viens encore de dire un truc totalement ridicule.
Bon, on s'est bien amusé mais comme lou_ibmix_xi (qui se moquait aussi de toi avec brainfuck sur d-wave), je te laisse aux cartes perforées et à l'IA en Forth. Merci pour la rigolade ceci dit.
Regarde voir le nombre de fois que t'as utilisé le mot ridicule, j'ai le sentiment que tu cherches à généraliser ton cas. Pour ce qu'il en est de Forth, tu à bien montré que t'as jamais écris une ligne de code.
Tu dois être sacrément doué pour avoir un avis sur quelque chose que tu ne connais pas. Ou bien ferais-tu dans le genre
perroquet qui répète ce d'autres perroquets ont dit avant lui qui eux aussi répètent etc...
Mais comme je suis sympa et que j'essaye de t'aider à être moins ignare, sache que la séquence compilé que tu fabriques, (Chaine directe) se traduit du point de vue de la dynamique par un retard pur. Tu peux utiliser une approximation de Padee pour mettre en équation.
Les propos que t'as tenu au sujet de l'assembleur montrent clairement que t'as jamais entendu parler des méthodes de programmation pour réaliser un régulateur numérique etc...
Si jamais t'es capable de descendre de ton cheval, d'enlever ton chapeau et d'être moins imbu de ta personne, ce sera avec plaisir que je t'expliquerais comment ça marche.
Cordialement
Ludwig
Fin de ce monologue fanatique qui n'a depuis longtemps d'intérêt que pour Ludwig.
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac