Quand tu appelles le service après-vente, que tu dis que ton machin est cassé, et que l'opérateur te répond "pourtant chez un autre client ça marche. Vous êtes pas seul sur la planète, hein" ça te fait une belle jambe, non ?
>> Après, que tu choisisses google, jabber.fr ou ton autohébergement, ça ne change rien à l'histoire
Si, ça change tout, et c'est précismment de ça qu'il parle !
Je veux te parler, ton serveur tombe en panne, ben c'est foutu.
Je veux te parler mon serveur tombe en panne, c'est foutu aussi.
Il y a plus de risques de communications qui ne passent pas. La disponibilité *globale* du système est sans doute meilleure avec Jabber, mais la disponibilité locale est moindre par conception.
Que ce soit ton serveur, le mien, ou celui du service unique, du moment qu'il m'affecte moi, c'est la même chose : l'impossibilité de communiquer par le biais voulu.
C'est ce que Zenitram (je crois bien) et moi défendons dans les faits avec Skype, en plus du "ça marche".
Personne ne voudrait d'un service ou exactement la moitié des serveurs est en panne un jour sur deux. Pourtant, tu pourrais toujours dire que jabber marche tous les jours, et ça serait vrai...
>> C'est une belle démonstration pratique des problèmes de dépendance à un fournisseur unique dans les systèmes centralisés.
Noël ou pas, c'est 'dredi.
Alors je dis que fournisseur unique ou pas, quand ça marche, ça marche. Et plutôt bien. Chez moi, chez mes parents, chez ma blonde, chez ma grand-mère… Sur Debian GNU/Linux, sur Windows, sur OSX (j'ai pas testé la vidéo sur FreeBSD). Pas besoin de régler de firewall, de NAT.
Si le prix à payer, c'est une panne de deux jours une fois tous les cinq ans, ben crois moi, je suis satisfait du service.
La dernière fois que gmail était tombé en rade aussi, ça avait fait du boucan d'ailleurs, mais la qualité du webmail fait que toujours plus de gens l'utilisent (même si pour ma part, y a pas mal du trucs qui m'insupportent et que j'aimerais voir améliorés.)
Mais sinon, c'est un *service*.
Si c'était ton troll, alors je crois qu'un service n'a *aucune* raison d'être sous GPL.
En plus, GPL.sapue.fr (contrairement à BSD¹)
¹: pan ! mange-toi ton troll du dredi dans les dents !
1. Je lis la news, j'essaye de comprendre de quoi il s'agit.
2. Je clique sur envoyer un commentaire.
3. Le système m'informe que je ne suis pas connecté.
4. Je tape mon identifiant et mon mot de passe.
5. Le système refuse de m'authentifier
Et voilà ! Finies les conneries !
Super facile à intégrer à la version RoR, en plus !
Oui oui, on est d'accord :)
C'est juste que = n'est pas un opérateur d'égalité (ou d'assignation), mais de « matching » (ou d'assignation).
Pour moi, un opérateur d'égalité rend une valeur vraie en cas d'égalité, et une valeur fausse en cas de différence. Comme je le faisais remarquer,
X=3, % assigne
Y=4, % assigne
X=Y. % lance une exception
montre bien qu' = n'est pas un test d'égalité.
C'est un truc que je trouve laid, mais auquel on s'habitue vite, car ça a ses avantages pratiques quand on code.
>> Encore une fois, le comportement "variable existante = test d'égalité" de Erlang est parfois bien pratique (si on sait définir l'égalité).
En fait, c'est du pattern matching plus qu'un test d'égalité.
Ça retourne l'objet matché, et fait potentiellement des déclarations si des noms de variables non associés sont utilisés. [3=3,_=3,3==3,{Z,_}={42,3}].
==> [3,3,true,{42,3}]
Z.
==> 42
Si je fais 1=2 j'obtiens ** exception error: no match of right hand side value 2
>> Je crois que c'est la principal question à se poser : pour quel usage le langage d'apprentissage doit-il être choisi ?
Question inutile.
Tu prends Scheme/Common Lisp, c'est fait pour tous les usages :)
T'as du fonctionnel, de l'impératif, de l'objet, du concurrent (à la Erlang, avec Termite/Gambit-C), etc.
Ça marche pour les calculs matheux (maxima), pour le jeu vidéo (abuse, farmageddon (sur iphone !)), pour comparer les prix les moins chers de vols en avion (itasoftware), pour animer la tête de Gollum dans Le seigneur des anneaux (Mirai), pour faire des serveurs webs ultra rapides (teeteepeedee), des WM (stump), etc.
Un truc de ce genre, ptet ?
-module(toto).
-export([main/0]).
%% Retourne {false,3}
foo() ->
X = 3, % Assigne
R = case {1,2} of
{X,_} -> true; % teste si la première projection vaut 3. Vrai si oui,
_ -> false % Faux si non.
end,
{R,X}.
%% Retourne {true,1}
bar() ->
case {1,2} of
{X,_} -> X = X; % teste si la valeur est une paire, si oui, lie X et 1, puis
% vérifie via pattern match si X = X est vrai.
_ -> X = ohmygod % assigne ohmygod à X sinon
end, %% Maintenant, X vaut 1, alors qu'on est sorti de la portée du CASE
{true,X}.
% Que retourne cette fonction?
% quux() ->
% X = 41,
% X = 42.
>> Le problème, c'est que les parenthèses retirent l'ambiguïté au niveau du compilateur / interpréteur, mais qu'au niveau du programmeur humain la chose la plus visuelle est l'indentation.
C'est pas un problème !
C'est même un avantage certain !
Vu que les parenthèses reflètent la structure du code, tu peux, de manière automatique et sans ambiguïté, recréer l'indentation, la bonne seule et unique qui correspond à l'intention du programmeur (s'il a écrit ce qu'il voulait écrire), et à celle de toute personne qui sait lire un programme.
Donc, impossible de se tromper, vu que l'indentation *dépend* du parenthésage, et que le parenthésage est en bijection avec la structure intentionnelle du code.
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 ?
[^] # Re: Avis d'un dev Jingle
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Skype HS hier soir. Évalué à 2.
[^] # Re: Jabber HS hier soir
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Skype HS hier soir. Évalué à 2.
Si, ça change tout, et c'est précismment de ça qu'il parle !
Je veux te parler, ton serveur tombe en panne, ben c'est foutu.
Je veux te parler mon serveur tombe en panne, c'est foutu aussi.
Il y a plus de risques de communications qui ne passent pas. La disponibilité *globale* du système est sans doute meilleure avec Jabber, mais la disponibilité locale est moindre par conception.
Que ce soit ton serveur, le mien, ou celui du service unique, du moment qu'il m'affecte moi, c'est la même chose : l'impossibilité de communiquer par le biais voulu.
C'est ce que Zenitram (je crois bien) et moi défendons dans les faits avec Skype, en plus du "ça marche".
Personne ne voudrait d'un service ou exactement la moitié des serveurs est en panne un jour sur deux. Pourtant, tu pourrais toujours dire que jabber marche tous les jours, et ça serait vrai...
[^] # Re: Jabber HS hier soir
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Skype HS hier soir. Évalué à 1.
C'est gentil pour tes utilisateurs.
[^] # Re: Avis d'un dev Jingle
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Skype HS hier soir. Évalué à 3.
# Au moins
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Skype HS hier soir. Évalué à 3.
Noël ou pas, c'est 'dredi.
Alors je dis que fournisseur unique ou pas, quand ça marche, ça marche. Et plutôt bien. Chez moi, chez mes parents, chez ma blonde, chez ma grand-mère… Sur Debian GNU/Linux, sur Windows, sur OSX (j'ai pas testé la vidéo sur FreeBSD). Pas besoin de régler de firewall, de NAT.
Si le prix à payer, c'est une panne de deux jours une fois tous les cinq ans, ben crois moi, je suis satisfait du service.
La dernière fois que gmail était tombé en rade aussi, ça avait fait du boucan d'ailleurs, mais la qualité du webmail fait que toujours plus de gens l'utilisent (même si pour ma part, y a pas mal du trucs qui m'insupportent et que j'aimerais voir améliorés.)
[^] # Re: Avis d'un dev Jingle
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Skype HS hier soir. Évalué à 2.
Avec le même compte ?
(J'en sais rien, j'ai pas lancé mon jabber (ni mon msn, icq, yahoochat, etc) depuis…fiou… longtemps…)
[^] # Re: Et la licence ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal saimal.fr RIP?. Évalué à 3.
Mais sinon, c'est un *service*.
Si c'était ton troll, alors je crois qu'un service n'a *aucune* raison d'être sous GPL.
En plus, GPL.sapue.fr (contrairement à BSD¹)
¹: pan ! mange-toi ton troll du dredi dans les dents !
# Heureusement il y a une alternative !
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal saimal.fr RIP?. Évalué à 6.
# Facile !
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au journal Proposition de fonctionnalité anti-connerie pour la nouvelle version de Linuxfr. Évalué à 4.
2. Je clique sur envoyer un commentaire.
3. Le système m'informe que je ne suis pas connecté.
4. Je tape mon identifiant et mon mot de passe.
5. Le système refuse de m'authentifier
Et voilà ! Finies les conneries !
Super facile à intégrer à la version RoR, en plus !
[^] # Re: Mais qui valide la publication de ces torchons ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Le FBI a-t-il introduit des portes dérobées dans OpenBSD ?. Évalué à 3.
[^] # Re: Synchrones
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
Mais j'ai eu des cours d'Esterel et de Lustre autrefois, et je trouve que c'est sympa la programmation synchrone ou réactive.
[^] # Re: 3 type de langage a connaitre:
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
Ne serait-ce que prolog (puis langage synchrone, comme dit dans mon message plus bas).
Lisp, c'est pas tant la peine si c'est juste pour apprendre les concepts et qu'il a déjà l'objet, l'impératif et le fonctionnel en poche.
# Synchrones
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
Ça aussi, c'est fun !
(Ni intercal ou unlambda, mais c'est une autre histoire…)
[^] # Re: Mainstream || hype || marginal
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
[^] # V
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
C'est juste que = n'est pas un opérateur d'égalité (ou d'assignation), mais de « matching » (ou d'assignation).
Pour moi, un opérateur d'égalité rend une valeur vraie en cas d'égalité, et une valeur fausse en cas de différence. Comme je le faisais remarquer,
X=3, % assigne
Y=4, % assigne
X=Y. % lance une exception
montre bien qu' = n'est pas un test d'égalité.
C'est un truc que je trouve laid, mais auquel on s'habitue vite, car ça a ses avantages pratiques quand on code.
[^] # Re: Erlang
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
En fait, c'est du pattern matching plus qu'un test d'égalité.
Ça retourne l'objet matché, et fait potentiellement des déclarations si des noms de variables non associés sont utilisés.
[3=3,_=3,3==3,{Z,_}={42,3}].
==> [3,3,true,{42,3}]
Z.
==> 42
Si je fais
1=2
j'obtiens** exception error: no match of right hand side value 2
[^] # Re: Mainstream || hype || marginal
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 4.
Question inutile.
Tu prends Scheme/Common Lisp, c'est fait pour tous les usages :)
T'as du fonctionnel, de l'impératif, de l'objet, du concurrent (à la Erlang, avec Termite/Gambit-C), etc.
Ça marche pour les calculs matheux (maxima), pour le jeu vidéo (abuse, farmageddon (sur iphone !)), pour comparer les prix les moins chers de vols en avion (itasoftware), pour animer la tête de Gollum dans Le seigneur des anneaux (Mirai), pour faire des serveurs webs ultra rapides (teeteepeedee), des WM (stump), etc.
[^] # 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é à 4.
Tu réécris DLFP en Lisaac ?
[^] # Re: Erlang
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
-module(toto).
-export([main/0]).
%% Retourne {false,3}
foo() ->
X = 3, % Assigne
R = case {1,2} of
{X,_} -> true; % teste si la première projection vaut 3. Vrai si oui,
_ -> false % Faux si non.
end,
{R,X}.
%% Retourne {true,1}
bar() ->
case {1,2} of
{X,_} -> X = X; % teste si la valeur est une paire, si oui, lie X et 1, puis
% vérifie via pattern match si X = X est vrai.
_ -> X = ohmygod % assigne ohmygod à X sinon
end, %% Maintenant, X vaut 1, alors qu'on est sorti de la portée du CASE
{true,X}.
% Que retourne cette fonction?
% quux() ->
% X = 41,
% X = 42.
main() ->
%io:format("~w, ~w, ~w~n",[foo(),bar(),quux()]).
io:format("~w, ~w~n",[foo(),bar()]).
[^] # Re: LISP
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 6.
C'est pas un problème !
C'est même un avantage certain !
Vu que les parenthèses reflètent la structure du code, tu peux, de manière automatique et sans ambiguïté, recréer l'indentation, la bonne seule et unique qui correspond à l'intention du programmeur (s'il a écrit ce qu'il voulait écrire), et à celle de toute personne qui sait lire un programme.
Donc, impossible de se tromper, vu que l'indentation *dépend* du parenthésage, et que le parenthésage est en bijection avec la structure intentionnelle du code.
[^] # 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 ?