Un autre exemple qui n'est pas un draft mais bel et bien la version ISO, Ada 2012.
D'ailleurs, cela a été le cas pour toutes les versions de la norme.
Il me semble qu'il s'agit en fait d'une volonté du groupe de normalisation plus que de l'organisme ISO lui-même, ici c'est l'ARG (Ada Rapporteur Group codé ISO/IEC JTC 1/SC 22/WG 9) qui s'y colle.
J'avoue n'avoir pas eu à faire ce genre de manip dans mon code C++ qui, au final, était majoritairement plus du C with classes écrit from scratch qu'autre chose.
Et du coup, les seuls templates que j'ai fait, c'étaient des génériques Java (sans interface) ou Ada (avec interfaces compilables).
Il contiennent par exemple l’implémentation complète des templates alors même que pour utiliser une bibliothèque compilée, les templates ne servent plus à rien : ont ne peut utiliser que ceux qui ont été explicitement construits et toute la machinerie d’automatisation qui va avec est perdue.
Là, je ne comprends pas (ceci dit, je n'ai plus fait de C++ depuis 15 ans alors c'est normal). Typiquement, la STL regorge de définitions de templates qu'on peut utiliser en les instanciant dans son propre code. Du coup, je veux bien un petit exemple :)
La frontière .h/.cpp actuelle n’est vraiment qu’un reliquat historique, et C++ ne sépare pas bien du tout les interfaces des implémentations, à l’inverse de ce qui se fait dans d’autres langages
Pour parler de ce que je connais, par exemple, l’avant et l’après « contains » d’un module Fortran.
Factuellement, tu a un sacré paquets de développeurs qui arrivent à s'en dispenser ;)
Oui, effectivement, j'en fais partie si tu parles du Java ou du Python :D
Mais ça ne veut pas dire que je trouve ça bien.
D'ailleurs, ça marche bien quand tu as accès aux sources dès que tu as du compilé sans les sources, c'est quand même mieux d'avoir des interfaces, non ? ;)
la dualité .h/.cpp qui n’apporte que de la confusion.
Alors autant je trouve que le système hérité du C de header via le macro-processeur est pourri (oui, oui, on peut importer un .cpp dans un .h), autant je trouve indispensable de séparer l'interface de l'implémentation.
Du coup, je veux bien que tu m'expliques en quoi cela apporte de la confusion.
Je ne pense pas que raisonner en fréquence soit judicieux, surtout sur 15 ans. La fréquence ne fait pas tout dans un processeur et ne constitue qu'un paramètre du calcul de sa puissance et de celle de l'ordinateur. Il faut aussi regarder les I/O, les latences, le nombre d'instructions par cycle, etc.
Certes mais tout dépend aussi de ce que l'on nomme IoT. Si c'est pour avoir une simple remontée d'un capteur de pression ou de température sur le réseau, ça me semble beaucoup. Alors oui, le nombre d'instructions par cycle va jouer mais je doute qu'on soit sur un processeur qui ait besoin de trois cycles pour faire une addition.
une très forte orientation vers l'IoT: petit form-factor, sobre en énergie mais également peu performant.
580Mhz pour de l'IoT ? On est quand même proche des configurations utilisées il y a 15 ans pour faire du commande-contrôle industriel.
Par contre, du coup, les 64/128Mo de RAM, ça fait un peu cheap par rapport aux bécanes de l'époque.
Au final, je ne sais pas si on peut dire que c'est pour de l'IoT. D'ailleurs, je n'ai pas dû bien chercher mais je n'ai pas trouvé les consommations électriques.
Pourtant, il y a eu de beaux bijoux tels que les Goupils, https://fr.wikipedia.org/wiki/SMT_Goupil mais ce fut Thomson qui fut retenu pour équiper les écoles en France, dommage.
Pour être vraiment exact, il y avait bien des Goupils, le nanoréseau Thomson étant administré par une machine compatible IBM PC. Dans l'école où travaillait ma mère, il y avait bien un petit renard :)
lorsque je suis à pieds, avant de traverser sur les passages piétons, même si j'ai priorité, je vérifie qu'il n'y a pas un taré en voiture qui arrive trop vite
Je fais pareil mais je rajouterai aussi que je fais pareil au feu rouge avec les vélos qui sont assez nombreux à trouver que le rouge n'est que décoratif.
Si la réponse ne vous plait pas, changez de question en "pourquoi veut-on autant de fonctionnalités ?".
C'est pas ça le problème, le problème, c'est
Donc on développe plus vite
On veut juste tout de suite un truc qui marchotte plutôt que d'avoir un truc un peu plus léché.
Le problème, c'est que c'est inhérent à l'époque et pas limité à l'informatique.
des choses plus testables et mieux testées qu'avant.
Alors ça, tu peux oublier. Il y a une quantité de softs où tu te demandes si la procédure d'installation a été testée, si la compilation par un tiers a été testée (le fameux "ça compile chez moi")…
Et heureusement qu'il y a des softs anciens qui ont été testés et qui étaient testables comme les métros, les avions et autres joyeusetés.
D'une, le lien ne fonctionne pas, il faut se rabattre sur un bon vieux copier/coller.
De deux, la dépêche que tu pointes précise bien que ce sont les gens de ScyllaDb qui annoncent être 10 fois plus rapide. Si, sur le papier, je me dis pourquoi pas, ScyllaDb reste une boîte commercial alors je les vois mal dire que leur ré-implémentation est juste aussi rapide que du Java.
Alors oui, le Java, c'est plus lent (cf. Benchmark game) mais bon, c'est pas non plus x10 à tous les coups.
Moi, je veux bien le faire mais qu'est-ce qui me dit qu'en moulant, on ne va pas me demander subrepticement mon numéro de carte bancaire ou essayer de me vendre je ne sais quel obscur jeu addictif ?
les “intent” déclarent les intentions d’utilisation d’une variable et laissent le compilateur libre de choisir le passage par référence ou par valeur
Au final, c'est pareil en Ada et c'est ce qui est dit dans le wikibook
The parameter passing method depends on the type of the parameter. A rule of thumb is that parameters fitting into a register are passed by copy, others are passed by reference. For certain types, there are special rules, for others the parameter passing mode is left to the compiler (which you can assume to do what is most sensible). Tagged types are always passed by reference.
Explicitly aliased parameters and access parameters specify pass by reference.
C'est au final au compilateur de choisir sauf si le développeur veut forcer une manière de passer les arguments et dans ce cas, on peut passer par des pointeurs.
D'ailleurs pour faciliter le masquage de la sémantique des pointeurs, Ada 2012 a introduit l'aspect Implicit_Dereference qui permet de ne pas avoir à utiliser un .all.
mais je ne connais aucun langage permettant facilement le choix entre copie/référence, const/mutable
Tu ne fais pas d'effort, il suffit de se documenter sur Ada :)
proceduretest(A: inInteger)-- Passage par copie car tient sur un registre mais A est constant dans le corpsproceduretest(A: inBigObject)-- Passage par référence car trop gros mais toujours constant dans le corpsproceduretest(A: outInteger)-- La valeur initiale n'a pas d'importance mais là, c'est forcément un référenceproceduretest(A: inoutInteger)-- Les deux cas précédentsproceduretest(A: inaccessBigObject)-- Là, on a clairement affaire à un pointeur qu'il faut déréférencerproceduretest(A: innotnullaccessBigObject)-- pareil mais on sait qu'il ne sera pas nulproceduretest(A: inaccessconstantBigObject)-- et celui-là, on ne peut pas modifier le pointé
Je n'ai pas mis d'exemple mais lorsque l'on passe un objet issu d'un type taggué (en gros, un objet qui autorise la POO), celui-ci est forcément passé par référence.
Ça foutrait trop le bordel dans la synthèse vocale existante mais je vais essayer de penser à trapper les exceptions au plus haut pour les envoyer au bout de code qui va bien 😀
Vu qu'on gère la concurrence, ça sera plus propre 😉
[^] # Re: Est-ce seulement possible?
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Pour la publication de la norme PDF 2.0 en CC BY-ND. Évalué à 3.
Un autre exemple qui n'est pas un draft mais bel et bien la version ISO, Ada 2012.
D'ailleurs, cela a été le cas pour toutes les versions de la norme.
Il me semble qu'il s'agit en fait d'une volonté du groupe de normalisation plus que de l'organisme ISO lui-même, ici c'est l'ARG (Ada Rapporteur Group codé ISO/IEC JTC 1/SC 22/WG 9) qui s'y colle.
[^] # Re: En finir avec les jeux natifs?
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Google Stadia : une chance pour le jeu sous Linux (desktop) ?. Évalué à 4.
Finalement, le Network Computer avait juste 20 ans d'avance :D
[^] # Re: Expressivité
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Les 7 étapes pour devenir un programmeur Go.. Évalué à 2.
Super, merci ! Maintenant, j'ai compris.
J'avoue n'avoir pas eu à faire ce genre de manip dans mon code C++ qui, au final, était majoritairement plus du C with classes écrit from scratch qu'autre chose.
Et du coup, les seuls templates que j'ai fait, c'étaient des génériques Java (sans interface) ou Ada (avec interfaces compilables).
[^] # Re: Expressivité
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Les 7 étapes pour devenir un programmeur Go.. Évalué à 3.
Là, je ne comprends pas (ceci dit, je n'ai plus fait de C++ depuis 15 ans alors c'est normal). Typiquement, la STL regorge de définitions de templates qu'on peut utiliser en les instanciant dans son propre code. Du coup, je veux bien un petit exemple :)
Et moi des packages et des package body en Ada
[^] # Re: Pareil !
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Make with Ada troisième édition. Évalué à 2.
Moi, je dois dire que c'est ce projet-là qui me plaisait bien.
Il s'agit d'une super centrale inertielle avec 13 accéléromètres, rien que ça.
Bon, pour protester contre les résultats du concours, l'auteure a viré la description mais elle a fourni le lien sur Hackaday en commentaire.
[^] # Re: Expressivité
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Les 7 étapes pour devenir un programmeur Go.. Évalué à 2.
Oui, effectivement, j'en fais partie si tu parles du Java ou du Python :D
Mais ça ne veut pas dire que je trouve ça bien.
D'ailleurs, ça marche bien quand tu as accès aux sources dès que tu as du compilé sans les sources, c'est quand même mieux d'avoir des interfaces, non ? ;)
[^] # Re: Expressivité
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Les 7 étapes pour devenir un programmeur Go.. Évalué à 3.
Alors autant je trouve que le système hérité du C de header via le macro-processeur est pourri (oui, oui, on peut importer un .cpp dans un .h), autant je trouve indispensable de séparer l'interface de l'implémentation.
Du coup, je veux bien que tu m'expliques en quoi cela apporte de la confusion.
[^] # Re: Performances
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Marre des boards ARM (ep 2) ?. Évalué à 3.
Certes mais tout dépend aussi de ce que l'on nomme IoT. Si c'est pour avoir une simple remontée d'un capteur de pression ou de température sur le réseau, ça me semble beaucoup. Alors oui, le nombre d'instructions par cycle va jouer mais je doute qu'on soit sur un processeur qui ait besoin de trois cycles pour faire une addition.
# Performances
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Marre des boards ARM (ep 2) ?. Évalué à 3. Dernière modification le 28 novembre 2018 à 14:34.
580Mhz pour de l'IoT ? On est quand même proche des configurations utilisées il y a 15 ans pour faire du commande-contrôle industriel.
Par contre, du coup, les 64/128Mo de RAM, ça fait un peu cheap par rapport aux bécanes de l'époque.
Au final, je ne sais pas si on peut dire que c'est pour de l'IoT. D'ailleurs, je n'ai pas dû bien chercher mais je n'ai pas trouvé les consommations électriques.
# Ada-France
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche 4ᵉ édition de Paris Open Source Summit les 5 & 6 décembre 2018 #OSSParis18. Évalué à 3.
Ada-France y sera avec normalement des goodies, des experts, des démos… Et surtout plein de trucs à raconter :)
Viendez donc au stand A21
[^] # Re: RISC OS libéré
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche RISC OS libéré. Évalué à 2. Dernière modification le 14 novembre 2018 à 11:43.
Pour être vraiment exact, il y avait bien des Goupils, le nanoréseau Thomson étant administré par une machine compatible IBM PC. Dans l'école où travaillait ma mère, il y avait bien un petit renard :)
[^] # Re: mouaih...
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Enfin un maire qui a la tête sur les épaules. Évalué à 10.
Je fais pareil mais je rajouterai aussi que je fais pareil au feu rouge avec les vélos qui sont assez nombreux à trouver que le rouge n'est que décoratif.
[^] # Re: Ça prendrait combien de temps à développer sans cette lourdeur ?
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Un développeur qui dénonce. Évalué à 8.
C'est pas ça le problème, le problème, c'est
On veut juste tout de suite un truc qui marchotte plutôt que d'avoir un truc un peu plus léché.
Le problème, c'est que c'est inhérent à l'époque et pas limité à l'informatique.
Alors ça, tu peux oublier. Il y a une quantité de softs où tu te demandes si la procédure d'installation a été testée, si la compilation par un tiers a été testée (le fameux "ça compile chez moi")…
Et heureusement qu'il y a des softs anciens qui ont été testés et qui étaient testables comme les métros, les avions et autres joyeusetés.
[^] # Re: Y en a qui aiment...
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Java 11 est dehors. Évalué à 3.
Au risque de me répéter, on attend que ça. Fais donc une dépêche !
D'une, le lien ne fonctionne pas, il faut se rabattre sur un bon vieux copier/coller.
De deux, la dépêche que tu pointes précise bien que ce sont les gens de ScyllaDb qui annoncent être 10 fois plus rapide. Si, sur le papier, je me dis pourquoi pas, ScyllaDb reste une boîte commercial alors je les vois mal dire que leur ré-implémentation est juste aussi rapide que du Java.
Alors oui, le Java, c'est plus lent (cf. Benchmark game) mais bon, c'est pas non plus x10 à tous les coups.
[^] # Re: Y en a qui aiment...
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Java 11 est dehors. Évalué à 5.
En voilà une bonne idée ! Au moins, ça lancera des débats :D
[^] # Re: Ou tout simplement
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Le broutage "sûr". Évalué à 5. Dernière modification le 16 septembre 2018 à 09:19.
Moi, je veux bien le faire mais qu'est-ce qui me dit qu'en moulant, on ne va pas me demander subrepticement mon numéro de carte bancaire ou essayer de me vendre je ne sais quel obscur jeu addictif ?
[^] # Re: pouvoir exhorbitant...
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Chaque été depuis 9 ans, Altran enclenche une procédure de licenciement contre un délégué syndical. Évalué à 9.
Ce qui bien sûr est très agréable pour le salarié niveau ambiance :D
[^] # Re: Godbolt
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 3.
Au final, c'est pareil en Ada et c'est ce qui est dit dans le wikibook
C'est au final au compilateur de choisir sauf si le développeur veut forcer une manière de passer les arguments et dans ce cas, on peut passer par des pointeurs.
D'ailleurs pour faciliter le masquage de la sémantique des pointeurs, Ada 2012 a introduit l'aspect Implicit_Dereference qui permet de ne pas avoir à utiliser un .all.
Ainsi, une variable de type Accessor construite sur un pointeur d'Element donne directement le membre Data du type en question.
[^] # Re: Godbolt
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 10.
Tu ne fais pas d'effort, il suffit de se documenter sur Ada :)
Je n'ai pas mis d'exemple mais lorsque l'on passe un objet issu d'un type taggué (en gros, un objet qui autorise la POO), celui-ci est forcément passé par référence.
Pour les quelques curieux, voici les deux pages intéressantes sur le Wikibook, celle sur les passage de paramètres et celle des pointeurs.
[^] # Re: Point de vue pragmatique mais
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal «Understand the fact» la campagne de Arm contre le set d'instructions libre Risc-V. Évalué à 4. Dernière modification le 11 juillet 2018 à 10:03.
Petite précision, c'est sur le HiFive1 qui est plutôt un Arduino boosté pas sur le HiFive Unleashed qui est une toute autre bête :D
[^] # Re: Point de vue pragmatique mais
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal «Understand the fact» la campagne de Arm contre le set d'instructions libre Risc-V. Évalué à 3.
On peut même faire de l'Ada sans OS ;)
[^] # Re: Com commerciale...
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal «Understand the fact» la campagne de Arm contre le set d'instructions libre Risc-V. Évalué à -3.
T'es resté enfermé dans une grotte pendant 10 ans ?? :)
[^] # Re: Pas tant de ressources
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal L'État français adopte Matrix/Riot. Évalué à 5.
Ça foutrait trop le bordel dans la synthèse vocale existante mais je vais essayer de penser à trapper les exceptions au plus haut pour les envoyer au bout de code qui va bien 😀
Vu qu'on gère la concurrence, ça sera plus propre 😉
[^] # Re: Pas tant de ressources
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal L'État français adopte Matrix/Riot. Évalué à 4.
Merci de reconnaitre mon âme de poète :D
[^] # Re: Pas tant de ressources
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal L'État français adopte Matrix/Riot. Évalué à 3.
Merci
Sans problème, d'ailleurs, le langage n'est que la concrétisation d'une conception qui peut effectivement être de merde.
Voilà, en fait, c'est ça, je préfère les langages compilés et verbeux mais je le dis depuis le début que ce n'est que mon avis.