Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: j'apprends php 1

0 views
Skip to first unread message

Mihamina Rakotomandimby

unread,
Nov 16, 2009, 4:02:05 AM11/16/09
to
11/11/2009 01:26 AM, Bruno Desthuilliers:
>> Si je puis me permettre de répondre, en admettant que PHP soit ce
>> genre de langage, au lieu d'utiliser la fonction "in_array()" [...]
>> <?php
>> // On crée un objet de type "Array", d'où l'opérateur "new".
>> $tableau = new Array("tata", "momo", "lili");
>> // On teste l'existence d'un élément dans le tableau.
>> $test = $tableau->in_array("riri"); // donne FALSE dans l'ex.
>> ?>
>
> Ou, pour aborder les choses à un plus haut niveau, on pourrait envisager
> un operateur 'in' qui fonctionne sur tout objet implémentant l'interface
> approprié, ce qui permettrait de ne pas se soucier du type exact de la
> "collection" utilisée (tableau ou autre). De même, on pourrait envisager
> une implémentation de foreach() qui permette d'itérer sur tout objet
> implémentant l'interface adéquate - idem, on gagne beaucoup en généricité.
>
> Un des objectifs de l'OO est de découpler l'interface de
> l'implémentation. D'une part pour faciliter la maintenance
> (encapsulation), et d'autre part pour accroitre la généricité
> (polymorphisme).


Hum...

- Typage faible?
- Polymorphisme?

Si on pouvait en discuter de maniere générale sur le bon groupe, je suis partant.
Je propose et applique un suivi sur fr.comp.lang.general

En effet, ce dont parle Bruno, là, releve-t-il de la notion de typage faible ou bien
du polymorphisme?

Pouvoir itérer indiférement sur:
- une chaine de caractère
- un tuple
- une liste
- un tableau
- ...

Ceci avec la meme fonction (puisqu'il parle de meme interface)?
Tout s'embrouille dans mon esprit...

--
Administration système
Recherche & Développement
GulfSat/Blueline, Madagascar
Tel: +261 33 11 207 36

Bruno Desthuilliers

unread,
Nov 16, 2009, 5:29:20 AM11/16/09
to
Mihamina Rakotomandimby a écrit :

> 11/11/2009 01:26 AM, Bruno Desthuilliers:
>>> Si je puis me permettre de répondre, en admettant que PHP soit ce
>>> genre de langage, au lieu d'utiliser la fonction "in_array()" [...]
>>> <?php
>>> // On crée un objet de type "Array", d'où l'opérateur "new".
>>> $tableau = new Array("tata", "momo", "lili");
>>> // On teste l'existence d'un élément dans le tableau.
>>> $test = $tableau->in_array("riri"); // donne FALSE dans l'ex.
>>> ?>
>>
>> Ou, pour aborder les choses à un plus haut niveau, on pourrait envisager
>> un operateur 'in' qui fonctionne sur tout objet implémentant l'interface
>> approprié, ce qui permettrait de ne pas se soucier du type exact de la
>> "collection" utilisée (tableau ou autre). De même, on pourrait envisager
>> une implémentation de foreach() qui permette d'itérer sur tout objet
>> implémentant l'interface adéquate - idem, on gagne beaucoup en
>> généricité.
>>
>> Un des objectifs de l'OO est de découpler l'interface de
>> l'implémentation. D'une part pour faciliter la maintenance
>> (encapsulation), et d'autre part pour accroitre la généricité
>> (polymorphisme).
>
>
> Hum...
>
> - Typage faible?

Quel est le rapport ???

> - Polymorphisme?
>
> Si on pouvait en discuter de maniere générale sur le bon groupe, je suis
> partant.
> Je propose et applique un suivi sur fr.comp.lang.general

J'aurais choisi f.c.objet, mais bon...

> En effet, ce dont parle Bruno, là, releve-t-il de la notion de typage
> faible ou bien
> du polymorphisme?

Du polymorphisme, sans hésitation. Je ne vois même pas ce que la "force"
du typage vient faire là dedans ??? (à moins que tu ne confonde avec
typage statique vs dynamique, mais même là, c'est othogonal au problème
qui nous intéresse).

> Pouvoir itérer indiférement sur:
> - une chaine de caractère
> - un tuple
> - une liste
> - un tableau

> - ...
>
> Ceci avec la meme fonction (puisqu'il parle de meme interface)?

le fait qu'il s'agisse d'une même interface n'implique pas qu'on utilise
une fonction - et d'ailleurs, en PHP, foreach n'est pas une fonction,
c'est une structure de contrôle.

> Tout s'embrouille dans mon esprit...

Tu a pourtant fait assez de Python pour reconnaître ce pattern, non ? La
boucle 'for' de Python fonctionne exactement comme ça.

Mihamina Rakotomandimby

unread,
Nov 16, 2009, 6:45:50 AM11/16/09
to
11/16/2009 01:29 PM, Bruno Desthuilliers::

> moins que tu ne confonde avec typage statique vs dynamique, mais même
> là, c'est othogonal au problème qui nous intéresse)

Ah ben oui, j'ai confondu.
Et oui, c'est orthogonal.

Répondu sans reflechir... le lundi matin, tout ça...

Marc Espie

unread,
Nov 16, 2009, 12:36:11 PM11/16/09
to
In article <4b01297f$0$12788$426a...@news.free.fr>,

Bruno Desthuilliers <bruno.42.de...@websiteburo.invalid> wrote:
>Du polymorphisme, sans hésitation. Je ne vois même pas ce que la "force"
>du typage vient faire là dedans ??? (à moins que tu ne confonde avec
>typage statique vs dynamique, mais même là, c'est othogonal au problème
>qui nous intéresse).

C'est un vrai probleme. Je partirais plutot du "duck typing", concept
de langage dynamique (if it quacks like a duck, then it's a duck), avec
ses applications cote polymorphisme, par exemple les template du C++, qui
marchent tres bien en pratique. Seul souci: on perd toute notion de typage,
puisqu'il suffit d'avoir la bonne interface, independamment de toute
eventuelle hierarchie de classes. Et c'est pas evident a modeliser, ni a
typer correctement si on ne veut pas faire de dynamique (la-encore, confere
les "concepts" du brouillon de la future norme C++, qui finalement, je crois,
ne vont pas etre incorpores en C++0x).

0 new messages