CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Sondage] Votre langage favori

DébutPage précedente
1  ... 23456789101112
Page suivanteFin
Pseudo supprimé
Niveau 7
09 juin 2013 à 19:30:41

C'est normal que ce soit le C++ qui gagne, c'est le langage des pro, GTA, AC, etc sont codés en C++, donc, les amateurs "copient " les pros en codant avec ce langage.

godrik godrik
MP
Niveau 26
09 juin 2013 à 19:40:08

"J'ai déjà entendu parler des Piles qui étaient chiantes à faire en C++ sur le forum Programmation, ils comparaient souvent ça avec le Java."

Non, c'est tres facil de faire des piles en c++. La stl dispose d'une implementation avec std::stack (voir documentation dans [1]). J'imagine que la comparison C++ java, tu fais reference a mon post sur l'optimisation des conteneurs de la STL [2], malheureusement, le post de blog sous jacent est hors ligne en ce moment. Basiquement ca montrait que des optimisations simples sur des conteneurs standard pouvaient amener des ameliorations de performance significative dans des cas particuliers (et que ces optimisations ne sont pas vraiment realisable en java a cause du modele memoire.)

[1] http://www.cplusplus.com/reference/stack/stack/
[2] https://www.jeuxvideo.com/forums/1-47-45962-1-0-1-0-blog-quand-la-stl-devient-trop-lente.htm

PatateChocolat PatateChocolat
MP
Niveau 9
09 juin 2013 à 19:56:38

| https://www.jeuxvideo.com/forums/1-31-8648645-9-0-1-0-sondage-votre-langage-favori.htm#message_8649487
| Ecrit par « godrik », 9 juin 2013 à 19:40:08
| « Non, c'est tres facil de faire des piles en c++. La stl dispose d'une implementation avec std::stack (voir documentation dans [1]). J'imagine que la comparison C++ java, tu fais reference a mon post sur l'optimisation des conteneurs de la STL [2], malheureusement, le post de blog sous jacent est hors ligne en ce moment. Basiquement ca montrait que des optimisations simples sur des conteneurs standard pouvaient amener des ameliorations de performance significative dans des cas particuliers (et que ces optimisations ne sont pas vraiment realisable en java a cause du modele memoire.) »

Ok j'avais pour ainsi dire tout faux :hap: .

Merci de m'avoir corrigé, je vais regarder vite fait les liens histoire de m'informer :-) .

LEpigeon-888 LEpigeon-888
MP
Niveau 10
09 juin 2013 à 20:29:06

"Lepigeon, sinon, on peut faire un petit test, j'ecrit un programme en python et toi le même en c++ et on voit ce que ca donne :noel: "

Bof ça ça voudrait rien dire :hap:

godrik godrik
MP
Niveau 26
09 juin 2013 à 20:33:26

Le probleme principale qui appote de l'eau au moulin des debat Java VS C++ est un manque de comprehension et de connaissance des gens qui participent a ces debat. Par exemple, je ne suis pas un grand fan de Java et j'ai du fait pas beaucoup de pratique dans ce langage, ce qui fait que des prejuges/misconception par rapport a ce langage. Les fans de java ont le meme probleme envers C++.

Du fait, on entends un peu tout et rien et ca ajoute enormement de bruit. Quelques choses que l'on entends souvent:
-"Java c'est lent! C++ c'est rapide!" Serieusement? Qui dans l'assemble a developpe un jeu (ou une application) en Java et c'est retrouve a devoir le reecrire en C++ (meme partiellement) parceque Java etait trop lent? Combien ont concretement eu ce probleme? Perso ca m'est arrive, mais en meme temps, mon travail est de tirer le plus de performance possible des machines que j'ai a disposition. Des gens ont pointer de nombreux jeu ecrit en Java qui fonctionne a vitesse parfaitement acceptable.

-"C++ c'est nul! Il faut gerer sa memoire." Avec une dedicace special a OncheDev qui cherche a defendre C++ et dit "Le temps [...] de mettre un delete après chaque new?". Les gens qui disent des trucs comme ca n'ont visiblement jamais compris C++. (Ce qui est un peu triste pour OncheDev qui cherche a le defendre aveuglement.) L'un des principes fondateurs du developpement en C++ est que "Ressource Acquisition Is Initialization" [1]. Basiquement, ca dit que si tu as besoin d'appeller new et delete dans ton code, c'est que tu t'es trompe de niveau d'abstraction. C++ permet d'implementer de nombreux modele de gestion memoire. Des modeles a base de stack frame, des modeles a base de ref counting ou des modeles a base de garbage collection.

-"Java c'est bien parceque c'est multiplateforme! C++ c'est nul parceque il faut recompiler a chaque fois." JAVA est t'il vraiment multiplateforme? Vous avez deja essayer d'executer du code Java sur Nintendo DS? Ca va mal se passer ce truc la. Vous avez essayer d'executer du code java sur Wii? Ca va mal se passer aussi. Mais prenons un exemple plus concret et moins tarabiscoter parce que ces plateformes la n'ont jamais mis en avant le cote java. Vous avez deja essayer d'executer du code Java sur un vieux Nokia? Il est programmable en Java votre vieux nokia, malheureusement, c'est pas le meme Java avec du vrai bonheur dedans comme "pas de float". Mais vous allez dire que je prends des vieux exemple. Vous avez deja essayer d'executer votre code java pour Windows sur Android? En pratique ca marche pas si bien que ca. Parceque Android utilise Dalvik et pas la JVM d'oracle qui fait que ce n'est pas binaire compatible. Mais ce n'est probablement pas source compatible non plus, parcequ'il n'y a pas de swing sur android. Que le systeme de fichier est different. Que les messages systemes sont differents. Pour avoir du code multiplateforme, il faut avoir un environement d'execution (runtime systeme) qui soit compatible. Souvent cette compatibilite est ecrite par le developpeur sous la forme d'abstraction du systeme (ou d'utilisation d'une lib d'abstraction qui va bien.)

-"Java c'est nul, on declare cree plein d'objet donc c'est lent." Si on fait n'importe quoi, oui c'est lent. Mais concretement un appel a new en java est plus rapide qu'un appel a new en C++ (si on ne redefini pas new). Parceque le cout de l'allocation en java est paye au moment de la desallocation par le biais du garbage collector. De plus, peu de personne savent que java voit deux type de creation d'objet, des creations d'objet globale (basiquement sur le tas et garbage collecte) et des creations d'objet local (basiquement sur la pile et date de destruction connu et donc pas dnas la garbage collector). Ce qui fait qu'un code comme "{Integer i = new Integer (4);}" ne cree pas d'objet vu par le garbage collector. Le compilateur java "voit" que l'objet cree ne sort pas de la porte et donc il le cree localement (lire sur la pile). C'est une difference qui apparait clair quand on fait du JNI [2].

-"C++ c'est nul, regarde comment c'est complique de transformer une chaine de caractere en entier. En java je fais int i = str.parseInt()". Bah ecrit une fonction string_to_int en C++. L'abstraction sert justement a retirer ce genre de probleme en ecrivant une fonction de plus haut niveau qui fait ce dont tu as besoin.

-"Java c'est nul, pour lire un fichier il faut creer 40 objet intermediaire. Qui n'a jamais rencontrer de code comme new fooreader(new barInputstream(new whatEverReader(new SomethingElse (filename))));". Meme reponse qu'au dessus, abstrait tout ca dans une fonction/objet que tu aimes bien et arretes de pleurnicher sur des details sans consequence.

TLDR; dans le fond c'est un probleme de competences plus qu'un probleme de langage que l'on recontre dans 90% du temps. Les gens se plaignent de probleme qui n'ont pas lieu d'etre parcequ'ils ne savent ecrire du code propre dans un langage ou dans un autre.

[1] http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
[2] http://publib.boulder.ibm.com/infocenter/java7sdk/v7r0/topic/com.ibm.java.zos.70.doc/diag/understanding/jni_refs.html

LEpigeon-888 LEpigeon-888
MP
Niveau 10
09 juin 2013 à 21:00:30

"Basiquement, ca dit que si tu as besoin d'appeller new et delete dans ton code, c'est que tu t'es trompe de niveau d'abstraction."

Tien juste en parlant de ça, j'utilise new pour les objets qui sont stocké dans mes list, car ils peuvent changer de list et je trouve que c'est mieux de bouger juste un pointeur qu'un objet entier, j'ai tort ?

godrik godrik
MP
Niveau 26
09 juin 2013 à 21:31:11

LEpigeon-888, en bref, oui. Cela veut dire qu'il faut que tu gere manuellement l'allocation et la desallocation de ces objets. Faire cette gestion manuellement est la plupart du temps une erreur. La question qu'il faut se poser est: qui controle la duree de vie de ces objets. Qui est responsable de la creation et de leur destructions. Dans la plupart des cas, la reponse est simple. Ici j'imagine que tant que l'objet est dans au moins une liste tu veux que l'objet reste alloue. Donc ici un compteur de reference fait parfaitement l'affaire. Regarde du cote de l'abstraction de pointeur fournit par std::shared_ptr [1]. Note que std::unique_ptr est aussi utile dans d'autre condition [2] quand tu veux qu'un objet soit detruit quand il devient out of scope.

[1] http://en.cppreference.com/w/cpp/memory/shared_ptr
[2] http://en.cppreference.com/w/cpp/memory/unique_ptr

LEpigeon-888 LEpigeon-888
MP
Niveau 10
09 juin 2013 à 22:01:47

Ah je connaissais pas ces pointeurs, merci :-)

urizen45 urizen45
MP
Niveau 5
09 juin 2013 à 22:19:48

"TLDR; dans le fond c'est un probleme de competences plus qu'un probleme de langage que l'on recontre dans 90% du temps. Les gens se plaignent de probleme qui n'ont pas lieu d'etre parcequ'ils ne savent ecrire du code propre dans un langage ou dans un autre."

Ca revient a dire ce que je repete tout le temps : "Ce n'est pas le langage qui fait un bon ou mauvais programme mais la personne qui l'écrit..."

A+
Uri

PatateChocolat PatateChocolat
MP
Niveau 9
09 juin 2013 à 22:25:36

Vraiment cool ton texte Godrik. Je n'ai jamais pris part au combat Java VS C++, bien que je préfère Java, tout simplement car C++ pour moi c'est inconnu. Je connais bien sûr les bases (Pointeurs, référence, et son OO), mais je n'ai jamais été assez loin pour donner un avis concret sur la chose.

De toute façon il y a débat sur tout : Xbox Vs Ps Vs Wii ; Sur le mariage gay ; Sur les langages ; Sur l'os ; Sur intel VS amd , et j'en passe. ça alimente la curiosité je trouve, mais attention à rester neutre et éviter de cracher sur l'un ou sur l'autre :) .

_Toastation_ _Toastation_
MP
Niveau 9
09 juin 2013 à 23:17:28

Le texte de godrik et à garder en favoris pour le resortir si besoin

PatateChocolat PatateChocolat
MP
Niveau 9
09 juin 2013 à 23:18:16

Haha, c'est sûr :rire2: .

jedemandeledeba jedemandeledeba
MP
Niveau 9
09 juin 2013 à 23:55:25

Godrik -> Je suis d'accord avec toi, sauf dans ce qui est du multi-plateforme, bien sûr que quand on dit "multi-plateforme" on parle de Windows-Linux-Mac et toute les plateforme ou JVM est dispo. On est pas débile, on sait très bien que l'on pas executer du Java sur une DS alors qu'il a pas de machine virtuel java dessus... Mais en attendant, oui Java est multi-plateforme (là ou est présent JVM)

CharlesOnche CharlesOnche
MP
Niveau 7
10 juin 2013 à 10:50:50

godrik Voir le profil de godrik
Posté le 9 juin 2013 à 20:33:26 Avertir un administrateur

-"C++ c'est nul! Il faut gerer sa memoire." Avec une dedicace special a OncheDev qui cherche a defendre C++ et dit "Le temps [...] de mettre un delete après chaque new?". Les gens qui disent des trucs comme ca n'ont visiblement jamais compris C++. (Ce qui est un peu triste pour OncheDev qui cherche a le defendre aveuglement.) L'un des principes fondateurs du developpement en C++ est que "Ressource Acquisition Is Initialization" [1]. Basiquement, ca dit que si tu as besoin d'appeller new et delete dans ton code, c'est que tu t'es trompe de niveau d'abstraction. C++ permet d'implementer de nombreux modele de gestion memoire. Des modeles a base de stack frame, des modeles a base de ref counting ou des modeles a base de garbage collection.

:d)

Donc ça sert à quoi, new et delete? :hap:

Peut-être à implémenter ces modèles de gestion de mémoire? La programmation, ce n'est pas uniquement se rouler dans le respect du paradigme principal.

+ Je le répète, je suis pas là pour dire "C++ c'est mieux que java", je suis là pour dire que c'est pas inhumain.

Alors ton ton condescendant tu te le gardes :hap: Tout comme tes tournures de phrase anglicisantes (Et ton clavier qwerty?)

LEpigeon-888 LEpigeon-888
MP
Niveau 10
10 juin 2013 à 11:59:14

new ça sert mais delete c'est uniquement utile dans l'implémentation des smart pointer de la stl :oui:

godrik godrik
MP
Niveau 26
10 juin 2013 à 19:22:31

CharlesOnche, il y a une difference entre utiliser new et delete (et operateur derive) pour implementer ton gestionnaire de memoire et utiliser "un delete apres chaque new".

"La programmation, ce n'est pas uniquement se rouler dans le respect du paradigme principal."

Tout a fait, c'est d'ailleurs l'une des raisons d'etre du C++: choisir le modele de programmation qui permet d'obtenir le meilleur compromis temps de developpement, efficacite, maintenabilite.

Dans tous les cas ou la gestion de la memoire est facilement faisable manuellement (liberation a la sortie du scope ou a la destruction d'un objet englobant), il est plus simple d'utiliser un unique_ptr. Tu ne perds rien en efficacite et en temps de developpement, mais la maintenabilite du code est fortement accrue parceque tu n'as pas besoin de faire des changements a plusieurs emplacement du code pour assurer la bonne gestion de la memoire. D'ailleurs les fonctions pouvant avoir plusieurs point de sortie, tu pourrais avoir de la redondance dans les conditions de liberation de la memoire. C'est un cauchemard pour la maintenance et la reutilisation du code.

"Alors ton ton condescendant tu te le gardes"

Desole, je ne cherchais pas a etre condescendant, mais simplement a illustrer que beaucoup de gens qui participent a ces discussion n'ont souvent pas le recul necessaire pour en discuter convenablement. Ce qui ne veut pas dire qu'il ne faut pas en discuter, parceque c'est comme cela que l'on confronte nos opinions et que l'on apprend des choses nouvelles. Mais quand on dit une grosse connerie, on se fait mettre a l'affiche. Ce qui a marche: ca a fait reagir lepigeon et toi meme sur un point qui est important et souvent mal compris.
Aussi, je fais mon malin aujourd'hui, mais il y a une dizaine d'annee, je me faisais ramasser egalement. (Et meme plus recement que ca, sur le forum programmation au sujet des I/Os en Java)

"Tout comme tes tournures de phrase anglicisantes (Et ton clavier qwerty?)"

Ah ca, je dois bien avouer que je me jean-claude-van-damme-ise ces dernieres annees.

onchedev onchedev
MP
Niveau 8
11 juin 2013 à 08:18:55

Ok, je comprends...

Mais...

"Desole, je ne cherchais pas a etre condescendant"

Tu ne cherches pas, ok, mais :

"Mais quand on dit une grosse connerie, on se fait mettre a l'affiche. Ce qui a marche: ca a fait reagir lepigeon et toi meme sur un point qui est important et souvent mal compris. "

Donc, en fait si, tu l'avoues toi même :hap: . Déjà, je fais pas mon malin, et puis bon se venger sur les autres c'est pas très classe tu en conviendras, surtout quand on prétend à un certain niveau :hap:

Mais bon à part ça, j'ai compris, merci :)

[-ArK-] [-ArK-]
MP
Niveau 22
11 juin 2013 à 12:22:16

"-"C++ c'est nul, regarde comment c'est complique de transformer une chaine de caractere en entier. En java je fais int i = str.parseInt()". Bah ecrit une fonction string_to_int en C++. L'abstraction sert justement a retirer ce genre de probleme en ecrivant une fonction de plus haut niveau qui fait ce dont tu as besoin.

-"Java c'est nul, pour lire un fichier il faut creer 40 objet intermediaire. Qui n'a jamais rencontrer de code comme new fooreader(new barInputstream(new whatEverReader(new SomethingElse (filename))));". Meme reponse qu'au dessus, abstrait tout ca dans une fonction/objet que tu aimes bien et arretes de pleurnicher sur des details sans consequence."

:d) Je suis pas d'accord, autant avoir une API simple de base dès le début plutôt que de tout réécrire non ? :noel:

jedemandeledeba jedemandeledeba
MP
Niveau 9
11 juin 2013 à 17:21:16

[-ArK-] -> Tu peux toujours la faire toi même hein ... :hap:

[-ArK-] [-ArK-]
MP
Niveau 22
11 juin 2013 à 17:32:48

Oui on va se faire chier à réécrire une API complète pour un langage, je me demande pourquoi des gens font des librairies vu qu'on peut tout refaire nous-même :hap:

DébutPage précedente
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment