[Index Software] Coin des développeurs :]
-
- Intarissable
- Messages : 7750
- Enregistré le : dimanche 19 mai 2013 à 12:03
- Localisation : En haut à gauche
Re: Coin des développeurs :]
C'est beaucoup moins fastidieux de faire des fonctions récursives en C et C++, qu'en Java.
En Java, les arguments de fonction (hors types primitifs. Pour les objets) sont passés par référence.
En C et C++, les arguments de fonction sont passés par valeur,
sauf pour les références (& en C++), ou pour les variables ciblées par des pointeurs ( * ) (Les pointeurs sont passés par valeur, mais pas les objets pointés)
Du coup en Java, il faut manuellement cloner les paramètres avant de les modifier et de les réinjecter dans la fonction récursive. C'est un peu pénible.
Je m'en sors avec mon programme de test de niveaux de notre jeu. Enfin ...
En Java, les arguments de fonction (hors types primitifs. Pour les objets) sont passés par référence.
En C et C++, les arguments de fonction sont passés par valeur,
sauf pour les références (& en C++), ou pour les variables ciblées par des pointeurs ( * ) (Les pointeurs sont passés par valeur, mais pas les objets pointés)
Du coup en Java, il faut manuellement cloner les paramètres avant de les modifier et de les réinjecter dans la fonction récursive. C'est un peu pénible.
Je m'en sors avec mon programme de test de niveaux de notre jeu. Enfin ...
TSA, 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"
"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"
-
- Intarissable
- Messages : 7750
- Enregistré le : dimanche 19 mai 2013 à 12:03
- Localisation : En haut à gauche
Re: Coin des développeurs :]
EDIT :Bubu a écrit :C'est beaucoup moins fastidieux de faire des fonctions récursives en C et C++, qu'en Java.
En Java, les arguments de fonction (hors types primitifs. Pour les objets) sont passés par référence.
En C et C++, les arguments de fonction sont passés par valeur,
sauf pour les références (& en C++), ou pour les variables ciblées par des pointeurs ( * ) (Les pointeurs sont passés par valeur, mais pas les objets pointés)
Du coup en Java, il faut manuellement cloner les paramètres avant de les modifier et de les réinjecter dans la fonction récursive. C'est un peu pénible.
Je m'en sors avec mon programme de test de niveaux de notre jeu. Enfin ...
C'est pas fini.
L'analyse de la grille et des différentes possibilités fonctionne (j'ai la liste des coups correctement calculée) ..... mais pas les calculs des scores...
Pourtant c'est infiniment plus simple normalement.
Ça y est, c'est décidé : je vais manger mes doigts de pieds.
EDIT:
Bon c'est fini.
Enfin du moins la partie algorithmique, de détection des coups possibles.
Enfin, il y a des niveaux avec plus de 1000 possiblités. (Alors Virgule qui voulait des niveaux avec une unique solution mange des cailloux .... ).
Maintenant il faut filtrer les résultats.
N'afficher quelque chose que si nécessaire, quand il y a des erreurs.
Le problème :
C'est très lent (plusieurs heures). Je vais utiliser le multi-threading.
EDIT:
En fait, non, je ne vais pas utiliser le multi-threading. J'ai essayé mais ça déconne de partout.
Donc il faudra être patient !
Par contre je vais filtrer les résultats de manière "intelligente", seuls les cas d'erreurs seront affichés dans le rapport.
Screugneugneu de screugneugneu !
TSA, 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"
"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"
-
- Intarissable
- Messages : 7750
- Enregistré le : dimanche 19 mai 2013 à 12:03
- Localisation : En haut à gauche
Re: Coin des développeurs :]
EDIT : je me suis trompé, en Java tout est passé par valeurs .... y compris les références des objets.Bubu a écrit :EDIT :Bubu a écrit :C'est beaucoup moins fastidieux de faire des fonctions récursives en C et C++, qu'en Java.
En Java, les arguments de fonction (hors types primitifs. Pour les objets) sont passés par référence.
En C et C++, les arguments de fonction sont passés par valeur,
sauf pour les références (& en C++), ou pour les variables ciblées par des pointeurs ( * ) (Les pointeurs sont passés par valeur, mais pas les objets pointés)
Du coup en Java, il faut manuellement cloner les paramètres avant de les modifier et de les réinjecter dans la fonction récursive. C'est un peu pénible.
Je m'en sors avec mon programme de test de niveaux de notre jeu. Enfin ...
C'est pas fini.
L'analyse de la grille et des différentes possibilités fonctionne (j'ai la liste des coups correctement calculée) ..... mais pas les calculs des scores...
Pourtant c'est infiniment plus simple normalement.
Ça y est, c'est décidé : je vais manger mes doigts de pieds.
EDIT:
Bon c'est fini.
Enfin du moins la partie algorithmique, de détection des coups possibles.
Enfin, il y a des niveaux avec plus de 1000 possiblités. (Alors Virgule qui voulait des niveaux avec une unique solution mange des cailloux .... ).
Maintenant il faut filtrer les résultats.
N'afficher quelque chose que si nécessaire, quand il y a des erreurs.
Le problème :
C'est très lent (plusieurs heures). Je vais utiliser le multi-threading.
EDIT:
En fait, non, je ne vais pas utiliser le multi-threading. J'ai essayé mais ça déconne de partout.
Donc il faudra être patient !
Par contre je vais filtrer les résultats de manière "intelligente", seuls les cas d'erreurs seront affichés dans le rapport.
Screugneugneu de screugneugneu !
Mais ça ne change pas grand chose. Il faut voir les paramètres de méthode qui passent les objets Java, comme des pointeurs.
L'adresse est une copie, mais pas de l'objet pointé.
Au même titre, en C++ le pointeur est copié, (passé par valeur, mais juste l'adresse), mais l'objet pointé n'est pas concerné.
C'est un peu tordu, mais ça se tient très bien.
EDIT :
C'est en lien avec le sujet sur notre Jeu Sqwap, et le sujet juste pour geuler :
Virgule n'aime pas le filtrage des erreurs que je présente dans le logiciel de test.
Tantôt il voudrait une chose, tantôt son contraire ! Je vais le manger.
Après le principal n'est pas en question, il fonctionne. Mais tous les jours j'ai une version idéale par Virgule .... sauf qu'elles se contredisent.
Je vais lui proposer une interface où il pourra n'afficher que ses requêtes, un peu comme dans une bdd SQL, mais il me court sur le haricot ce salopiaud !
Et puis sur le multi-tâche, c'est pas la peine, je ne fais que des conneries, que de la merde, cela ne marche pas du tout !
(On s'en fout, mais le backtracking me fournit toutes les solutions (indépendantes du genre ou de la "race" ). (Si la grille est vide à la fin, c'est fini, on arrête et on note le résultat). Il me faut en plus leur donner une sémantique. (Tu as cassé ta biscotte en la tartinant de beurre ? Oh malheur !)
Comme un bourrin, moi je récupère toutes les solutions qui engendrent une grille vide (c'est le but du jeu) à la chaîne.
Cette solution est moins pire que celle-là.
Cette solution est mauvaise car j'arrive au même résultat en moins de coups.
etc ...
TSA, 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"
"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"
-
- Intarissable
- Messages : 7750
- Enregistré le : dimanche 19 mai 2013 à 12:03
- Localisation : En haut à gauche
Re: Coin des développeurs :]
Pour résoudre les problèmes de logique combinatoire :
Il y a le langage Prolog !
Il a une syntaxe particulière certes,
Mais par exemple créer un programme qui résout un Sudoku dans ce langage est un jeu d'enfant !
Il faut exprimer les clauses (ce qui fait qu'un niveau est résolu) dans ce langage, et Prolog se charge du reste !
C'est à ce niveau du simple backtracking...... sauf que :
Ça va plus loin : c'est un solveur de contraintes !
Et on en arrive à des problèmes beaucoup plus complexes, comme déterminer le meilleur coup pour une AI de jeux d'échec.
Je ne suis pas un "patriotiste" (à distinguer du patriote), mais Prolog a été inventé par des Français !
malgré sa syntaxe particulière, il est très abordable, renseignez-vous et .... "have fun !"
Il y a le langage Prolog !
Il a une syntaxe particulière certes,
Mais par exemple créer un programme qui résout un Sudoku dans ce langage est un jeu d'enfant !
Il faut exprimer les clauses (ce qui fait qu'un niveau est résolu) dans ce langage, et Prolog se charge du reste !
C'est à ce niveau du simple backtracking...... sauf que :
Ça va plus loin : c'est un solveur de contraintes !
Et on en arrive à des problèmes beaucoup plus complexes, comme déterminer le meilleur coup pour une AI de jeux d'échec.
Je ne suis pas un "patriotiste" (à distinguer du patriote), mais Prolog a été inventé par des Français !
malgré sa syntaxe particulière, il est très abordable, renseignez-vous et .... "have fun !"
TSA, 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"
"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"
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
Re: Coin des développeurs :]
Retour aux sources :
TCS = trouble de la communication sociale (24/09/2014).
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
Re: Coin des développeurs :]
Le côté obscur de la force :
TCS = trouble de la communication sociale (24/09/2014).
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
Re: Coin des développeurs :]
Au Grand Palais à Paris le 29 Mai :
TCS = trouble de la communication sociale (24/09/2014).
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
Re: Coin des développeurs :]
À Paris le 4 Juillet :
TCS = trouble de la communication sociale (24/09/2014).
-
- Prolifique
- Messages : 989
- Enregistré le : jeudi 3 août 2017 à 7:10
Re: Coin des développeurs :]
[hors sujet]Bubu a écrit :…Il y a le langage Prolog…
Le premier système d'exploitation multi-utilisateur et véritable multi-tâches que j'ai utilisé était français et avait pour nom Prologue.
Quand j'en parlais, ils me rétorquaient tous :
"Mais non, tu dois confondre, ça n'a jamais été un système d'exploitation, Prolog est un langage de programmation…"
Aucun d'eux n'a eu la curiosité d'aller chercher si ça existait.
[/hors sujet]
Asperger diagnostiqué
-
- Prolifique
- Messages : 533
- Enregistré le : lundi 16 janvier 2017 à 19:09
Re: Coin des développeurs :]
CBCBCCCBCBBCB
Modifié en dernier par scorame le mercredi 27 juin 2018 à 18:04, modifié 1 fois.
jnnjn
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
Re: Coin des développeurs :]
Développeurs, jetez un œil ici ...
TCS = trouble de la communication sociale (24/09/2014).
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
-
- Modérateur
- Messages : 41279
- Enregistré le : jeudi 15 novembre 2012 à 0:13
- Localisation : Nord-44
Re: Coin des développeurs :]
Sur Développez.com :
TCS = trouble de la communication sociale (24/09/2014).
-
- Intarissable
- Messages : 7750
- Enregistré le : dimanche 19 mai 2013 à 12:03
- Localisation : En haut à gauche
Re: Coin des développeurs :]
Ce qui va dans le sens (sans parler de féminisme), que la femme est au moins autant capable que l'homme.Tugdual a écrit :Sur Développez.com :
Dans à peu près n'importe quel domaine qu'elle abordera.
(Mais ça vaut pas le premier algorithme de jeu d'échec de Turing, qu'il savait faillible d'ailleurs)
Il suffit de parler de Marie-Curie : 2 prix Nobels. Dans un monde misogyne. Une perle rare. Qui est morte de sa découverte, la radioactivité. C'est une héroïne.
TSA, 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"
"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"
-
- Intarissable
- Messages : 7750
- Enregistré le : dimanche 19 mai 2013 à 12:03
- Localisation : En haut à gauche
Re: Coin des développeurs :]
Je regrette l'absence des destructeurs en Java ...
Un des avantages majeurs des destructeurs c'est qu'ils sont appelés automatiquement si c'est alloué sur la pile,( ou même sur le tas (opérateur new) , en utilisant les smart pointers).
J'utilise OpenGL en Java (native code), les fonctions sont typées natives (C'est du C derrière), mais ça me force à créer des méthodes unloadResources() partout, et à les appeler manuellement.
Le ramasse-miettes (ou Garbage Collector, ou GC) ne prend pas en compte les ressources OpenGL..
C'est pénible.
[EDIT : ] clarification.
Tout mon code est en Java à 100%. Seuls les appels à OpenGL sont natifs (langage C).
(Ça risque de changer si j'ai l'intention de rajouter la 3D à mon petit moteur graphique 2D, affichage d'objets 3D sans gestion de scène au début)
J'ai l'intention d'utiliser la librairie Assimp pour la 3D.
A la base, c'est juste une librairie de chargement d'objets 3D, mais c'est aussi accessoirement une libraire mathématique aussi. (Manipulations des matrices, quaternions entre autres).
Le problème c'est que leur version Java n'est pas adaptée à Android. Sous Android on ne donne pas de chemin pour un fichier, mais un identifiant.
Le système se débrouille pour convertir l'identifiant en chemin suivi du nom de fichier.
A suivre ...
Un des avantages majeurs des destructeurs c'est qu'ils sont appelés automatiquement si c'est alloué sur la pile,( ou même sur le tas (opérateur new) , en utilisant les smart pointers).
J'utilise OpenGL en Java (native code), les fonctions sont typées natives (C'est du C derrière), mais ça me force à créer des méthodes unloadResources() partout, et à les appeler manuellement.
Le ramasse-miettes (ou Garbage Collector, ou GC) ne prend pas en compte les ressources OpenGL..
C'est pénible.
[EDIT : ] clarification.
Tout mon code est en Java à 100%. Seuls les appels à OpenGL sont natifs (langage C).
(Ça risque de changer si j'ai l'intention de rajouter la 3D à mon petit moteur graphique 2D, affichage d'objets 3D sans gestion de scène au début)
J'ai l'intention d'utiliser la librairie Assimp pour la 3D.
A la base, c'est juste une librairie de chargement d'objets 3D, mais c'est aussi accessoirement une libraire mathématique aussi. (Manipulations des matrices, quaternions entre autres).
Le problème c'est que leur version Java n'est pas adaptée à Android. Sous Android on ne donne pas de chemin pour un fichier, mais un identifiant.
Le système se débrouille pour convertir l'identifiant en chemin suivi du nom de fichier.
A suivre ...
TSA, 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"
"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"