Hum, c'est une vision un peu idéalisée des choses je pense. Un certain nombre de logiciels star du libre en sont le contre-exemple :
Tu te rends compte que tes exemples ne font qu'apporter de l'eau à mon moulin ? Linux, comme dit avant moi, n'est pas parti de rien, il s'est appuyé sur des briques déjà existantes à l'époque, notamment le userland GNU, et GCC. Blender et OpenOffice : beaux exemples de développements intensifs… non-libres. Et tu décris toi-même le processus en cours chez LibreOffice : ils utilisent un maximum des briques libres. C'est naturel, c'est la manière intrinsèque de fonctionner du libre. Quant à Firefox, il a commencé comme un navigateur basé sur une brique libre (Gecko) plutôt que par un développement from scratch.
ce qu'il faut faire c'est des bons jeux, avec des besoins variés, quitte à ce qu'il fasse des hacks chacun dans leur coin.
On ne fait pas des bons jeux avec des hacks dans le libre. Le libre a la particularité de ne pas fonctionner avec des logiciels jetables mais avec du durable et du réutilisable.
tu ne vas pas importer ta sauvegarde de FrozenBobble dans Hedgewars
Il ne s'agit pas de ça, il s'agit de partager des briques de base.
parce que très peu de jeux, donc peu de chance qu'il y ait un projet suffisamment proche pour que lui prendre des assets.
Je me suis peut-être mal exprimé mais il ne s'agit pas de partager des assets mais des formats. Si je reprends l'exemple des dialogues, on peut très bien avoir un format unique mais des dialogues différents pour chaque jeu. L'avantage du format unique est qu'il permet d'avoir des outils commun pour le manipuler.
Je pense vraiment que akagoria est trop ambitieux pour quelqu'un qui ne peut évidemment pas bosser dessus à plein temps
Sans doute ;)
PS: j'ai hâte de voir une rétrospective des jeux qu'auront pu faire tes étudiants.
Ils ont du mal, pas tant dans le code que dans l'organisation.
Alors je dois utiliser la version de dev ;) La première fois, j'avais utilisé le dépôt git, et du coup, j'ai continué. C'était étiquetée 0.5 dans le --version donc, je pensais que ça correspondait à cette version.
Plus précisément, j'utilisais la version dont le dernier commit est f8c6b9e4d8afa4635a475c92af0a058a42bd76da (Date: Fri Oct 10 01:35:11 2014 +0200).
Ouais, pas parfait. Déjà pour les changements de la dernière version, c'était pas hyper clair au début pour moi. Et puis, en fouillant un peu, j'ai trouvé. La doc est pas super bien foutue, on ne sait pas trop ce qui est obligatoire et ce qui ne l'est pas, notamment dans les attributs (je crois qu'il y a des issues ouvertes à ce sujet sur github). Et d'ailleurs, ça peut changer d'une version à l'autre. Récemment, j'ai eu un cas : la longueur et la largeur sont facultatives, y compris pour un rectangle ou une ellipse (je ne crois pas que c'était le cas avant). La valeur par défaut est 0 pour les deux. Et le pire, c'est que dans l'éditeur, ça apparaît avec une largeur et une longueur non-nulles.
Ha ben, facile : ça fait le boulot, c'est pas dur à utiliser, ça me convient parfaitement. La documentation est suffisante, quand je me suis remis dedans, j'ai relu la manpage et hop, c'était parti.
j'ai ajouté quelques paradigmes, notamment pour pouvoir travailler sur plusieurs projets en même temps, avec des environnements de cross-compilation indépendants.
Il n'y a pas déjà ça dans la version actuelle ? En tout cas, je crois qu'il y a une notion de projet et à la fin, on peut avoir un gros zip avec tout ce qu'on a compilé. J'ai bien aimé ça (même si ça n'a pas fonctionné au final).
Tu parles sans doute de ça (mais ça va mieux avec un lien). Et ça ne me paraît pas plus lisible que du YAML. C'est une espèce de mix entre du JSON et de l'INI. Super ! Et puis ce n'est même pas packagé dans Debian, ça veut dire qu'il faut se farcir la compilation à la main. Bref, je vais garder mon baril de YAML pour l'instant.
Le jour où il y aura des tas de jeux libres de qualitay,
Je pense qu'on arrivera pas à ça sans avoir des formats standardisés. Pourquoi ? Parce que le libre ne se construit pas à grand coup de développements intensifs mais sur des briques de bases qu'on empile petit à petit. Et dans les fondations, il y a des standard. C'est une manière de distribuer la charge de travail sans que personne ne se concerte.
ça plus de 10 ans qu'on peut facilement exporter les modèles 3D de Blender vers Ogre3D
Quand il y a un bon éditeur avec des fonctions d'export, c'est parfait. C'est aussi le cas avec Tiled, même si tout le monde utilise le format de Tiled. Mais à terme, il se peut qu'il y ait un export vers un format plus générique et/ou plus commun.
Quand tu auras des milliers de joueurs tu pourras proposer à tes étudiants un projet consistant à régler ce problème
Hahahaha !
Les formats standardisés ne vont pas t'apporter de graphiste libriste. A l'inverse un outil de création de jeu accessible à des non codeurs serait un vrai plus
L'un ne va pas sans l'autre à mon avis.
le problème est complexe, et la solution pas forcément technique
Tu as parfaitement raison ! Dans ces cas là, une solution, c'est de faire des propositions, mais c'est aussi le risque de tomber dans le syndrome xkcd.
YAML étant un super set de JSON, je suis assez convaincu que la plupart des gens qui émettent du YAML émettent 90% de JSON (évidement, il y a 10% qui font foirer …).
Je ne crois pas. Parce qu'en YAML, on a plutôt l'habitude d'écrire des trucs comme ça :
foo:bar:1baz:-'toto'-'tata'qux:true
Et ce simple morceau n'est pas du tout du JSON. Le morceau de JSON équivalent serait :
Je ne comprends pas tes questions. Il s'agit juste de données qui sont lues au démarrage ou dynamiquement pour récupérer des informations. Et ce n'est pas un jeu en ligne, c'est juste un jeu solo.
Si le concept objet ne perce pas, c'est sans doute qu'il est trop complexe. Le concept de fichier est simple, tout le monde le comprend (par analogie avec le monde réel quotidien et immédiat), tout le monde peut l'appréhender facilement. Le concept objet, je pense que tu demandes à 10 personnes, tu auras 15 réponses différentes.
La hiérarchie d'un système de fichier est peu expressive pour trier ses données
Mam Michu ne comprend pas ce que c'est qu'une hiérarchie
Beaucoup de logiciels sont des vues de base de données (bibliothèques musicales, photos, … , client courriers électroniques)
Tes premiers constats sont tout simplement faux. Le fait même que tu utilises le mot fichier indique que tu as intégré un truc tout con apparu il y a plus de 30 ans et qui s'appelle la métaphore du bureau. C'est-à-dire que ton environnement numérique s'apparente à un vrai bureau. Et les fichiers sont bien organisés en dossier, qu'on met dans des classeurs, puis sur des étagères. Bref, une belle hiérarchie pour s'y retrouver. Et ça ne fait pas que faciliter le travail des secrétaires, c'est comme ça que tout le monde fait chez lui pour organiser un grand nombre de documents. Y compris d'ailleurs les documents multimédia ! Une étagère par thème de films, ou par genre musical, ou alors par ordre alphabétique, etc.
L'avantage de la hiérarchie de dossiers, c'est que chacun peut s'organiser comme bon lui semble à partir des mêmes briques de base. La vue base de données induit forcément une organisation que le développeur impose à ses utilisateurs et qui ne plaira pas à tout le monde. C'est juste un problème humain, pas technique. Il n'y a aucun paradigme connu par le plus grand nombre derrière les bibliothèques musicales. La seule fonctionnalité vraiment utilisée, c'est la fonction recherche, mais ça peut se greffer sur n'importe quelle vue, base de données ou fichiers. C'est juste un problème d'indexation, chose qu'on sait faire depuis pas mal de temps.
Pour faire bref : C++ n'a jamais eu l'intention d'empêcher de faire du mauvais code, au contraire je dirais même. Donc à quoi ça sert de comparer Rust à C++ dans ce cas ? C++ n'est même pas un compétiteur dans la catégorie des langages qui empêche l'utilisateur de faire des bêtises. La seule raison que je vois, c'est que Rust est supposé s'adresser à des gens qui font du C++ d'habitude. Mais c'est complètement raté parce que les gens qui utilisent C++, ils veulent pouvoir faire «n'importe quoi» de temps en temps (par exemple, pour les jeux, avoir des allocateurs mémoire particulier qui s'éloignent de ce que peut offrir le langage, chose quasi impossible à faire en Rust).
Ne mélangeons pas tout, le cas des taxis est assez complexe. Les taxis ont raison de gueuler : ils paient une licence très chères (plus que le prix de leur voiture) pour avoir le droit d'exercer un métier et à côté, il y a des gens qui font quasiment le même métier sans avoir besoin de payer une licence. De là, il y a deux possibilités : soit tout le monde paie une licence, soit on rachète les licences des taxis (mais qui et à quelle valeur ?). Dans les deux cas, ça va augmenter le nombre des taxis et donc ça va faire baisser les revenus par taxi. On va se retrouver avec des chauffeurs de taxis obligés de faire beaucoup d'heures pour avoir de quoi vivre dignement. Vous avez envie, vous, d'être emmené par un chauffeur de taxi qui aura déjà travaillé pendant 12 heures d'affilée ? S'il existe des professions régulées, c'est qu'il y a une bonne raison de les réguler, la concurrence libre et non-faussée ne résout pas tous les problèmes magiquement. Et sur le dossier des taxis, je pense que la concurrence tuera la qualité et la sécurité du service.
Ce n'est pas de l'aveuglement, personne ne prétend que C++ est parfait, loin de là. Mais sur les exemples données, les erreurs sont facilement détectables, y compris à la compilation.
Si je reprends certains des exemples :
Sur le premier, clang me sort l'erreur suivante (en gras) :
error: invalid operands to binary expression ('std::vector<int, std::allocator<int> >' and 'int')
{ return *__it == _M_value; }
Je veux dire, c'est difficile d'être plus clair, on ne peut pas comparer un vector et un int.
D'autant plus que son exemple C++ est moisi. Je propose plutôt ça comme exemple comparable :
error: invalid operands to binary expression ('Foo' and 'Foo')
{ return *__it < __val; }
Là, encore, c'est marqué, on ne peut pas comparer des Foo avec des Foo, bref comme Rust en gros. Et ces diagnostics vont s'améliorer dans la prochaine itération de C++ avec les concepts qui arrivent.
Sur la variable non-initialisée, ça fait très longtemps que GCC renvoie des warnings. Et sur l'exemple en question, il renvoie :
warning: ‘currmin’ may be used uninitialized in this function
Bref, comme Rust.
Sur l'exemple du switch, je trouve que c'est là qu'on atteint la mauvaise foi totale. Il ne respecte même pas la sémantique du langage. S'il faut un break, on met un break. Je ne vais pas décider dans mon coin tout seul que c'est con cette histoire de break et monter un exemple idiot comme ça où je montre que ce que je veux ne marche pas. Ben oui, ça pourrait difficilement être autrement. Surtout que son exemple provoque un warning :
warning: enumeration value 'UNKNOWN' not handled in switch
Sur l'exemple du for avec le point-virgule, pareil, on a un joli warning :
warning: for loop has empty body
Bref, dans ces quatre cas (sur dix), un compilateur C++ décent prévient l'utilisateur d'une erreur ou d'un risque d'erreur. Ça réduit son argumentation de 40%.
Je pourrais parler du constructeur par copie implicite où, si on fait un code isomorphe à celui de Rust, on utilise unique_ptr ou shared_ptr et pas besoin d'implémenter quoi que ce soit hormis le constructeur, tous les trucs par défaut fonctionneront sans problème, avec une sémantique claire. Parce que là, le code en Rust, on a du mal à voir sa sémantique : ça compile, ça fonctionne sans erreur, mais qu'y a-t-il dans a et dans _b à la sortie, je ne saurais le dire.
Le principal reproche qu'on peut faire de cet article c'est qu'il ne dis pas clairement que la comparaison est sous l'angle de la fiabilité des 2 langages.
Je ne le dirais pas comme ça. Sur le fond, sa comparaison est parfaitement idiote vu qu'il compare des choses pas vraiment comparables, sur tous les aspects. Mais ce qui importe, ce n'est pas ça, c'est que l'intention de l'auteur est de montrer à tous les dev C++ que le Rust c'est mieux et c'est fait pour eux, qu'ils auront une meilleure productivité et que leur vie sera plus belle. Mais je pense qu'avec ce genre de comparaison complètement farfelue, il se goure complètement. Parce qu'un dev C++ expérimenté, il ne fait pas ces erreurs débiles, ou il les détecte très rapidement (pour certaines de ces erreurs, il y a des warning, comme les variables non-initialisées).
Une comparaison rapide de Rust et C++ si vous êtes pressé
Dans le genre comparaison biaisée, je crois que celle-ci fait très fort. Personne ne code comme ça en C++ en 2014 (puisqu'on compare à un langage de 2014). C'est étouffant de mauvaise foi. J'aurais plutôt intitulé l'article : Comparaison entre Rust et un programmeur C++ d'une semaine qui essaie tous les trucs débiles possibles et imaginables. Oui, C++ permet de se tirer dans le pied, c'est marqué dessus, il n'a jamais prétendu que ce n'était pas possible, au contraire, c'est une feature. Alors à quoi ça sert d'en remettre une couche encore et encore et de comparer des choses pas comparables ?
Je ne suis pas l'auteur et je ne suis pas impliqué dans le développement, je ne suis qu'un utilisateur. Mais il existe un forum SFML sur lequel tu peux poser ta question. Les dev sont présents et te répondront je pense.
C et C++ sont si improductif au possible que presque tous les studios doivent lui ajouter un langage de script.
Je dirais plutôt que C/C++ ne sont pas productifs out of the box pour les jeux et qu'il faut développer plein de petits trucs génériques qui servent dans tous les jeux (et qu'on retrouve dans tous les moteurs de jeux).
Dans ce genre de cas, le C est beaucoup mieux. Parce que les cores sont chargés dynamiquement, donc va trouver le nom de la fonction à appeler en C++ avec le mangling ! Sans compter qu'il faut bien connaître l'objet sur lequel appliquer une méthode donc tu es obligé d'avoir au moins une méthode statique (ou une fonction C). Et ça, c'est sans parler du fait que de nombreux cores sont déjà implémentés en C et que je pense qu'ils n'ont pas envie de passer à C++. De toute façon, si l'API version 2 est bien foutu, ça pourra s'intégrer très bien avec du C++ (pour l'instant, ce n'est pas le cas).
Bien tenté, mais j'ai parlé de l'API de Retro (mon wrapper), pas de Libretro
Le nom m'a induit en erreur, mea culpa ! ;)
J'ai vu ce dépôt ARB récement et l'inclusion d'un pointeur utilisateur était un de mes souhaits les plus chers pour une deuxième version de l'API, je suis content d'apprendre que ça viendra, je pourrai alors abandonner mes gros hacks ! =)
Ce n'est pas encore parfait. Pour l'instant, ils l'ont mis en dernière position. Or, il est plus intelligent de le mettre en première position de manière à pouvoir appeler directement une méthode d'un objet plutôt que de transférer l'appel en changeant l'ordre des arguments.
Il y a eu aussi un débat sur ce qui devait faire partie de l'API (donc avec des fonctions ou des callbacks directs) et ce qui devait faire partie d'extensions (donc appelé via la fonction générique retro_environment avec ses multiples constantes). Là dessus je suis assez mitigé.
[^] # Re: Le plus gros manque ?
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 4.
Tu te rends compte que tes exemples ne font qu'apporter de l'eau à mon moulin ? Linux, comme dit avant moi, n'est pas parti de rien, il s'est appuyé sur des briques déjà existantes à l'époque, notamment le userland GNU, et GCC. Blender et OpenOffice : beaux exemples de développements intensifs… non-libres. Et tu décris toi-même le processus en cours chez LibreOffice : ils utilisent un maximum des briques libres. C'est naturel, c'est la manière intrinsèque de fonctionner du libre. Quant à Firefox, il a commencé comme un navigateur basé sur une brique libre (Gecko) plutôt que par un développement from scratch.
On ne fait pas des bons jeux avec des hacks dans le libre. Le libre a la particularité de ne pas fonctionner avec des logiciels jetables mais avec du durable et du réutilisable.
Il ne s'agit pas de ça, il s'agit de partager des briques de base.
Je me suis peut-être mal exprimé mais il ne s'agit pas de partager des assets mais des formats. Si je reprends l'exemple des dialogues, on peut très bien avoir un format unique mais des dialogues différents pour chaque jeu. L'avantage du format unique est qu'il permet d'avoir des outils commun pour le manipuler.
Sans doute ;)
Ils ont du mal, pas tant dans le code que dans l'organisation.
[^] # Re: crossroad
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.
Alors je dois utiliser la version de dev ;) La première fois, j'avais utilisé le dépôt git, et du coup, j'ai continué. C'était étiquetée 0.5 dans le
--version
donc, je pensais que ça correspondait à cette version.Plus précisément, j'utilisais la version dont le dernier commit est
f8c6b9e4d8afa4635a475c92af0a058a42bd76da
(Date: Fri Oct 10 01:35:11 2014 +0200).[^] # Re: tmx
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 4.
J'ajoute que la standardisation, ça servirait aussi à ça, à documenter proprement et à décrire la compatibilité qu'on garantit.
[^] # Re: tmx
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 2.
Ouais, pas parfait. Déjà pour les changements de la dernière version, c'était pas hyper clair au début pour moi. Et puis, en fouillant un peu, j'ai trouvé. La doc est pas super bien foutue, on ne sait pas trop ce qui est obligatoire et ce qui ne l'est pas, notamment dans les attributs (je crois qu'il y a des issues ouvertes à ce sujet sur github). Et d'ailleurs, ça peut changer d'une version à l'autre. Récemment, j'ai eu un cas : la longueur et la largeur sont facultatives, y compris pour un rectangle ou une ellipse (je ne crois pas que c'était le cas avant). La valeur par défaut est 0 pour les deux. Et le pire, c'est que dans l'éditeur, ça apparaît avec une largeur et une longueur non-nulles.
[^] # Re: crossroad
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.
Ha ben, facile : ça fait le boulot, c'est pas dur à utiliser, ça me convient parfaitement. La documentation est suffisante, quand je me suis remis dedans, j'ai relu la manpage et hop, c'était parti.
Il n'y a pas déjà ça dans la version actuelle ? En tout cas, je crois qu'il y a une notion de projet et à la fin, on peut avoir un gros zip avec tout ce qu'on a compilé. J'ai bien aimé ça (même si ça n'a pas fonctionné au final).
[^] # Re: Non a YAML !
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 5.
Tu parles sans doute de ça (mais ça va mieux avec un lien). Et ça ne me paraît pas plus lisible que du YAML. C'est une espèce de mix entre du JSON et de l'INI. Super ! Et puis ce n'est même pas packagé dans Debian, ça veut dire qu'il faut se farcir la compilation à la main. Bref, je vais garder mon baril de YAML pour l'instant.
[^] # Re: Le plus gros manque ?
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.
Je pense qu'on arrivera pas à ça sans avoir des formats standardisés. Pourquoi ? Parce que le libre ne se construit pas à grand coup de développements intensifs mais sur des briques de bases qu'on empile petit à petit. Et dans les fondations, il y a des standard. C'est une manière de distribuer la charge de travail sans que personne ne se concerte.
Quand il y a un bon éditeur avec des fonctions d'export, c'est parfait. C'est aussi le cas avec Tiled, même si tout le monde utilise le format de Tiled. Mais à terme, il se peut qu'il y ait un export vers un format plus générique et/ou plus commun.
Hahahaha !
L'un ne va pas sans l'autre à mon avis.
Tu as parfaitement raison ! Dans ces cas là, une solution, c'est de faire des propositions, mais c'est aussi le risque de tomber dans le syndrome xkcd.
[^] # Re: Non a YAML !
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.
Je ne crois pas. Parce qu'en YAML, on a plutôt l'habitude d'écrire des trucs comme ça :
Et ce simple morceau n'est pas du tout du JSON. Le morceau de JSON équivalent serait :
[^] # Re: formats de données?
Posté par rewind (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 1.
Je ne comprends pas tes questions. Il s'agit juste de données qui sont lues au démarrage ou dynamiquement pour récupérer des informations. Et ce n'est pas un jeu en ligne, c'est juste un jeu solo.
[^] # Re: Métaphore du bureau
Posté par rewind (Mastodon) . En réponse au journal Pourquoi on est bloqué, vers où on va peut-être pas. Évalué à 3.
Si le concept objet ne perce pas, c'est sans doute qu'il est trop complexe. Le concept de fichier est simple, tout le monde le comprend (par analogie avec le monde réel quotidien et immédiat), tout le monde peut l'appréhender facilement. Le concept objet, je pense que tu demandes à 10 personnes, tu auras 15 réponses différentes.
# Métaphore du bureau
Posté par rewind (Mastodon) . En réponse au journal Pourquoi on est bloqué, vers où on va peut-être pas. Évalué à 5.
Tes premiers constats sont tout simplement faux. Le fait même que tu utilises le mot fichier indique que tu as intégré un truc tout con apparu il y a plus de 30 ans et qui s'appelle la métaphore du bureau. C'est-à-dire que ton environnement numérique s'apparente à un vrai bureau. Et les fichiers sont bien organisés en dossier, qu'on met dans des classeurs, puis sur des étagères. Bref, une belle hiérarchie pour s'y retrouver. Et ça ne fait pas que faciliter le travail des secrétaires, c'est comme ça que tout le monde fait chez lui pour organiser un grand nombre de documents. Y compris d'ailleurs les documents multimédia ! Une étagère par thème de films, ou par genre musical, ou alors par ordre alphabétique, etc.
L'avantage de la hiérarchie de dossiers, c'est que chacun peut s'organiser comme bon lui semble à partir des mêmes briques de base. La vue base de données induit forcément une organisation que le développeur impose à ses utilisateurs et qui ne plaira pas à tout le monde. C'est juste un problème humain, pas technique. Il n'y a aucun paradigme connu par le plus grand nombre derrière les bibliothèques musicales. La seule fonctionnalité vraiment utilisée, c'est la fonction recherche, mais ça peut se greffer sur n'importe quelle vue, base de données ou fichiers. C'est juste un problème d'indexation, chose qu'on sait faire depuis pas mal de temps.
[^] # Re: Comparaison ?
Posté par rewind (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 2.
Pour faire bref : C++ n'a jamais eu l'intention d'empêcher de faire du mauvais code, au contraire je dirais même. Donc à quoi ça sert de comparer Rust à C++ dans ce cas ? C++ n'est même pas un compétiteur dans la catégorie des langages qui empêche l'utilisateur de faire des bêtises. La seule raison que je vois, c'est que Rust est supposé s'adresser à des gens qui font du C++ d'habitude. Mais c'est complètement raté parce que les gens qui utilisent C++, ils veulent pouvoir faire «n'importe quoi» de temps en temps (par exemple, pour les jeux, avoir des allocateurs mémoire particulier qui s'éloignent de ce que peut offrir le langage, chose quasi impossible à faire en Rust).
[^] # Re: Linux power!
Posté par rewind (Mastodon) . En réponse à la dépêche Vulnérabilité dans Git et Mercurial sur certains systèmes de fichiers (FAT, NTFS, HFS+, etc.). Évalué à 9.
tU pEnSeS vRaImEnT qUe Ça Ne FaIs AuCuNe DiFféReNcE, zEnItRaM ?
[^] # Re: Et dire qu'il suffirait de réfléchir avant...
Posté par rewind (Mastodon) . En réponse au journal Google News quitte l'Espagne. Évalué à 3.
Depuis la loi du 1er octobre 2014 (article 6), ce n'est plus le cas. Mais ça ne concerne que les nouvelles licences délivrées.
[^] # Re: Et dire qu'il suffirait de réfléchir avant...
Posté par rewind (Mastodon) . En réponse au journal Google News quitte l'Espagne. Évalué à 1.
Ne mélangeons pas tout, le cas des taxis est assez complexe. Les taxis ont raison de gueuler : ils paient une licence très chères (plus que le prix de leur voiture) pour avoir le droit d'exercer un métier et à côté, il y a des gens qui font quasiment le même métier sans avoir besoin de payer une licence. De là, il y a deux possibilités : soit tout le monde paie une licence, soit on rachète les licences des taxis (mais qui et à quelle valeur ?). Dans les deux cas, ça va augmenter le nombre des taxis et donc ça va faire baisser les revenus par taxi. On va se retrouver avec des chauffeurs de taxis obligés de faire beaucoup d'heures pour avoir de quoi vivre dignement. Vous avez envie, vous, d'être emmené par un chauffeur de taxi qui aura déjà travaillé pendant 12 heures d'affilée ? S'il existe des professions régulées, c'est qu'il y a une bonne raison de les réguler, la concurrence libre et non-faussée ne résout pas tous les problèmes magiquement. Et sur le dossier des taxis, je pense que la concurrence tuera la qualité et la sécurité du service.
[^] # Re: Comparaison ?
Posté par rewind (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 4.
Ce n'est pas de l'aveuglement, personne ne prétend que C++ est parfait, loin de là. Mais sur les exemples données, les erreurs sont facilement détectables, y compris à la compilation.
Si je reprends certains des exemples :
Sur le premier, clang me sort l'erreur suivante (en gras) :
Je veux dire, c'est difficile d'être plus clair, on ne peut pas comparer un
vector
et unint
.D'autant plus que son exemple C++ est moisi. Je propose plutôt ça comme exemple comparable :
Et là, clang sort une erreur en gras :
Là, encore, c'est marqué, on ne peut pas comparer des
Foo
avec desFoo
, bref comme Rust en gros. Et ces diagnostics vont s'améliorer dans la prochaine itération de C++ avec les concepts qui arrivent.Sur la variable non-initialisée, ça fait très longtemps que GCC renvoie des warnings. Et sur l'exemple en question, il renvoie :
Bref, comme Rust.
Sur l'exemple du switch, je trouve que c'est là qu'on atteint la mauvaise foi totale. Il ne respecte même pas la sémantique du langage. S'il faut un
break
, on met unbreak
. Je ne vais pas décider dans mon coin tout seul que c'est con cette histoire debreak
et monter un exemple idiot comme ça où je montre que ce que je veux ne marche pas. Ben oui, ça pourrait difficilement être autrement. Surtout que son exemple provoque un warning :Sur l'exemple du
for
avec le point-virgule, pareil, on a un joli warning :Bref, dans ces quatre cas (sur dix), un compilateur C++ décent prévient l'utilisateur d'une erreur ou d'un risque d'erreur. Ça réduit son argumentation de 40%.
Je pourrais parler du constructeur par copie implicite où, si on fait un code isomorphe à celui de Rust, on utilise
unique_ptr
oushared_ptr
et pas besoin d'implémenter quoi que ce soit hormis le constructeur, tous les trucs par défaut fonctionneront sans problème, avec une sémantique claire. Parce que là, le code en Rust, on a du mal à voir sa sémantique : ça compile, ça fonctionne sans erreur, mais qu'y a-t-il dansa
et dans_b
à la sortie, je ne saurais le dire.[^] # Re: Comparaison ?
Posté par rewind (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 2.
Je ne le dirais pas comme ça. Sur le fond, sa comparaison est parfaitement idiote vu qu'il compare des choses pas vraiment comparables, sur tous les aspects. Mais ce qui importe, ce n'est pas ça, c'est que l'intention de l'auteur est de montrer à tous les dev C++ que le Rust c'est mieux et c'est fait pour eux, qu'ils auront une meilleure productivité et que leur vie sera plus belle. Mais je pense qu'avec ce genre de comparaison complètement farfelue, il se goure complètement. Parce qu'un dev C++ expérimenté, il ne fait pas ces erreurs débiles, ou il les détecte très rapidement (pour certaines de ces erreurs, il y a des warning, comme les variables non-initialisées).
# Comparaison ?
Posté par rewind (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 10.
Dans le genre comparaison biaisée, je crois que celle-ci fait très fort. Personne ne code comme ça en C++ en 2014 (puisqu'on compare à un langage de 2014). C'est étouffant de mauvaise foi. J'aurais plutôt intitulé l'article : Comparaison entre Rust et un programmeur C++ d'une semaine qui essaie tous les trucs débiles possibles et imaginables. Oui, C++ permet de se tirer dans le pied, c'est marqué dessus, il n'a jamais prétendu que ce n'était pas possible, au contraire, c'est une feature. Alors à quoi ça sert d'en remettre une couche encore et encore et de comparer des choses pas comparables ?
[^] # Re: La SDL ne gère pas que le graphisme
Posté par rewind (Mastodon) . En réponse à la dépêche Sortie de SFML 2.2. Évalué à 3.
D'un autre côté, cette news sur SFML est dans l'espace de rédaction depuis mai dernier…
[^] # Re: La SDL ne gère pas que le graphisme
Posté par rewind (Mastodon) . En réponse à la dépêche Sortie de SFML 2.2. Évalué à 1.
Je suis sans doute allé un peu vite mais bon, ce n'est pas faux de dire que SFML est plus complète que SDL.
[^] # Re: Tutoriel pour android / cross-plateform
Posté par rewind (Mastodon) . En réponse à la dépêche Sortie de SFML 2.2. Évalué à 3.
Je ne suis pas l'auteur et je ne suis pas impliqué dans le développement, je ne suis qu'un utilisateur. Mais il existe un forum SFML sur lequel tu peux poser ta question. Les dev sont présents et te répondront je pense.
[^] # Re: Mauvais outils
Posté par rewind (Mastodon) . En réponse au journal A la recherche de contributions pour mon jeu. Évalué à 3.
Ok, je m'y mets après Akagoria :P
[^] # Re: Mauvais outils
Posté par rewind (Mastodon) . En réponse au journal A la recherche de contributions pour mon jeu. Évalué à 4.
Je dirais plutôt que C/C++ ne sont pas productifs out of the box pour les jeux et qu'il faut développer plein de petits trucs génériques qui servent dans tous les jeux (et qu'on retrouve dans tous les moteurs de jeux).
[^] # Re: libretro
Posté par rewind (Mastodon) . En réponse au journal Retro 0.1. Évalué à 2.
Dans ce genre de cas, le C est beaucoup mieux. Parce que les cores sont chargés dynamiquement, donc va trouver le nom de la fonction à appeler en C++ avec le mangling ! Sans compter qu'il faut bien connaître l'objet sur lequel appliquer une méthode donc tu es obligé d'avoir au moins une méthode statique (ou une fonction C). Et ça, c'est sans parler du fait que de nombreux cores sont déjà implémentés en C et que je pense qu'ils n'ont pas envie de passer à C++. De toute façon, si l'API version 2 est bien foutu, ça pourra s'intégrer très bien avec du C++ (pour l'instant, ce n'est pas le cas).
[^] # Re: libretro
Posté par rewind (Mastodon) . En réponse au journal Retro 0.1. Évalué à 4.
Le nom m'a induit en erreur, mea culpa ! ;)
Ce n'est pas encore parfait. Pour l'instant, ils l'ont mis en dernière position. Or, il est plus intelligent de le mettre en première position de manière à pouvoir appeler directement une méthode d'un objet plutôt que de transférer l'appel en changeant l'ordre des arguments.
Il y a eu aussi un débat sur ce qui devait faire partie de l'API (donc avec des fonctions ou des callbacks directs) et ce qui devait faire partie d'extensions (donc appelé via la fonction générique
retro_environment
avec ses multiples constantes). Là dessus je suis assez mitigé.