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
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.
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.
Tant mieux.
Et � suivre... :-)
Alain
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
:-) 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!).
> ... 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
> 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/
> 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
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
alain Bernard