Ventury Networks’ Blog

“If it walks like a duck and quacks like a duck, I would call it a duck.”

Créer un objet à partir d’une chaine de caractère


La syntaxe de Smalltalk définit un bloc de la manière suivante :

bc := [ :a | a traitements. a.].

Ici, le bloc est paramétré. Lors de l’execution du bloc, le message “traitements” est envoyé au paramêtre. Le bloc renvoie la dernière valeur évalué. Ici, il s’agit explicitement de a.

Pour évaluer le bloc, je peux faire :

monObjet := MonObjet new.
bc value: monObjet.

Très bien. Admettons maintenant que je dispose de la chaine de caractère suivante :

' [ :a | a traitements. a.]‘

Je souhaite en faire un bloc comme précédemment (en quelque sorte, compiler le code). Et bien, il suffit pour cela d’appeler la méthode readFromString: de Object :

bc := Object readFromString: '[ :a | a traitements. a.]‘.
monObjet := MonObjet new.
bc value: monObjet.

Et voilà. Je vous invite à essayer la même chose avec les lignes suivantes (faites un “inspect” dessus pour voir ce que cela donne) :

Object readFromString: '34'.
Object readFromString: 'coucou'.
Object readFromString: '''coucou'''.
Object readFromString: 'a := String new.'.
Object readFromString: 'a := ''coucou''. b:= 5. '.

Note : dans une chaine de caractères, le caractère spécial ‘ (guillemet simple, ou “simple quote”), est échappé par son doublage. Ainsi, au sein d’une chaine de caractères entourées par des guillemets simples, ”  ( ‘ suivi de ‘, et non “) représente un guillemet simple (et non la terminaison de la chaine).

Tags :

Bonne fêtes aux …


Bonne fête aux Valentin, Valentines, aux amoureux et amoureuses !

Bonne fête à tous, quoi ;)


Just the two of us - Groover Washington Jr

Tags :

Créer un fichier avec VisualWorks Smalltalk


On souhaite créer un fichier, et y écrire du contenu. Le code suivant permet de créer le NOUVEAU fichier “test.txt” et d’y écrire un mot :

| file |
file := 'test.txt' asFilename.
file exists ifFalse:
	[ | ws |
	ws := file writeStream.
	ws nextPutAll: 'coucou'.
	ws close.]

Pour lire le contenu, on peut faire :

| file contenu |
file := 'test.txt' asFilename.
file exists ifTrue: [ | rs |
	rs := file readStream.
	contenu := rs contents.
	rs close.].
^contenu
Tags :

Le Turing Award est français !


Le Turing Award 2007 a été décerné à Joseph Sifakis, directeur de recherche au laboratoire Verimag du CNRS à Grenoble. Ce prix récompense ses travaux sur le Model Checking. C’est la première fois qu’un français reçoit cette distinction.

apple2.jpgAlan Turing fut, pendant la seconde guerre mondiale, l’un de ceux ayant décrypté la machine de codage Enigma, permettant ainsi aux alliés d’obtenir un avantage stratégique capital. Condamné par la justice britanique pour “indécence manifeste et de perversion sexuelle” (il était homosexuel), il est condamné à la castration chimique. Déprimé, écarté de tout projets, sa carrière brisée, il se suicide deux ans plus tard en croquant une pomme empoisonée avec du cyanure. Le logo d’apple serait un hommage à cet homme et à son tragique destin.

Le Turing Award est le plus prestigieux prix en informatique, considéré souvent comme le prix Nobel des informaticiens. Le Turing Award 2003 a quand à lui été attribué à Alan Kay pour ses travaux sur les langages de programmation objets (Il a participé à la création du langage Smalltalk).

Joseph Sifakis partage son prix avec des américains (Edmund Clarke et Allen Emerson) qui ont travaillé sur les mêmes sujets à la même époque (mais indépendament).

Alan Turing

Tags :

Projet MNT - 5


vue 3D colorée Trielen

Un petit peu moins découpé à la serpe que les le précédent, non ?

Tags :

“New York, New York..”



New York, New York - Frank Sinatra

Start spreading the news, Im leaving today
I want to be a part of it - new york, new york
These vagabond shoes, are longing to stray
Right through the very heart of it - new york, new york

I wanna wake up in a city, that doesnt sleep
And find Im king of the hill - top of the heap

These little town blues, are melting away
Ill make a brand new start of it - in old new york
If I can make it there, Ill make it anywhere
Its up to you - new york, new york

New york, new york
I want to wake up in a city, that never sleeps
And find Im a number one top of the list, king of the hill
A number one

These little town blues, are melting away
Im gonna make a brand new start of it - in old new york
And if I can make it there, Im gonna make it anywhere

It up to you - new york new york

New york

Tags :

Smalltalk et les blocs multi-paramétrés


La problématique est la suivante : comment passer trois paramètres à un bloc, provenant d’une collection (Array, OrderedCollection, ou tout autre …).

monTab := #(1 2 'add').
monBloc := [:op1 :op2 :op3 | duCode. ^unResultat].

Je veux executer monBloc avec le contenu de monTab comme paramètres. L’utilisation de do: n’est ici pas appropriée : do: est un message compris par une collection, pas par un bloc. Et pourtant, la réponse est dans cette réponse : un bloc est un objet, comme tout en smalltalk. Il existe donc un message permettant de donner un paramètre à un bloc. Ce message est value: :

monBloc := [:op1 :op2 :op3 | duCode. ^unResultat].
monBloc value: 1 value: 2 value: 'add'.

Pour obtenir les éléments de monTab, je propose l’utilisation d’un ReadStream. Cependant, un acces direct aux éléments est aussi possible. Voici les deux solutions :

monTab := #(1 2 'add').
monBloc := [:op1 :op2 :op3 | duCode. ^unResultat].
" Accès direct aux éléments "
monBloc value: (monTab first) value: (monTab at: 2) value: (monTab last).
" Une seconde solution : "
monStream := monTab readStream.
monBloc value: monStream next value: monStream next value: monStream next.

Et voilà !

Tags :

Projet MNT - 4


Vue 3D colorée Trielen

 

 Le grain est ici de l’ordre du metre. Le plus compliqué va être de constituer une palette élégante.

Tags :

Projet MNT - 3


Vue 3D Filaire Trielen

Tags :