Un langage à pile très intéressant

20 views
Skip to first unread message

alain

unread,
Jul 31, 2010, 3:57:49 AM7/31/10
to forth-...@googlegroups.com
Bonjour,

J'ai commenc� � d�couvrir un langage � pile tr�s puissant et tr�s
int�ressant.
Il s'appelle factor.
J'ai t�l�charg� la derni�re version en version binaire tgz.
Cela donne un gros fichier.
D�compression -> cr�ation d'un dossier factor, en cliquant sur l'ic�ne
"factor" contenu dans ce dossier, on lance "le truc" et on obtient un
environnement interactif qui ressemble, fonctionnellement au mode
interpr�t� de forth.
Exemples :
1.
( scratchpad ) 12 36 56 + * .
1104
Pour ce qui est de la division, le langage est assez subtil.
Si je veux diviser (en mode "interpr�t� � la forth") deux entiers...
2.
( scratchpad ) 123 5 / .
24+3/5
Autrement dit 135 divis� par 5 donne 24 et 3/5

Mais comment faire pour avoir une r�ponse d�cimale ?
Il semble qu'il suffit que le dividende soit d�cimal.
3.
Exemples calcul de Pi � partir du rapport 23 / 7 :
( scratchpad ) 23 7 / .
3+2/7

( scratchpad ) 23.0 7 / .
3.285714285714286
Ici, le dividende est d�cimal : 23.0 et le r�sultat l'est aussi.

En premi�re approche, le programme comprend deux fen�tres principales :
1. le listener qui correspond au mode interpr�t� de Forth
2. le browser qui permet d'acc�der � des ressources sur le langage.

En premi�re conclusion :
- grosse chose (le dossier install� fait 152 Mo, quand m�me), loin de la
compacit� d'un forth ou d'un basic d'autrefois.
- mode interpr�t� permettant d'exp�rimenter en particulier en lisant le
browser
- adaptation intelligente aux types num�riques, m�me non d�clar�s
explicitement.


A+
Alain


frederic

unread,
Aug 1, 2010, 5:53:35 AM8/1/10
to forth-...@googlegroups.com

Bonjour,

Factor est sans doute le langage "ᅵ pile" le plus connu en dehors des
sphᅵres de Forth.

Dans l'esprit, il est plus un langage concatᅵnatif qu'un Forth: typage
dynamique, gestion auto de la mᅵmoire (GC). Cela en fait l'incarnation
parfaite de l'idᅵe de "Lisp inversᅵ" que se font habituellement ᅵ tort les
dilettantes de Forth (cf. PLT Scheme - maintenant nommᅵ Racket - par
exemple).

Mais bon, on a le droit de s'amuser diffᅵremment ;-).

Dans le mᅵme ordre d'idᅵes il y a le langage "Thyrd" qui reprend Forth et
l'adapte ᅵ la programmation visuelle et rᅵactive
(http://thyrd.org/thyrd/). Je ne l'ai a vrai dire pas essayᅵ, mais il
semble avoir fait sa petite impression lors de la confᅵrence sur les
langages ᅵmergents qui s'est tenue derniᅵrement.

Bernard alain

unread,
Aug 1, 2010, 4:32:16 AM8/1/10
to forth-...@googlegroups.com
Le samedi 31 juillet 2010 à 09:57 +0200, alain a écrit :
> Bonjour,
>
> J'ai commencé à découvrir un langage à pile très puissant et très
> intéressant.
> Il s'appelle factor.
> J'ai téléchargé la dernière version en version binaire tgz.

> Cela donne un gros fichier.
> Décompression -> création d'un dossier factor, en cliquant sur l'icône
> "factor" contenu dans ce dossier, on lance "le truc" et on obtient un
> environnement interactif qui ressemble, fonctionnellement au mode
> interprété de forth.

> Exemples :
> 1.
> ( scratchpad ) 12 36 56 + * .
> 1104
> Pour ce qui est de la division, le langage est assez subtil.
> Si je veux diviser (en mode "interprété à la forth") deux entiers...

> 2.
> ( scratchpad ) 123 5 / .
> 24+3/5
> Autrement dit 135 divisé par 5 donne 24 et 3/5
>
> Mais comment faire pour avoir une réponse décimale ?
> Il semble qu'il suffit que le dividende soit décimal.
> 3.
> Exemples calcul de Pi à partir du rapport 23 / 7 :

> ( scratchpad ) 23 7 / .
> 3+2/7
>
> ( scratchpad ) 23.0 7 / .
> 3.285714285714286
> Ici, le dividende est décimal : 23.0 et le résultat l'est aussi.
>
> En première approche, le programme comprend deux fenêtres principales :
> 1. le listener qui correspond au mode interprété de Forth
> 2. le browser qui permet d'accéder à des ressources sur le langage.
>
> En première conclusion :
> - grosse chose (le dossier installé fait 152 Mo, quand même), loin de la
> compacité d'un forth ou d'un basic d'autrefois.
> - mode interprété permettant d'expérimenter en particulier en lisant le
> browser
> - adaptation intelligente aux types numériques, même non déclarés
> explicitement.
>
>
> A+
> Alain
>
Je ne sais pas comment j'ai reçu ce message, mais j'ai cherché des infos
et ça me parait intéressant. L'idée des combinators pour alléger les
mouvements de pile et rendre plus lisible le programme est quelque chose
de fort et un progrès sensible par rapport au Forth.
Je vais creuser.
Donc merci et à suivre.

Alain


alain

unread,
Aug 1, 2010, 4:40:09 AM8/1/10
to forth-...@googlegroups.com
Bonjour,

> Je ne sais pas comment j'ai re�u ce message, mais j'ai cherch� des infos
> et �a me parait int�ressant. L'id�e des combinators pour all�ger les


> mouvements de pile et rendre plus lisible le programme est quelque chose

> de fort et un progr�s sensible par rapport au Forth.
> Je vais creuser.
> Donc merci et � suivre.

Tant mieux.
Et � suivre... :-)

Alain


alain

unread,
Aug 2, 2010, 10:47:28 AM8/2/10
to forth-...@googlegroups.com
Bonjour,

Content d'avoir de tes nouvelles...

> Factor est sans doute le langage "� pile" le plus connu en dehors des
> sph�res de Forth.
>
> Dans l'esprit, il est plus un langage concat�natif qu'un Forth: typage
> dynamique, gestion auto de la m�moire (GC). Cela en fait l'incarnation
> parfaite de l'id�e de "Lisp invers�" que se font habituellement � tort
> les dilettantes de Forth (cf. PLT Scheme - maintenant nomm� Racket - par
> exemple).
>
> Mais bon, on a le droit de s'amuser diff�remment ;-).

Je sens un peu d'acidit� dans ce commentaire :-)
Est-ce li� au fait que Factor install� "p�se" 150 Mo ?

> Dans le m�me ordre d'id�es il y a le langage "Thyrd" qui reprend Forth
> et l'adapte � la programmation visuelle et r�active
> (http://thyrd.org/thyrd/). Je ne l'ai a vrai dire pas essay�, mais il
> semble avoir fait sa petite impression lors de la conf�rence sur les
> langages �mergents qui s'est tenue derni�rement.

La pr�sentation - graphique - est assez d�routante.
En fait son auteur est dans l'air du temps : il r�alise ses outils de
communication en m�me temps qu'il fait progresser son id�e de langage.
Ce qui n'est pas idiot : c'est un moyen d'avoir un bon impact sur le
public de passage.

Ceci �tant, une des forces de Factor r�side dans sa documentation.
Tr�s �tonnant...
Il y a aussi le fait d'avoir d�velopp� un vocabulaire XML : je connais
quelqu'un qui y vient � cause de cela.
Bien aussi : le mode interpr�t� � la Forth, qui permet d'exp�rimenter
sans avoir � compiler "lourdement".
La logique objet m'agace, mais il est difficile d'y �chapper.
Je vais essayer quelques temps, au moins pour deux raisons :
- le copain avec qui je vais pouvoir �changer
- la documentation (� l'usage, que vaudra-telle ?)
Et puis aussi � cause du mode interpr�t�.

Et toi, tu continues dans quelle voie ?

A+
Alain

frederic

unread,
Aug 3, 2010, 1:32:51 PM8/3/10
to forth-...@googlegroups.com

> Je sens un peu d'aciditᅵ dans ce commentaire :-)
> Est-ce liᅵ au fait que Factor installᅵ "pᅵse" 150 Mo ?
>

:-) C'est vraiment curieux, je voulais pourtant pas l'ᅵtre. Pour moi,
Factor
est un peu l'union des contraires: d'un cᅵtᅵ Forth, un langage
ultra-simple pour
une implᅵmentation ultra-lᅵgᅵre, et de l'autre... Une gestion de mᅵmoire
automatique,
un typage dynamique en coulisses, un compilateur super-optimiseur, etc.

C'est une chimᅵre pour le moins ᅵtrange.

> Et toi, tu continues dans quelle voie ?
>

Je travaille toujours sur mon nouveau langage, Lama, dont j'ai donnᅵ un
aperᅵu presque fidᅵle dans mon mail prᅵcᅵdent, et qui est pour ainsi dire
ᅵ l'opposᅵ de Forth: gestion mᅵmoire automatique, types forts, etc. Ce
langage doit permettre de jouer le rᅵle de mortier pour faciliter
l'assemblage de librairies ᅵcrites en C. Sous 4IM, j'avais fait ce genre
de liaisons avec de grosses librairies C, notamment le moteur graphique 3D
"Irrlicht".

Ces librairies sont assez simples ᅵ utiliser quand on connait C ou Forth;
si bien que le langage est en fait le principal obstacle pour que
(presque) tout un chacun puisse les assembler et les combiner. Pour des
programmeurs non-professionnels ou des "bidouilleurs" (sans ᅵtre
pᅵjoratif), C ou Forth (ou d'autres langages comme Python ou Lua) sont de
sᅵrieux obstacles. Avec Lama, j'essaie de faire un langage simple comme
Basic, mais en plus rigoureux (avec cette idᅵe qu'imposer un peu de
rigueur aidera ᅵ dᅵvelopper les ᅵchanges entre utilisateurs).

Le projet est pas mal avancᅵ; les exemples dans mon autre mail
fonctionnent rᅵellement. Mais il faut encore que j'ᅵlimine les nombreux
bugs qui trainent dans les coins, que je dᅵveloppe les librairies, et que
je documente sᅵrieusement le tout (trᅵs important!).

alain

unread,
Aug 3, 2010, 2:15:39 PM8/3/10
to forth-...@googlegroups.com
Bonjour,

> ... et
> que je documente s�rieusement le tout (tr�s important!).

Et tellement lourd !
Et par ailleurs in�vitable.

A+
Alain


Bernard alain

unread,
Aug 4, 2010, 6:01:03 AM8/4/10
to forth-...@googlegroups.com
Le mardi 03 août 2010 à 20:15 +0200, alain a écrit :
> Bonjour,
>
> > ... et
> > que je documente sérieusement le tout (très important!).
>
> Et tellement lourd !
> Et par ailleurs inévitable.
>
> A+
> Alain
>
>

Pour la doc., j'ai vu un truc intéressant dans Eiffel:
Un outil extrait du fichier source les signatures et les commentaires
ainsi que d'autres bricoles définissant les conditions d'utilisations
des définitions et qui sont aussi utilisées par le débogueur et le
compilateur (notion de contrat).
Bref on documente au fur et à mesure de l'écriture des définitions. Cela
permet de rester en phase plus facilement entre la doc et le source.

Alain

frederic

unread,
Aug 5, 2010, 5:06:08 AM8/5/10
to forth-...@googlegroups.com, Bernard alain
On Wed, 04 Aug 2010 12:01:03 +0200, Bernard alain <berna...@wanadoo.fr>
wrote:

> Le mardi 03 aoᅵt 2010 ᅵ 20:15 +0200, alain a ᅵcrit :
>> Bonjour,
>>
>> > ... et
>> > que je documente sᅵrieusement le tout (trᅵs important!).
>>
>> Et tellement lourd !
>> Et par ailleurs inᅵvitable.
>>
>> A+
>> Alain
>>
>>
>
> Pour la doc., j'ai vu un truc intᅵressant dans Eiffel:


> Un outil extrait du fichier source les signatures et les commentaires

> ainsi que d'autres bricoles dᅵfinissant les conditions d'utilisations
> des dᅵfinitions et qui sont aussi utilisᅵes par le dᅵbogueur et le
> compilateur (notion de contrat).
> Bref on documente au fur et ᅵ mesure de l'ᅵcriture des dᅵfinitions. Cela


> permet de rester en phase plus facilement entre la doc et le source.
>

Effectivement. Dans "The mythical man-month" publiᅵ en 1986, Brooks
arrivait dᅵjᅵ ᅵ la conclusion que l'intᅵgration de la documentation au
code, plutᅵt que la maintenance d'une documentation sᅵparᅵe, est l'option
la plus raisonnable. C'est assez ᅵtonnant de constater que dans un livre
publiᅵ il y a vingt ans, oᅵ on parle constamment de cartes perforᅵes, de
sauvegardes sur rubans, etc., en un mot pour un livre publiᅵ au moyen-ᅵge
de l'informatique, l'auteur fait des observations et tire des conclusions
qui restent trᅵs actuelles. C'est sans doute pour cela que c'est un
classique de la littᅵrature informatique.

Brooks distingue trois types de documentation selon les diffᅵrentes
audiences visᅵes; l'une d'entre-elles, celle destinᅵe ᅵ la maintenance
(donc pour les programmeurs), prend la forme de commentaires dans le
source, exactement pour les raisons invoquᅵes.
Aujourd'hui, il existe des outils permettant d'extraire ces commentaires
pour former une documentation sᅵparᅵe. "Doxygene" est sans doute le plus
connu pour C/C++ et d'autres languages; certains languages ont leur propre
outil.

Certains poussent le "vice" encore plus loin: Scribble est un language de
documentation pour PLT Scheme (alias Racket):
http://vimeo.com/6630691 [video, en anglais]

En fait, celui qui a poussᅵ cette logique jusqu'au bout est Knuth avec sa
"programmation littᅵraire", qui est restᅵe toutefois assez confidentielle.
L'idᅵe est d'inverser le rapport code/documentation: le programme est
principalement une documentation de laquelle on extrait via un outil
similaire ᅵ Doxygene le code pour le compilateur.

Cela me rappelle qu'il n'y a pas ᅵ chercher bien loin une idᅵe de premier
"vrai" programme pour un nouveau language...

--
Using Opera's e-mail client: http://www.opera.com/mail/

alain

unread,
Aug 5, 2010, 5:48:32 AM8/5/10
to forth-...@googlegroups.com
Bonjour,

> Pour la doc., j'ai vu un truc int�ressant dans Eiffel:

Je suis all� voir un peu Eiffel.
La syntaxe est tout sauf une partie de plaisir (en premi�re approche).
A l'usage, cela se confirme ?
Est bugg� ?

A+
Alain


Bernard alain

unread,
Aug 6, 2010, 5:35:26 AM8/6/10
to forth-...@googlegroups.com
Le jeudi 05 août 2010 à 11:48 +0200, alain a écrit :
> Bonjour,
>
> > Pour la doc., j'ai vu un truc intéressant dans Eiffel:
>
> Je suis allé voir un peu Eiffel.
> La syntaxe est tout sauf une partie de plaisir (en premičre approche).

> A l'usage, cela se confirme ?
> Est buggé ?
>
> A+
> Alain
>
La syntaxe est particulière notamment sur les boucles et les assertions
ou les débogages mais il y a peu de mots en fait ( 60/70) et leur emploi
est défini de façon précise et sans exception.
Le langage est conçu pour pousser à un style de programmation par
contrat, pour pousser à la réutilisation et est destiné à des projets en
équipes d'ou l'importance d'avoir la doc. à jour.
Son ambition est l'ingéniérie informatique: appli vite conçu, facilement
exploitable, simple à maintenir.
Cela dit, je m'y suis mis rapidement. La difficulté est dans le
foisonnement des classes fournies avec le langage.

Le concepteur bertrand Meyer a développé un IDE (StudioEiffel) qui
facilite l'écriture et l'utilisation des classes et il existe une
version étudiante gratuite ( c'est un monument).
L'IDE pratique une compilation en 2 temps: rapide en bytecode pendant la
conception avec une finalisation par un compilateur C quand un morceau
de l'application est mure. La souplesse est proche du langage
interprété.

Coté bug: L'IDE fonctionne sous Linus Mandriva 2010 avec un "Pick and
Drop" qui ne démarre pas à la souris mais dans le menu contextuel. Il
s'agit peut être de réglage interne de la souris mais je n'ai pas trouvé
de solution.

L'université de Nancy a développé un outil SmartEiffel plus léger, sans
interface graphique, assez agréable à prendre en main que j'ai utilisé
il y a quelques années.
Je n'arrive plus à l'installer sous Linux ou Windows depuis quelques
temps. Il semble que les acteurs de son développement soient moins
actifs.

Alain Bernard


Bernard alain

unread,
Aug 8, 2010, 1:25:40 PM8/8/10
to forth-...@googlegroups.com
Le vendredi 06 août 2010 à 11:35 +0200, Bernard alain a écrit :
> Le jeudi 05 août 2010 à 11:48 +0200, alain a écrit :
> > Bonjour,
> >
> > > Pour la doc., j'ai vu un truc intéressant dans Eiffel:
> >
> > Je suis allé voir un peu Eiffel.
> > La syntaxe est tout sauf une partie de plaisir (en premičre approche).
> > A l'usage, cela se confirme ?
> > Est buggé ?
> >
> > A+
> > Alain
> >
> Coté bug: L'IDE fonctionne sous Linus Mandriva 2010 avec un "Pick and
> Drop" qui ne démarre pas à la souris mais dans le menu contextuel. Il
> s'agit peut être de réglage interne de la souris mais je n'ai pas trouvé
> de solution.
>
J'ai trouvé la solution: le pick and drop fonctionne par double-click du
bouton droit, le simple clic droit ouvre traditionnellement un menu
contextuel.
Le pick and drop permet de sélectionner un élément graphique représenté
par une icone "bubble" à la souris puis de relacher le bouton et
d'amener la souris sur un "hole" icone représentant une action à
paramètrer avec l'élément sélectionné et de finir la connexion par un
clic droit.
L'intérêt est de déplacer la souris sans avoir de bouton enfoncé donc de
façon plus décontractée et surtout avec moins d'erreur que le glisser
classique. Ce serait une fonctionnalité "ISE Eiffel".

alain Bernard


Reply all
Reply to author
Forward
0 new messages