IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres langages Discussion :

Langage Forth, quelle surprise


Sujet :

Autres langages

  1. #1
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut Langage Forth, quelle surprise
    Salut tous le monde,
    quelle surprise de constater que le langage Forth est cité sur ce Forum. Je dois probablement être un des rares qui travaille avec cette
    machine virtuelle. Tout à fait, j'ai bien dit machine virtuelle. En fait pour être plus précis, Forth est avant toutes chose un processeur Virtuel
    implanté en mémoire avec un jeu d'instruction extensible qui va de l'assembleur du processeur hôte jusqu'aux accès Internet et au delà. C.a.d. pas de limites.
    La question:
    Y a t'il quelqu'un ici qui travaille avec cette machine??
    Merci par avance pour la réponse

    Cordialement
    Ludwig

  2. #2
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Forth est un langage étrangement négligé. Je dis étrangement parce que le forth pouvait avoir des performances comparable au C. Et je ne comprend pas que personne n'ai songé à faire une machine virtuelle pour un utilisation semblable au Java. Est-ce que c'est parce que le langage est vieux ou méconnu j'en sais rien? Mais l'idée de faire un compilateur utilisant forth plutôt que du langage machine m'a tenté plusieurs fois, mais par manque de temps, j'ai du abandonné l'idée.

    En tout cas, je suis heureux que quelqu'un si intéresse, parce que c'est un filon qui mériterait d'être étudier.

  3. #3
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut Forth
    Salut,

    Quelle surprise, (Agréable) j'allais me coucher juste avant je regarde mon Courier et je découvre ton Mail.
    En fait de machine virtuelle à partir de Forth, ben tu travailles avec tout les jours.
    L'histoire du jour d'avant Java est la suivante:
    SUN avait dans toutes ses stations installé un noyau FORTH qui tournait sur des 68040 de Motorola. Avec ce noyau ils ont écris toutes les commandes UNIX. Tu pouvais avec
    la commande Stop a Switcher dans la machine FORTH classique. Tous les serveurs qu'ils vendaient avaient également ce noyau d'installé.
    L'histoire du jour d'après.
    Puis ont débarqué chez SUN James Gosling et Patrick Naughton, qui ont changé la robe de la marié en lui mettant une Syntaxe à la C/CPP.
    Bien que Mitch Bradley avait écris le SUN FORTH pour PC, c'est Gosling et Naughton avec le soutien de Bill Joy qui ont emporté la mise
    et JAVA est monté à la surface.
    Voila pour la petite histoire.

    Pour ma part, je travaille depuis toujours avec la machine Virtuelle FORTH d'abord sous DOS puis ensuite sous Windows.
    Il y a 30 ans en arrière avec les étudiants du département de mécanique à l'école d'Ing. de Fribourg CH nous avions déjà développé
    sous DOS une technologie Composants.
    Etant à la retraite, je suis en train de porter tous ça vers la technologie de la Blockchain.
    Evidement, la machine que j'utilise contient
    l'assembleur, le compilateur, le décompilateur, le système d'exploitation ( se sert de Windows de MS), les fonctions graphiques,
    les fonctions Math etc...
    Tous les jours, je suis époustouflé par la puissance du concept FORTH.
    Le regretté Julian Noble disait que c'était probablement le secret informatique le mieux gardé.

    Cordialement
    Ludwig

  4. #4
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  5. #5
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Ludwig1 Voir le message
    Salut,

    Quelle surprise, (Agréable) j'allais me coucher juste avant je regarde mon Courier et je découvre ton Mail.
    En fait de machine virtuelle à partir de Forth, ben tu travailles avec tout les jours.
    L'histoire du jour d'avant Java est la suivante:
    SUN avait dans toutes ses stations installé un noyau FORTH qui tournait sur des 68040 de Motorola. Avec ce noyau ils ont écris toutes les commandes UNIX. Tu pouvais avec
    la commande Stop a Switcher dans la machine FORTH classique. Tous les serveurs qu'ils vendaient avaient également ce noyau d'installé.
    L'histoire du jour d'après.
    Puis ont débarqué chez SUN James Gosling et Patrick Naughton, qui ont changé la robe de la marié en lui mettant une Syntaxe à la C/CPP.
    Bien que Mitch Bradley avait écris le SUN FORTH pour PC, c'est Gosling et Naughton avec le soutien de Bill Joy qui ont emporté la mise
    et JAVA est monté à la surface.
    Voila pour la petite histoire.

    Cordialement
    Ludwig
    J'avais penser que Forth avait pu être une source d'inspiration, mais il semble qui n'ont pas eu besoin de réinventer la roue.

    J'ignore si tu es familier avec WebAssembly. Si ce n'est pas le cas, sans entrer les détails, c'est un concurrent direct à javascript. Comme le truc ressemble plus à du langage-machine qu'a autre chose. Un type à décidé de faire un compilateur Forth qui produit du code en WebAssembly. Apparemment nous ne somme pas les seuls à apprécier ce langage.

    https://el-tramo.be/blog/waforth/

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 528
    Points
    528
    Par défaut
    Aussi discret soit-il, Forth fait partie des langages qui ont le privilège d'aller dans l'espace grâce notamment aux processeurs Harris RTX.
    En voici une liste sur la page Forth in Space Applications.

  7. #7
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    La révélation de la présence de Forth dans le Java, m'a rappeler un évènement donc je n'avait pas mesuré l'impact par ignorance de ce fait.

    Sun et Digital ont eu des problèmes financiers depuis très longtemps. Et dès la création de Java, la création d'un CPU ayant un langage machine basé sur le Forth était dans leur liste de projet.

    Sun et Digital ont envisager une fusion des deux entreprises. Et là ou cela déviant intéressant, est qu'à l'époque Digital en avait pratiquement un: La série 32032. avec ce CPU un pouvait pratiquement faire du langage-machine avec une simple table de substitution. La ressemblance m'avait frappé à l'époque.

    Les ingénieurs des deux entreprises devaient se taper la tête sur les murs lorsqu'ils ont appris la nouvelle de l'échec de la fusion. Le 32032 était une vrai bête. Je travaillais pour une boite qui possédait un serveur Digital. Et nous avions également des PC INTEL au de gamme qui fonctionnaient sous WindowsNT. Quand on utilisaient les mêmes écrans de sauvegarde, la différence était frappante. Un des programmes dessinait un plomberie virtuelle en 3d. La différence en terme de performance était comme comparer une course entre une souris et un escargot . Les grilles-pains volants avaient des allures d'abeille.

    Généralement les gains de performance de CPU sont généralement pas vraiment notable pour l'utilisateur. Mais dans ce cas ci, ce n'était pas le cas. C'était la nuit et le jour: La série 32032 faisait en un cycle ce que Intel fait en 2 ou 4 cycles.

    La fusion entre les deux entreprises auraient changé le monde des ordinateurs et du monde tout court, peut-être ?

  8. #8
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Canvas Voir le message
    Aussi discret soit-il, Forth fait partie des langages qui ont le privilège d'aller dans l'espace grâce notamment aux processeurs Harris RTX.
    En voici une liste sur la page Forth in Space Applications.
    Cela m'étonne à peine. À l'époque de son age d'or, Forth faisait des miracles sur de ordinateurs très lents et avec très peu de mémoires. C'est du sur mesure pour ce langage.

    Le ZX Spectrum. une révolution à l'époque. Une machine avec mémoire très généreuse de 48 k, overclocké à 3.5 mégahertz! OS: CP/M.


    Nom : 400px-ZXSpectrum48k.jpg
Affichages : 881
Taille : 25,6 Ko


    C'est étonnant ce que l'on trouve sous le capot de certains projets. En me battant avec la compilation de Julia, (l'équipe a un gros besoin de bénévoles pour mettre à jour leur documentation). J'ai eu la surprise de voir apparaître le mot "FORTRAN" pendant la lecture du log de compilation. Comme quoi, cela démontre que ce langage a toujours sa place dans les universités.
    Images attachées Images attachées  

  9. #9
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Il existait également une cartouche de Forth pour le TO7.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Et le langage était installé en standard sur le Micronique Hector HRX : http://www.obsolete-tears.com/micron...chine-255.html : Z80 et 64Ko de ram excusez du peu

    Cela a été ma 2e machine après une évolution de mon hector hr2 si j'ai bon souvenir

    Par contre ça fait bien longtemps que je n'ai pas programmé sous cette syntaxe et et cette forme. Je serai curieux d'en voir quelques applications actuelles, le webassembly est peut-être utile.
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  11. #11
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par fredoche Voir le message

    Par contre ça fait bien longtemps que je n'ai pas programmé sous cette syntaxe et et cette forme. Je serai curieux d'en voir quelques applications actuelles, le webassembly est peut-être utile.
    Je n'ai pas de recherche approfondie du WebAssembly, mais là aussi on pourrait trouver du Forth sous le capot.

  12. #12
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par fredoche Voir le message
    Je serai curieux d'en voir quelques applications actuelles, le webassembly est peut-être utile.
    Salut,
    Actuellement,
    ben c'est Easywindows, ça utilise les DLL et API fait par les Cow Boys (MS) et ça tourne sur tous leurs OS. C'est basé sur une technologie de
    composants autonomes. La machine de base est le bloc zéro d'une Blockchain. Chaque type de fenêtre c.a.d. un composant est un bloc de la blockchain, pour faire une application on rassemble des blocs existants que l'on met dans un vocabulaire, ce qui donne une bifurcation dans la blockchain. Un Browser ou tot ce que tu voudras est juste une bifurcation dans la blockchain.

    Cordialement
    Ludwig

  13. #13
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut Forth
    Re salut tous le monde,

    Un exemple,

    Une application de base avec deux blocs affichés à l'écran.

    Nom : Exemple2.JPG
Affichages : 890
Taille : 80,6 Ko

    Il et à noter que les Blocs sont totalement autonomes et qu'un bloc quelconque peut être utilisé dans une application quelconque.
    Les blocs peuvent se trouver n'importe ou dans le réseau. Nul besoin de compiler quoi que ce soit. Un chargeur dédié se préoccupe
    d'installer les blocs dans le vocabulaire Ad'hoc.

    Cordialement

    Ludwig

  14. #14
    Membre éprouvé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Points : 1 237
    Points
    1 237
    Par défaut
    Ca alors, des gens qui se souviennent de FORTH
    Dans les années 80, il y a eu cet ovni : un micro nativement en FORTH
    https://www.sinclair-collection.com/wp/?p=340
    Si vous en voyez un dans une brocante, c'est une pièce de collection à ne pas rater, fabriqué en seulement 8000 exemplaires, dont 5000 vendus en GB.

  15. #15
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par wolinn Voir le message
    Ca alors, des gens qui se souviennent de FORTH
    Dans les années 80, il y a eu cet ovni : un micro nativement en FORTH
    https://www.sinclair-collection.com/wp/?p=340
    Si vous en voyez un dans une brocante, c'est une pièce de collection à ne pas rater, fabriqué en seulement 8000 exemplaires, dont 5000 vendus en GB.
    Salut,
    Non seulement ils y a des gens qui s'en souviennent, ils y en a même qui travaillent avec. C'est enseigné par des collègues dans différentes Universités, (Vienne, Munich, Rostok,... ). A Stanford au département de mécanique il y a même une conférence sur le sujet une fois par mois.
    Moi même, après avoir commencé par enseigner Pascal suis passé à FORTH.
    Il faut dire que cette machine Virtuelle présente des caractéristiques internes que l'on ne trouve pas par ailleurs.
    Par exemple, il n'y a pas de compilateur au sens classique du terme.
    Faire une application consiste ä réaliser une extension de vocabulaire.

    Voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    
    &&   Nom du Dialogue:       	ChoixCouleur(C8A41186F4)Dlg   
    &&   			    	Outil de démonstration d'une application Easywindows et Fastgraph
    &&   Date de création:      	01/08/2017
    &&   Heure de création:     	16:12:07
    &&   Copyright: (C)         	2001-2030 
    &&   Dialogue développé par: 	Louis Jean-Pierre SCHMITT  Prof. Emérite
    &&   				Swiss University for Applied Sciences
    &&   Email:                 	jean.pierre@buechi-schmitt.ch 
    
    
    &&   Dialogue  ChoixCouleur(C8A41186F4)Dlg
    &&   ChoixCouleur(C8A41186F4)Dlg.FTH is a computer Dialog component developed
    &&   by I.C.M. it is based of Microsoft windows systems and Easywindows systems
    &&   This component is for free use and made available to users by I.C.M.
    &&   I.C.M. Assumes no responsibility 
    &&   for the implementation and use of this computer component.
    
    
    
    \ ############################################################################################################
    \ ############											##############
    \ ############			INSTALLATION DE LA CONFIGURATION DES DONNEES 			##############
    \ ############											##############
    \ ############################################################################################################
    
    
    4 CreateNewliste ObjetListe		\ Liste contenant les objets avec leurs valeurs attachées. Ces Valeurs sont mises en place par SendTo
    					\ EXEMPLE: ( #ComboBox1.Value  :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH :M0 X... :MX; )SendTo
    					\ Construira la séquence suivante dans ObjetListe:
    					\ #ComboBox1						Entête de Liste, Nom de l'objet précédé par #
    					\ :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH	Source des données 
    					\ :M0 X...						Liste des données
    					\ :M.  ...
    					\ :MX; 							Fermeture de la liste par le marqueur :MX;
    ' ObjetListe IS ObjetList
    
    
    
    
    
    : ChoixCouleur.Datas
    
      HWNB >R  TAS() ResetList
    
    
    
    \ ==========   Installation des données ================
    
    
     ( #MultiKeys1.Datas :Id.MultiKeys1   0  0 352 352  :M0 Color.Back 25 )SendTo
     ( #MultiKeys1.Datas :M1 EW_MATRIX  16 Lignes  16 Colonnes 22  DimX 22 DimY  )SendTo
     ( #MultiKeys1.Datas :M2 EW_MODE Memorise ON   )SendTo
     ( #MultiKeys1.Datas :M3 EW_LOGO Rectangle ON  )SendTo
     ( #MultiKeys1.Datas :MX; )SendTo
     ( #MultiKeys1.Value :Id.Value :M0 Color.Back 0 :MX; )SendTo
     ( #Keys20.Datas     :Id.Keys20  10 360 35 35 NOOP   :M0 Color.Back 25 :MX; )SendTo
     ( #Keys20.Value     :Id.Value :M0 Color.Back  24 :MX; )SendTo
     R> TO HWNB
    
    ;
    
    
    
    
    \ ############################################################################################################
    \ ############											##############
    \ ############			       INSTALLATION DES IDENTIFICATEURS 		      	##############
    \ ############											##############
    \ ############################################################################################################
    
    
    
    200 IDENT Id.MultiKeys1
        IDENT Id.DlgQuit 
        IDENT Id.Cancel 
        IDENT Id.Keys20
    DROP	
    
    
    
    DIALOGS ChoixCouleur.Dialog		\ Création de la structure de la boîte de dialogue
    
            [MODELESS " I. C. M.    Choix d'une couleur dans la palette ci-dessous " 30 30 235 250 (FONT 8, MS Sans Serif) ]
            [DEFPUSHBUTTON  " OK"         Id.DlgQuit      					       190  230   40   15 ]
            [PUSHBUTTON     " Cancel"     Id.Cancel       					       145  230   40   15 ]
            [COMPONENT      " Keys"       Id.Keys20        		  10   360   35  35   (+STYLES  EW_RECT  ) ]
            [COMPONENT      " MultiKeys"  Id.MultiKeys1                0     0   20  20   (+STYLES EW_MATRIX EW_MODE EW_LOGO ) ]
    
    END-DIALOGS
    
    : ChoixCouleur.Init		S( --- ) 
    
      NOOP
    
    ;
    
    
    
    
    
    
    : ChoixCouleur.Paint 		S( --- )
    
    
      Id.MultiKeys1       MultiKeys.Paint
      Id.Keys20 	      Keys.Paint
    
    ;
    
    
    
    
    :  ChoixCouleur.Get		S( --- )
    
    
       Id.MultiKeys1           MultiKeys.Get
       Id.Keys20               Keys.ValueSet
       Id.Keys20               Keys.Paint
      
    ;   
    
    
    
    
    
    
    : ChoixCouleur.Quit		S( --- )
    
      
      HWND 0 EndDialog 
      HWND Application.Quit
      HWND SubKey.DestroyEX
      ( EWPARAM$ :M0 Color.Back TO :HWNDX :IDX :M0 )Task.Perform
    
     
    
    
    ; 
    
    
    : ChoixCouleur.Task		S( --- ) \ Exécute la tâche
    
      ChoixCouleur.Quit
      Task.Perform
    
    ;
    
    
    : ChoixCouleur.Commands		S( --- res )
    
            CASE
    
    	Id.DlgQuit    OF ChoixCouleur.Task     		ENDOF
        	Id.Cancel     OF ChoixCouleur.Quit     		ENDOF
    	Id.MultiKeys1 OF ChoixCouleur.Get      		ENDOF
    	
            ENDCASE
    
    ;
    
    
    : SetDlgParam
    
      INHERIT-DIALOG$ 2 ITEM
      [CHAR] ( Split 2swap
      2DROP (FIND)
      IF EXECUTE THEN 
    
    ;
    
    
    
    : ChoixCouleur.Messages 	S( Mes --- Zéro ) \ procédure de Gestion des messages 
    						  \ expédiés par Windows au travers du callback
    
              
    
               CASE
                  
                    WM_ACTIVATE    	 OF WPARAM LOWORD  WA_CLICKACTIVE = IF HWND EWfocus.Change  THEN 
                                        HWND InitDialogDlgParam                     			ENDOF
                    WM_CLOSE	 OF ChoixCouleur.Quit   	                	  		ENDOF 	\ ferme la boîte de dialogue
       		WM_COMMAND   	 OF WPARAM LOWORD ChoixCouleur.Commands					ENDOF	\ Call Procédure Gestion des commandes
       		WM_INITDIALOG    OF ChoixCouleur.Init   						ENDOF	\ Call Procédure de Création Zone Client 
       		WM_PAINT         OF ChoixCouleur.Paint      						ENDOF	\ Call App-Paint
       		WM_LBUTTONDOWN   OF HWND  EWPARAM ChoixCouleur.Commands          			ENDOF
                   
                    ZERO
            ENDCASE 
    
    ;
    
    
    
    :NONAME S( -- res )	\ Création du callback
    
     INHERIT-SEARCHORDER 
     INHERIT-FLOAT  
     INHERIT-DIALOG 
     MSG LOWORD ChoixCouleur.Messages  ; 
     
    4 CB: ChoixCouleur.Run  \ callback
    
    
    
    \ Fonction principale
    
    
    
     
    : ChoixCouleur(C8A41186F4)Dlg		S( --- ) \ procédure principale
    
      ConfigDialogIndirectParam
      ConfigDialogCfgParam
      ChoixCouleur.Datas
      ChoixCouleur.Dialog 	CELL- OFF
      ChoixCouleur.Dialog 	CELL- @ ?EXIT
      HINST ChoixCouleur.Dialog 
      HWNDX @ ChoixCouleur.Run  
      0 CreateDialogIndirectParam
      ChoixCouleur.Dialog CELL- ! 
      ConfigDialogHandel
    
     ;
    
    
    
    
     
    
     ' ChoixCouleur(C8A41186F4)Dlg  Last_Cmd !
    
     GILD
    
    
    
    \\

    Une autre particularité est l'absence de syntaxe.

    Cordialement
    Ludwig

  16. #16
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour
    Cette discussion ma rappelle ma jeunesse ...
    J'avais entendu parler de FORTH comme un langage absolument génial mais je n'ai jamais trouvé de machine l'utilisant, (j'avais vu les pubs pour le Sinclair mais je ne les ai pas prises au sérieux !)
    Bref, j'aimerais commencer à en faire.
    Pouvez vous me conseiller un livre et un IDE de développement.
    J'ai téléchargé SwiftForth mais je ne sais pas si c'est un environnement correct.
    Merci
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  17. #17
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Bonjour
    Cette discussion ma rappelle ma jeunesse ...
    J'avais entendu parler de FORTH comme un langage absolument génial mais je n'ai jamais trouvé de machine l'utilisant, (j'avais vu les pubs pour le Sinclair mais je ne les ai pas prises au sérieux !)
    Bref, j'aimerais commencer à en faire.
    Pouvez vous me conseiller un livre et un IDE de développement.
    J'ai téléchargé SwiftForth mais je ne sais pas si c'est un environnement correct.
    Merci
    Salut,
    ça tombe bien,
    EasyWindows est écrit à partir de SwiftForth.

    Il te faudra juste inclure les extensions Necessaires dans la machine de base.
    Une autre possibilité est que tu installes directement la nouvelle Machine qui contient directement toutes les extensions.
    Il te faudra également installer les DLL de Fastgraf que je peux te mettre à disposition sans me mettre en conflit avec la licence,
    puisqu'ils sont disponible sur le net.
    Ce que je ne pourrai pas te donner c'est les sources, mais t'en a pas besoin.
    Fastgraf contient des instructions Graphiques ultra puissantes, il permet des composants Windows autres que ceux proposés par MS.

    EXEMPLE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    \ ############################################################################################################
    \ ############											##############
    \ ############			     INSTALLATION DU DIALOGUE HOMME MACHINE 		      	##############
    \ ############											##############
    \ ############################################################################################################
    
    \ ==========   Installation du dialogue  ================
    
    
    
    DIALOGS ZoomCourbesRéduites.Dialog
    
     [MODELESS " I. C. M.  International  Cloud  Machine          Zoom sur les courbes Réduites  " 100 0 1180 580 (FONT 8, MS Sans Serif) ]
    
     [DEFPUSHBUTTON  " OK"         Id.DlgQuit      1010  560   40   15 ]
     [PUSHBUTTON     " Cancel"     Id.Cancel       	960  560   40   15 ]
     [PUSHBUTTON     " Apply"      Id.Apply	        910  560   40   15 ]
     [COMPONENT      " Quadrant"   Id.Quadrant1      20   30 1260  880  (+STYLES EW_QUAD_SIX EW_SCL_SIX EW_GRID_SIX EW_TRIG_SIX ) ] 
    
     [COMPONENT      " Keys"       Id.Keys1        1320  760   20  	20  (+STYLES  EW_RECT  ) ]
     [COMPONENT      " Keys"       Id.Keys2        1320  785   20  	20  (+STYLES  EW_RECT  ) ]
     [COMPONENT      " Keys"       Id.Keys3        1320  810   20  	20  (+STYLES  EW_RECT  ) ]
    
    \ [COMPONENT      " Trigger"    Id.Trigger1       20  400 1260    5 (+STYLES  ZERO  ) ]
    \ [COMPONENT      " Trigger"    Id.Trigger2       20  480 1260    5 (+STYLES  ZERO  ) ]
        
     [LTEXT 	 	       IdTxt.Keys1      900  470   80   10 ]
     [LTEXT 	  	       IdTxt.Keys2      900  485   80   10 ]
     [LTEXT 	 	       IdTxt.Keys3	900  500   80   10 ]
    
     [LTEXT 				IdTxt.ComboBox1       	 880  8 130    10 ]
     [COMBOBOX                     	        Id.ComboBox1   		 880 20 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox2      	 880 60 130    10 ]
     [COMBOBOX                     	        Id.ComboBox2   		 880 70 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox3      	 880 110 130    10 ]
     [COMBOBOX                     	        Id.ComboBox3    	 880 120 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox4       	 880 160 130   10 ]
     [COMBOBOX                              Id.ComboBox4    	 880 170 120   70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox5       	 880 210 130   10 ]
     [COMBOBOX                              Id.ComboBox5    	 880 220 120   70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox6       	 880 260 130   10 ]
     [COMBOBOX                              Id.ComboBox6    	 880 270 120   70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox7       	 1030  8 130    10 ]
     [COMBOBOX                     	        Id.ComboBox7   		 1030 20 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 				IdTxt.ComboBox8      	 1030 60 130    10 ]
     [COMBOBOX                     	        Id.ComboBox8   		 1030 70 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
    
    
     [GROUPBOX  "                "  IdTxt.GroupBox0 	 880 320 150   115 ]
     [AUTORADIOBUTTON    		Id.RadioBox1             890 335   15   15 ]
     [AUTORADIOBUTTON   		Id.RadioBox2     	 890 350   15   15 ]
     [AUTORADIOBUTTON   		Id.RadioBox3     	 890 365   15   15 ]
     [AUTORADIOBUTTON  		Id.RadioBox4     	 890 380   15   15 ]
     [AUTORADIOBUTTON   		Id.RadioBox5     	 890 395   15   15 ]	\ SurveillanceBande
     [LTEXT 	                IdTxt.RadioBox1          910 335   90   15 ]
     [LTEXT 	                IdTxt.RadioBox2          910 350   90   15 ]
     [LTEXT 	                IdTxt.RadioBox3          910 365   90   15 ]
     [LTEXT 	                IdTxt.RadioBox4          910 380   90   15 ]
     [LTEXT 	                IdTxt.RadioBox5          910 395   90   15 ]
    
    
    END-DIALOGS

    Ici les composants Windows MS comme [AUTORADIOBUTTON, [COMBOBOX, [LTEXT, etc... cohabitent avec les composants
    Easywindows comme [COMPONENT " Quadrant" dans les extensions de Style on dit quel quadrant on veut.
    En clair on fabrique toute sortes de composants qui sont stockés dans les blocs de la Blockchain, ensuite tu as un catalogue avec la liste des composants disponibles pour construire ton interface homme machine qui lui devient aussi un nouveau bloc dans la BlocKchain.
    La notion d'application n'existe plus, il reste des blocs, (interfaces Homme/Machine) qui permettent d'actionner les servants qui eux font le boulot.
    Pour dire quel servant est attaché à une commande, il suffit de déclarer ceci dans la base de données Ad'hoc

    Comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    \ ############################################################################################################
    \ ############											##############
    \ ############			INSTALLATION DE LA CONFIGURATION DES DONNEES 			##############
    \ ############											##############
    \ ############################################################################################################
    
    \ ==========   Installation des données ================
    
    16 CreateNewliste ObjetListe		\ Liste contenant les objets avec leurs valeurs attachées. Ces Valeurs sont mises en place par SendTo
    					\ EXEMPLE: ( #ComboBox1.Value  :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH :M0 X... :MX; )SendTo
    					\ Construira la séquence suivante dans ObjetListe:
    					\ #ComboBox1						Entête de Liste, Nom de l'objet précédé par #
    					\ :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH	Source des données 
    					\ :M0 X...						Liste des données
    					\ :M.  ...
    					\ :MX; 							Fermeture de la liste par le marqueur :MX;
    ' ObjetListe IS ObjetList
    
    
    
    
    
    
    : ZoomCourbesRéduites.Datas		S( --- ) \ Installation des éléments
    
      HWNB >R
     
     ( #QUADRANT1.Datas :Id.Quadrant1   20   30 1260 880 ConfigToolTrading(C8A41186F4)Dlg :M0 Color.Back 125 )SendTo
     ( #Quadrant1.Datas :M1 Color.Axe 0 :M2 LineWidth.Axe 2 :M3 Offset.AxeX 70 :M4 Offset.AxeY 40 )SendTo
     ( #Quadrant1.Datas :M5 GrandeurY$ [F(y)+%] [F(y)-%] :M6 GrandeurX$ [t(h)] :M7 UniteY$ % :M8 UniteX$ h :M9 Datas$ Tas :M10 UserFont 12 )SendTo
     ( #Quadrant1.Datas :M11 Scalle0.AxeY 0 :M12 FullScalle.AxeY 5 :M13 Scalle0.AxeX 9 :M14 FullScalle.AxeX 18 :M15 SubDiv.AxeY 5 :M16 SubDiv.AxeX 4 )SendTo  
     ( #Quadrant1.Datas :M17 EW_GRID Color 10 LineWidth 1 )SendTo
     ( #Quadrant1.Datas :M18 EW_TEXT 0 1  Courbes Réduites exprimées en %  Valeur$  CodeIsin$ )SendTO 
     ( #Quadrant1.Datas :M19 Div.AxeY 5 :M20 Div.AxeX 9  )SendTo
    
    {
     ( #Quadrant1.Datas :M21 EW_TRIGER 0.08  Color 31 LineWidth 1 \ Name Bande_Neutre_Moins )SendTo
     ( #Quadrant1.Datas :M22 EW_TRIGER_PM Combobox2 Bande_Neutre Color 31 LineWidth 1  Triger.Paint )SendTo
     ( #Quadrant1.Datas :M23 EW_TRIGER -0.08  Color 31 LineWidth 1 \ Name Bande_Neutre_Moins )SendTo
     ( #Quadrant1.Datas :M24 EW_TRIGER_PM Combobox2 Bande_Neutre Color 31 LineWidth 1  Triger.Paint )SendTo
    }
    
     ( #Quadrant1.Datas :MX; )SendTo
     
     ( #Quadrant1.Value :Id.Value Tas :M0 Color.Back 96 :M1 Color.Curves 24 :M2 Color.Triger 20 :M3 Resolution.AxeX 0 :M4 Resolution.Axey 0 :MX; )SendTo
    
    
    
     ( #Keys1.Datas     :Id.Keys1 1320  760   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Back 96 :MX;  )SendTo
     ( #Keys2.Datas     :Id.Keys2 1320  785   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Triger 20 :MX;  )SendTo
     ( #Keys3.Datas     :Id.Keys3 1320  810   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Graphe 24 :MX;  )SendTo
    
     ( #Keys1.Datas     :IdTxt.Keys1  :M0 Couleur Fond  :MX; )SendTo
     ( #Keys2.Datas     :IdTxt.Keys2  :M0 Couleur Trigger :MX; )SendTo
     ( #Keys3.Datas     :IdTxt.Keys3  :M0 Couleur Graphe  :MX; )SendTo
    
     ( #Keys1.Value     :Id.Value :M0 Color.Back  96 :MX; )SendTo
     ( #Keys2.Value     :Id.Value :M0 Color.Triger 20 :MX; )SendTo
     ( #Keys3.Value     :Id.Value :M0 Color.Curves 24  :MX; )SendTo
    
    
    
    
    ( #ComboBoxGroup0.Value :Id.Value :MX; )SendTo
    ( #ComboBox1.File   :Id.Combobox1  880 20 120 70 NOOP  \DeGiroTmpFile\FileDates.FTH :MX; )SendTo
    ( #ComboBox1.Value  :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH :M0 X... :MX; )SendTo
    
    \ ( #ComboBox1.Datas  :IdTxt.ComboBox1 :M0  Sélectionner une Date :MX; )SendTo
    
    
    
    ( #ComboBox2.Datas  :Id.Combobox2 880  70 120 70 NOOP )SendTo
    ( #ComboBox2.Datas  :M0 +/- 0.4% :M1 +/- 0.45% :M2 +/- 0.50% :M3 +/- 0.55% :M4 +/- 0.60% :M5 +/- 0.65% )SendTo
    ( #ComboBox2.Datas  :M6 +/- 0.70%  :M7 +/- 0.75%  :M8 +/- 0.80% :M9 +/- .85%  :M10 +/- .90% :MX; )SendTo
    
    ( #ComboBox3.Datas  :Id.Combobox3 880 120 120 70 NOOP )SendTo
    ( #ComboBox3.Datas  :M0 +/- 0.70% :M1 +/- 0.75% :M2 +/- 0.80% :M3 +/- 0.85% :M4 +/- 0.90% :M5 +/- 0.95% )SendTo
    ( #ComboBox3.Datas  :M6 +/- 1.00% :M7 +/- 1.05% :M8 +/- 1.10% :M9 +/- 1.15%  )SendTo
    ( #ComboBox3.Datas  :M10 +/- 1.20% :M11 +/- 1.25% :M12 +/- 1.30%  :M13 +/- 1.35% )SendTo
    ( #Combobox3.Datas  :M14 +/- 1.40% :M15 +/- 1.45% :M16 +/- 1.50% :MX; )SendTo
    
    ( #ComboBox4.Datas  :Id.Combobox4 880 170 120 70 NOOP :M0 +/- 1.00% :M1 +/- 1.10% :M2 +/- 1.20% :M3 +/- 1.30% :M4 +/- 1.40% :M5 +/- 1.50% :M6 +/- 1.60% :M7 +/- 1.70% :M8 +/- 1.80% :M9 +/- 1.90% :M10 +/- 2.00% )SendTo
    ( #ComboBox4.Datas  :M11 +/- 2.10% :M12 +/- 2.20% :M13 +/- 2.30% :M14 +/- 2.40% :M15 +/- 2.50% :M16 +/- 2.60% :M17 +/- 2.70%  :M18 +/- 2.80% :M19 +/- 2.90% :MX; )SendTo
    
    ( #ComboBox5.Datas  :Id.Combobox5 880 220 120 70 NOOP :M0 +/- 2.60% :M1 +/- 2.70% :M2 +/- 2.80% :M3 +/- 2.90% :M4 +/- 3.00% :M5 +/- 3.10% :M6 +/- 3.20% )SendTo
    ( #ComboBox5.Datas  :M7 +/- 3.30% :M8 +/- 3.40% :M9 +/- 3.50% :M10 +/- 3.60% :M11 +/- 3.70% :M12 +/- 3.80% :M13 +/- 3.90% :M14 +/- 4.00%   :MX; )SendTo
    
    
    ( #ComboBox6.Datas  :Id.Combobox6 880 270 120 70 NOOP :M0 +/- 3.00% :M1 +/- 3.50% :M2 +/- 4.00% :M3 +/- 4.500% :M4 +/- 5.00% :MX; )SendTo
    
    
    
    ( #ComboBox7.Datas  :Id.Combobox7  1030 20 120  70 NOOP :M0 Val 500000.00 :M1 Val 750000.00 :M2 Val 1000000.00 :M3 Val 1250000.00 :M4 Val 15000000.00 :MX; )SendTo
    ( #ComboBox8.Datas  :Id.Combobox8  1030 70 120  70 NOOP :M0 Val 100000 :M1 Val 250000 :M2 Val 500000 :M3 Val 750000 :M4 Val  1000000  :M5 Val 1500000 :M6 Val 1750000 :M7 Val 2000000 :MX; )SendTo
    
    
    
    
    ( #ComboBoxGroup1.Value :Id.Value  :MX; )SendTo
    ( #ComboBox2.Value  :Id.Value Bande.Neutre  :M0 +/- 0.4% :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox3.Value  :Id.Value Bande.Surveillance :M0 +/- 0.70%  :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox4.Value  :Id.Value Bande.Vente_Achat :M0 +/- 1.00%   :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox5.Value  :Id.Value Bande.Pump.and.Pump :M0 +/- 2.60% :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox6.Value  :Id.Value Bande.Oscilateur :M0 +/- 3.00% :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    
    ( #ComboBoxGroup2.Value :Id.Value  :MX; )SendTo
    ( #ComboBox7.Value  :Id.Value Volatilité.Capital :M0 500000.00   :MX; )SendTo
    ( #ComboBox8.Value  :Id.Value Volatilité.Volume  :M0 100000 :MX; )SendTo
    
    
    
    
    ( #LeditText1.Datas  Fichier contenant la liste des dates )SendTo
    
    ( #ComboBox1.Datas   :IdTxt.ComboBox1 :M0  Sélectionner une Date :MX; )SendTo
    ( #ComboBox2.Datas   :IdTxt.ComboBox2 :M0  Sélectionner la Bande Neutre :MX; )SendTo
    ( #ComboBox3.Datas   :IdTxt.ComboBox3 :M0  Sélectionner la Bande de surveillance :MX; )SendTo
    ( #ComboBox4.Datas   :IdTxt.ComboBox4 :M0  Sélectionner la Bande Vente Achat :MX; )SendTo
    ( #ComboBox5.Datas   :IdTxt.ComboBox5 :M0  Sélectionner la Bande Pump and Pump :MX; )SendTo
    ( #ComboBox6.Datas   :IdTxt.ComboBox6 :M0  Sélectionner la Bande de l'Oscilateur :MX; )SendTo
    ( #ComboBox7.Datas   :IdTxt.ComboBox7 :M0  Sélectionner la Volatilité Capital :MX; )SendTo
    ( #ComboBox8.Datas   :IdTxt.ComboBox8 :M0  Sélectionner la Volatilité Volume :MX; )SendTo
    
    
    ( #RadioBoxGroup0.Datas :Id.RadioGroup0 880 320 150   115 NOOP :M0  :MX; )SendTo
    ( #RadioBoxGroup0.Value :Id.Value  :MX; )SendTo
    ( #RadioBox1.Datas  :Id.RadioBox1 890 335   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Neutre$ ON :MX; )SendTo
    ( #RadioBox2.Datas  :Id.RadioBox2 890 350   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Surveillance$ ON :MX; )SendTo
    ( #RadioBox3.Datas  :Id.RadioBox3 890 365   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Vente.Achat$ ON :MX; )SendTo
    ( #RadioBox4.Datas  :Id.RadioBox4 890 380   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Pump.and.Pump$ ON :MX; )SendTo
    ( #RadioBox5.Datas  :Id.RadioBox5 890 335   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Oscilateur ON :MX; )SendTo
    
    
    ( #RadioBox1.Datas   :IdTxt.RadioBox1 :M0  Bande Neutre :MX; )SendTo
    ( #RadioBox2.Datas   :IdTxt.RadioBox2 :M0  Bande de Surveillance :MX; )SendTo
    ( #RadioBox3.Datas   :IdTxt.RadioBox3 :M0  Bande Vente Achat :MX; )SendTo
    ( #RadioBox4.Datas   :IdTxt.RadioBox4 :M0  Bande Pump and Pump :MX; )SendTo
    ( #RadioBox5.Datas   :IdTxt.RadioBox5 :M0  Bande Oscilateur :MX; )SendTo
    ( #Titre1.Datas      :IdTxt.ComboBox1 :M0  Configuration  du  Module  de  Trading :MX; )SendTo
    ( #GroupBox0.Datas   :IdTxt.GroupBox0 :M0  Sélectionner le mode d' Analyse :MX; )SendTo
    
    
    
    
     R> TO HWNB
    
    
    ;

    ( #Keys1.Datas :Id.Keys1 1320 760 20 20 ChoixCouleur(C8A41186F4)Dlg :M0 Color.Back 96 :MX; )SendTo


    On déclare un label pour un composant ( #Keys1.Datas ) sert de marqueur dans la base de données
    On déclare l' ID du composant ( :Id.Keys1 )
    On attache les données 1320 760 20 20 ChoixCouleur(C8A41186F4)Dlg :M0 Color.Back 96 :MX;
    Et on expédie le paquet à la base de données de nom ObjetListe attachée au bloc ZoomCourbesRéduites.Dialog

    Il n'y a rien à programmer, il suffit de mettre les données en place et ça fonctionne.
    On appelle ceci programmation par les données, c'est Mac.Carthy (MIT) qui dans les années 60 du siècle passé à mis ça au point.

    Comme Chuck était assistant chez Mac.Carthy il est évident que l'on retrouve bien des choses dans FORTH.


    Il y a 30 ans en arrière avant que ne sorte JAVA, nous avions pour les besoins des labos du département de mécanique développé
    tout cela sous DOS.

    EXEMPLE: Banc de test d'un moteur Wankel destiné à l'aviation
    Nom : Exemple2Win.JPG
Affichages : 754
Taille : 18,0 Ko

    Ces travaux ne sont jamais sortis des Labos de l'école.

    Etant à la retraite, j'ai pris la décision de porter tout cela sur Windows de MS

    Cordialement
    Ludwig
    Images attachées Images attachées  

  18. #18
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Merci pour les codes.
    Je les ais mis dans des fichiers .F
    Dans la console SwiftForth j'ai fait un "Include" et rien ne s'est passé, si ce n'est des messages d'erreurs (style CreateNewliste ? pour le deuxième fichier).
    Il me manque sans doute les DLL dont tu parlais.
    J'ai essayé de taper forth fastgraf mais je n'ai rien obtenu
    Ou peut-on trouver des exemples de programmes simples, avec manipulation de structure de données type graphes ?
    J'ai en tête de résoudre les problemes de CodinGame (si tu connais) en Forth

    Merci et A+
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  19. #19
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Merci pour les codes.
    Je les ais mis dans des fichiers .F
    Dans la console SwiftForth j'ai fait un "Include" et rien ne s'est passé, si ce n'est des messages d'erreurs (style CreateNewliste ? pour le deuxième fichier).
    Il me manque sans doute les DLL dont tu parlais.
    J'ai essayé de taper forth fastgraf mais je n'ai rien obtenu
    Ou peut-on trouver des exemples de programmes simples, avec manipulation de structure de données type graphes ?
    J'ai en tête de résoudre les problemes de CodinGame (si tu connais) en Forth

    Merci et A+
    Salut,
    Le listing est un exemple pour montrer comment on développe sous EasyWindows. Tu ne peux pas inclure cela dans SwiftForth sous cette
    forme, il te faut la machine virtuelle qui contient tout les mots en rapport avec Easywindows.
    CreateNewliste est une fonction qui construit une base de données complète.
    Je pense qu'il te faudra commencer par des choses simples. Demain je te préparerais de quoi travailler.
    Je ne sais pas quel sont tes connaissances au niveau des machines virtuelles, notation Polonaise inversée etc...
    Comme on va manipuler des chaines de caractères, je suggère de commencer par l'étude des 300 et quelques fonctions liées aux chaines
    de caractères.

    Cordialement

    Ludwig

  20. #20
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    Je ne connais pas grand chose aux machines virtuelles. J'ai fait du C, du Java, du Lisp du Prolog, un peu de Haskell, et je me suis amusé BrainFuck et WhiteSpace qui sont si je ne m'abuse des langage "de pile" comme Forth.
    Comme je te le disais, j'aimerais manipuler des structure de données style graphe et aussi savoir gere les I/O disques pour entrer des données facilement pour tester les programmes.
    J'ai fouillé un peu RosettaCode StackOverflow et je commence à trouver des ressources interessantes Forth sur le net.
    gforth est-il un "bon" Forth, lorsque j'essaye des trucs de RosettaCode, ils ne marchent pas toujours avec SwiftForth.
    Merci
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Projet Vidéomaton quel langage et quelle plateforme choisir?
    Par shoooryuken dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 10/09/2014, 21h07
  2. [Langage] Ajout de modules : quelle techno ?
    Par vulquin dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 04/05/2006, 16h33
  3. Premier langage web : quelle langage choisir ???
    Par skeeper dans le forum Débuter
    Réponses: 4
    Dernier message: 06/03/2005, 14h38
  4. Quel langage pour quelles applications ?
    Par Gwipi dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 25/06/2004, 13h48
  5. Quel langage (et quelle doc)
    Par lejimi dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 28/05/2004, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo