Cela ne marche pas comme ça sur windows et linux. La page de protection existe, et cela finit en crash. La pile ne peut jamais grossir. Pour iOS cela m'étonnerait aussi.
certains éditeurs de compilateurs C ont porté le langage sur des machines qui n'avaient pas à proprement parle de pile.
Tu parles peut être d'une gestion hardware d'une pile. Sur un processeur RISC, il n'y pas forcément de gestion hardware spécifique, il y a juste une convention d'usage de registre. Mais je ne vois pas comment tu peux fonctionner sans pile du tout. Il faut bien gérer les adresses de retour des fonctions.
Concernant la taille de la pile, ça dépend de l'archi (genre sur IA-64, je crois que la pile était ridiculement petite, genre 15kio
Cela m'étonnerait beaucoup. ça limiterait beaucoup trop la profondeur d'appel de fonction (appel récursif par exemple) (2Mb ici : https://blogs.msdn.microsoft.com/slavao/2005/03/19/be-aware-ia64-stack-size/ ). Comme rappelé dans le poste du blog, avoir une stack minuscule peut être utile si on utilise plein de threads (4ko par exemple à condition de ne rien allouer dedans).
De mémoire, tu peux le fixer sous Linux, même cela fait parti du binaire sous Windows, mais ce n'est pas conseillé de la changer (mais je ne sais plus pourquoi).
Oui, tu peux la changer, mais en pratique, tu ne le fais pas.
Donc, moins il y a des choses dans la pile, mieux tu te portes. D'ailleurs, une grosse pile ailleurs dans le tas, pourrait faire l'affaire. Ocaml utilise une pile de 256Ko comme première zone mémoire. L'allocation est ultra rapide, justement parce que c'est une pile. Le GC bosse ensuite, si la donné sort d'un scoop.
On pourrait imaginer une allocation RAII, qui utilise une autre pile selon le même genre de fonctionnement.
J'aurais pu en parler d'ailleurs, la différence entre les fusibles lent capable de laisser passer des pic de courant, mais réagissant trop lentement pour empêcher la destruction de transistor, ou trop rapide, qui grillent a chaque appel de courant.
Dans un système critique, par exemple, les allocations dans le tas durant l’exécution peuvent être interdites. Du coup, allouer un tableau tampon temporaire dans la pile, si tu es sûr qu’il tient, a du sens.
C'est bien plus propre d'allouer un tableau statique de la taille maximum, cela évite une mauvaise surprise. Même en cas de mémoire contrainte, il faut bien pouvoir allouer la mémoire maximum, autant le faire au lancement du programme. Si tu utilises ce patterns souvent, je ne vois pas comment tu peux prouver que la stack est assez grande. A mon avis, ce genre d'appel est interdit en MISRA C.
(et si tu veux jouer, je pense qu'on pourrait faire les mêmes dépêches sur les "pièges" tarabiscotés avec que n'importe quel langage ayant un peu d'âge, bref un truc ayant vécu et dont ont a une histoire, ce qui arrive à n'importe quel langage utilisé)
Oui, mais quand on risque un crash ou une différence de sémantique par rapport au contenu du code, c'est quand même du lourd (plus que des trucs ésotérique dans les regex perl par exemple).
Il me semble que les VLA n'ont pas été intégrés car le risque est trop grand d'allouer plus d'espace que l'espace libre disponible dans la pile d'appel.
La taille de la pile est fixe donc, forcément, on peut débordé. C'est exactement le même problème en C. De mémoire, cette pile fait 8 Mo.
D'ailleurs, pourquoi ne pas allouer cette mémoire "ailleurs" tout en étant en RAII ? De toute façon mettre des objets de tailles variables dans la pile est une très mauvaise idée. (je me rend compte que cela doit revenir à utiliser un vector<> dans la pile)
Une invention est une solution technique à un problème technique. Ce que protège un brevet.
La "science" n'est pas brevetable. Découvrir le rôle d'un gène est de la simple compréhension du monde vivant, ce n'est pas une invention technologique, c'est de la science pure et dure.
Si il protège le procédé d'introduction du gène, l’agriculteur ne l'utilise pas pour reproduire les plantes, donc cela ne devrait pas le concerner.
Ces brevets sur le "vivant" brevettent en général un gène particulier, ce qui est absurde car il s'agit d'une découverte, et non d'une invention.
il me semble assez normal que quelqu'un ne peut puisse se les réapproprier et en tirer les bénéfices.
Il y a toujours eu des vendeurs de graines qui faisaient du croisement/sélection. Et les agriculteurs ont toujours réutilisé une partie de leurs graines pour la récolte suivante.
En quoi utiliser une nouvelle technique devrait changer ces pratiques ? Pourquoi enrichir encore plus le vendeur de graine ?
ok. Mes lectures remontent à loin, mais dans mon souvenir, il fallait faire attention à la manière de manipuler les objets pour éviter des recopies inutiles, par exemple. Il fallait ruser pour éviter des appels de constructeur en cascade. Mais c'est vrai que ce n'est pas le sujet de l'article.
Comme dit dans la phrase juste après que j'ai copié, le C++ semble définir une sémantique "attendue" pour le constructeur, qui permet des optimisations. Par contre, les compilateur ne contrôle en rien cette attente.
Pour un designer de langage, c'est la facilité : une faiblesse de génération est compensé par une optimisation qui fait des hypothèses sur le code, mais il est impossible de vérifier que le code respecte effectivement l’hypothèse.
Il manque définitivement un outil qui vérifie ce genre d'erreur, c'est pas humainement possible de tout se rappeler.
Le C tient en une centaine de page d'explication. Ocaml a peine plus, si on regarde sa doc en ligne.
A voir, si le C++ "moderne" peut se réduire à moins de 1000 pages…
Quand j'ai commencé à aimer C++, j'ai eu vent de toutes les subtilités des constructeurs. Et j'en avais conclus que c'était imbitable pour des fonctionnalités aussi basiques. Et je suis retourné au C et Perl.
Plus généralement, et contrairement au langage C, le standard C++ autorise le compilateur à effectuer toutes les optimisations possibles du moment que le résultat soit conforme à celui attendu par le code source.
[^] # Re: C'est de ta faute
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Microsoft s'accroche jusqu'au bout. Évalué à 8.
"Est-ce qu'il existe des ordinateurs sans OS sur le marché ?
OUI."
Euh… Tu as vu le genre de configuration ? Pour moins chère, tu as bien mieux mais avec Windows dessus.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 2.
Le tableau présente les valeurs par défaut, tout est réglable.
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 3.
L'agriculteur a perdu. C'est ça qui est hallucinant.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
Cela ne marche pas comme ça sur windows et linux. La page de protection existe, et cela finit en crash. La pile ne peut jamais grossir. Pour iOS cela m'étonnerait aussi.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
Tu parles peut être d'une gestion hardware d'une pile. Sur un processeur RISC, il n'y pas forcément de gestion hardware spécifique, il y a juste une convention d'usage de registre. Mais je ne vois pas comment tu peux fonctionner sans pile du tout. Il faut bien gérer les adresses de retour des fonctions.
Cela m'étonnerait beaucoup. ça limiterait beaucoup trop la profondeur d'appel de fonction (appel récursif par exemple) (2Mb ici : https://blogs.msdn.microsoft.com/slavao/2005/03/19/be-aware-ia64-stack-size/ ). Comme rappelé dans le poste du blog, avoir une stack minuscule peut être utile si on utilise plein de threads (4ko par exemple à condition de ne rien allouer dedans).
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 3.
Tu tournes en rond. Jamais l'agriculteur utilise cette technique pour faire pousser la plante, il ne peut donc pas violer de brevet dessus.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
Si, parce que c'est un déplacement, la pile est vidé, il faut donc mettre à jour les pointeurs.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
De mémoire, tu peux le fixer sous Linux, même cela fait parti du binaire sous Windows, mais ce n'est pas conseillé de la changer (mais je ne sais plus pourquoi).
Oui, tu peux la changer, mais en pratique, tu ne le fais pas.
Donc, moins il y a des choses dans la pile, mieux tu te portes. D'ailleurs, une grosse pile ailleurs dans le tas, pourrait faire l'affaire. Ocaml utilise une pile de 256Ko comme première zone mémoire. L'allocation est ultra rapide, justement parce que c'est une pile. Le GC bosse ensuite, si la donné sort d'un scoop.
On pourrait imaginer une allocation RAII, qui utilise une autre pile selon le même genre de fonctionnement.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
Oui, c'est ce que je disais à la fin du commentaire.
"La première sécurité est la liberté"
[^] # Re: Protection active
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Faites tourner les PCB !. Évalué à 3.
J'aurais pu en parler d'ailleurs, la différence entre les fusibles lent capable de laisser passer des pic de courant, mais réagissant trop lentement pour empêcher la destruction de transistor, ou trop rapide, qui grillent a chaque appel de courant.
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 5.
C'est bien plus propre d'allouer un tableau statique de la taille maximum, cela évite une mauvaise surprise. Même en cas de mémoire contrainte, il faut bien pouvoir allouer la mémoire maximum, autant le faire au lancement du programme. Si tu utilises ce patterns souvent, je ne vois pas comment tu peux prouver que la stack est assez grande. A mon avis, ce genre d'appel est interdit en MISRA C.
"La première sécurité est la liberté"
[^] # Re: euh ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 2.
Oui, mais quand on risque un crash ou une différence de sémantique par rapport au contenu du code, c'est quand même du lourd (plus que des trucs ésotérique dans les regex perl par exemple).
"La première sécurité est la liberté"
[^] # Re: What you see is not what you get
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 4.
La taille de la pile est fixe donc, forcément, on peut débordé. C'est exactement le même problème en C. De mémoire, cette pile fait 8 Mo.
D'ailleurs, pourquoi ne pas allouer cette mémoire "ailleurs" tout en étant en RAII ? De toute façon mettre des objets de tailles variables dans la pile est une très mauvaise idée. (je me rend compte que cela doit revenir à utiliser un vector<> dans la pile)
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 3.
Une invention est une solution technique à un problème technique. Ce que protège un brevet.
La "science" n'est pas brevetable. Découvrir le rôle d'un gène est de la simple compréhension du monde vivant, ce n'est pas une invention technologique, c'est de la science pure et dure.
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 3.
Si il protège le procédé d'introduction du gène, l’agriculteur ne l'utilise pas pour reproduire les plantes, donc cela ne devrait pas le concerner.
Ces brevets sur le "vivant" brevettent en général un gène particulier, ce qui est absurde car il s'agit d'une découverte, et non d'une invention.
Il y a toujours eu des vendeurs de graines qui faisaient du croisement/sélection. Et les agriculteurs ont toujours réutilisé une partie de leurs graines pour la récolte suivante.
En quoi utiliser une nouvelle technique devrait changer ces pratiques ? Pourquoi enrichir encore plus le vendeur de graine ?
"La première sécurité est la liberté"
[^] # Re: euh ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
ok. Mes lectures remontent à loin, mais dans mon souvenir, il fallait faire attention à la manière de manipuler les objets pour éviter des recopies inutiles, par exemple. Il fallait ruser pour éviter des appels de constructeur en cascade. Mais c'est vrai que ce n'est pas le sujet de l'article.
"La première sécurité est la liberté"
[^] # Re: euh ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 5.
Comme dit dans la phrase juste après que j'ai copié, le C++ semble définir une sémantique "attendue" pour le constructeur, qui permet des optimisations. Par contre, les compilateur ne contrôle en rien cette attente.
Pour un designer de langage, c'est la facilité : une faiblesse de génération est compensé par une optimisation qui fait des hypothèses sur le code, mais il est impossible de vérifier que le code respecte effectivement l’hypothèse.
Il manque définitivement un outil qui vérifie ce genre d'erreur, c'est pas humainement possible de tout se rappeler.
Le C tient en une centaine de page d'explication. Ocaml a peine plus, si on regarde sa doc en ligne.
A voir, si le C++ "moderne" peut se réduire à moins de 1000 pages…
"La première sécurité est la liberté"
[^] # Re: euh ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 5.
Oui mais en quoi est-ce différent pour le C ?
"La première sécurité est la liberté"
# euh ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 6.
Quand j'ai commencé à aimer C++, j'ai eu vent de toutes les subtilités des constructeurs. Et j'en avais conclus que c'était imbitable pour des fonctionnalités aussi basiques. Et je suis retourné au C et Perl.
Source ? Vous pensez à quoi ?
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 4.
Ce qui totalement absurde quand on parle de nature, je trouve dingue que des personnes censés ne trouveen pas ça dingue.
Monsento n'a rien inventer il a juste réutiliser un gène.
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 2.
Ben non puisqu'il n'a pas le droit de les utiliser.
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 1.
En l’occurrence, les graines n'appartiennent pas à l'agriculteur.
"La première sécurité est la liberté"
[^] # Re: Salade composée
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Faut-il renoncer à se rétribuer quand on produit un bien commun ?. Évalué à 2.
Non, ce n'est pas le sujet.
Le sujet est : en quoi des plantes qui poussent sur un champs appartiennent plus à Monsanto, qu'au propriétaire du champs ?
"La première sécurité est la liberté"
[^] # Re: Moteurs et fréquence de découpage
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Les actifs, au boulot !. Évalué à 3.
A priori, non, mais la théorie dit que tout moteur tourne très bien avec 10 ou 20 khz de hashage. Ce qui est faux en pratique.
"La première sécurité est la liberté"
[^] # Re: Quelques rectifications.
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Les actifs, au boulot !. Évalué à 0.
Tu es un multi de "Christophe Duparquet" ? tu ne lui rappelle pas non plus les règles de bienséance ?
"La première sécurité est la liberté"