Discussion Utilisateur:Stefp

Un article de Wikipédia, l'encyclopédie libre.

Sommaire

[modifier] Syntaxe abstraite

Je réfléchis depuis plusieurs années au fait qu'utiliser comme représentation de référence des programmes, leur expression dans une syntaxe concrète est un obstacle à l'évolution des programmes et des langages. Mais utiliser la syntaxe abstraite implique de repenser entièrement les environnements de développement.

Connais-tu Mentor (de Gilles Kahn) et le Cornell Synthetizer qui sont des outils de la fin des années 70 pour le premier et du début des années 80 pour le second qui prônaient déjà exactement cela?
On pourrait faire une entrée pour ces concepts.
Pierre de Lyon 28 septembre 2006 à 09:50 (CEST)

Je traduis l'article sur les matroïdes et ne sait pas traduire l'expression "ground set". Note du 13/12/2006 j'ai perdu l'ébauche de l'article matroïde à cause d'un crash disque. Je prèfêre maintenant me consacrer aux articles de la "fermeture transitive" des liens sortants de Perl 6. De plus, je me consacre à la traduction des synopsis de Perl 6, donc mon activité est pour le moment hors wikipédia même si à terme, l'article Perl 6 contiendra des liens vers cette documentation.

J'ai demandé à un collègue qui travaille dans un domaine proche des matroïdes et qui me dit ceci:
  • Je n'ai pas vraiment la bonne traduction, à part "ensemble de base" ou "ensemble" tout court :-) J'ai un peu cherché mais je ne ne sais pas s'il existe un terme technique approprié dans le contexte des matroides.
Si même les spécialistes ne savent pas, il faut improviser! En ce qui me concerne, «ensemble de base» me paraît approprié.
Pierre de Lyon 6 octobre 2006 à 12:33 (CEST)

[modifier] Nested procedures in perl?

Hello!

I'm incapable of writing in French, so please excuse me for using English.

I can't write swedish either.

As I noticed you are "interested in" nested functions and also a user of Perl, maybe you are the right person to inform me whether Perl really does have nested functions? And, if so, does it really have lexical scope (in any number of levels) for functions, variables, etc. nested within other functions, in the way that Algol/Pascal/Ada does? I you know the answer, please help me out, I would really appreciate it!

Best regards /HenkeB (from the English/Swedish WP)

I use the Perl terminology. Routine denotes what WP calls functions. Perl reserves the function name to predefined (WP) functions.
Is there inner function in Perl 5?
Yes and No.
As far as routine names go, no.
As far as variable visibility yes, keeping in mind that variables are reference counted. This leads to strange behavior besides the inner routine topic.
This is a wart. There is a work around though but the dynamic nature of the language adds to the complexity. Routines are first class entities, so one can store routine reference in variables and gets the equivalent of inner functions hiding thru variable scope.
More precisely:
The routine namespace (within the hierarchical module namespace) is flat.
Defining a routine within another results in having the second routine being compiled at the same time as the first, with the second name being in the same namespace as the first.
If the "inner" routine use a lexical variable of the "outer" one, it keeps a internally a reference to it.
Below, an example executed in the debugger. This is not really an inner call because the &two routine is not called from the &one routine and that they belong to the same namespace even if &two appears withing the &one routine source code.
DB<1> sub one { my $var = "toto"; print "one\n"; sub two { print "two $var\n" } }
DB<2> two() # first call of two
two
DB<3> one()
one
DB<4> two() # second call of two
two toto
DB<5>
In the first call of the routine &two, the variable $var has not been initialized. An undefined var prints as a empty string. In the second call the var has the value left by the call of the &one routine so it is printed.
Below is inner call emulation. The inner sub is compiled at compile time but affected to the $two variable at call time.
DB<2> sub one { my $var = "toto"; my $two = sub { print "two $var\n" }; $two->() } one()
two toto
Perl6 will have true inner routines
Thanks for your elaborated answer!
I've had more difficulty than usual trying to grasp Perl as "yet another important language to learn". I suppose perl is simply "too different" to be learned without hands-on experience, at least for people with my background, so I'll probably have to download it for educational purposes.
Perl was a very modest but syncretist language that has grown beyond reason. By keeping compatibility it has accumulated way too many warts. It makes it hard too learn. This does not mean that things unique to Perl like sigils and use of context are bad. Perl 6 keeps the Perl spirit, borrows from modern languages while keeping integrity. There is a lack of tutorial material though. But the English WP Perl 6 entry is getting better by the day even if it still suppose too much knowledge of Perl 5. You should tell the author about that shortcoming. I know about that because I am translating that article in French. To be honest, I must tell I did not do the original translation but I had to go over it because it was litteral and incomplete.
It is a little hard to accept that things may be defined within {}, but still be visible outside, as sub two appears to be!
It is top ugly. I guess it happened by accident, was used and has to be kept for compatibility.
I suppose "affected to the $two variable at call time" is the same as "bound to $two at call time" (by the expression $two->() ?)
sub {...} # is a anonymous routine which value is defined at compile time
my $two = sub {...}; # when executing &one, this value (technically a CODE reference) is bound to $two
$two->(); # call the CODE reference
Aha, I see, $two->() is a call (to a variable address). But what about parameters?
If I understand you correcly, by "inner routine" you mean nested and statically (lexically) scoped routines, as in Algol and its descendants?
I don't know Algol
Its like Pascal, Modula2, Ada, and most other Algol derived languages (except the C family) in that respect.
In that case, I believe Perl should not be on the list of "well known languages supporting nested functions" as the "nested function" article clearly defines a "nested function" as a function with its scope limited by an enclosing function, etc.
I suppose you mean the scope of the enclosed function name is limited by the enclosing function.
Yes.
It is not true of Perl.
The trick I expose is to bind the function value of a variable. So we got some kind of encapsulation thru the name of the variable even if the name of the should-be-inner function "leaks".
Where is the leak? Isn't my $two a true local (non leaking) variable pointing (refering) to an anonymous function (with no name to leak)?
Also, to qualify as a nested function in the traditional sense (and in the article), $two = sub {...} should certainly be able to see $var (as it does) but, equally important, a variable (or constant, type, or function) defined within $two = sub {...} should be invisible to sub one, and to all other routines except the ones that may be defined within sub {...}). This is the main purpose of nested routines.
Instead, Perl6 should be put on the list when it is available and stable. Do you agree?
I think this functionnality is already available and stable.
I will write (or find) the example but I agree there is no hurry.
I'm going to change "Perl" to "Perl6 (under development)" in the mentioned list, hope you don't mind.
To be honest, I suspect that not even Perl6 has nested routines in the sense of the article, but what the heck ;)
Thanks again /HenkeB
You are welcome.
BTW I don't think that C support inner functions. I don't know C99 though.
True, neither has -- please read my remark on that topic on the discussion page for nested (inner) functions in french (which I suppose you translated).
BTW, I hope "fonction englobante" does not mean "global function" as this would be a mistake: The nesting should be possible to any depth (i.e. nested routines may have their own nested routines (which in turn should be able to contain their own routines (which also could have their own routines...))).
Stefp 5 octobre 2006 à 06:12 (CEST)
Nice talking to you! /HenkeB

[modifier] Analyse automatique de vos créations (V1)

Des articles à venir corrigerons l'état d'orphelin. Les articles orphelins sont accessibles via la catégorie à laquelle ils appartiennent.


[modifier] Analyse du 15 octobre 2006



[modifier] Encyclopédier en apprenant ?

Attention, vous dites apprendre des sujets en traduisant des articles qui en parlent, et cela me semble un brin dangereux. Il est déjà critiquable de parler en détail, dans une encyclopédie, d'un sujet qu'on ne maîtrise pas vraiment, mais traduire est un travail encore plus délicat... Ne vaut-il mieux pas se contenter de sujets que l'on connait bien ? (N.B.: je pense corriger votre article Fermeture, qui me semble être erroné)

Comment savez vous que cette article est en dehors de mon domaine de compétence? Remplacer sans se logger un article existant par une ébauche non catégorisée sans lien interwiki ne constitue pas pour moi un progrès. L'article originel en anglais ayant progressé, j'ai l'intention de le (re)traduire pour remplacer cette ébauche. Plus généralement, certaines de mes traductions ont été reprises de manière constructive. Connaissant ainsi mes erreurs, je peux les éviter dorénavant.
Tout ce que je fais, c'est constater que votre article Fermeture était, sembe-t-il, erroné. Jamais je n'ai vu la portée d'un identifiant (scope, en anglais) être décrit par le terme fermeture (closure en anglais). Celui-ci désigne de façon extrêmement claire une fonction qui capture son environnement (toujours lexical, il me semble). Me trompe-je ? Quant à mon édition, c'est un oubli de ma part de l'avoir écrit non loggé. Vous remarquerez que ce n'est pas par volonté de me cacher : mon adresse IP est une adresse fixe qui m'identifie (le reverse DNS de 213.41.245.51 est pthierry.pck.nerim.net).
Tu confonds scope et closure. Ma traduction originelle était celle de closure et non de scope. L'intérët d'une traduction pour des termes techniques est qu'il est plus facile de faire progresser une traduction au vu de l'original que de créer un article â partir de rien. Le suivi du lien interwiki (lien supprimé par toi) aurait permis d'èviter l'erreur commise. Stefp 13 décembre 2006 à 15:39 (CET)
Je ne crois pas confondre, et donc je te cite (on va tirer ça au clair...) : « la fermeture d'un identificateur désigne où et quand, dans le code source d'un programme, cet identificateur peut être référencé ». Tu m'expliques le rapport avec une fermeture, et où tu as trouvé ce passage dans l'article anglais ?

Dites, non content de ne pas répondre à mon (embarassante ?) question, vous récidivez : votre article Valeur sentinelle a également été écrit visiblement sans que vous compreniez ce qu'est une valeur sentinelle. Vous avez en effet ajouté, par rapport au texte anglais, un exemple qui n'a strictement rien à voir avec une valeur sentinelle ! Merci de bien vouloir cesser d'éditer des articles sur des sujets que vous ne maitrisez visiblement pas. Nowhere man 24 avril 2007 à 03:28 (CEST)

Nota bene : ici vous n'avez en fait qu'aveuglément traduit un ancien passage de l'article anglais, désormais supprimé, qui était parfaitement erroné... Tâchez de faire preuve d'esprit critique, et de ne traduire que des articles dont vous maîtrisez le sujet. La traduction est un art difficile qui nécessite une réelle maîtrise du sujet, non pas seulement dans une langue mais dans deux...
Au passage, notez que lorsqu'on traduit des identifiants, on les traduit partout, dans les commentaires et le code, ou on ne les traduit pas du tout. Nowhere man

Rhaaaa, mais rebelotte, dans l'article sur la portée : vous y dites que « la portée d'une variable est l'étendue des valeurs qu'elle peut avoir », ce qui est parfaitement faux ! Pour votre gouverne, on appelle en général une étendue de valeurs possibles un domaine. Vous enchaînez en affirmant que « la portée désigne aussi quelquefois la fermeture d'une variable ». Cela me semble corroborer votre confusion entre fermeture et portée, probablement à l'origine de l'article erronée sur la fermeture ; qui plus est, il faudra m'expliquer ce que peut bien être la « fermeture d'une variable ». Nowhere man 24 avril 2007 à 09:24 (CEST)

Idem, on a porté à mon attention que l'article n'était pas de vous, d'où peut-être votre confusion sur les notions de portée et de fermeture. Je vous invite à consulter la nouvelle version de l'article portée. Nowhere man
En sectionnant un article en plusieurs, je n'ai pas corrigé une erreur, certes grossière; L'avais-je relevée? Je ne sais plus. Personnellement je ne permet pas d'inférer le niveau de connaissance de quelqu'un à partir de ses éditions et du fait qu'il ait laissé des erreurs des précédent éditeurs. Si il y a problème je corrige l'article dans la mesure de mes moyens sans faire la morale. Un article n'appartient à personne. C'est lorsque quelqu'un revient pour rajouter à nouveau des erreurs qu'il y a nécessité de coordination. C'est pour cela que je ne me sens pas obligé de répondre aux remontrances de Nowhere man -- Stefp 25 avril 2007 à 03:14 (CEST)

Dans mon travail de nettoyage, sachez que j'ai retiré votre paragraphes sur les fonctions d'ordre supérieur dans Objet de première classe. En effet, si des fonctions de première classe permettent des fonctions d'ordre supérieur, elles n'en rendent pas pour autant l'existence systématique. Seules les fonctions recevant en argument ou renvoyant en valeur de retour des fonctions se qualifient en tant que fonctions d'ordre supérieur. Dans un langage offrant des fonctions de première classe, on peut toujours écrire des fonctions de premier ordre.

Exemple en Common Lisp d'une fonction de premier ordre :

(defun hello (name)
  (format t "Hello, ~a!" name))

Nowhere man 24 avril 2007 à 14:57 (CEST)

encore une fois, un article n'appartient à personne. Donc pas besoin de m'informer. Par contre, si l'article avant correction indique une confusion de l'auteur, elle est peut-être commune et il est peut-être plus intéressant de comparer les deux concepts dans le coeur de l'article que de le faire dans une métadiscussion. -- Stefp 25 avril 2007 à 03:14 (CEST)

[modifier] Sécurité informatique : Campagne de recrutement + information vote PdQ

Salut Stefp ! Je me permets de t'écrire parce que j'ai remarqué que tu avais contribué (au moins une fois) sur (au moins) un article référencé sur le projet sur la sécurité informatique.

Si tu es intéressé et motivé, n'hésites pas à rejoindre l'équipe du projet !

Aussi, j'ai proposé il y a 15 jours que le portail soit promu "Portail de qualité". Le vote est passé en second tour depuis lundi. Je te propose de venir t'exprimer sur le sujet : Wikipédia:Proposition articles de qualité/Portail:Sécurité informatique. N'hésite pas à émettre des critiques, à améliorer le portail, etc.

Bonne continuation, et désolé pour le dérangement si cela ne t'intéresse pas ! --Tieno 22 août 2007 à 20:45 (CEST)

[modifier] Wikipédia:Prise de décision/Recommandations pour le traitement des sujets mathématiques sur Wikipédia

Bonjour,

Je viens de créer cette prise de décision qui pourrait t'intéresser. La phase de discussion ne sera ouverte que le 20 octobre à 6:00 CEST.

A bientôt, Kelemvor 18 octobre 2007 à 00:53 (CEST)

[modifier] Service de validation du W3C

Bonjour,
L'article Service de validation du W3C que tu avais traduit depuis la version anglophone est proposé à la suppression. Je t'invite à donner ton avis dans la proposition concernée. Cordialement, -Lgd (d) 29 mars 2008 à 08:12 (CET)