[Index] Software : Coin des développeurs :]

Pour les gens qui ont simplement envie de discuter sans souhaiter faire passer d'information particulière.
Message
Auteur
Avatar du membre
rauw
Fidèle
Messages : 106
Enregistré le : samedi 21 mars 2015 à 13:38

Re: Coin des développeurs :]

#706 Message par rauw » samedi 16 novembre 2019 à 12:45

Bubu a écrit :
samedi 16 novembre 2019 à 9:27
Je ne sais pas si vous connaissez le HLSL. High Level Shader Language. Ils sont marrants. C'est le langage de programmation des GPUs pour DirectX (Microsoft).
En fait c'est pas le language qui est haut niveau, ce sont les GPUs.
C'est assez dingue ce qu'ils sont capables de calculer. (Une simple instruction pour calculer un produit scalaire, ou un produit vectoriel, une seule instruction pour multiplier un vecteur par une matrice. Et maintenant, ils ont des cœurs dédiés au lancer de rayon. C'est complètement fou)

EDIT : Le HLSL (DirectX) et le GLSL (OpenGL) sont très proches et très simples d'accès. Ils utilisent la syntaxe du C.
La seule chose en plus, c'est qu'ils ont des types en plus, pour représenter les vecteurs et les matrices. Et des instructions qui permettent de les manipuler.

Je préfère le GLSL perso, car le vertex shader et le pixel shader sont indépendants. Deux programmes indépendants. 2 fichiers textes indépendants. Le pixel shader est appelé fragment shader sous OpenGL, et c'est plus juste car on ne sait pas quand on calcule le fragment s'il sera visible ou pas. Et ensuite les vertex shaders il n'en faut pas beaucoup. (Skybox, objets statiques, et skin meshes en gros). Alors que les fragments shaders il peut y en avoir beaucoup. Plus d'une dizaine minimum.
Sous OpenGL, on compile les 2 programmes (Vertex et Fragment shaders) en temps réel et on les relie. (link). En temps réel. Et cela constitue après un seul programme que le GPU exécute.

Quelle que soit la plateforme, le vertex shader, et le pixel shader ne se suivent pas dans le pipeline graphique.
Il y a plein d'étapes intermédiaires.
Le vertex shader est là pour les transformations matricielles essentiellement. µPour placer les sommets des objets dans la scène.
Ensuite il peut y avoir le geometry shader, qui crée à la volée de la géométrie nouvelle.
Après il peut y avoir le shader de tesselation en plus. Je n'ai jamais utilisé.

Le plus important c'est l'unité de rastérisation. Elle transforme les sommets calculés par le vertex shader en surface sur l'écran.
Et la projection est déjà appliquée à cet étage du pipeline.

Pour simplifier : vertex shader -> rasterisation -> pixel shader.

L'unité de rastérisation rempli les triangles en fournissant les coefficients d'interpolations, via coordonnées barycentriques.
Le problème c'est que cela ne marche pas pour remplir les textures, il faut en plus prendre en compte la projection.
Plus un point est profond, et plus il est petit.
Mais pas de pb, les GPUs gèrent cela automatiquement depuis leur création.
Oui je connais de nom, le HLSL avait été évoqué lors de ma lecture d'un tuto sur OpenGL et le GLSL (il faudrait d'ailleurs que je m'y remette un jour, car j'ai trouvé le sujet super intéressant !). En ce qui concerne les performances, il existe des objets OpenGL comme les Vertex Buffer Objects (VBO), Vertex Buffer Arrays (VBA) et Frame Buffer Objects (FBO). Les deux premiers permettent respectivement de stocker des données et appels de fonctions directement dans la carte graphique, ce qui permet de limiter les transferts "coûteux" entre le programme (RAM, voire même des données HDD, etc) et la carte graphique. Tandis que le FBO offre une efficace possibilité de rendus off-screen, y compris dans des textures (qui pourront être affichées dynamiquement dans une scène, comme à l'intérieur d'une TV).

D'ailleurs, en intelligence artificielle certains chercheurs cherchent également à réduire le "découplage" entre traitement d'informations et stockage en mémoire en utilisant de nouvelles structures moins "figées" et inspirées du fonctionnement de notre cerveau :
"Cette nouvelle capacité d’apprentissage va accélérer considérablement l’intelligence artificielle, estime Damien Ernst. Les ordinateurs actuels, même en deep learning, traitent les informations d’une part, et les stockent en mémoire d’autre part. Ce sont deux opérations distinctes. Notre cerveau effectue les deux en même temps en stockant les souvenirs dans les synapses. Avec ce nouveau modèle, les machines pourront aussi le faire." Mais bon, pas de chance Tertio, pour être pleinement efficaces, ces synapses artificielles doivent encore fonctionner à des températures proches du zéro absolu… Difficile pour une unité portable. "Brrr… Je suis probablement trop frileuse", grelotte la voix.

Source : https://www.lecho.be/culture/general/de ... 92888.html
Aucune démarche.

Avatar du membre
Bubu
Forcené
Messages : 5720
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#707 Message par Bubu » samedi 16 novembre 2019 à 18:06

rauw a écrit :
samedi 16 novembre 2019 à 12:45
Oui je connais de nom, le HLSL avait été évoqué lors de ma lecture d'un tuto sur OpenGL et le GLSL (il faudrait d'ailleurs que je m'y remette un jour, car j'ai trouvé le sujet super intéressant !). En ce qui concerne les performances, il existe des objets OpenGL comme les Vertex Buffer Objects (VBO), Vertex Buffer Arrays (VBA) et Frame Buffer Objects (FBO). Les deux premiers permettent respectivement de stocker des données et appels de fonctions directement dans la carte graphique, ce qui permet de limiter les transferts "coûteux" entre le programme (RAM, voire même des données HDD, etc) et la carte graphique. Tandis que le FBO offre une efficace possibilité de rendus off-screen, y compris dans des textures (qui pourront être affichées dynamiquement dans une scène, comme à l'intérieur d'une TV).
Le HLSL c'est pour DirectX.
Le GLSL, pour OpenGL.
Bref. Je pinaille. Car ce sont des langages très proches. Tous 2 basés sur le C.

J'ai plus d'expérience avec le HLSL car j'avais fait un petit moteur de Jeu 3D pour Windows (qui utilisait PhysX pour la physique), et j'ai codé beaucoup de shaders HLSL.

Pour le GLSL, c'était pour Android. (Java + GLSL), OpenGLes 2.0. Pour smart phone et tablette.
Pour de la 2D. Donc les notions de base suffisaient.
J'utilise des FBO pour faire des rendus sur texture. Je ne suis pas allé plus loin, pas besoin.
L'API que j'ai programmée pour Android utilise des "SpriteBatch".
En gros il y a deux méthodes :
-addSprite(), où on fournit les arguments du sprite, comme sa position dans l'atlas (texture qui contient tout), son angle, sa mise à l'échelle (taille), sa couleur de colorisation (pour les sprites en niveau de gris).
-draw() qui rend tous les sprites en un seul draw call. (Pour éviter les communications entre CPU et GPU).
Pour cela je crée un mesh dynamique, contenant des quads tous parallèles à l'écran. Et j'utilise une projection orthographique pour que les quads ne soient pas modifiés en taille lors de la projection.

A l'opposé de l'époque où l'on faisait tout pour tracer de la 3D avec du matériel fait pour la 2D, je fais tout pour tracer de la 2D, avec du matériel fait pour la 3D. :mrgreen:
J'ignore dans mon API, dans la couche du dessus, la profondeur, coordonnée z.
Après il y a des avantages évidents : je peux lisser les textures, faire des rotations, utiliser des shaders pour faire du normal mapping, je peux configurer l'alpha blending pour faire de l'émissif, etc...
Diagnostiqué autiste asperger, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
rauw
Fidèle
Messages : 106
Enregistré le : samedi 21 mars 2015 à 13:38

Re: Coin des développeurs :]

#708 Message par rauw » samedi 16 novembre 2019 à 19:00

Oui :) je voulais dire que le HLSL avait été évoqué dans un tuto (celui d'OpenClassrooms, version 3.3) que j'ai lu, mais je ne disais qu'il était destiné à OpenGL. De mémoire il y avait aussi le Gg qui fut cité, crée par Nvidia et apparemment compatible avec OpenGL. WebGL est disponible sur les navigateurs et demande des notions en JS. J'hésite entre les deux pour me lancer dans un projet.
Aucune démarche.

Avatar du membre
Bubu
Forcené
Messages : 5720
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#709 Message par Bubu » jeudi 5 décembre 2019 à 14:12

Juste pour gueuler aussi :
Avez-vous déjà consulté la doc d'Android officielle (faite par Google) sur les API Java ?
C'est honteux. :innocent:

On va sur la doc d'un objet d'une des API Java d'Android.
Par exemple l'objet MotionEvent (pour le tactile)
Et on cherche à savoir ce que signifie la méthode getX().
Dans la documentation on va vous dire : "Renvoie la coordonnée X de l'évènement".
Bah ouais, on s'en doute .... Mais x par rapport à quoi, et pour quel évènement ?

La doc fournit par Goggle sur les API Java est honteusement formulée en paraphrases, et n'informe pas.
Il vaut mieux aller sur StackOverflow pour poser les questions plutôt que d'aller sur la doc officielle.
D'autant que la plupart des questions intuitives ont déjà été posées et ont eu une ou plusieurs réponses …. :innocent:
:twisted: :twisted: :twisted:
Diagnostiqué autiste asperger, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Tugdual
Modérateur
Messages : 27308
Enregistré le : jeudi 15 novembre 2012 à 0:13
Localisation : Nord-44
Contact :

Re: Coin des développeurs :]

#710 Message par Tugdual » vendredi 6 décembre 2019 à 9:53

TCS = trouble de la communication sociale (24/09/2014).

Avatar du membre
Bubu
Forcené
Messages : 5720
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#711 Message par Bubu » dimanche 8 décembre 2019 à 19:09

Tugdual a écrit :
vendredi 6 décembre 2019 à 9:53
Un peu d'histoire :
Un heureux accident où Linus Torvalds est mort ? Ça m'intéresse.
Diagnostiqué autiste asperger, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Hokusai
Régulier
Messages : 49
Enregistré le : mardi 27 novembre 2018 à 12:26

Re: Coin des développeurs :]

#712 Message par Hokusai » dimanche 8 décembre 2019 à 22:09

Bonjour,

Je suis nouveau sur ce topic, que je découvre avec plaisir et auquel je pense m'intéresser. Du coup je me présente.

J'ai 41 ans et j'ai commencé, après une "carrière" littéraire à programmer à 38 ans, fin 2016. Après, j'ai été sur instruction de la société Auticonsult dans une formation que j'ai trouvé peu sérieuse et qui ne m'a quasiment rien apporté, à part quelques bribes en Javascript et en HTML/CSS. Après j'ai travaillé 11 mois pour Auticonsult, mais pas sur de la programmation, avant que cette boite me fasse un licenciement maquillé en rupture conventionnelle (j'ai dit ce que je pensais d'eux ailleurs et ce n'est pas le sujet ici). Actuellement, je suis dans une ville moyenne, je vis très bien (même financièrement) mais sans perspective professionnelle, dans ma famille.

J'avais fini ma formation exécrable en janvier 2018, j'ai un peu programmé à l'automne 2018 (et revu quelques basiques en maths), mais à part ça, je m'y suis remis au début de cet automne, une fois réinstallé dans ma famille, à Villefranche sur Saône. J'avais envie de m'y remettre, tout en refaisant des mathématiques un peu plus sérieusement.

Comme je suis seul, dans une ville moyenne et débutant, j'ai privilégié assez logiquement des choses pas exigeantes niveau installation (devant compter sur moi seul et sans background scientifique). Déjà, étant un débutant qui reprend des bases, je n'avais pas de raison de m'intéresser à des langages comme le Java ou C#, ou encore le Golang, vu qu'on conseille à des débutants soit de prendre des langages du niveau du C ou du C++, soit des langages vraiment haut niveau et simples comme Python.

Sinon, j'ai repris les mathématiques également (actuellement, je finis un chapitre sur les logarithmes et vais attaquer les fonctions exponentielles).

Du coup en ce moment, je suis sur plusieurs choses :
- un bouquin sur le C++, qui est très bien pour un débutant et m'apprend beaucoup (mais c'est lent, long et ardu). J'adore ce langage, cette approche, le fait que tout doive être parfaitement compris. Certes, c'est très exigeant mais au fond j'aime cette démarche. Surtout que ce langage donne l'impression (de mon point de vue de débutant) d'une très grande liberté, probablement parce que rien n'est "caché".
-un tuto PHP/SQL. Pour pouvoir monter un site web simple, connecté à une base de données, tout en gardant un contrôle intellectuel sur ce que je code. Donc pas de framework JS (react et angular m'ont l'air affreusement compliqués et fouillis).
- un tuto en Python. Le but est de pouvoir ensuite embrayer sur un autre tuto consacré au framework django. En effet,Django permet d'utiliser facilement SQLite (c'est ce que j'ai compris), du coup, c'est un deuxième fer au feu pour pouvoir faire moi même des applications web, si je butais sur PHP/Apache/MariadB. Et l'idée de SQLite me plait, vu que ça me permettrait de découvrir les bases de données et SQL sans avoir à gérer des problèmes d'installation et de configuration importants.
- un bouquin d'algorithmie ("Introduction to Algorithms"). Je viens à peine de le commencer, de retour de voyage en Italie. 1300 pages d'algo en perspective.
- Un bouquin de maths ("Basic engineering mathematics", un classique aux USA).

J'ai le sentiment d'une quantité énorme de choses à apprendre, mais je compte bien réussir, si ma situation reste stable je suis parti pour un temps se comptant en années et des milliers d'heures de travail. Je suis sur 5 choses, ce qui est à mon avis bien suffisant. A un moment, peut-être que je ferai un tuto sur jquery pour pouvoir modifier des pages web sans les recharger intégralement (si j'ai bien compris), mais pas tout de suite.
Diagnostiqué Asperger en 2007

leresidue
Occasionnel
Messages : 25
Enregistré le : mercredi 19 juin 2019 à 1:08

Re: Coin des développeurs :]

#713 Message par leresidue » lundi 9 décembre 2019 à 3:24

Hokusai a écrit :
dimanche 8 décembre 2019 à 22:09
- un bouquin sur le C++, qui est très bien pour un débutant et m'apprend beaucoup (mais c'est lent, long et ardu). J'adore ce langage, cette approche, le fait que tout doive être parfaitement compris. Certes, c'est très exigeant mais au fond j'aime cette démarche. Surtout que ce langage donne l'impression (de mon point de vue de débutant) d'une très grande liberté, probablement parce que rien n'est "caché".

C'est aussi le sentiment que j'ai eu avec le C/C++.

Il y a plusieurs années, j'avais commencé à écrire un tutoriel sur le C. Mais comme presque tout ce que je fais, je l'ai abandonné. L'année dernière je l'ai mis sur mon site interner.
Pour le télécharger en format .odt : https://frederiquebrissonlambert.com/ccppobjc.odt
Sinon, je l'avais converti en format html (avec un résultat mitigé): https://frederiquebrissonlambert.com/ccppobjc.htm
Sans diagnostic officiel de HPI
Diagnostiqué Autiste par une psychologue et un psychiatre

Avatar du membre
Bubu
Forcené
Messages : 5720
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#714 Message par Bubu » lundi 9 décembre 2019 à 10:05

Le langage C++ est un des langages de programmation les plus difficiles.
D'autant que dans la nouvelle version ils ont intégré le lambda-calcul.

La syntaxe est très simple, mais le paradigme est très complexe.

Pour libérer les ressources correctement, il faut une méthodologie et une rigueur béton. Si on ne veut pas de fuites mémoires (memory leaks).

Je pense franchement qu'il vaut mieux commencer par le Java ou le C#. Car c'est le ramasse-miette qui se charge d'éliminer les ressources.
On pourrait dire que c'est à peine mieux, car parfois il faut écraser les références d'objets par null, pour que la référence de la ressource soit décrémentée, pour que le ramasse-miette la supprime.

Bon courage dans vos projets. :kiss:

[EDIT] Vous qui êtes à fond dedans, vous savez qu'en C++ il y a les destructeurs. Nom de la classe avec un tilde devant.
Notion inexistante dans les langages avec ramasse-miettes (garbage collector).
Le destructeur est appelé automatiquement quand l'objet est alloué dans la pile, et explicitement quand on l'alloue comme pointeur avec new. Via delete.
Vive le ramasse miette. Il s'occupe de tout ça, et s'il y a des fuites mémoires, c'est de sa faute, pas de la votre ! :mrgreen:

Après il faut relativiser.
J'ai un background plutôt C++, j'ai fait un moteurounet 3D de jeu pour Windows.
OpenGL es 2.0 pour java, sous android, que j'utilise en ce moment est très mal encapsulé. Car c'est du native code en dessous. (Du C)
Paradoxe, on aimerait presque qu'il y ait des destructeurs. Mais en Java, cela n'existe pas. Donc on est obligé de créer des méthodes unloadResources(). Et c'est le bazar.
Je peux avoir un Carambar ?
Diagnostiqué autiste asperger, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Hokusai
Régulier
Messages : 49
Enregistré le : mardi 27 novembre 2018 à 12:26

Re: Coin des développeurs :]

#715 Message par Hokusai » mardi 10 décembre 2019 à 9:32

Bubu a écrit :
lundi 9 décembre 2019 à 10:05
Le langage C++ est un des langages de programmation les plus difficiles.
D'autant que dans la nouvelle version ils ont intégré le lambda-calcul.

La syntaxe est très simple, mais le paradigme est très complexe.

Pour libérer les ressources correctement, il faut une méthodologie et une rigueur béton. Si on ne veut pas de fuites mémoires (memory leaks).

Je pense franchement qu'il vaut mieux commencer par le Java ou le C#. Car c'est le ramasse-miette qui se charge d'éliminer les ressources.
On pourrait dire que c'est à peine mieux, car parfois il faut écraser les références d'objets par null, pour que la référence de la ressource soit décrémentée, pour que le ramasse-miette la supprime.

Bon courage dans vos projets. :kiss:

[EDIT] Vous qui êtes à fond dedans, vous savez qu'en C++ il y a les destructeurs. Nom de la classe avec un tilde devant.
Notion inexistante dans les langages avec ramasse-miettes (garbage collector).
Le destructeur est appelé automatiquement quand l'objet est alloué dans la pile, et explicitement quand on l'alloue comme pointeur avec new. Via delete.
Vive le ramasse miette. Il s'occupe de tout ça, et s'il y a des fuites mémoires, c'est de sa faute, pas de la votre ! :mrgreen:

Après il faut relativiser.
J'ai un background plutôt C++, j'ai fait un moteurounet 3D de jeu pour Windows.
OpenGL es 2.0 pour java, sous android, que j'utilise en ce moment est très mal encapsulé. Car c'est du native code en dessous. (Du C)
Paradoxe, on aimerait presque qu'il y ait des destructeurs. Mais en Java, cela n'existe pas. Donc on est obligé de créer des méthodes unloadResources(). Et c'est le bazar.
Je peux avoir un Carambar ?
On verra plus tard pour le carambar. :mrgreen:
Pour les destructeurs, c'est encore loin dans mon bouquin, je suis justement en ce moment sur la première fois où l'on voit les pointeurs. Les destructeurs, ce n'est que dans 200 pages, après notamment un gros chapitre sur les tableaux et les vectors, plus d'autres, avec notamment un chapitre détaillé sur les fonctions. Bon, je ne suis pas sorti de l'auberge mais je l'ai voulu. :D
"Heureusement", je suis assez éloigné du marché de l'emploi, avec une AAH et libre de pratiquer maths, algo et étude d'un langage 10 heures par jour si ça me chante.

Merci pour la référence au lambda calcul. C'est dans un coin de ma tête, pour plus tard probablement.
Diagnostiqué Asperger en 2007

leresidue
Occasionnel
Messages : 25
Enregistré le : mercredi 19 juin 2019 à 1:08

Re: Coin des développeurs :]

#716 Message par leresidue » mercredi 11 décembre 2019 à 3:14

Je préfère la manière C++ de faire les choses pour les destructors. En devant appeler explicitement la destruction des objets, ça force à avoir un plan mental détaillé de ce que fait le code au juste.

Les pointeurs c'est pas très difficiles. Mais faut se rappeler que lorsqu'on déclare un pointeur en C++, l'astérisque label uniquement le nom de variable avec lequel il est utilisé, et non le type de la variable. Dans un vieux livre sur les MFC que j'ai, ils montraient un exemple de code, et l'astérisque était collé au type de l'objet déclaré, et non au nom de l'objet lui-même. Pire, depuis peu, dans Visual Studio, l'autoformatage met l'astérisque du côté du type de la variable.

Code : Tout sélectionner

int* a, b, c; 
Uniquement la variable 'a' est un pointeur sur un integer. b et c sont des variables ordinaires.
Sans diagnostic officiel de HPI
Diagnostiqué Autiste par une psychologue et un psychiatre

Avatar du membre
Bubu
Forcené
Messages : 5720
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#717 Message par Bubu » mercredi 11 décembre 2019 à 12:22

C'est du C.

Pour les pointeurs, j'avais l'habitude de mettre un espace avant et après l'astérisque.

Code : Tout sélectionner

int * pointer;
Mais apparemment cela peut poser des problèmes avec les templates. Il vaut mieux coller l'astérisque à la variable comme tu le dis.

Le fait qu'il n'y ait pas de destructeurs en Java ou autres ne permet pas pour autant de se soulager dans l'effort de supprimer les ressources correctement.
Le problème est que l'objet est toujours vivant, même une fois les ressources libérées alors qu'avec les destructeurs, l'objet disparaît en même temps que les ressources qu'il a allouées.

Bien que ne remplaçant pas un ramasse-miettes, il existe des pointeurs intelligents (smart pointers) en C++ (il y en a 3 différents si ma mémoire est bonne), qui permettent de gérer plus facilement la gestion mémoire pour éviter les fuites mémoires.
Diagnostiqué autiste asperger, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

leresidue
Occasionnel
Messages : 25
Enregistré le : mercredi 19 juin 2019 à 1:08

Re: Coin des développeurs :]

#718 Message par leresidue » mercredi 11 décembre 2019 à 17:42

Un peu d'humour...

Fin 2017 début 2018, j'avais inventé un langage de programmation. J'avais écrit deux tutoriels pour ce langage:
https://github.com/leresidue/toysanta1/ ... /tuto1.pdf
https://github.com/leresidue/toysanta1/ ... /tuto2.pdf


Depuis je n'ai pas vraiment retravaillé dessus. Un autre problème est que je perçois GitHub plus comme un endroit pour diffuser le code qu'un endroit pour travailler le code. Quand je suis en mode 'programmation', je n'aime pas penser à d'autres responsabilités que celle d'atteindre mes buts d'implémentations.

Un exemple de code toy:

Code : Tout sélectionner

        @                   @
                    @
    @       @   @             @
                        @           @
              @
        @           @       @
        @    @   @     @       @ 
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@  @    @    @   @  @  @ @ @ @@@
    integer[new]|integer[old]    0|@
     @| |  |      |     |  | | | |@
     @  exemple 4  " "  |  | | | |@
     @  toy santa  |||  |  | | | |@
     @  |               |  | | | |@
     @ étoiles filantes (bubbles) |@
    ©2018 Frédérique Brisson-Lambert|©
  @@| |     |           |       |  | ©@©
 @| =1|loop<une_boucle_infinie/    || |@@
@©|     =900|loop [| /]    |  |  |  |  |@©
@|  |   TICKCOUNT [new]        |  |  |  |@
@|      print      " "         |   | || |@
@|      =old       |||      |   |  |  | |@
@|  |   <new|if[test1/        |   | | | |@
@|          =[old]new      |   |    | | |@
@|  |       +[old]36   |     |   | |  | |@
@|          print"O"      |  | |  | |  |©@
@|      /test1]     |  |   |   | || | ||©©
©@| =2|/une_boucle_infinie>   |   | ||©©@
 ©@@©|| ||   ©©©     |  | |©©ß|| |©©@@©
   ©@@@@@©©@@@@@@@©©©©@@@@@@©©@@@@@@©
Sans diagnostic officiel de HPI
Diagnostiqué Autiste par une psychologue et un psychiatre

Avatar du membre
Bubu
Forcené
Messages : 5720
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#719 Message par Bubu » vendredi 13 décembre 2019 à 18:07

Bubu a écrit :
mercredi 11 décembre 2019 à 12:22
C'est du C.

Pour les pointeurs, j'avais l'habitude de mettre un espace avant et après l'astérisque.

Code : Tout sélectionner

int * pointer;
Mais apparemment cela peut poser des problèmes avec les templates. Il vaut mieux coller l'astérisque à la variable comme tu le dis.

Le fait qu'il n'y ait pas de destructeurs en Java ou autres ne permet pas pour autant de se soulager dans l'effort de supprimer les ressources correctement.
Le problème est que l'objet est toujours vivant, même une fois les ressources libérées alors qu'avec les destructeurs, l'objet disparaît en même temps que les ressources qu'il a allouées.

Bien que ne remplaçant pas un ramasse-miettes, il existe des pointeurs intelligents (smart pointers) en C++ (il y en a 3 différents si ma mémoire est bonne), qui permettent de gérer plus facilement la gestion mémoire pour éviter les fuites mémoires.
Non, je me corrige, c'est bien l'astérisque liée au type de la variable la bonne méthode pour un pointeur. C'est lié aux templates (donc en C++)
Donc

Code : Tout sélectionner

int* pointeur
Car certains compilateurs trouveraient ambigu le typage de la variable en Template.
Est-ce Template<int> * ou Template<int*> ?
Diagnostiqué autiste asperger, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

leresidue
Occasionnel
Messages : 25
Enregistré le : mercredi 19 juin 2019 à 1:08

Re: Coin des développeurs :]

#720 Message par leresidue » vendredi 13 décembre 2019 à 21:27

Bubu a écrit :
vendredi 13 décembre 2019 à 18:07
Car certains compilateurs trouveraient ambigu le typage de la variable en Template.
Est-ce Template<int> * ou Template<int*> ?

Template <int> * signifie que c'est un pointeur vers une variable Template<int>

Template <int *> est une variable Template avec pointeurs vers type int comme données ciblés.

Et pour terminer, Template<int*> * est un pointeur vers une variable Template qui a pour données ciblés des pointeurs vers des entiers. :mrgreen:
Sans diagnostic officiel de HPI
Diagnostiqué Autiste par une psychologue et un psychiatre

Répondre