Re: F-Script 2.0

Philippe Mougin <[email protected]> Thu, 14 Jan 2010 13:15:45 +0100
Newsgroups gmane.comp.lang.smalltalk.squeak.french
Message-ID <[email protected]>
Salut Noury,

Pour la d=E9finition des classes, j'ai pens=E9 =E0 la syntaxe =
d'Objective-C, qui aurait pour avantage tr=E8s int=E9ressant la =
familiarit=E9 des d=E9veloppeur avec cette syntaxe. Deux raisons m'ont =
conduit =E0 l'=E9carter:

- La syntaxe d'Ojective-C est sous optimale dans un contexte comme =
F-Script car elle requiert de d=E9clarer l'interface de la classe =
s=E9par=E9ment de l'impl=E9mentation (la raison en est le support pour =
la compilation s=E9par=E9e =E0 la mode C). Dans le contexte de F-Script =
cela perd son sens et alourdirai significativement la d=E9finition de =
classe. Dans le cas d'une syntaxe inspir=E9 d'Objective-C mais simplifi=E9=
 (comme dans ton exemple), j'ai consid=E9r=E9 que le b=E9n=E9fice de la =
familiarit=E9 se r=E9duisait fortement voire qu'une certaine confusion =
pouvait avoir lieu, et qu'il =E9tait plus clair d'avoir une syntaxe =
repens=E9e from scratch. =20

- Le parsing serai largement complexifi=E9 car dans F-Script le symbol @ =
est utilis=E9 pour d=E9noter les messaging pattern. Il faudrait pas mal =
de look ahead ou bien ne pas consid=E9rer la d=E9finition de classe =
comme une expression (pouvant apparaitre n'importe ou dans le code et =
pas seulement en tant qu'instruction), ce qui ne serait pas une =
limitation ennuyeuse en pratique mais nuirait =E0 la r=E9gularit=E9 du =
langage. =20

En ce qui concerne la suppression d'un niveau d'accolade, il ne me =
semble pas que cela soit gagnant puisqu'on remplace les accolades par =
"@class" et "@end".

Philippe

Le 14 janv. 2010 =E0 10:05, Bouraqadi Noury a =E9crit :

>=20
> Salut Philippe,
>=20
> J'imagine que tu as pens=E9 =E0 la solution d'objective-c avec des @. =
Cela enl=E8ve un niveau d'accolades suppl=E9mentaires. Pourquoi tu l'as =
=E9cart=E9e ?
> Cela donnerait pour la classe Point qq chose du genre
>=20
>=20
> @class Point
> - newDistanceFrom:aPoint
> {
>   ...
> }
>=20
> + newDistanceFrom:aPoint
> {
>   ...
> }
> @end
> On 13 janv. 10, at 12:20, Philippe Mougin wrote:
>>=20
>> Pour l'extension de classe dans F-Script, l'approche maintenant =
pressentie est celle d'une syntaxe sp=E9cifique. Par exemple, voici le =
code pour ajouter une m=E9thode "print" =E0 la classe NSObject (la =
classe racine sur Mac OS X):
>>=20
>> NSObject
>> {
>> - print
>> {
>>   stdout print:self printString
>> }
>> }
>>=20
>>=20
>> Et pour reprendre ton exemple:
>>=20
>> Point
>> {
>> - newDistanceFrom:aPoint
>> {
>>   ...
>> }
>>=20
>> + newDistanceFrom:aPoint
>> {
>>   ...
>> }
>> }