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. #21
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 62
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Trap D Voir le message
    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
    Salut,
    j'étais en train de réfléchir comment j'allais faire pour te préparer des infos pour te faire la main. En général si tu utilises une machine
    virtuelle Forth, il faut vérifier qu'elle contient l'ensemble du vocabulaire prévue par la Norme ISO. Ben oui Forth est normalisé ISO.
    Je crois que c'est le cas pour gforth. Ce qu'il y a c'est que les auteurs rajoutent des Vocabulaires complémentaires.
    C'est également le cas de SwifthForth qui contient la normes mais également toute une série d'extensions. SwiftForth est un outil professionel extrêmement puissant. Je travaille avec cet outil et Easywindows est construit à partir de SwiftForth.
    J'ai développé tout un arsenal d'outils pour gérer les chaines de caractères, les bases de données, évidement les I/O disques, les sortie à l'écran, les accès au net etc.
    Easywindows est actuellement en Version Béta, je me pose la question de savoir comment faire pour te passer cette version, sachant qu'elle n'est pas encore stabilisé et qu'il s'y rajoute continuellement de nouvelles fonctions.

    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
    
    VARIABLE File_Handel
    Create File-Buffer 255 /ALLOT                             \ Création d'un buffer de 255 Octets
    
    
    : ReadLineX			S( file_ID --- adr,len ) \ Lecture d'une ligne de texte dans un fichier dont le Handel est sur la pile
    
    	>R File-Buffer 255 Erase 
      	File-Buffer 255 R> 
            Read-line Throw
    
    ;
    
    
    
    : ReadLine 
    
    	File-Buffer 255 Erase 
      	File-Buffer 255 File_Handel 
            @ Read-line Throw
    
    ;
    
    
    255 $STRING BASE$
    
    
    : LoadBase			S( adr,len --- ) \ Charge la base de données ouverte avec le fichier disque dont le nom est pointé par Adr,len
    
      split# cutlf file$ $!
      cutlf Base$ $!
      File$ file-exists 
      Not 			IF FileError 	THEN 
      Base$ (Find) NOT 	IF DataBaseError THEN 
      EXECUTE ResetBase
      File$ R/W open-file Throw File_Handel !
      
      BEGIN
           ReadLine >R
           R@ IF
           		File-Buffer swap  Buf$ $! 
           		Buf$ AppendLine 
              THEN
           
           R> NOT
      UNTIL        
      File_Handel @ Close-File Throw
      DROP
    
      File$  $SetFileName
    
    
    ;


    Donc, si tu te décide à travailler avec SwiftForth je veux bien te donner un coup de main.


    Cordialement

    Ludwig

  2. #22
    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
    Je ne sais pas encore si je vais utiliser SwiftForth ou gForth.
    SwifForth est plus agréable à manipuler mais il y a beaucoup d'exemples sur le net en gForth.
    Voici les erreurs obtenues lorsque j'ai chargé ton dernier code :
    SwiftForth i386-Win32 3.7.4 08-Nov-2018
    INCLUDE "D:\a-travail\developpements\Forth\Ludwig\ludwig-3.F"
    D:\a-travail\developpements\Forth\Ludwig\ludwig-3.F
    6: : ReadLineX S( file_ID --- adr,len ) \ Lecture d'une ligne de texte dans un fichier dont le Handel est sur la pile >>> S( ?
    ok
    INCLUDE "D:\a-travail\developpements\Forth\Ludwig\ludwig-3.F"
    File_Handel isn't unique.
    File-Buffer isn't unique.
    D:\a-travail\developpements\Forth\Ludwig\ludwig-3.F
    25: 255 $STRING BASE$ >>> $STRING ?
    2 definitions were hidden
    La première erreur a disparu lorsque j'ai enlevé le S de S( file_ID....

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

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 62
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Bonjour
    Je ne sais pas encore si je vais utiliser SwiftForth ou gForth.
    SwifForth est plus agréable à manipuler mais il y a beaucoup d'exemples sur le net en gForth.
    Voici les erreurs obtenues lorsque j'ai chargé ton dernier code :

    La première erreur a disparu lorsque j'ai enlevé le S de S( file_ID....
    Resalut,
    Tu ne peux pas charger ce code tel quel dans SwiftForth. Il te faut au préalable au moins une trentaine de fichiers avec toutes les extentions.
    Je t'ai mis ce code juste pour te montrer des exemples.
    Le SwiftForth de base que tu utilises accepte les parenthèses ouvrantes et fermentes en temps que commentaires de pile.
    Dans Easywindows, les commentaires de pile sont à mettre entre S( ..... et )
    Les parenthèses ouvrantes et fermantes servent à emballer des objets.
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    SystemStack ( #Application C:\EasyWindows\Logiciel-Bourse\EW-BoursicotC8A41186F4.FTH )List

    La fonction List expédie vers la pile système le paquet compris entre ( et )

    Si on veut voir le contenu de SystemStack, on tape au clavier

    SystemStack .Zl

    N1: #Application C:\EasyWindows\Logiciel-Bourse\EW-BoursicotC8A41186F4.FTH ok

    Dans Easywindows les données sont emballées dans des conteneurs de toute sorte.
    Ils existe des fonctions qui servent à faire le transport des données d'un endroit à un autre
    et d'autres qui font le traitement des données.

    Exemple:

    Soit Label$ le nom d'une chaine de caractère alors la commande:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    Label$  Buf$  $!                       \ Copie du contenu   de Label$  vers  Buf$

    à pour effet de copier le contenu de Label$ vers le conteneur Buf$

    c'est le mot $! ( Lire DollarStore ) qui réalise la copie.

    La copie est protégée contre les débordements.


    J'ai été fouiller dans mes archives, j'ai retrouvé le cours d'initiation à SwiftForth que donnait un de mes assistants.
    Si tu me fais parvenir une adresse mail, je veux bien te l'envoyer.

    Cordialement
    Ludwig

  4. #24
    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
    Ok.
    mail communiqué par MP

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