Techniquement, et avec un peu de pratique, même sur une seule ligne, tu t'en sors : les parenthèses retirent toute ambiguïté.
Mais oui, je conçois que ma phrase était rentre-dedans.
L'avantage, c'est que l'indentation qui découle du parenthésage et la structure du code sont interdépendants.
Le coup classique du if test1 then if test2 then foo else bar relève alors plus de la faute grave que de la faute d'étourderie. Si ton langage est basé uniquement sur l'indentation, quelques espaces en plus ou en moins sur le else bar risquent d'avoir un effet pervers sur ton code… (nota : en CL ou Scheme, on utilisera (when test1 (if test2 foo bar)) ou (if test1 (when test2 foo) bar) pour rajouter une couche de clarté à ce que la commande d'indentation automatique de ton éditeur aura déjà exprimé pour toi.
Ouais, enfin si tu programmes avec notepad, c'est *ta* faute.
On code en Scheme/Lisp avec des éditeurs qui gardent/indiquent le balancement correct de parenthèses. Tu peux même avoir une coloration différente en fonction de la profondeur.
Et d'ailleurs, les parenthèses font le même effet visuel que l'indentation, mais rendent impossible une erreur dans un programme à cause d'une indentation foireuse…
>> De telles performances, et une telle expressivité, quel est le revers de la médaille ?
Une syntaxe de merde, des erreurs cryptiques genre « machin has type int instead of type int » (Je sais plus comment, mais on pouvait créer des erreurs de même), l'absence de macros (j'ai pas touché à camlp4)…
Cela dit, j'aime bien, hein. J'en ai fait pendant longtemps.
Mais ces temps-ci, je trouve plus agréable de programmer en Haskell (pour son côté paresseux), Gambit-C Scheme ou Common Lisp (pour leur expressivité)…
>> [1] : Avec accès ssh chrooté dessus […] pour voir si on peut avoir confiance en chaque serveur.
T'as un troll de barbus récemment qui disait « si tu crois que chroot ça sert à la sécurité, t'es qu'un idiot. » Et donc, qu'on devrait pas avoir confiance comme tu le suggères.
Le mieux ne serait-il pas le louer de l'espace virtuel chez Amazon ?
Je pertinente.
SETI, Folding, toussa. Y a des gens utiles qui aimeraient bien avoir accès à ton CPU.
Sinon, tu peux aussi compiler OOo, ou monter un distcc et proposer un accès aux devs d'un OS ou mainteneurs de paquets d'une distro qui sont prêts à grappiller un peu de puissance de calcul sur le net pour leurs compilations.
> un peu trop compliqué par rapport à ce dont je cherche.
« à ce dont j'ai besoin » ou « à ce que je cherche, » mais pas un mélange des deux.
(désolé.)
Mais sinon, un bon gros coup de `tcpdump | perl compte.pl`, ça va pas ?
Chaque ligne de tcpdump est un paquet, puis tu peux filtrer pour chercher un header SMTP et donc compter les emails, filtrer les GET pour compter le nombre de page webs vues, etc.
Titre : Gestion centralisée des avatars, alternatives à Gravatar.
Contenu : il existe des initiatives non centralisées pour diffuser son avatar. Ces solutions seront passées en revue dans la suite de la dépêche !
Sinon, bon article.
Pavatar me parait pas pire, je vais essayer ça.
>> Desole mais j'ai jamais vu personne creer un soft parce qu'il avait envie de faire de la concurrence,
Euh, le jeu vidéo, c'est plutôt pas mal ça pourtant.
Tu veux faire jouer la concurrence pour choper des parts de marché à autrui…
Et beaucoup de logiciels sont conçus pour les mêmes raisons…
> il faudra s'interroger sur le fait que ce soit resté présent dans le code depuis l'an 2000 sans que personne ne remarque quoi que ce soit.
Parce qu'après avoir audité ton code (ou l'avoir fait audité par quelqu'un en qui tu as confiance), tu crois vraiment que tu vas recommencer un audit tous les ans à Noël ?
Si tu ne détectes rien de louche après audit, ben, tu assumes que ça marche comme il faut…
Déclaration universelle des droits de l'homme qui n'a apparemment aucune portée juridique et dont les clauses de présomption de l'innocence ne sont pas suivies par tous les pays d'Europe, si j'en crois wikitralalapédia.
Ah ?
Il est en France ?
La présomption d'innocence est, je crois bien, propre au système français et pas partagée par bien d'autres pays.
Je suis sûr qu'il y a des pays (même en Europe ?) où l'on est coupable tant qu'on n'a pas prouvé son innocence…
La préférée de jwz.
Chère, très chère. Vois avec ton employeur s'il peut te la payer.
Dans tous les cas, cherche « chaise ergonomique » sur le net. Généralement, on peut les essayer dans las boutiques spécialisées, je pense que ça vaut le coup.
Quand la société Machin passe de la version 2000 à la version XP, puis à Vista, puis à 7, c'est un véritable coup de ton aire dans le lent terne haut, mais quand la société Bidule passe de One à S, plus personne pour le faire remarquer qu'eux non plus ne savent pas compter ?
J'aimerais qu'on m'explique les avantages possibles à choisir de rendre un appel non terminal.
Selon moi, plus qu'offrir des avantages (je n'en vois pas encore un seul), ça n'offre que des inconvénients : vu que tu stockes sur la pile tes adresses de retour, tu risques en mode débug de créer des erreurs inexistantes en mode « bon sens » via des débordement de pile. Et c'est encore pire quand tu as du parallélisme ou de l'évaluation paresseuse car tu peux ne plus savoir du tout qui a alloué quoi ni quand…
Le fait qu'on puisse le faire ne me justifie toujours pas qu'on veuille le faire ni que ce soit une bonne idée. L'optimisation des appels en position terminal date de la fin des années 70, et c'est sans doute pas pour rien que la norme du langage Scheme impose que tout appel de fonction en position terminale soit n'alloue pas de pile.
Vouloir remplacer les appels terminaux par des appels qui allouent sur la pile revient à vouloir remplacer une boucle while par des appels récursifs de fonction en C (qui allouent donc sur la pile). Si c'était une bonne idée, j'imagine que ça se saurait/ferait.
En quoi ?
Savoir si un appel de fonction est en position terminale ou pas est décidable, et je n'ai pas souvenir de situation où un appel non terminal était préférable (ce qui ne veut pas dire qu'il n'y en a pas).
Et si j'écris let rec fact n =
if n = 0 then 1
else n * ((fact (n-1))_terminal)
ce qui est absolument faux vu qu'il reste à multiplier par n après que l'appel récursif a retourné fact (n-1), il va se passer quoi ?
1) Ce qui n'empêche pas que *tout* retourne une valeur en Caml, et c'est très bien. Libre au programmeur d'ignorer la valeur retournée.
2) Pas d'accord : il a un effet car tu peux mesurer son temps d'exécution s'il n'est pas paresseux. Et si ton programme est if (P = NP) then true else loop-for-ever() et que ton programme s'arrête, alors tu as un programme qui sert à prouver que P = NP.
3) Non. Sans doute la plupart de ceux qui ont un évaluateur ou un compilateur. Mais le lambda calcul original, celui sur papier, ne peut pas faire d'effets de bords, et est bien un langage fonctionnel. Qui plus est, on passe encore du temps à travailler dessus, j'imagine que ce n'est pas pour rien !
[^] # Re: LISP
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
Mais oui, je conçois que ma phrase était rentre-dedans.
L'avantage, c'est que l'indentation qui découle du parenthésage et la structure du code sont interdépendants.
Le coup classique du
if test1 then if test2 then foo else bar
relève alors plus de la faute grave que de la faute d'étourderie. Si ton langage est basé uniquement sur l'indentation, quelques espaces en plus ou en moins sur leelse bar
risquent d'avoir un effet pervers sur ton code… (nota : en CL ou Scheme, on utilisera(when test1 (if test2 foo bar))
ou(if test1 (when test2 foo) bar)
pour rajouter une couche de clarté à ce que la commande d'indentation automatique de ton éditeur aura déjà exprimé pour toi.[^] # Re: LISP
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 3.
On code en Scheme/Lisp avec des éditeurs qui gardent/indiquent le balancement correct de parenthèses. Tu peux même avoir une coloration différente en fonction de la profondeur.
Et d'ailleurs, les parenthèses font le même effet visuel que l'indentation, mais rendent impossible une erreur dans un programme à cause d'une indentation foireuse…
[^] # Re: Différents langages
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
Une syntaxe de merde, des erreurs cryptiques genre « machin has type int instead of type int » (Je sais plus comment, mais on pouvait créer des erreurs de même), l'absence de macros (j'ai pas touché à camlp4)…
Cela dit, j'aime bien, hein. J'en ai fait pendant longtemps.
Mais ces temps-ci, je trouve plus agréable de programmer en Haskell (pour son côté paresseux), Gambit-C Scheme ou Common Lisp (pour leur expressivité)…
[^] # Re: Techniquement possible
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Décentraliser Wikipédia. Évalué à 2.
T'as un troll de barbus récemment qui disait « si tu crois que chroot ça sert à la sécurité, t'es qu'un idiot. » Et donc, qu'on devrait pas avoir confiance comme tu le suggères.
Le mieux ne serait-il pas le louer de l'espace virtuel chez Amazon ?
# Faut pas abuser
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Merci la sncf. Évalué à 9.
on te file les infos 5 jours en avance, et tu te plains ?
[^] # Re: En tout cas ça a le mérite d'exister
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Diaspora mal conçu?. Évalué à 2.
[^] # Re: Des moufles, parce qu'il fait froid.
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Quelle solution opensource pour creer un site d'enchere temps réelle ?. Évalué à 3.
(Sinon, cf. le commentaire ci-dessus)
[^] # Re: BOINC
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Mon serveur s'ennui.... Évalué à 5.
SETI, Folding, toussa. Y a des gens utiles qui aimeraient bien avoir accès à ton CPU.
Sinon, tu peux aussi compiler OOo, ou monter un distcc et proposer un accès aux devs d'un OS ou mainteneurs de paquets d'une distro qui sont prêts à grappiller un peu de puissance de calcul sur le net pour leurs compilations.
# Des moufles, parce qu'il fait froid.
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Quelle solution opensource pour creer un site d'enchere temps réelle ?. Évalué à 3.
De bien faire attention aux « race conditions. »
[^] # Re: rrdtools
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Compteur d'impulsions. Évalué à 3.
« à ce dont j'ai besoin » ou « à ce que je cherche, » mais pas un mélange des deux.
(désolé.)
Mais sinon, un bon gros coup de `tcpdump | perl compte.pl`, ça va pas ?
Chaque ligne de tcpdump est un paquet, puis tu peux filtrer pour chercher un header SMTP et donc compter les emails, filtrer les GET pour compter le nombre de page webs vues, etc.
# Titre de la dépêche et contenu incohérents.
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Gestion (a)centralisée des avatars, alternatives à Gravatar.. Évalué à 3.
Contenu : il existe des initiatives non centralisées pour diffuser son avatar. Ces solutions seront passées en revue dans la suite de la dépêche !
Sinon, bon article.
Pavatar me parait pas pire, je vais essayer ça.
[^] # Re: Skype...
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Pourquoi n'existe-il pas de Skype libre ?. Évalué à 3.
Euh, le jeu vidéo, c'est plutôt pas mal ça pourtant.
Tu veux faire jouer la concurrence pour choper des parts de marché à autrui…
Et beaucoup de logiciels sont conçus pour les mêmes raisons…
[^] # Re: Les chinois du FBI...
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Backdoor dans OpenBSD ?. Évalué à 2.
Parce qu'après avoir audité ton code (ou l'avoir fait audité par quelqu'un en qui tu as confiance), tu crois vraiment que tu vas recommencer un audit tous les ans à Noël ?
Si tu ne détectes rien de louche après audit, ben, tu assumes que ça marche comme il faut…
[^] # Re: Ah cool du Tarot :)
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Boulot, métro, Tarot !. Évalué à 3.
Ouch, tu peux le dire…
[^] # Re: C++ aété créépour augmenter le salaire des programmeurs
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal C++ a été créé pour augmenter le salaire des programmeurs. Évalué à 9.
[^] # Re: Erreur
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Quelques questions à propos de l'affaire wikileaks…. Évalué à 2.
[^] # Entrevue…
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Entrevue avec Richard Stallman !. Évalué à 4.
[^] # Re: à Québec City
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Entrevue avec Richard Stallman !. Évalué à 2.
# Erreur
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Quelques questions à propos de l'affaire wikileaks…. Évalué à 3.
Ah ?
Il est en France ?
La présomption d'innocence est, je crois bien, propre au système français et pas partagée par bien d'autres pays.
Je suis sûr qu'il y a des pays (même en Europe ?) où l'on est coupable tant qu'on n'a pas prouvé son innocence…
# Aeron
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message Un fauteuil .... je veux un fauteuil .... Évalué à 2.
La préférée de jwz.
Chère, très chère. Vois avec ton employeur s'il peut te la payer.
Dans tous les cas, cherche « chaise ergonomique » sur le net. Généralement, on peut les essayer dans las boutiques spécialisées, je pense que ça vaut le coup.
# Critique sélective
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quoi de neuf chez Google ?. Évalué à 2.
[^] # Re: typage mou
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.
Selon moi, plus qu'offrir des avantages (je n'en vois pas encore un seul), ça n'offre que des inconvénients : vu que tu stockes sur la pile tes adresses de retour, tu risques en mode débug de créer des erreurs inexistantes en mode « bon sens » via des débordement de pile. Et c'est encore pire quand tu as du parallélisme ou de l'évaluation paresseuse car tu peux ne plus savoir du tout qui a alloué quoi ni quand…
Le fait qu'on puisse le faire ne me justifie toujours pas qu'on veuille le faire ni que ce soit une bonne idée. L'optimisation des appels en position terminal date de la fin des années 70, et c'est sans doute pas pour rien que la norme du langage Scheme impose que tout appel de fonction en position terminale soit n'alloue pas de pile.
Vouloir remplacer les appels terminaux par des appels qui allouent sur la pile revient à vouloir remplacer une boucle while par des appels récursifs de fonction en C (qui allouent donc sur la pile). Si c'était une bonne idée, j'imagine que ça se saurait/ferait.
[^] # Re: Intéressant pour les idées ... mais non
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 5.
[^] # Re: typage mou
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 3.
Savoir si un appel de fonction est en position terminale ou pas est décidable, et je n'ai pas souvenir de situation où un appel non terminal était préférable (ce qui ne veut pas dire qu'il n'y en a pas).
Et si j'écris
let rec fact n =
if n = 0 then 1
else n * ((fact (n-1))_terminal)
ce qui est absolument faux vu qu'il reste à multiplier par n après que l'appel récursif a retourné fact (n-1), il va se passer quoi ?
[^] # Re: typage mou
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.
2) Pas d'accord : il a un effet car tu peux mesurer son temps d'exécution s'il n'est pas paresseux. Et si ton programme est
if (P = NP) then true else loop-for-ever()
et que ton programme s'arrête, alors tu as un programme qui sert à prouver que P = NP.3) Non. Sans doute la plupart de ceux qui ont un évaluateur ou un compilateur. Mais le lambda calcul original, celui sur papier, ne peut pas faire d'effets de bords, et est bien un langage fonctionnel. Qui plus est, on passe encore du temps à travailler dessus, j'imagine que ce n'est pas pour rien !