Il m'est apparu que dodo a parfois besoin d'interpréter une valeur de plusieurs façons. Par exemple, une valeur numérique doit pouvoir être interprétée comme une série de bits pour y appliquer des opérations binaires. Cela peut se faire à l'aide de fonctions de conversion.
struct Int32bits is Countable, Indexed, Iterable
{
=>Integ32 toInt
}
def Integ32 = new Integer(size: 32)
{
=>Int32bits toBits
}
Integ32 n = 345
.n = n.toBits << 1 # assigne à n en convertissant avec toInt
Cependant, on peut vouloir interpréter la valeur comme une série d'octets au lieu de bits. Ou bien vouloir encore d'autres interprétations... La définition du type ne peut pas prévoir toutes les permutations.
De plus, la fonction de conversion peut être difficile à écrire en dodo.
Le langage C offre deux alternatives bien connues pour résoudre cela: la coercion de type et l'union. Ce sont deux mécanismes qui sont responsables pour grande partie du caractère dangereux de la programmation C, avec l'utilisation des pointeurs.
Il faut noter que Java a aussi la coercion de type (avec des limites) mais pas les pointeurs. Comme Java est généralement considéré sûr, on pourrait juste le copier.
Mais je n'aime pas me contenter de l'existant ![]()
Vous devez être identifié pour poster un commentaire.
, bredelet Quoi de neuf dans l'univers de dodo?
Malgré les apparences, je ne suis pas resté complètement oisif.
Documentation
Pour une part j'ai commencé à mettre à jour la documentation du langage. Dites-moi ce que vous en pensez!
Dodo - Introduction (anglais)
Implémentation
J'ai aussi fait des tentatives d'implémentation de dodo en d'autres langages. Je reparlerai de la version C une autre fois. Pour le moment, je vous invite à regarder cette adaptation du modèle objet de dodo à Javascript (incomplet):
Vous devez être identifié pour poster un commentaire.
Le jour est venu, dodo a maintenant un interpréteur qui permet d'écrire de petits programmes et les exécuter!
Certes il est limité à un petit nombre d'éléments du langage mais on peut déjà faire des choses intéressantes. Assurez-vous de lire Readme.txt et les exemples. Page du projet:
http://sourceforge.net/projects/dodo
Autres liens:
http://blog.developpez.com/dodo/p7976/langage/dodo/langage-minimal-pour-dodo
http://blog.developpez.com/dodo/p9236/technique/vers-une-premiere-implementation-de-dodo
Vous devez être identifié pour poster un commentaire.
Mr Haskell Curry est un logicien qui a donné son nom à une technique utilisée en programmation fonctionnelle, le currying. Celle-ci a pour origine les travaux de Gottlob Frege et Moses Schönfinkel, ce qui a poussé Christopher Strachey à suggérer le nom de schönfikelisation en tant qu'alternative.
Ne nous attardons pas plus longtemps sur les détails triviaux. Voyons ce que le terme signifie en informatique.
Vous devez être identifié pour poster un commentaire.
Une valeur de vérité (booléen) peut prendre deux valeurs en logique, soit vrai soit faux. En fait la logique s'étend à des ensembles de valeurs plus grand mais on ne s'intéresse qu'à ces deux-là ici.
Dès lors, on peut considérer une valeur de vérité comme un ensemble de taille maximale un.
Vous devez être identifié pour poster un commentaire.
Dans le dernier ticket, j'ai parlé du modèle client-serveur avec passage de message pour la programmation parallèle en dodo.
Cela semble une bonne idée en théorie, mais comment cela marche en pratique?
Vous devez être identifié pour poster un commentaire.
Je me demandais à quoi pourrait ressembler un système de macro avancé pour dodo.
Il se trouve que dodo a déjà deux mécanismes qui pourraient être réutilisés: les intercepteurs d'appel (wrap) et les templates. Voici un exemple de ce que l'on pourrait faire avec s'ils étaient utilisés pour les macros.
Vous devez être identifié pour poster un commentaire.
Bonne année, meilleurs voeux à tous!
Les vacances sont terminées et je compte reprendre la publication du Nid De Dodo. Au programme: la gestion des versions, l'encapsulation des données et probablement une discussion sur le parallélisme.
Ce sont des sujets passionnants alors il faut repasser ici à l'occasion ![]()
Vous devez être identifié pour poster un commentaire.
Dans une fonction qui retourne le type yield, le return n'indique pas la fin de la fonction. En effet la particularité de yield est que l'on peut retourner plusieurs valeurs l'une après l'autre.
Alors que se passe-t-il si l'on met le return à l'intérieur d'un bloc try?
Vous devez être identifié pour poster un commentaire.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 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 |
Copyright © 2000-2012 - www.developpez.com