C' est quoi ce langage ? - Page 2
Discussion fermée
Page 2 sur 3 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 72

C' est quoi ce langage ?



  1. #31
    Ludwig1

    Re : C' est quoi ce langage ?


    ------

    Code:
    VARIABLE FindFlag
    
    128 STRING$ WORK$
    
    
    
    : EnrMessage01	( n --- adr,len )
    
    	CASE
                     FRENCH  OF S" Dépassemnt de numéro de ligne dans un Enregistrement" 	ENDOF
                     ENGLISH OF S" Overflow of line number of FileBuffer"	  		ENDOF
                     GERMAN  OF S" Keine Zeile mit diesem Nummer in dem FileBuffer"		ENDOF 
    	ENDCASE
    ;
    
    
    : EnrMessage02	( n --- adr,len )
    
    	CASE
                     FRENCH  OF S" Taille fichier trop grande pour être chargé dans un Enregistrement" 	ENDOF
                     ENGLISH OF S" Can not load the file, Size owerflow of the FileBuffer."	  		ENDOF
                     GERMAN  OF S" Kan Dateie nich laden, FileBuffer zu kleine"				ENDOF 
    	ENDCASE
    ;
    
    
    : EnrMessage03	( n --- adr,len )
    
    	CASE
                     FRENCH  OF S" Transfert imposible, Buffer destination, Taille insufisante" 	ENDOF
                     ENGLISH OF S" Can not move the Buffer, Destination Buffer have Size owerflow "	ENDOF
                     GERMAN  OF S" Kan die Daten nicht ubergeben, Endbuffer zu kleine"		ENDOF 
    	ENDCASE
    ;
    
    
    VARIABLE Ehandle
    
    
    : CRLF	<CRLF> 1+ W@ ; 	( --- CRLF ) \ Retourne 0A0D
    
    
    HEX
    
    : ASCIIBUFFER       ( <nom> taille --- adr0 ) \ Creation entete de l'enregistrement
    
    	
    	CREATE  					\ On cré la structure, on initialise le début de la liste, 
            Here 24 + >R
    	0 , 			( here )		\ Compile un position de réserve	
            1 , 			( here + 4 )		\ Compile le Num
            R@ ,			( here + 8 )		\ Compile l'adresse de début de la première ligne 
            R@ ,			( here + 12 )	        \ On compile l'adresse 0 de début de liste
    	R@ 2 + ,		( here + 16 )		\ On compile la première adresse libre dans la liste
     	DUP , 			( here + 20 )		\ On compile la taille max
    	2 ,			( here + 24 ) 		\ On compile la taille courante 
    	1 ,			( here + 28 )		\ On compile le compteur d'éléments
    	0 C,			( here + 29 )
    	0 C,			( here + 30 )
    	0D C,			( here + 31 )		\ On compile une butée basse pour la recherche aléatoire dans
    	0A C,			( here + 32 )		\ le buffer
    	0D R@    C!					\ On initialise le buffer avec une ligne vide
    	0A R@ 1+ C!					\ 
    	
    	DUP ALLOT					\ On réserve la zone mémoire
    
    	R>  CELL + SWAP  CELL - BLANK						
    	DOES>   24 +			        	\ Décallage d'adresse sur le début de la liste
    		
    ;
    
    IMMEDIATE
    
    
    DEFER ENREGISTREMENT$  ' ASCIIBUFFER IS ENREGISTREMENT$
    
    
    DECIMAL
    
    
    
    { =============================== POUR MEMOIRE, ON UTILISE LA MEME STRUCTURE QUE POUR UNE ZLISTE ===========================
    
    
    
    =========================================================================================================================== } 
    
    
    
    
    
    
    
    : BufLast@	8CELL -  2@ ;	( adrr0 --- adrx0,n ) \ Retourne l'adresse de début et le num de la dernière ligne accédée 
    : BufLast!	8CELL -  2! ;	( adrx0,n,adr0 --- ) \ Met à jour l'adresse de début et le num de la dernière ligne accédée 
    
    
    
    
    
    
    
    
    
    
    : +DECAL     		( adrx --- adr+nx0 ) \ Décallage avant du pointeur d'adresse de lignes dans un enregistrement.
    
            1-
            BEGIN
    	   	1+ DUP  W@
               	CRLF =                  
    	UNTIL
       	2+
    ;
    
    
    : -DECAL                ( adrx --- adr-nx0 ) \ Décallage arrière du pointeur d'adresse de lignes dans un enregistrement
    
            2-
            BEGIN
               	1- DUP  W@
               	CRLF =                  
    	UNTIL
             
    ;
    
    
    : BufferAccesTest		( Zadr0,n --- Zadr0,n ) \ Teste l'accès à la liste
    
    	
    	OVER 					( zadr0,n --- zadr0,n,zadr0 )
    	Zcounter @ 				( zadr0,n,zadr0 --- zadr0,n,x )
            OVER 					( zadr0,n,x --- zadr0,n,x,n )
            <					( zadr0,n,x,n --- zadr0,n,flag )
    	OVER 1 < OR			 
            WABORT( EnrMessage01 )			( zadr0,n,flag --- zadr0,n )
    
    ;
    
    
    : GetBline		( Eadr0,n --- Eadr0,Enradrx ) \ Retourne l'adresse de début d'une chaine numéro n dans la liste.
    			\ L'accès est sécurisé. En fait cette fonction déplace le pointeur de liste sur l'adresse
    			\ de début d'une chaine n.
    
    
    	BufferAccesTest		( Eadr0,n --- Eadr0,n ) 
    	>R DUP BufLast@		( Eadr0,n --- Eadr0,Ladrx,nx )
    	R> 	2DUP		( Eadr0,Ladrx,nx --- Eadr0,Ladrx,nx,n )
    	>			( Eadr0,Ladrx,nx,n --- Eadr0,Ladrx,nx,n,flag ) \ test sens de déplacement
    	IF			( nx > n = déplacement arrière .... )
    				( Eadr0,Ladrx,nx,n, --- ... )
                    ?DO
    				( Eadr0,Ladrx --- ... )
    
    			2DUP 2+ >=
    			IF LEAVE THEN	\ On quitte si butée basse 
    			-DECAL
    
    		LOOP
    	        2+
    	ELSE
    		SWAP
    		?DO
    			+DECAL
    		LOOP
    	THEN
    	
    	
    ; 
    
    
    
    
    
    
    
    
    { =========================================================================================================================
    
    }
    
    
    : LFCOUNT ( addr0 --- addr0,n ) \ A partir d'une adresse de début de ligne, retourne la longueur de celle-ci
    
    	DUP DUP 
    	IF  	65535 13 
    		SCAN DROP OVER - 
    	THEN 
    ;
    
    : BUFPLACE 	( from n to -- ) \ Déplace une chaine Ascii de adr1, vers adr2 et place les caractères de contrôle 0A0D en
    		\ fin de chaine.	
    
       	
       	TUCK OVER + >R  CMOVE  
    	CRLF R> W!
        
    
    ;
    
    
    : INSERT%LINE		( adr,len,Ehandle,n ---  ) \ Insert une ligne n dans l'enregistrement spécifié par Ehandle
                    	\ Met à jour l'entête de l'enregistrement.	
    
    
    	>R R@			\ Sauvegarde du numéro de la ligne accédée
    	
    	GetBline		( adr,len,Zadr0,n --- adr,len,Zadr0,Zadrx )
    	DUP >R			\ Sauvegarde de l'adresse de début de cette ligne
    	
    	OVER 			( adr,len,Zadr0,Zadrx --- adr,len,Zadr0,Zadrx,Zadr0 )
            5CELL - @		( adr,len,Zadr0,Zadrx,Zadr0 --- adr,len,Zadr0,Zadrx,Zadrfree )
    	2DUP SWAP - 		( adr,len,Zadr0,Zadrx,Zadrfree,--- adr,len,Zadr0,Zadrx,Zadrfree,Zadrx, )
            			( adr,len,Zadr0,Zadrx,Zadrfree,Zadrx,Zadrfree --- adr,len,Zadr0,Zadrx,Zadrfree,decalx )
    	
    	OVER			( adr,len,Zadr0,Zadrx,Zadrfree,decalx --- adr,len,Zadr0,Zadrx,Zadrfree,decalx,Zadrfree )
      	5 PICK
    	+ 2+			( adr,len,Zadr0,Zadrx,Zadrfree,decalx,Zadrfree --- ????  len )
    	SWAP 			( adr,len,Zadr0,Zadrx,Zadrfree-1,decalx,free+nx --- adr,len,Zadr0,Zadrx,Zadrfree-1,free+nx,decalx )
    	+MOVE			( adr,len,Zadr0,Zadrx,Zadrfree-1,free+nx,decalx --- adr,len,Zadr0,Zadrx )
    	
    
    	SWAP			( adr,len,Zadr0,Zadrx --- adr,len,Zadrx,Zadr0 )
            >R 			( adr,len,Zadrx,Zadr0 --- adr,len,Zadrx )
    	OVER >R 		( adr,len,Zadrx, --- adr,Zadrx,len )
    	
    	BUFPLACE		( adr,len,Zadrx, --- )
    
    	R>			( --- len )
    	R@ Zcounter 1+! 2+ 	( len --- len+2 )
            R@ Ztaille +!		( len+2 --- )
    	R@ Ztaille @ 		( --- Taille )
    	R@ + R@ FreeZadr !	( taille --- )
    	R> 			( --- Ladr0 )
    	R> 			( Ladr0 --- Ladr0,Ladrx )
    	SWAP			( Ladr0,Ladrx --- Ladrx,Ladr0 ) 
    	R> 			( Ladrx,Ladr0, --- Ladrx,Ladr0,n )
    	SWAP			( Ladrx,Ladr0,n --- Ladrx,n,Ladr0 )
    	BufLast!
    	
    ;
    
    
    : APPEND%LINE      	( adr,len,Ehandle ---  ) \ Ajoute une ligne à la suite d'un enregistrement pointé par EHANDLE.
    
    
    	DUP Zcounter @
    	INSERT%LINE
    
    ;
    
    : COPY%LINE 		( Ehandle,n --- adr,len, ) \ Retourne l'adresse et la longueur de la ligne n de l'enregistrement 
    			\ dont le handle est spécifé par Ehandle.
    
    
    	
    	2DUP 2>R
    	GetBline NIP
    	LFCOUNT 2DUP
    	Zstring$ $!
    	Over 2R>		( adrx,lenx --- adrx,lenx,adrx,Ehandle,n )
    	SWAP 			( adrx,lenx,adrx,Ehandle,n --- adrx,lenx,adrx,n,Ehandle )
    	BufLast!		( adrx,lenx,adrx,n,Ehandle --- adrx,lenx, )
    
    ;
    
    
    
    : DELETE%LINE		( Zadr0,n --- adr,len, ) \ Supprime une chaine dans un Enregistrement, retourne la chaine supprimée.
    
    	DUP >R
    	OVER SWAP GetBline LFCOUNT	\ On met la ligne sur la pile       --- Zadr0,Zadrlx,lenx  				
       	
    	2dup Zstring$ $! 2+ >R 		\ On Sauve la ligne dans Ztring$ taille ligne sur R  --- Zadr0,Zadrx, )
    	
    					\ Calcul adresse début du bloc à déplacer
    
    	DUP R@ 	+  			\ Dupplique Zadrx ajoute lenx +1 	--- Zadr0,Zadrx,Zadrdeb )
    
    					\ Calcul de la taille du bloc à déplacer
    
    
    	2 PICK FreeZadr @  OVER -	\ Prend Zadr0, Cherche freeZadr - 1 soustrait Zadrdeb --- Zadr0,Zadrx,Zadrdeb,lenbx )
    	-MOVE				\ Transfert 
    
    					\ Reorganisation de la liste
    	R> 				( Zadr0 --- Zadr0,len+1 )
            SWAP				( Zadr0,len+1 --- len+1,Zadr0 )
    	>R				( len+1,Zadr0 --- len+1 )
    	R@ Zcounter 1-!  
            -1 * R@ Ztaille +!
    	R@ Ztaille @ 
    	R@  SWAP + R@ FreeZadr !
    	R@ Zmaxtaille@ R@ Ztaille @ -
    	R> FreeZadr @  SWAP  BLANK
    	R>
    	2DUP GETBLINE  
    	NIP swap  2 ROLL  
    	BufLast!  
    	Zstring$ 
    
    ;
    
    
    : REPLACE%LINE    	( adr,len,Ehandle,n --- adr,len, ) \ Place la ligne adr,len, à la position n dans l'enregistrement 
    			\ spécifié par EHANDLE. 
    			\ L'ancienne ligne dans l'enregistrement est écrasée. La ligne écrasée est pointée par adr,len.
    			
    	2DUP DELETE%LINE 2DROP
    	INSERT%LINE Zstring$
    
    ;
    
    
    
    : INIT%BUF      ( Ehandle, ---  ) \ Efface le contenu de l'enregistrement spécifié par Ehandle, initialise tout
    		\ les pointeurs liés à l'enregistrement.
    		\ 
    
    	
    	>R 1 R@ Zcounter ! 		\ Initialise le compteur de ligne à 1 
            2 R@ Ztaille !			\ Initialise la taille de l'enregistrement à 2 
    	R@ 2+ R@ FreeZadr !		\ Initialise la première adresse libre dans l'enregistrement
    	R@ 1 R@ BUFLAST!		\ Initialise le pointeur de la dernière ligne accédée
    	R@ R@ Zmaxtaille@ BLANK		\ Efface le contenu de l'enregistrement actuel
    	13 R@    C!			\ On compile <CRLF> pour construire une butée basse pour -DECAL
    	10 R> 1+ C!	  
    
    ;
    
    
    
    : FILE>BUF      ( Filename,Ehandle ---  ) \ Chargement de l'enregistrement spécifié par EHANDLE à partir
                    \ d'une mémoire de masse, ( disque dur, disquette, réseau etc... )
                    \ Filename est le chemin\nom du fichier source.
                    \ Cette fonction initialise complétement l'enregistrement pour les traitements a venir.
    	
    
    
    
    \ ==============  On lit la taille du fichier disque et on teste s'il peut se loger dans l'Enregistrement ============
    \ ==============  si oui, on installe le fichier.
    
    	DUP INIT%BUF
    	Ehandle ! R/O OPEN-FILE THROW >R 			( c-addr u fam --- )
    	R@ FILE-SIZE THROW D>S DUP
    	Ehandle @ Zmaxtaille@ >	WABORT( EnrMessage02 )		
    	Ehandle @ SWAP R@ 
    	READ-FILE 						( c-addr u1 fileid --- u2 ior )
    	THROW Ehandle @ Ztaille !
    	R> CLOSE-FILE THROW
    	Ehandle @ >R R@  Ztaille @  
    	( Ehandle ) R@  +  1+ ( Ehandle ) R@  
    	FreeZadr  ! 
    
    	
    
    	
    
    
    
    \ ==============  On initialise les pointeurs de l'enregistrement selon le fichier chargé ============================
    
    	
    	PAD OFF
    	EHandle @
    	BEGIN
    	     	PAD 1+!
    	     	LFCOUNT 
    		+ 2+ DUP
    		Ehandle @ 
    		FreeZadr @  >=
    	UNTIL
    	DROP PAD @  Ehandle @
    	Zcounter !
    	
    
    	13 R@ Ztaille @ R@ + C!			\ Ajoute une fermeture de ligne LFCR en fin d'enregistrement
    	10 R@ Ztaille @ R@ + 1+ C!
    	2 R@ FREEZADR +!
    	2 R> Ztaille +!  
    
    
    	
    ;
    
    
    
    
    : BUF!      	( Ehandle1 to Ehandle2 ---  ) \ Copie un enregistrement Ehandle1 vers un enregistrement Ehandle2.
    		\ Le contenu précédent de l'enregistrement destination est écrasé.
    
    	
    	OVER Ztaille @ OVER Zmaxtaille@ > 	( Ehandle1,Ehandle2, --- Ehandle1,Ehandle2,flag )
    	WABORT( EnrMessage03 )			( Ehandle1,Ehandle2,flag --- Ehandle1,Ehandle2, )
    	DUP INIT%BUF				( Ehandle1,Ehandle2, ---  Ehandle1,Ehandle2, )
    	OVER DUP Ztaille @ 2 PICK SWAP MOVE	( Ehandle1,Ehandle2, ---  Ehandle1,Ehandle2, )
    	OVER Ztaille @ OVER Ztaille !
    	OVER FreeZadr @ OVER FreeZadr !
    	OVER Zcounter @ OVER Zcounter !
    	2DROP
    
    ;
    	
    
    
    
    
    
    : BUF>FILE     	( Ehandle,Filename ---  ) \ Transfert de l'enregistrement spécifié par EHANDLE vers la mémoire de masse.
    		\ ( disque dur, disquette, réseau etc... )
    		
    
    
    
    	WORK$ ERASE$ WORK$ $!
    	EHANDLE !
    	WORK$ R/W CREATE-FILE 0<> ABORT" Erreur Fichier"
    	>R EHANDLE @ DUP Ztaille @ R@ WRITE-FILE THROW
    	R>  CLOSE-FILE THROW
    
    ;
    	
    
    
    
    : FINDFIRSTWORD		( adr,len,Ehandle --- Zstring$,n ) \ Cherche un mot dans un Texte buffer, retourne n, numéro de la
    			\ ligne ou le mot est trouvé. Zstring$ contient la ligne pour exploitation s'il y a lieu.
    			\ Si le mot est trouvé n est différent de zéro si non n = 0
    			\ Le mot FINDFIRSTWORD initialise le pointeur BufLast sur la première ligne. On pourra se servir
    			\ de buflast pour procéder à une recherche séquentielle dans le buffer de texte. Voir le mot
    			\ FINDNEXTWORD
    
    
    	FindFlag OFF
    	EHANDLE !
    	WORK$ $!
    	EHANDLE @ Zcounter @ 1
    	?DO
    		EHANDLE @ I  COPY%LINE 		( Ehandle,n --- adr,len, )
    	 	WORK$ SEARCH(NC) NIP NIP
    		IF
     		  	I FindFlag !
    			LEAVE
    		THEN
    		
    		
    	LOOP
    	Zstring$ 
    	FindFlag @ 
    ;
    
    
    
    
    : FINDNEXTWORD		( adr,len,Ehandle --- Zstring$,n ) \ Cherche un mot dans un texte buffer. La recherche commence
    			\ à partir de la position suivante pointée par BUFLAST@. Si le mot recherché est trouvé, alors
    			\ n est le numéro de la ligne contenant ce mot. Zstring$ contient cette ligne pour un traitement 
    			\ éventuel.
    
    	FindFlag OFF
    	EHANDLE !
    	WORK$ $!
    	EHANDLE @ Zcounter @ 
    	EHANDLE @ BufLast@ NIP
    	?DO
    		EHANDLE @ I  COPY%LINE 		( Ehandle,n --- adr,len, )
    	 	WORK$ SEARCH(NC)
    		IF
     		  	I FindFlag !
    			LEAVE
    		THEN
    	LOOP
    	Zstring$ 
    	FindFlag @ 
    
    
    ;
    
    
    
     : TYPE%BUF       ( Ehandle --- ) \ Affiche le contenu d' un enregistrement
    
       DUP Zcounter @
        0
       ?DO
        
    	LFCOUNT 2DUP CR TYPE
    	+ 2+   
        LOOP
        DROP
    ;
    
    
    
    
    
    
    
    
    \\

    -----
    Dernière modification par JPL ; 11/08/2015 à 10h18. Motif: Ajout de la balise Code (#)

  2. #32
    pm42

    Re : C' est quoi ce langage ?

    Citation Envoyé par Ludwig1 Voir le message
    Une fois la première couche faite tu passe à la seconde ou tu rassemble les fonctions et mots Sous jascent dans des mots plus élaborés, puis tu passes à la couche suivante etc.. pour à la fin avoir un seul mot qui va lancer toute l'éxécution. Evidement tu fera des copier coller pour mettre tous ton travail dans un fichier que tu pourras réutiliser ou intégrer ailleurs etc... ca c?est classique.

    Je sais que ça perturbe quand on n'a pas l'habitude, mais une fois qu'on à pris le plis, on refuse de faire autrement.
    Ca ne perturbe pas, c'est comme ça dans tous les langages et les environnements modernes mais en 10 fois plus puissant...
    Et en largement plus lisible, plus maintenable, etc

    Petit exemple de code totalement illisible, non maintenable, non portable et j'en passe, cité en exemple pourtant...
    A titre indicatif, les 0D 0A sont exactement ce qu'il ne faut jamais faire : c'est la norme DOS, pas Unix ni OSX ni tout autre OS... Et on suppose que le charset est ASCII bien sur.
    Qui plus est, ils sont doublés ce qui veut dire de la programmation où le code est redondant au lieu d'être factorisé.

    Les (here+24), (here +28) sont également un grand moment : le programmeur doit connaitre la taille des types de données élémentaires et les coder en dur. Bien sur, un Int fait 4 octets, pas 2, pas 8...
    Là aussi, aucune portabilité et de l'assembleur déguisé.

    Si un de mes stagiaires ou élève ingénieur écrit du code comme ça, je lui demande de corriger. Si c'est un ingénieur, je me demande pourquoi je l'ai embauché.


    Citation Envoyé par Ludwig1 Voir le message
    CREATE \ On cré la structure, on initialise le début de la liste,
    Here 24 + >R
    0 , ( here ) \ Compile un position de réserve
    1 , ( here + 4 ) \ Compile le Num
    R@ , ( here + 8 ) \ Compile l'adresse de début de la première ligne
    R@ , ( here + 12 ) \ On compile l'adresse 0 de début de liste
    R@ 2 + , ( here + 16 ) \ On compile la première adresse libre dans la liste
    DUP , ( here + 20 ) \ On compile la taille max
    2 , ( here + 24 ) \ On compile la taille courante
    1 , ( here + 28 ) \ On compile le compteur d'éléments
    0 C, ( here + 29 )
    0 C, ( here + 30 )
    0D C, ( here + 31 ) \ On compile une butée basse pour la recherche aléatoire dans
    0A C, ( here + 32 ) \ le buffer
    0D R@ C! \ On initialise le buffer avec une ligne vide
    0A R@ 1+ C! \

  3. #33
    pelkin

    Re : C' est quoi ce langage ?

    C'est quoi cette tartine ??? Si c'est un crible d'Eratosthène (qui se programmerait en C en 10 fois moins de lignes) ou une calculatrice, moi je suis le pape.

    Arrêtez de nous fourrer des schémas à la c.. sans signification et copié-collé de n'importe où. Soit vous nous fournissez un programme demandé soit vous arrêtez vos rodomontades (faudrait quand même arrêtez de croire que 99,99 % des informaticiens sont des abrutis et que vous avez découvert le Graal)
    Dernière modification par pelkin ; 10/08/2015 à 22h21.

  4. #34
    Ludwig1

    Re : C' est quoi ce langage ?

    oui ben t'as surtout pas compris coment ça fonctionne,
    l'utilisateur lui va écrire


    125000 ASCIIBUFFER TEXTE1 c'est tout, le reste c'est pas lui la gestion du buffer est automatique.

    création d'un Buffer de nom texte1 et de Taille 125000 caractères

    pour accéder à une ligne il va écrire

    TEXTE1 25 copy%line

    tu devrais t'informer sur les finesses de la structure

    CREATE -------------- DOES> ------------ ;

    t'as pas remarqué que c'est des outils ?

    Cordialement

    Ludwig

  5. #35
    Ludwig1

    Re : C' est quoi ce langage ?

    ben ce sont des primitives qui permettent de charger un fichier disque en mémoire, de faire de la recherche de mots dans une ligne de texte, de changer un mot dans une ligne, d'enlever ou de rajouter un mot etc... en somme les primitives clasiques pour faire un traitement de texte.

    Y a pas de Programme
    Edition compilation debug Edition compilation debug y a pas désolé


    Cordialement


    Ludwig

  6. #36
    pelkin

    Re : C' est quoi ce langage ?

    Et toujours blablabla, et soeur Anne ne vois toujours rien venir (si vous saviez ce que je m'en tape de votre buffer de 125000 caractères).

    Bon, j'arrête ici, la "plaisanterie" a assez duré. Dommage, c'est toujours triste les génies incompris.

  7. #37
    pm42

    Re : C' est quoi ce langage ?

    Depuis le début, c'est comme ça : il répond systématiquement à coté et ensuite, il explique que c'est les autres qui n'ont pas compris.

    Sans parler des "primitives" qui font 10 fois moins que ce qu'on écrit en quelques lignes de shell Unix depuis plus de 30 ans, ou en 1 ligne de Perl par exemple.

    De toute manière, vu comment il code (voir mon post plus haut), il est évident que son niveau est effroyablement bas...

  8. #38
    Ludwig1

    Re : C' est quoi ce langage ?

    Citation Envoyé par pm42 Voir le message
    Depuis le début, c'est comme ça : il répond systématiquement à coté et ensuite, il explique que c'est les autres qui n'ont pas compris.

    Sans parler des "primitives" qui font 10 fois moins que ce qu'on écrit en quelques lignes de shell Unix depuis plus de 30 ans, ou en 1 ligne de Perl par exemple.

    De toute manière, vu comment il code (voir mon post plus haut), il est évident que son niveau est effroyablement bas...
    Salut,

    Puisque c'est toi qui sait tout,
    Montre moi donc comment tu fais pour Compiler une extention de Programme à ton application pendant qu'elle tourne, quand t'auras fini tu montres ?


    Cordialement
    Dernière modification par Ludwig1 ; 11/08/2015 à 07h52.

  9. #39
    Bluedeep

    Re : C' est quoi ce langage ?

    Citation Envoyé par pelkin Voir le message
    Et toujours blablabla, et soeur Anne ne vois toujours rien venir (si vous saviez ce que je m'en tape de votre buffer de 125000 caractères)..
    Je te trouve bien patient; on a ici un gus qui a fait de l'IR à une époque reculée (époque où il ne devait déjà pas casser 4 pattes à un canard), qui ne comprend manifestement rien aux évolutions de ces vingt dernières années, et qui nous ressasse des nanards en se prenant pour un génie. Bref, pour ma part j'ai décidé de ne pas perdre mon temps avec.

  10. #40
    Bluedeep

    Re : C' est quoi ce langage ?

    Citation Envoyé par Ludwig1 Voir le message
    Salut,

    Puisque c'est toi qui sait tout,
    Montre moi donc comment tu fais pour Compiler une extention de Programme à ton application pendant qu'elle tourne, quand t'auras fini tu montres ?
    Vous êtes de plus en plus ridicule. En effet, cela ne présente absolument aucun intérêt pratique (une application tourne sur un environnement de recette, pre-prod ou prod et on compile sur un environnement de développement ou une chaine de CI). Il y a un monde entre l'IT pro et vos bricolages de garage mais vous semblez ne pas vous en rendre compte. On peut avoir besoin néanmoins de mettre en service des composants sur une application en production (des plug-in), mais toutes les technos modernes ( .NET, Java VM, etc ...) sont équipées pour ce genre de cas via des patterns adaptés (en gros, factory et chargement dynamique) et en aucun cas il n'est nécessaire de compiler sur la plateforme de production.

  11. #41
    f6bes

    Re : C' est quoi ce langage ?

    Bjr Ludwig 1,
    Lorsque ça COMMENCE par ce genre de phrase :
    "...Je souhaite te faire remarquer..." j'ai la nette impression (mais ce n'est QUE MON impression) que l'on glisse
    dans du "Moi, monsieur (pris de haut)..."
    Bref que ça va pas tarder à tourner au vinaigre...chose faite !

    Moi je pose la question :quelle est la NECESSITE de vouloir lançer un débat sur TA façon de programmer.

    En ce qui me concerne je ne viendraits pas faire les louanges du...BASIC. ( c'est tout ce que je connais et Sam Suffy )
    A chacun de manger SA soupe comme il l'entend.
    Bonne journée

  12. #42
    pm42

    Re : C' est quoi ce langage ?

    Citation Envoyé par Bluedeep Voir le message
    Vous êtes de plus en plus ridicule. En effet, cela ne présente absolument aucun intérêt pratique (une application tourne sur un environnement de recette, pre-prod ou prod et on compile sur un environnement de développement ou une chaine de CI). Il y a un monde entre l'IT pro et vos bricolages de garage mais vous semblez ne pas vous en rendre compte. On peut avoir besoin néanmoins de mettre en service des composants sur une application en production (des plug-in), mais toutes les technos modernes ( .NET, Java VM, etc ...) sont équipées pour ce genre de cas via des patterns adaptés (en gros, factory et chargement dynamique) et en aucun cas il n'est nécessaire de compiler sur la plateforme de production.
    Merci. J'allais le dire.
    Au demeurant, il se trouve que j'utilise cette technologie dans une application professionnelle via la JVM et ce de plusieurs façons. Par exemple, nous compilons à la volée des classes 'accesseurs' et les chargeons pour gagner en performance par rapport à la réflexivité Java. Dans ce cas, nous gênerons directement le bytecode. Idem pour ajouter des attributs ou des contraintes métier dynamiquement.
    De plus, nous utilisons le compilateur Scala pour compiler là aussi à la volée des formules, lesquelles disposent donc de toute la puissance de la programmation fonctionnelle (lazy évaluation, monades). Et bien sur, nous avons couplé l'éditeur de formules avec la complétion automatique, le contrôle syntaxique à la volée et même l'inference de type.

    C'est d'ailleurs un ingénieur débutant qui m'a code cette partie ce qui prouve encore plus si besoin était que notre ami vit dans le passé.
    Il y a déjà plus de 20 ans, certains Lisp compilaient en générant du C, invoquant cc puis en chargeant la DLL générée.

    On est dans tous ces cas là à des années lumières de Forth.

  13. #43
    Bluedeep

    Re : C' est quoi ce langage ?

    Citation Envoyé par pm42 Voir le message
    Merci. J'allais le dire.
    Au demeurant, il se trouve que j'utilise cette technologie dans une application professionnelle via la JVM et ce de plusieurs façons. Par exemple, nous compilons à la volée des classes 'accesseurs' et les chargeons pour gagner en performance par rapport à la réflexivité Java. .
    Oui, c'est une technique que nous utilisons aussi sur les environnement .NET, soit par injection d'IL (équivalent plus ou moins au bytecode java) soit via le CodeDom (là on peut même générer la source à partir d'un modèle document de la classe) pour justement éviter l'utilisation de la Reflection.
    Mais bon, comme tu dis, on est à des années lumières du forth.

  14. #44
    pelkin

    Re : C' est quoi ce langage ?

    Citation Envoyé par Bluedeep Voir le message
    Je te trouve bien patient
    Meuh non, j'essaie juste de ne pas être grossier !

  15. #45
    pelkin

    Re : C' est quoi ce langage ?

    Citation Envoyé par pm42 Voir le message
    Il y a déjà plus de 20 ans, certains Lisp compilaient en générant du C, invoquant cc puis en chargeant la DLL générée.

    On est dans tous ces cas là à des années lumières de Forth.
    Exact, il en allait de même pour Prolog (Alain Colmerauer et Philippe Roussel, Mulhouse ... mais cela date, j'ai rencontré Alain en 1986 pour la mise au point du système informatique d'une banque de Béthune).

    Eh bé, cela ne nous rajeunit pas (à l'époque, sous système Prologue (type Unix) et ordinateur Forum, 100% français (je suis belge), très avant-gardiste mais cela n'a hélas pas perduré)
    Dernière modification par pelkin ; 11/08/2015 à 15h06.

  16. #46
    pm42

    Re : C' est quoi ce langage ?

    Comme tu dis... J'ai aussi fait du Prolog version Colmerauer mais sur Apple II... Ce devait être vers 1985-1986 aussi.
    La dernière fois que j'ai voulu en refaire (pour préparer un cours je crois), j'ai pris le Gnu.

    A l'époque, il y avait déjà une machine virtuelle sur l'Apple (entre autres) avec interprèteur, compilateur, assembleur, éditeur et j'en passe : le P-UCSD surtout connu pour le Pascal mais qui faisait aussi tourner le Fortran, Modula II...
    Ce qui prouve que notre ami a vraiment 30 à 40 ans de retard au moins.

  17. #47
    Ludwig1

    Re : C' est quoi ce langage ?

    Citation Envoyé par pm42 Voir le message
    Comme tu dis... J'ai aussi fait du Prolog version Colmerauer mais sur Apple II... Ce devait être vers 1985-1986 aussi.
    La dernière fois que j'ai voulu en refaire (pour préparer un cours je crois), j'ai pris le Gnu.

    A l'époque, il y avait déjà une machine virtuelle sur l'Apple (entre autres) avec interprèteur, compilateur, assembleur, éditeur et j'en passe : le P-UCSD surtout connu pour le Pascal mais qui faisait aussi tourner le Fortran, Modula II...
    Ce qui prouve que notre ami a vraiment 30 à 40 ans de retard au moins.

    Salut,

    mais non au moins 50 ans de Retard,

    au fait la dernière SwiftForth i386-Win32 3.5.7 22-Jan-2015

    ici

    http://www.forth.com/swiftforth/eval-special.html

    cordialement

    Ludwig

  18. #48
    Jack
    Modérateur

    Re : C' est quoi ce langage ?

    Ah oui, prolog, la mode des systèmes experts à qui ont promettait un avenir radieux dans les années 80 ... Comme le forth.

  19. #49
    pelkin

    Re : C' est quoi ce langage ?

    Citation Envoyé par Ludwig1 Voir le message
    mais non au moins 50 ans de Retard,

    au fait la dernière SwiftForth i386-Win32 3.5.7 22-Jan-2015

    Ludwig
    J'utiise rarement les smileys, mais là ...

  20. #50
    pelkin

    Re : C' est quoi ce langage ?

    Citation Envoyé par Jack Voir le message
    Ah oui, prolog, la mode des systèmes experts à qui ont promettait un avenir radieux dans les années 80 ... Comme le forth.
    Exact Jack, tout à fait exact. Le monstrueux flop de l'IA des années 80 (Lisp et Prolog sont des langages d'IA). Jusqu'à ce que quelqu'un s'avise que l'on pouvait faire la même chose avec GwBasic au prix de quelques lignes de plus (et avec quelques maux de têtes en moins). J'y ai (hélas) participé avec l'UCL dans le cadre du développement de l'OCR (Iris)
    Dernière modification par pelkin ; 11/08/2015 à 17h52.

  21. #51
    pm42

    Re : C' est quoi ce langage ?

    Citation Envoyé par Jack Voir le message
    Ah oui, prolog, la mode des systèmes experts à qui ont promettait un avenir radieux dans les années 80 ... Comme le forth.
    J'ai effectivement le souvenir d'étudiants en DEA à Orsay à qui on expliquait que les systèmes experts faisaient tout et qui étaient persuadés qu'on ferait de bons programmes d'échecs avec des prédicats du 1er ordre...

    Ceci dit, l'IA a bien rebondit depuis sa "période glaciaire" et Prolog même s'il n'a pas été un immense succès a inspiré des systèmes de règles bien pratiques aujourd'hui (JRules, Drools...)

  22. #52
    Ludwig1

    Re : C' est quoi ce langage ?

    Salut,

    le plus marant c'est que ça se Termine toujours par un listing en mémoire, et ce malgré toutes les révolutions progrès et tuti quanti.

    004026E0: 7B FB FF FF 20 00 00 00 00 00 00 00 00 18 00 02 {... ...........
    004026F0: 00 4F FA FF FF FF 00 06 57 49 4E 4D 53 47 00 E8 .O......WINMSG..
    00402700: 5B FB FF FF 24 00 00 00 00 00 00 00 00 00 00 00 [...$...........
    00402710: 19 00 02 00 2F FD FF FF FF 00 03 27 57 46 00 E8 ..../......'WF..
    00402720: 3B FB FF FF 44 00 00 00 00 00 00 00 00 1A 00 02 ;...D...........
    00402730: 00 00 00 00 00 FF 00 06 57 50 41 52 4D 53 00 E8 ........WPARMS..
    00402740: 1B FB FF FF 48 00 00 00 00 00 00 00 00 00 00 1C ....H...........
    00402750: 00 02 00 00 00 00 00 FF 00 04 48 4C 49 4D 00 E8 ..........HLIM..
    00402760: FB FA FF FF 58 00 00 00 00 00 00 00 00 00 00 00 ....X...........
    00402770: 00 00 1D 00 02 00 00 00 00 00 FF 00 01 48 00 E8 .............H..
    00402780: DB FA FF FF 5C 00 00 00 00 00 00 00 00 00 1E 00 ....\...........
    00402790: 02 00 92 FD FF FF FF 00 05 46 45 4E 43 45 00 E8 .........FENCE..
    004027A0: BB FA FF FF 60 00 00 00 00 00 00 00 00 1F 00 02 ....`...........
    004027B0: 00 00 00 00 00 FF 00 06 27 45 4D 50 54 59 00 E8 ........'EMPTY..
    004027C0: 9B FA FF FF 64 00 00 00 00 00 00 00 00 00 00 20 ....d..........
    004027D0: 00 02 00 00 00 00 00 FF 00 04 23 54 49 42 00 E8 ..........#TIB..

    mais vous allez certainement soutenir que maintenant c'est plus comme ça, que la structure de Von Neuman c'est du passé etc.. puisqu'elle date des années 40 du siècle passé.
    Finalement je dois avouer que je me marre bien avec vous tous.

    cordialement

    Ludwig

  23. #53
    Ludwig1

    Re : C' est quoi ce langage ?

    J'avais oublié

    see winmsg


    4026FF 40225F ( (USER) ) CALL E85BFBFFFF
    402704 24 ok



    cordialement

    Ludwig

  24. #54
    Jack
    Modérateur

    Re : C' est quoi ce langage ?

    Pourquoi parles-tu d'architecture du processeur? Un même langage peut être implémenté sur diverses architectures.
    Et comme M. Jourdain qui faisait de la prose sans le savoir, des programmeur C par exemple ont développé des programmes sur une archi Von neumann, Harvard ou autres.

    En tout cas, avec des appli "classiques", qui se soucie de l'architecture de son processeur?

  25. #55
    Arzhur

    Re : C' est quoi ce langage ?

    En tout cas, avec des appli "classiques", qui se soucie de l'architecture de son processeur?
    Qu'est -ce que tu entends par classique ?


    En Java / Python, c'est à peine si je me soucie de l'OS...alors du processeur, j'en parle même pas.

  26. #56
    pm42

    Re : C' est quoi ce langage ?

    Je suppose qu'il parle de l'immense partie des applications qui sont en langage de haut niveau,ont une interface, lisent des fichiers ou des bases, font du Web, etc. Si tu écris un device driver ou du soft pour un microcontrolleur, tu peux avoir à faire attention au big-endian/little-endian par exemple.
    Dernière modification par pm42 ; 11/08/2015 à 19h34.

  27. #57
    Arzhur

    Re : C' est quoi ce langage ?

    Si tu écris un device driver ou du soft pour un microcontrolleur, tu peux avoir à faire attention au big-endian/little-endian par exemple.
    Okay mais a part ça ?

    Je précise ma question : en regardant les gros serveur mainframe IBM ( les system z par exemple) je vois qu'il y a plusieurs "type" de processeurs. Je me demandais si du coup ça changeait quelque chose pour le développeur "de base" ou si c'est une optimisation complètement transparente.
    (note : ça n'a peut-être rien à voir avec l'architecture, j'y connais pas grand chose en processeur)

  28. #58
    Ludwig1

    Re : C' est quoi ce langage ?

    Citation Envoyé par Jack Voir le message
    Pourquoi parles-tu d'architecture du processeur? Un même langage peut être implémenté sur diverses architectures.
    Et comme M. Jourdain qui faisait de la prose sans le savoir, des programmeur C par exemple ont développé des programmes sur une archi Von neumann, Harvard ou autres.

    En tout cas, avec des appli "classiques", qui se soucie de l'architecture de son processeur?
    Salut, je parle de l'architecture des xxx 86 d'intel le code est implanté selon la structure de Von Neuman sauf erreur de ma part.

    comme ça

    SEE CALL


    4024EF EBX EAX MOV 8BC3
    4024F1 0 [EBP] EBX MOV 8B5D00
    4024F4 4 # EBP ADD 83C504
    4024F7 EAX CALL FFD0
    4024F9 RET C3



    SEE (USER)

    Adr Language Machine Code Hex Corresepondant

    40225F EAX POP 58
    402260 4 # EBP SUB 83ED04
    402263 EBX 0 [EBP] MOV 895D00
    402266 ESI EBX MOV 8BDE
    402268 0 [EAX] EBX ADD 0318
    40226A RET C3


    Ceci est parfaitement indépendant du type de language, si tu veux que ça tourne sur

    XXX 86 le compilateur doit cracher ça. En fait il crache le codage HEX
    Selon le type de compilateur utilisé ce codage est plus ou moins bon (temps d'exécution)


    cordialement

    Ludwig

  29. #59
    Jack
    Modérateur

    Re : C' est quoi ce langage ?

    Citation Envoyé par Arzhur Voir le message
    Qu'est -ce que tu entends par classique ?


    En Java / Python, c'est à peine si je me soucie de l'OS...alors du processeur, j'en parle même pas.
    Je parlais par exemple du parallélisme qui implique des structures matérielles particulières et une méthode programmation adaptée.

  30. #60
    Arzhur

    Re : C' est quoi ce langage ?

    Je parlais par exemple du parallélisme qui implique des structures matérielles particulières et une méthode programmation adaptée.
    Tu me confirmes que j'ai bien compris (j'ai un peu de mal): une appli "pas classique" c'est une appli qui utilise du parallélisme, "au niveau" du processeur ?
    Dernière modification par Arzhur ; 11/08/2015 à 20h34.

Page 2 sur 3 PremièrePremière 2 DernièreDernière

Discussions similaires

  1. Differences entre le langage C et le langage Arduino
    Par Batpillou dans le forum Électronique
    Réponses: 7
    Dernier message: 19/03/2015, 22h44
  2. le langage C est t il un langage qui a de l'avenir ?
    Par vince6629 dans le forum Programmation et langages, Algorithmique
    Réponses: 13
    Dernier message: 12/11/2014, 13h01
  3. Réponses: 6
    Dernier message: 03/02/2013, 20h32
  4. de langage C en langage assembleur
    Par invite284746c1 dans le forum Électronique
    Réponses: 1
    Dernier message: 14/05/2009, 13h42