C'est un peu facile de balancer des critiques quand on ne fait rien, mais je trouve que le paysage des jeux libres est un petit peu déprimant. À part BFW, qui est un modèle du genre, j'ai un peu l'impression que les jeux libres sont soit des mini-projets bien finis (type frozen bubble), soit des trucs ambitieux jamais fignolés. Des trucs somme "sable" par exemple sentent bon les années 1990, le jeu n'a plus de page officielle, il est mort. Des projets très intéressants, comme OpenTTD, Freeciv, Freecol, Lincity, se trainent un peu comme des limaces et ne sont soutenus que par des équipes très réduites, dont la plupart aimeraient certainement passer le flambeau et se consacrer à autre chose. Même des jeux super innovants comme globutaion semblent à l'arrêt. Est-ce que ça veut dire qu'on a atteint la limite de la "niche écologique" des jeux libres? Étant donné le nombre de joueurs dans le monde, c'est fou qu'aucun projet d'envergure avec un budget conséquent n'apparaisse.
Une preuve statistique est considérée comme suffisante par les scientifiques qui ont eu la chance ou l'intuition de quitter les cours de maths le plus tôt possible.
Oui, rien à voir, mais n'empêche, blanc c'est bien, et noir c'est mal. Pareil pour la magie blanche, pareil pour une explication claire ou obscure. Aux échecs, les blancs jouent en premier et ont plus de chances de gagner. À force, j'imagine qu'on peut mal le prendre si on est noir ET parano (ou qu'on broie du noir :-S).
Après, on doit pouvoir trouver quelques exemples contraires. Les mariages blancs? Mais on ne parle pas de mariages noirs. Mine de rien, les termes de "blanc" et "noir" sont connotés. J'ai souvenir de cette expérience terrible menée auprès de gamins de 5-6 ans, auxquels on donnait une série de visages qui ne différaient que par la couleur, et on leur demandait "lequel a des bonnes notes à l'école", "lequel veut devenir médecin", et les réponses étaient incroyablement racistes. On n'y peut pas grand chose, mais c'est comme ça.
L'avantage de passer par une lib telle que la STL, c'est de pouvoir utiliser tout ces algos "de base" avec des opérateurs personnalisés, ce qui est bien pratique quand on veut trier des choux-fleurs.
C'est sûr, mais (i) est-ce que ça arrive si souvent que ça de vouloir trier ou additionner des choux-fleurs, par rapport à trier ou additionner des nombres ou des chaines de caractères, et (ii) techniquement, je ne vois que peu d'exemples où on veut réellement trier des choux-fleurs selon leur chou-fleuritude : on veut les trier selon leur taille, selon leur couleur, selon tout un tas de trucs qui s'expriment par leur valeur numérique.
Après, je ne critique pas l'existence d'une STL, qui reste un outil utile dans des cas assez spécifiques. Ce que je critique, c'est le paradigme de programmation qui consiste à faire des appels non-standard à des fonctions triviales dont tout le monde a besoin, et qui elles font des appels à la bibliothèque standard.
Par exemple, M. Dupont va programmer une fonction somme(iterator, iterator) qui va appeler std::accumulate; alors que M. Smith va programmer une fonction sum(vector) qui va appeler std::accumulate. Bref, les deux ont les mêmes besoins, ils appellent les mêmes fonctions standard en arrière plan, mais leur interface n'est pas standard. Ça duplique les efforts, ça rend le code plus difficile à maintenir et à lire, les fonctions résultantes ont peut-être des bugs ou elles ne sont peut-être pas optimales. Je ne vois pas du tout l'intérêt d'intercaler les couches de trucs standard et de trucs non-standard.
Il est évident que si la bibliothèque standard possède des fonctions min() ou sum(), elles ne vont pas toujours se comporter comme le programmeur souhaiterait qu'elles se comportent. Dans ce cas, il faudra de toutes manières repasser par la STL ou équivalent, avec un commentaire du style // je veux le plus petit élément qui ne soit pas 0, alors que la fonction min() renvoie 0. Mais dans 95% des cas, ces fonctions se comporteront exactement comme il faut, et ça fera gagner un temps fou à tout le monde. Je trouve déraisonnable d'estimer qu'un programmeur sur un langage bas-niveau n'a que ça à faire que de chercher dans la littérature l'algorithme optimal pour réaliser telle ou telle tâche triviale.
C'est exactement le sens de ma remarque. D ne sera probablement jamais utilisé pour coder un système d'exploitation ou un pilote de périphérique. Si on regarde l'utilisation de C++, c'est principalement du logiciel utilisateur (bureautique, logiciels spécialisés, etc). Dans mon domaine, le C et le C++ sont utilisés principalement pour coder des modèles "maison" (simulations, etc) quand les langages haut niveau sont trop lents. Au passage, matlab est un peu déprécié en biologie, les gens préfèrent de plus en plus R.
Les langages C/C++/D ne sont pas faits pour manipuler des vecteurs (au sens mathématique)
Les vecteurs de caractères ou de chaines de caractères n'a aucun sens mathématique, et pourtant, ils sont manipulés par le langage.
Le problème, à mon avis, ne vient pas vraiment du "niveau" du langage, mais du présupposé sur l'utilisation qui en est faite. Un langage bien foutu devrait pouvoir être utilisé par tout type d'utilisateur, et ce n'est pas le cas, ni pour C, ni pour D. Quelqu'un qui veut faire des choses très simples ne devrait pas avoir à récupérer un char** en argument du main() (en gros, on devrait pouvoir utiliser le langage sans pointeurs), et la librairie standard devrait permettre tout un tas d'opérations de base sans avoir à les recoder soi-même : min(), max(), sum(), mean(), il me semble un peu ridicule de passer par une STL (ou équivalent) pour des opérations aussi triviales.
Je ne comprend pas vraiment où tu veux en venir. Le compilateur ne peut pas deviner que tu veux utiliser const, je ne vois donc pas de solution, à part ne pas l'utilisé, mais c'est aussi possible.
Tu dis que c'est difficile ou que c'est impossible? Il me semble que
double square(double x) {return x*x;}
peut être sagement tagguée "const" par le compilo, qui peut décider quels appels de fonction sont const et lesquels ne le sont pas. Après, j'ai l'impression que la philosophie de D est de mettre le curseur à peu près à mi-chemin entre le compilo et le programmeur, le compilo peut deviner quelques trucs, mais l'aide du programmeur est indispensable à l'optimisation poussée, en explicitant la structure du programme : telle partie ne change pas, cette fonction ne peut pas lancer d'exceptions, etc. Je ne vois pas dans quelle mesure c'est fondamentalement différent de ce qui se passe en C ou en C++, par exemple.
toto << "Bonjour " << name << ". Vous avez " << 3 << " nouveaux messages.";
Franchement, tu trouves la première plus lisible? Et de toutes manières, même à lisibilité égale, l'inférence de type est un avantage indéniable (recourir au programmeur pour une tâcha automatisable n'a aucun intérêt).
D'ailleurs, j'imagine que la deuxième instruction peut être algorithmiquement transformée vers la première par le compilo. C'est donc le langage qui impose une construction lourde.
Ah ouais, c'est limpide comme syntaxe. C'est exactement le même brainstorm que la STL C++ : un truc potentiellement puissant mais illisible.
Ma critique, c'était justement que le langage soit apporter un minimum de fonctions de base. Bien sûr qu'on peut recalculer une moyenne ou une variance à la main, on peut même créer des méthodes pour le faire, on peut même créer sa propre bibliothèque de gestion de vecteurs, avec des vector_int, vector_double, ce qui permettrait de faire des vec.sum() et des vec.mean(). Mais on s'en fout, ce qui est crucial, c'est que le langage vienne avec ça, parce que ça fait partie de ce qu'on fait tous les jours avec des vecteurs. Là, le langage vient tout nu, c'est un truc McGyver. À chaque début de projet, tu réinventes la roue, avec éventuellement des bugs ou des problèmes de performance. Ça me semble totalement inutile, et en plus c'est illisible.
C'est clair qu'à la place de supprimer la complexité, on peut simplement la cacher. Mais regarde le main() de D : on a déja un string[]. C'est mieux qu'un char** (!!!), mais on ne récupère pas non plus quelque chose de manipulable : par exemple, que donne un writeln(args)?
Ceci dit, c'est peut-être aussi que les exemples choisis sont étranges. Ces types size_t semblent très mystérieux, et le premier exemple propose déja des immutable et des pure nothow, alors que ces mots-clé ne sont peut-être pas indispensables ici?
Tout est un peu dans le titre. J'ai l'impression que les devs système sont finalement assez satisfaits de C, et que C++ est difficilement détrônable sur le reste. Quoi qu'il en soit, je retrouve dans D tout un tas de choses que je trouve archaïques, et que seuls les devs C ou C++ comprennent, car ils se sentent à l'aise avec.
Une première chose est la verbosité des déclarations. Finalement, les histoires de "@safe pure nothrow" ne sont que des commandes d'optimisation, que l'on utilise principalement pour aider les compilos. Je ne suis pas certain que ça soit au programmeur de gérer ça. La raison principale est que, selon mon expérience, ça nuit à l'évolution et à la flexibilité du programme. Je ne connais pas assez D, mais en C++, on se tape des arbres super-complexes de const à gérer ; modifier le status "const" d'une variable est quasiment impossible dans un programme complexe, le compilo hurle avec des milliers de messages d'erreur, et on finit par saloper le design avec des mutable, et/ou par dupliquer toutes les méthodes avec une version const et une version non-const strictement identiques. Je pense que les langages doivent aussi être conçus pour les gens qui ne sont pas des experts en programmation, y compris en évitant au maximum de faire faire le boulot du compilo aux programmeurs.
L'autre truc qui me fait vraiment reculer, c'est le fait que les tableaux sont gérés comme en C comme des pointeurs. Alors oui, c'est élégant et rapide, mais ça demande un mode de réflexion qui n'est pas naturel pour la plupart des gens, ça rend le code lourd, et surtout, ça induit un mode de programmation basé sur les boucles (indentations récurrentes, définition de variables temporaires qui s'appellent "i" ou "x" et qui ne sont parfois pas réutilisées… Alors c'est sûr, on a toujours tout un tas de bibliothèques externes qui implémentent des vecteurs et des matrices, mais, à mon avis, la présence de ces bibliothèques ne fait que confirmer le manque de gestion des structures simples par le langage (sans comper que l'utilisation correcte de la STL nécessite une expertise assez hallucinante).
signifie, pour un être humain normal, [2,3,4]. Alors oui, c'est certain, un cerveau est assez flexible pour comprendre que ça n'est pas le cas et d'apprendre comment faire une boucle à la place, mais je ne comprends pas comment on peut encore se retrouver avec des langages qui ne gèrent pas intuitivement la concaténation de caractères
string toto = "Mon prénom est " + "Toto";
ou la manipulation de vecteurs
double moy = sum(tab)/size(tab);
Je me demande s'il n'y a pas un peu d'obfuscation volontaire de la part des gens qui créent et utilisent des langages basés sur des concepts qui ont 30 ou 40 ans, et qui, finalement, sont bien contents de se sentir supérieurs grâce à leur compréhension intuitive des std::const_iterator<std::vector<double> > obj.begin(). On crée D, E, F, G, H ou I avec la volonté d'être moins verbeux, mais finalement, on ne fait que changer le langage en laissant les habitudes inchangées.
Le PP se veut un parti ni de gauche ni de droite : tu as déjà vu ça quelque part n'est-ce pas ?
Mouais, alors on a les mouvemente qui sont et de droite, et de gauche (national-socialisme), les mouvements qui sont entre la droite et la gauche (centrisme), maintenant, on a les mouvements ni de droite, ni de gauche… Pas de contenu, quoi. M'étonne pas que ça ne prenne pas.
N'importe quoi, comment peut-on encore propager cette légende urbaine? J'emprunte 100€ à 10% par mois avec des mensualités de 20€.
1er mois : je rembourse 20€, 10€ de capital, 10€ d'intéret. Il rest donc 90€ à rembourser. Le mois suivant, je rembourse 20€, 9€ d'intérets, 11€ de capital. Il reste 79€ à rembourser. Le mois suivant, 7.90€ d'intérets, 12.10€ de capital. Il reste 66.90€, etc. Donc à mensualité égales, on rembourse de plus en plus de capital, et c'est tout à fait logique, il n'y a aucune entourloupe là dedans.
Merci :-) Je me demande bien comment on peut arriver à croire qu'une banque puisse faire des trous de cette manière. Il est évident qu'elle a le droit d'avoir des comptes négatifs, mais ce solde négatif est forcément une vraie dette dans le monde réel. Après, il existe plein de manières de jouer de manière à être le plus négatif possible sans que les autres ne s'en aperçoivent et continuent à confier leur pognon.
Je pense que tu délires complètement. Je me demande d'où vient cette idée que la création monétaire est "gratuite". Si une banque prête 1000€ et que cette somme n'est pas remboursée, ses comptes sont à -1000€. Si ta banque a été créée avec un capital de 10000€ par ses actionnaires, elle ne vaut plus que 9000€, les actionnaires ont perdu 1000€ de vrai pognon dans l'affaire. Et quand les comptes deviennent négatifs, ils faut emprunter à d'autres banques et à la banque centrale. Et quand ça devient tellement négatif que personne ne veut plus prêter, soit la banque fait faillite, soit l'État doit entrer dans le capital pour sauver les épargnants.
Les banques ne peuvent donc pas "fabriquer de l'argent qui n'existe pas", elles ne peuvent que "fabriquer de l'argent qui n'existe pas encore". C'est toute la différence, si l'argent qui n'existe pas encore n'existe pas du tout, alors la banque a un trou dans ses comptes.
L'exemple classique de la banque A qui prête 1000€ à la banque B et vice versa, et que les deux banques ont donc ainsi 1000€ chacune, est bidon : chaque banque a 1000€, mais chaque banque a aussi -1000€ dans ses comptes. On est donc dans la situation initiale, sauf que les banques ont simplement échangé des dettes contre du pognon circulant. C'est exactement leur rôle, on ne peut pas leur reprocher de faire ça.
Alors oui, on peut critiquer le système sur la base que les banques ont tendance à être beaucoup trop optimistes sur l'argent qui n'existe pas encore ; mais c'est justement l'origine de la crise.
Ça serait quand même pas mal de ne pas virer dans la parano débile. Les banques font faillite parce qu'elles ont trop prêté et surestimé le pognon qui n'existait pas encore. Mais la crise financière n'a fait que révéler la crise des dettes souveraines, qui, elle, est basée sur un mécanisme bien plus malsain : les États pensaient pouvoir vivre à crédit éternellement. Le jour où le pognon arrête de tourner, chacun commence à regarder ses comptes, tout le monde se rend compte qu'il serait peut-être temps d'arrêter de refiler du pognon à tout le monde. C'est clair que, finalement, la crise n'a fait que révéler les excès de confiance passés, on peut considérer que c'est un assainissement de la situation, mais l'assainissement risque d'être un peu douloureux…
Non mais je crois que ce n'est pas le problème. La question posée pour OpenArena est "Est-ce qu'un fichier .ogg sous licence GPL respecte la GPL" et la réponse est peut-être "non": si un fichier .ogg est l'équivalent d'un binaire, alors il manque les sources (fichiers lisibles par un être humain qui ont permis de fabriquer les .ogg). C'est la même chose pour les fichiers .png issus d'un rendu 3D par exemple, il manque les fichiers dans le logiciel original (qui peut être propriétaire) pour modifier confortablement les .png.
Ça n'a pas grand chose à voir avec le choix de la licence de ces fichiers. Le problème se pose quand ces fichiers sont sous GPL, mais quand ils le ne sont pas, il n'y a pas de problème.
La GPLv2 dit :
If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.
Ainsi que :
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
Il est donc tout à fait possible de distribuer dans des répertoires distincts sur un support unique 1) le programme sous GPL, et 2) les médias sous une licence proprio.
À mon avis, le reste n'est que rumeurs, interprétations hasardeuses, et FUD. D'ailleurs, RMS lui-même soutient un modèle moteur libre / artwork proprio pour les jeux, ça m'étonnerait qu'il le fasse sachant que ça n'est pas compatible GPL…
Sans plus de précision, j'ai l'impression que c'est du pipeau. Il suffit de clairement indiquer les licences dans les fichiers de code et dans les répertoires des medias, ainsi que dans le fichier License à la racine.
un jeu n'est pas vraiment un outil, le status est un peu différent. C'est moins important qu'il soit libre.
Ce n'est pas important que les médias soient libres (cartes, images, animations, sons…), mais par contre, le moteur est un logiciel comme un autre, qui interagit avec le système, écrit et efface des fichiers, utilise les périphériques et le réseau. Un moteur libre est la seule garantie que ton jeu qui tourne en arrière-plan n'en profite pas pour zyeuter sur quels sites tu vas, pour regarder si tu n'aurais pas installé sans licence d'autres jeux du même éditeur, etc.
Déja, dans la mesure où la très grande majorité des citoyens est favorable à un état de droit, l'État reste l'émanation de la volonté du peuple. En ce qui me concerne, l'État fournit mon moyen de subsistance (je suis fonctionnaire), ma sécurité (intérieure et extérieure), et mon identité culturelle (puisque les concepts d'État et de nation sont à peu près confondus en France). Par l'intermédiaire des élections, et puisqu'il est tout à fait légitime de se faire élire sur un programme de changement de constitution, l'État donne aux citoyens, au moint en théorie, le pouvoir de le détruire. C'est typiquement ce qui se passe dans un référendum d'autodétermination.
La vision d'un état protecteur du grand capital est aussi empruntée à l'idéologie communiste des années 1970, et ne me semble pas particulièrement pertinente. J'aurais tendance à penser au contraire que le capitalisme mondialisé accumule des pouvoirs supérieurs à ceux des États, et que justement, l'État est un rempart (plus ou moins efficace ou volontariste en fonction de la couleur politique des gouvernements) contre les abus capitalistes. Par exemple, l'État règlemente la culture des OGM, impose des lois pour la défense du consommateur, limite les pouvoirs des personnes morales. Je ne dis pas que cette protection est parfaite, mais justement, elle ne l'est pas car l'État est trop faible.
Enfin, l'État n'est pas une personne. Les débordements que tu cites sont l'œuvre d'êtres humains qui ont abusé pour leur confort personnel du pouvoir que les citoyens leur avait confié. Certes, le pouvoir corrompt, et il faut toujours veiller à ce que les gesn à qui ont l'a donné se comportent comme il faut, mais tu es en train d'accuser le camion parce que le chauffeur est bourré. Le dégoût de l'État te permet au passage de dédouaner les vrais coupables, qui sont des Hommes, et qui peuvent et doivent être jugés pour les abus qu'ils ont commis au nom de l'État. C'est trop facile de mettre sur le dos de l'État le comportement de simples hommes.
Pour supporter tes idées farfelues, l'État de donne tout un tas de moyens (la liberté d'expression, la liberté de manifestation, etc). Si tu estimes que ça n'est pas suffisant et que tu t'amuses à bousiller un serveur qui ne t'a rien fait, payé avec mes impôts, et destiné à rentre un service quelconque aux citoyens, alors je te verrais avec plaisir condamné pour le préjudice que tu m'as fait subir en attaquant l'État.
Je suis complètement d'accord, mais il faut bien comprendre la nuance entre la liberté du logiciel et les droits du consommateur. Le problème vient du verrouillage du matériel, Android n'est pas pour grand chose là-dedans. Les constructeurs sont dans une logique d'appareils jetables, tu achètes ton truc, tu ne changes jamais le système, la matériel est obsolète dans un an, tu rachètes un téléphone. J'imagine que le constructeur ne voit donc absolument pas l'intérêt de donner à l'utilisateur le droit de péter son téléphone—en fait, ton téléphone est plus une sorte de mini-freebox qu'un ordinateur, à leur yeux.
Personnellement, je ne vois pas pourquoi ne pas mettre une option "obtenir les droits d'administrateur" avec la mention que ça fera sauter la garantie, mais c'est plus compliqué que ça. Administrer son téléphone permet de faire des choix qui n'arrangent pas les opérateurs : filtrer les publicités dans les applications, gérer finement son réseau, ses proxys, utiliser le téléphone comme un modem, bref, tout un tas de trucs pour lesquels l'opérateur n'est pas forcément d'accord. Sans compter le risque potentiel de failles exploitables dans le réseau de téléphone.
À mon avis, ce type d'agissements de la part des vendeurs est largement tolérée, et n'est pas près de changer. Les consommateurs sont bien trop peu demandeurs de tout ça, pour la simple raison que la plupart des consommateurs entendent utiliser l'objet qu'ils achètent conformément à l'utilisation prévue par le vendeur. Il faudrait une loi qui interdirait au vendeur d'ajouter dans ses produits des dispositifs destinés à empêcher l'utilisation détournée, mais les vendeurs ont bien trop d'arguments politiques pour que ça se fasse (sécurité, fiabilité, surcoût…).
C'est du Apache 2 donc c'est libre.
Android tourne sous un serveur web?
Pourquoi associes-tu Apache à un serveur Web? C'est quoi le rapport?
Le rapport c'est probablement que personne sauf toi ne pense à la licence quand il lit "Apache". Quand tu écris un truc, c'est pour les autres, pas pour toi.
Alors, déja, les peines sont toujours des peines maximales. Le juge a le devoir d'adapter la peine à la faute commise. Il ne fait aucun doute qu'un rigolo qui scanne les ports du serveur de sa région ne va pas prendre de prison ferme ; ton texte ressemble à du FUD, dans cette optique.
Par ailleurs, même s'il est très difficile de comparer l'attaque d'un serveur avec un homocide involontaire, il faut quand même réaliser qu'un acte de sabotage volontaire sur un serveur de l'État peut avoir des conséquences catastrophiques. L'attaque du serveur des impôts peut empêcher des millions de gens de soumettre leur déclaration à temps, et donc de déclencher des pénalités de retard. Le blocage d'un serveur de la défense peut empêcher la communication entre des unités sur le terrain, et entrainer de lourdes pertes. L'accès à des fichiers de données peut entrainer la diffusion d'informations militaires, diplomatiques, ou personnelles sensibles.
Le problème, c'est qu'il est facile de sous-estimer le pouvoir de nuisance d'une telle attaque. Attaquer l'État, de toutes manières, c'est mal. Mais attaquer une gendarmerie ne nuit qu'à cette gendarmerie, c'est le symbole qui est avant tout visé. Attaquer un serveur très important, ça peut bloquer l'ensemble de l'État pour une durée indéterminée, contrairement à l'attaque sporadique de lieux symboliques, ça peut être extrêmement efficace.
Sans information complémentaire (et sans preuve que les 7 ans de prison seront requis pour une attaque du site de l'Elysée par exemple), je ne trouve pas a priori cette peine totalement disproportionnée.
# Jeux libres
Posté par arnaudus . En réponse à la dépêche Jouez en toute liberté avec la GameKey 700 série 1. Évalué à 4.
C'est un peu facile de balancer des critiques quand on ne fait rien, mais je trouve que le paysage des jeux libres est un petit peu déprimant. À part BFW, qui est un modèle du genre, j'ai un peu l'impression que les jeux libres sont soit des mini-projets bien finis (type frozen bubble), soit des trucs ambitieux jamais fignolés. Des trucs somme "sable" par exemple sentent bon les années 1990, le jeu n'a plus de page officielle, il est mort. Des projets très intéressants, comme OpenTTD, Freeciv, Freecol, Lincity, se trainent un peu comme des limaces et ne sont soutenus que par des équipes très réduites, dont la plupart aimeraient certainement passer le flambeau et se consacrer à autre chose. Même des jeux super innovants comme globutaion semblent à l'arrêt. Est-ce que ça veut dire qu'on a atteint la limite de la "niche écologique" des jeux libres? Étant donné le nombre de joueurs dans le monde, c'est fou qu'aucun projet d'envergure avec un budget conséquent n'apparaisse.
[^] # Re: Écrire bourré c'est mal m'voyez
Posté par arnaudus . En réponse au journal White List & Black List. Évalué à 2.
Une preuve statistique est considérée comme suffisante par les scientifiques qui ont eu la chance ou l'intuition de quitter les cours de maths le plus tôt possible.
[^] # Re: Écrire bourré c'est mal m'voyez
Posté par arnaudus . En réponse au journal White List & Black List. Évalué à 3.
Oui, rien à voir, mais n'empêche, blanc c'est bien, et noir c'est mal. Pareil pour la magie blanche, pareil pour une explication claire ou obscure. Aux échecs, les blancs jouent en premier et ont plus de chances de gagner. À force, j'imagine qu'on peut mal le prendre si on est noir ET parano (ou qu'on broie du noir :-S).
Après, on doit pouvoir trouver quelques exemples contraires. Les mariages blancs? Mais on ne parle pas de mariages noirs. Mine de rien, les termes de "blanc" et "noir" sont connotés. J'ai souvenir de cette expérience terrible menée auprès de gamins de 5-6 ans, auxquels on donnait une série de visages qui ne différaient que par la couleur, et on leur demandait "lequel a des bonnes notes à l'école", "lequel veut devenir médecin", et les réponses étaient incroyablement racistes. On n'y peut pas grand chose, mais c'est comme ça.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 2.
C'est sûr, mais (i) est-ce que ça arrive si souvent que ça de vouloir trier ou additionner des choux-fleurs, par rapport à trier ou additionner des nombres ou des chaines de caractères, et (ii) techniquement, je ne vois que peu d'exemples où on veut réellement trier des choux-fleurs selon leur chou-fleuritude : on veut les trier selon leur taille, selon leur couleur, selon tout un tas de trucs qui s'expriment par leur valeur numérique.
Après, je ne critique pas l'existence d'une STL, qui reste un outil utile dans des cas assez spécifiques. Ce que je critique, c'est le paradigme de programmation qui consiste à faire des appels non-standard à des fonctions triviales dont tout le monde a besoin, et qui elles font des appels à la bibliothèque standard.
Par exemple, M. Dupont va programmer une fonction somme(iterator, iterator) qui va appeler std::accumulate; alors que M. Smith va programmer une fonction sum(vector) qui va appeler std::accumulate. Bref, les deux ont les mêmes besoins, ils appellent les mêmes fonctions standard en arrière plan, mais leur interface n'est pas standard. Ça duplique les efforts, ça rend le code plus difficile à maintenir et à lire, les fonctions résultantes ont peut-être des bugs ou elles ne sont peut-être pas optimales. Je ne vois pas du tout l'intérêt d'intercaler les couches de trucs standard et de trucs non-standard.
Il est évident que si la bibliothèque standard possède des fonctions min() ou sum(), elles ne vont pas toujours se comporter comme le programmeur souhaiterait qu'elles se comportent. Dans ce cas, il faudra de toutes manières repasser par la STL ou équivalent, avec un commentaire du style // je veux le plus petit élément qui ne soit pas 0, alors que la fonction min() renvoie 0. Mais dans 95% des cas, ces fonctions se comporteront exactement comme il faut, et ça fera gagner un temps fou à tout le monde. Je trouve déraisonnable d'estimer qu'un programmeur sur un langage bas-niveau n'a que ça à faire que de chercher dans la littérature l'algorithme optimal pour réaliser telle ou telle tâche triviale.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 2.
C'est exactement le sens de ma remarque. D ne sera probablement jamais utilisé pour coder un système d'exploitation ou un pilote de périphérique. Si on regarde l'utilisation de C++, c'est principalement du logiciel utilisateur (bureautique, logiciels spécialisés, etc). Dans mon domaine, le C et le C++ sont utilisés principalement pour coder des modèles "maison" (simulations, etc) quand les langages haut niveau sont trop lents. Au passage, matlab est un peu déprécié en biologie, les gens préfèrent de plus en plus R.
Les vecteurs de caractères ou de chaines de caractères n'a aucun sens mathématique, et pourtant, ils sont manipulés par le langage.
Le problème, à mon avis, ne vient pas vraiment du "niveau" du langage, mais du présupposé sur l'utilisation qui en est faite. Un langage bien foutu devrait pouvoir être utilisé par tout type d'utilisateur, et ce n'est pas le cas, ni pour C, ni pour D. Quelqu'un qui veut faire des choses très simples ne devrait pas avoir à récupérer un char** en argument du main() (en gros, on devrait pouvoir utiliser le langage sans pointeurs), et la librairie standard devrait permettre tout un tas d'opérations de base sans avoir à les recoder soi-même : min(), max(), sum(), mean(), il me semble un peu ridicule de passer par une STL (ou équivalent) pour des opérations aussi triviales.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 1.
Tu dis que c'est difficile ou que c'est impossible? Il me semble que
double square(double x) {return x*x;}
peut être sagement tagguée "const" par le compilo, qui peut décider quels appels de fonction sont const et lesquels ne le sont pas. Après, j'ai l'impression que la philosophie de D est de mettre le curseur à peu près à mi-chemin entre le compilo et le programmeur, le compilo peut deviner quelques trucs, mais l'aide du programmeur est indispensable à l'optimisation poussée, en explicitant la structure du programme : telle partie ne change pas, cette fonction ne peut pas lancer d'exceptions, etc. Je ne vois pas dans quelle mesure c'est fondamentalement différent de ce qui se passe en C ou en C++, par exemple.
[^] # Re: void et les templates?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 2.
Mmmh, c'est pour bricoler des trucs avec des templates? Parce que je ne vois pas trop ce que tu peux faire du x, la variable n'a aucun sens, si?
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 1.
Franchement, tu trouves la première plus lisible? Et de toutes manières, même à lisibilité égale, l'inférence de type est un avantage indéniable (recourir au programmeur pour une tâcha automatisable n'a aucun intérêt).
D'ailleurs, j'imagine que la deuxième instruction peut être algorithmiquement transformée vers la première par le compilo. C'est donc le langage qui impose une construction lourde.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 3.
C'est dommage que les gens en aient besoin, hein.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 2.
Ah ouais, c'est limpide comme syntaxe. C'est exactement le même brainstorm que la STL C++ : un truc potentiellement puissant mais illisible.
Ma critique, c'était justement que le langage soit apporter un minimum de fonctions de base. Bien sûr qu'on peut recalculer une moyenne ou une variance à la main, on peut même créer des méthodes pour le faire, on peut même créer sa propre bibliothèque de gestion de vecteurs, avec des vector_int, vector_double, ce qui permettrait de faire des vec.sum() et des vec.mean(). Mais on s'en fout, ce qui est crucial, c'est que le langage vienne avec ça, parce que ça fait partie de ce qu'on fait tous les jours avec des vecteurs. Là, le langage vient tout nu, c'est un truc McGyver. À chaque début de projet, tu réinventes la roue, avec éventuellement des bugs ou des problèmes de performance. Ça me semble totalement inutile, et en plus c'est illisible.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 3.
C'est clair qu'à la place de supprimer la complexité, on peut simplement la cacher. Mais regarde le main() de D : on a déja un string[]. C'est mieux qu'un char** (!!!), mais on ne récupère pas non plus quelque chose de manipulable : par exemple, que donne un writeln(args)?
Ceci dit, c'est peut-être aussi que les exemples choisis sont étranges. Ces types size_t semblent très mystérieux, et le premier exemple propose déja des immutable et des pure nothow, alors que ces mots-clé ne sont peut-être pas indispensables ici?
# Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par arnaudus . En réponse à la dépêche Le langage D. Évalué à 6.
Tout est un peu dans le titre. J'ai l'impression que les devs système sont finalement assez satisfaits de C, et que C++ est difficilement détrônable sur le reste. Quoi qu'il en soit, je retrouve dans D tout un tas de choses que je trouve archaïques, et que seuls les devs C ou C++ comprennent, car ils se sentent à l'aise avec.
Une première chose est la verbosité des déclarations. Finalement, les histoires de "@safe pure nothrow" ne sont que des commandes d'optimisation, que l'on utilise principalement pour aider les compilos. Je ne suis pas certain que ça soit au programmeur de gérer ça. La raison principale est que, selon mon expérience, ça nuit à l'évolution et à la flexibilité du programme. Je ne connais pas assez D, mais en C++, on se tape des arbres super-complexes de const à gérer ; modifier le status "const" d'une variable est quasiment impossible dans un programme complexe, le compilo hurle avec des milliers de messages d'erreur, et on finit par saloper le design avec des mutable, et/ou par dupliquer toutes les méthodes avec une version const et une version non-const strictement identiques. Je pense que les langages doivent aussi être conçus pour les gens qui ne sont pas des experts en programmation, y compris en évitant au maximum de faire faire le boulot du compilo aux programmeurs.
L'autre truc qui me fait vraiment reculer, c'est le fait que les tableaux sont gérés comme en C comme des pointeurs. Alors oui, c'est élégant et rapide, mais ça demande un mode de réflexion qui n'est pas naturel pour la plupart des gens, ça rend le code lourd, et surtout, ça induit un mode de programmation basé sur les boucles (indentations récurrentes, définition de variables temporaires qui s'appellent "i" ou "x" et qui ne sont parfois pas réutilisées… Alors c'est sûr, on a toujours tout un tas de bibliothèques externes qui implémentent des vecteurs et des matrices, mais, à mon avis, la présence de ces bibliothèques ne fait que confirmer le manque de gestion des structures simples par le langage (sans comper que l'utilisation correcte de la STL nécessite une expertise assez hallucinante).
Typiquement,
int tab[] = [1, 2, 3];
tab = tab + 1;
signifie, pour un être humain normal, [2,3,4]. Alors oui, c'est certain, un cerveau est assez flexible pour comprendre que ça n'est pas le cas et d'apprendre comment faire une boucle à la place, mais je ne comprends pas comment on peut encore se retrouver avec des langages qui ne gèrent pas intuitivement la concaténation de caractères
string toto = "Mon prénom est " + "Toto";
ou la manipulation de vecteurs
double moy = sum(tab)/size(tab);
Je me demande s'il n'y a pas un peu d'obfuscation volontaire de la part des gens qui créent et utilisent des langages basés sur des concepts qui ont 30 ou 40 ans, et qui, finalement, sont bien contents de se sentir supérieurs grâce à leur compréhension intuitive des
std::const_iterator<std::vector<double> > obj.begin()
. On crée D, E, F, G, H ou I avec la volonté d'être moins verbeux, mais finalement, on ne fait que changer le langage en laissant les habitudes inchangées.[^] # Re: FDG
Posté par arnaudus . En réponse au journal 0,76% de moyenne nationale pour le parti pirate, déception . Évalué à -2.
Mouais, alors on a les mouvemente qui sont et de droite, et de gauche (national-socialisme), les mouvements qui sont entre la droite et la gauche (centrisme), maintenant, on a les mouvements ni de droite, ni de gauche… Pas de contenu, quoi. M'étonne pas que ça ne prenne pas.
[^] # Re: Que veux-tu dire ?
Posté par arnaudus . En réponse au journal L'argent dette. Évalué à 3.
N'importe quoi, comment peut-on encore propager cette légende urbaine? J'emprunte 100€ à 10% par mois avec des mensualités de 20€.
1er mois : je rembourse 20€, 10€ de capital, 10€ d'intéret. Il rest donc 90€ à rembourser. Le mois suivant, je rembourse 20€, 9€ d'intérets, 11€ de capital. Il reste 79€ à rembourser. Le mois suivant, 7.90€ d'intérets, 12.10€ de capital. Il reste 66.90€, etc. Donc à mensualité égales, on rembourse de plus en plus de capital, et c'est tout à fait logique, il n'y a aucune entourloupe là dedans.
[^] # Re: Les fameux intérêts manquants...
Posté par arnaudus . En réponse au journal L'argent dette. Évalué à 3.
Merci :-) Je me demande bien comment on peut arriver à croire qu'une banque puisse faire des trous de cette manière. Il est évident qu'elle a le droit d'avoir des comptes négatifs, mais ce solde négatif est forcément une vraie dette dans le monde réel. Après, il existe plein de manières de jouer de manière à être le plus négatif possible sans que les autres ne s'en aperçoivent et continuent à confier leur pognon.
[^] # Re: Les fameux intérêts manquants...
Posté par arnaudus . En réponse au journal L'argent dette. Évalué à 8.
Je pense que tu délires complètement. Je me demande d'où vient cette idée que la création monétaire est "gratuite". Si une banque prête 1000€ et que cette somme n'est pas remboursée, ses comptes sont à -1000€. Si ta banque a été créée avec un capital de 10000€ par ses actionnaires, elle ne vaut plus que 9000€, les actionnaires ont perdu 1000€ de vrai pognon dans l'affaire. Et quand les comptes deviennent négatifs, ils faut emprunter à d'autres banques et à la banque centrale. Et quand ça devient tellement négatif que personne ne veut plus prêter, soit la banque fait faillite, soit l'État doit entrer dans le capital pour sauver les épargnants.
Les banques ne peuvent donc pas "fabriquer de l'argent qui n'existe pas", elles ne peuvent que "fabriquer de l'argent qui n'existe pas encore". C'est toute la différence, si l'argent qui n'existe pas encore n'existe pas du tout, alors la banque a un trou dans ses comptes.
L'exemple classique de la banque A qui prête 1000€ à la banque B et vice versa, et que les deux banques ont donc ainsi 1000€ chacune, est bidon : chaque banque a 1000€, mais chaque banque a aussi -1000€ dans ses comptes. On est donc dans la situation initiale, sauf que les banques ont simplement échangé des dettes contre du pognon circulant. C'est exactement leur rôle, on ne peut pas leur reprocher de faire ça.
Alors oui, on peut critiquer le système sur la base que les banques ont tendance à être beaucoup trop optimistes sur l'argent qui n'existe pas encore ; mais c'est justement l'origine de la crise.
Ça serait quand même pas mal de ne pas virer dans la parano débile. Les banques font faillite parce qu'elles ont trop prêté et surestimé le pognon qui n'existait pas encore. Mais la crise financière n'a fait que révéler la crise des dettes souveraines, qui, elle, est basée sur un mécanisme bien plus malsain : les États pensaient pouvoir vivre à crédit éternellement. Le jour où le pognon arrête de tourner, chacun commence à regarder ses comptes, tout le monde se rend compte qu'il serait peut-être temps d'arrêter de refiler du pognon à tout le monde. C'est clair que, finalement, la crise n'a fait que révéler les excès de confiance passés, on peut considérer que c'est un assainissement de la situation, mais l'assainissement risque d'être un peu douloureux…
[^] # Re: Steamboy
Posté par arnaudus . En réponse au journal Steam sur Linux après les supputations, la confirmation.. Évalué à 3. Dernière modification le 06 juin 2012 à 09:36.
Non mais je crois que ce n'est pas le problème. La question posée pour OpenArena est "Est-ce qu'un fichier .ogg sous licence GPL respecte la GPL" et la réponse est peut-être "non": si un fichier .ogg est l'équivalent d'un binaire, alors il manque les sources (fichiers lisibles par un être humain qui ont permis de fabriquer les .ogg). C'est la même chose pour les fichiers .png issus d'un rendu 3D par exemple, il manque les fichiers dans le logiciel original (qui peut être propriétaire) pour modifier confortablement les .png.
Ça n'a pas grand chose à voir avec le choix de la licence de ces fichiers. Le problème se pose quand ces fichiers sont sous GPL, mais quand ils le ne sont pas, il n'y a pas de problème.
La GPLv2 dit :
Ainsi que :
Il est donc tout à fait possible de distribuer dans des répertoires distincts sur un support unique 1) le programme sous GPL, et 2) les médias sous une licence proprio.
À mon avis, le reste n'est que rumeurs, interprétations hasardeuses, et FUD. D'ailleurs, RMS lui-même soutient un modèle moteur libre / artwork proprio pour les jeux, ça m'étonnerait qu'il le fasse sachant que ça n'est pas compatible GPL…
[^] # Re: Steamboy
Posté par arnaudus . En réponse au journal Steam sur Linux après les supputations, la confirmation.. Évalué à 3.
Sans plus de précision, j'ai l'impression que c'est du pipeau. Il suffit de clairement indiquer les licences dans les fichiers de code et dans les répertoires des medias, ainsi que dans le fichier License à la racine.
[^] # Re: Steamboy
Posté par arnaudus . En réponse au journal Steam sur Linux après les supputations, la confirmation.. Évalué à 4.
Je pense que c'est complètement faux, mais peut-être as-tu une référence?
[^] # Re: Steamboy
Posté par arnaudus . En réponse au journal Steam sur Linux après les supputations, la confirmation.. Évalué à 7.
Ce n'est pas important que les médias soient libres (cartes, images, animations, sons…), mais par contre, le moteur est un logiciel comme un autre, qui interagit avec le système, écrit et efface des fichiers, utilise les périphériques et le réseau. Un moteur libre est la seule garantie que ton jeu qui tourne en arrière-plan n'en profite pas pour zyeuter sur quels sites tu vas, pour regarder si tu n'aurais pas installé sans licence d'autres jeux du même éditeur, etc.
[^] # Re: acheter un os?
Posté par arnaudus . En réponse au message Regarder roland-garros sous Linux. Évalué à 3.
L'OS marche très bien, il n'a juste pas le bon driver.
[^] # Re: Mouais
Posté par arnaudus . En réponse à la dépêche La loi Godfrain sur la fraude informatique modifiée. Évalué à 5.
Mhhbof. La rhétorique anarchiste vieillit mal.
Déja, dans la mesure où la très grande majorité des citoyens est favorable à un état de droit, l'État reste l'émanation de la volonté du peuple. En ce qui me concerne, l'État fournit mon moyen de subsistance (je suis fonctionnaire), ma sécurité (intérieure et extérieure), et mon identité culturelle (puisque les concepts d'État et de nation sont à peu près confondus en France). Par l'intermédiaire des élections, et puisqu'il est tout à fait légitime de se faire élire sur un programme de changement de constitution, l'État donne aux citoyens, au moint en théorie, le pouvoir de le détruire. C'est typiquement ce qui se passe dans un référendum d'autodétermination.
La vision d'un état protecteur du grand capital est aussi empruntée à l'idéologie communiste des années 1970, et ne me semble pas particulièrement pertinente. J'aurais tendance à penser au contraire que le capitalisme mondialisé accumule des pouvoirs supérieurs à ceux des États, et que justement, l'État est un rempart (plus ou moins efficace ou volontariste en fonction de la couleur politique des gouvernements) contre les abus capitalistes. Par exemple, l'État règlemente la culture des OGM, impose des lois pour la défense du consommateur, limite les pouvoirs des personnes morales. Je ne dis pas que cette protection est parfaite, mais justement, elle ne l'est pas car l'État est trop faible.
Enfin, l'État n'est pas une personne. Les débordements que tu cites sont l'œuvre d'êtres humains qui ont abusé pour leur confort personnel du pouvoir que les citoyens leur avait confié. Certes, le pouvoir corrompt, et il faut toujours veiller à ce que les gesn à qui ont l'a donné se comportent comme il faut, mais tu es en train d'accuser le camion parce que le chauffeur est bourré. Le dégoût de l'État te permet au passage de dédouaner les vrais coupables, qui sont des Hommes, et qui peuvent et doivent être jugés pour les abus qu'ils ont commis au nom de l'État. C'est trop facile de mettre sur le dos de l'État le comportement de simples hommes.
Pour supporter tes idées farfelues, l'État de donne tout un tas de moyens (la liberté d'expression, la liberté de manifestation, etc). Si tu estimes que ça n'est pas suffisant et que tu t'amuses à bousiller un serveur qui ne t'a rien fait, payé avec mes impôts, et destiné à rentre un service quelconque aux citoyens, alors je te verrais avec plaisir condamné pour le préjudice que tu m'as fait subir en attaquant l'État.
[^] # Re: so true
Posté par arnaudus . En réponse au journal Android ça pue c'est pas libre. Évalué à 3.
Je suis complètement d'accord, mais il faut bien comprendre la nuance entre la liberté du logiciel et les droits du consommateur. Le problème vient du verrouillage du matériel, Android n'est pas pour grand chose là-dedans. Les constructeurs sont dans une logique d'appareils jetables, tu achètes ton truc, tu ne changes jamais le système, la matériel est obsolète dans un an, tu rachètes un téléphone. J'imagine que le constructeur ne voit donc absolument pas l'intérêt de donner à l'utilisateur le droit de péter son téléphone—en fait, ton téléphone est plus une sorte de mini-freebox qu'un ordinateur, à leur yeux.
Personnellement, je ne vois pas pourquoi ne pas mettre une option "obtenir les droits d'administrateur" avec la mention que ça fera sauter la garantie, mais c'est plus compliqué que ça. Administrer son téléphone permet de faire des choix qui n'arrangent pas les opérateurs : filtrer les publicités dans les applications, gérer finement son réseau, ses proxys, utiliser le téléphone comme un modem, bref, tout un tas de trucs pour lesquels l'opérateur n'est pas forcément d'accord. Sans compter le risque potentiel de failles exploitables dans le réseau de téléphone.
À mon avis, ce type d'agissements de la part des vendeurs est largement tolérée, et n'est pas près de changer. Les consommateurs sont bien trop peu demandeurs de tout ça, pour la simple raison que la plupart des consommateurs entendent utiliser l'objet qu'ils achètent conformément à l'utilisation prévue par le vendeur. Il faudrait une loi qui interdirait au vendeur d'ajouter dans ses produits des dispositifs destinés à empêcher l'utilisation détournée, mais les vendeurs ont bien trop d'arguments politiques pour que ça se fasse (sécurité, fiabilité, surcoût…).
[^] # Re: C'est simple
Posté par arnaudus . En réponse au journal Android ça pue c'est pas libre. Évalué à -9.
Le rapport c'est probablement que personne sauf toi ne pense à la licence quand il lit "Apache". Quand tu écris un truc, c'est pour les autres, pas pour toi.
# Mouais
Posté par arnaudus . En réponse à la dépêche La loi Godfrain sur la fraude informatique modifiée. Évalué à 8.
Alors, déja, les peines sont toujours des peines maximales. Le juge a le devoir d'adapter la peine à la faute commise. Il ne fait aucun doute qu'un rigolo qui scanne les ports du serveur de sa région ne va pas prendre de prison ferme ; ton texte ressemble à du FUD, dans cette optique.
Par ailleurs, même s'il est très difficile de comparer l'attaque d'un serveur avec un homocide involontaire, il faut quand même réaliser qu'un acte de sabotage volontaire sur un serveur de l'État peut avoir des conséquences catastrophiques. L'attaque du serveur des impôts peut empêcher des millions de gens de soumettre leur déclaration à temps, et donc de déclencher des pénalités de retard. Le blocage d'un serveur de la défense peut empêcher la communication entre des unités sur le terrain, et entrainer de lourdes pertes. L'accès à des fichiers de données peut entrainer la diffusion d'informations militaires, diplomatiques, ou personnelles sensibles.
Le problème, c'est qu'il est facile de sous-estimer le pouvoir de nuisance d'une telle attaque. Attaquer l'État, de toutes manières, c'est mal. Mais attaquer une gendarmerie ne nuit qu'à cette gendarmerie, c'est le symbole qui est avant tout visé. Attaquer un serveur très important, ça peut bloquer l'ensemble de l'État pour une durée indéterminée, contrairement à l'attaque sporadique de lieux symboliques, ça peut être extrêmement efficace.
Sans information complémentaire (et sans preuve que les 7 ans de prison seront requis pour une attaque du site de l'Elysée par exemple), je ne trouve pas a priori cette peine totalement disproportionnée.