3900

Ou quoi? grin

3901

Zerosquare (./3899):
SCPCD : ça marche aussi si tu remplaces "C++" par "Java" (ou "Javascript", ou "PHP"...)
Franchement, le PHP a une mauvaise réputation à cause de certains trucs historiques, et le fait que c'est permissif (donc qui permet de faire du code dégeu), mais tu peux faire des trucs très propres quand même, encore plus avec les frameworks modernes (et composer ça marche plutôt très bien).

3902

(et concernant java j'ai toujours pas compris ce qu'on lui reproche, justement c'est pas permissif, il a une bonne bibliothèque standard, etc. Et c'est pas plus verbeux qu'autre chose, et sans doute largement moins que le C++. C'est pas bien de troller comme ça un dimanche, tu pourrais attendre lundi embarrassed)

3903

On a déjà eu cette discussion ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3904

... de reporter à lundi ? #modfus# grin
(de toutes façon dans le logiciel qu'on fait il y a du java, du c++, du fortran, du bash, du batch, du csh, du vb6, du c#, du vba, et j'en passe embarrassed Je crois même qu'on génère un peu d'html à un moment)

3905

(grin)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3906

Folco (./3884) :
C'est quand même violemment inbranlable la syntaxe du C++ ##gerbe##
Je veux voir le langage qui te permet de faire ce genre de transformations de types avec une syntaxe plus lisible.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3907

Pen^2 (./3902) :
(et concernant java j'ai toujours pas compris ce qu'on lui reproche, justement c'est pas permissif, il a une bonne bibliothèque standard, etc. Et c'est pas plus verbeux qu'autre chose, et sans doute largement moins que le C++. C'est pas bien de troller comme ça un dimanche, tu pourrais attendre lundi embarrassed)
Le Java est moins puissant que le C++, il est compilé en bytecode (donc tu as l'overhead du JIT qui le rend souvent plus lent que du code natif), il utilise un GC (avec tous les inconvénients que ça engendre), …
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3908

Kevin Kofler (./3907) :
Le Java est moins puissant que le C++
La belle affaire, et l'assembleur encore plus. Sauf que c'est tellement pénible et compliqué à écrire que je ne serais pas étonné que dans le monde réel la tendance s'inverse presque...

Kevin Kofler (./3907) :
il est compilé en bytecode
En quoi ça concerne le langage lui même ? La même chose compilée en natif changerait quoi pour le gars écrivant le programme ?
Maintenant je peux comprendre que ça puisse te déranger, mais c'est conçu comme ça. Si c'est un problème dans un cas particulier, le mieux est de choisir une autre technologie. Mais pour l'immense majorité des programmes je pense que tout le monde s'en fiche et que que ça ne change à peu près rien.

Kevin Kofler (./3907) :
il utilise un GC (avec tous les inconvénients que ça engendre)
Ah oui, effectivement, s'affranchir de la libération mémoire, un inconvénient très fâcheux.

3909

J'espérais que c'était connu, mais visiblement ce n'est pas le cas, donc j'élabore:

Le GC fait que tu dois fixer un seuil de mémoire arbitraire à partir duquel libérer la mémoire, donc tant que tu es en dessous du seuil, le programme en consomme de plus en plus sans rien libérer, et si tu le dépasses, plus rien ne marche (ça commence à passer tout le temps dans le GC et, si jamais ça sort de la boucle, ça finit avec une exception "Java heap space" ("exhausted", mais ce n'est pas écrit explicitement dans le message de l'exception)). Du coup, tu ne peux pas utiliser de manière efficace la RAM de ta machine: soit tu bouffes toute la RAM pour rien (seuil trop haut), soit le programme plante alors qu'il resterait plein de RAM dans la machine (seuil trop bas).

Un autre gros inconvénient est que le GC bloque l'exécution régulièrement à des endroits difficilement prévisibles, ce qui non seulement rend le Java inutilisable pour toute application temps réel (Ce n'est pas par hasard qu'il y a un gros avertissement de Sun/Oracle de ne jamais utiliser la technologie Java dans un réacteur nucléaire, ce serait le prochain Tchernobyl!), mais se remarque aussi dans la vie courante quand l'interface utilisateurs d'un logiciel freeze soudain pour une seconde ou deux parce que le GC a choisi de s'activer de nulle part.

Et le troisième gros inconvénient est que le GC fait que tu ne contrôles pas quand le finalisateur de l'objet sera appelé. (Du coup, les objets pour lesquels c'est important nécessitent un close() explicit qu'on risque d'oublier, et il y a ce hack de "try with resources" qui fait que finalement, ces objets s'utilisent de la même manière qu'un objet RAII en C++. Sauf que tu ne peux pas oublier d'appeler le destructeur en C++ alors que tu peux oublier d'utiliser "try with resources" ou d'appeler close() explicitement en Java.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3910

Je ne connais pas les détails des implémentations des GC, mais je doute quand même un peu qu'ils continuent d'allouer jusqu'au XMX sans rien libérer avant, ce serait débile et il ne me semble pas que ce soit ce que je constate.
Mais là encore, c'est un problème de runtime et moi je parle plutôt du langage, du point de vue du gars qui passe sa journée à l'écrire et de son efficacité à faire ce qu'on lui demande de manière fiable et propre sans trop pourrir la vie du codeur.

Kevin Kofler (./3909) :
Un autre gros inconvénient est que le GC bloque l'exécution régulièrement à des endroits difficilement prévisibles
Frahcnement, j'ai jamais vu un programme bloqué à cause du GC, faut arrêter avec cet argument. En théorie OK, mais dans ce cas là, faut aussi arrêter les interruptions matérielles, etc cheeky
Quant au temps réel, c'est une contrainte très spécifique et d'une part il existe Real Time Java (connais pas), et surtout, je ne prétends pas que ça répond à tous les besoins : je dis simplement que le bashing contre Java est de mauvaise foi.

Kevin Kofler (./3909) :
tu ne contrôles pas quand le finalisateur de l'objet sera appelé.
Certes, mais ça ne m'a strictement jamais posé problème, et je ne suis même pas sûr d'en avoir déjà écrit un.

Kevin Kofler (./3909) :
il y a ce hack de "try with resources"
Je ne vois pas bien en quoi c'est un hack, ça fait ce que ça dit et c'est plutôt pratique cheeky

Kevin Kofler (./3909) :
Sauf que tu ne peux pas oublier d'appeler le destructeur en C++ alors que tu peux oublier d'utiliser "try with resources" ou d'appeler close() explicitement en Java.
Il y a des warnings, et tu peux oublier d'écrire ton close dans le destructeur C++, oublier de libérer la mémoire, etc. Bref, oui, tu peux oublier plein de trucs, mais je ne suis pas certain que le Java soit moins sûr que le C++ sur ce plan là.


Bref, pour résumer et éviter d'y passer des heures, les quelques inconvénients réels sont extrêmement contrebalancés par plein d'autres trucs nettement plus importants à mon avis, donc je doute que tu puisse me faire changer d'avis cheeky

3911

Le GC je l’ai vu (dans JetBrain en forçant le Gc pour vider la mémoire, j’ai déjà eu des freeze de 1 à 2 minutes. Mais c’est lié à lapp utilisant java plus que autre chose on est d’accord. Une app qui a peu d’objet/allocation et consomme beaucoup vs une app qui a beaucoup d’objet consommant peu, la second va faire ramer des que le GC trig.

Sinon oui c’est un problème du runtime, mais le fait que java a des tailles fixes de mémoire est un vrai problème dignes d’OS des années 1980...

Je n’ai jamais compris le choix de Sun sur ce point, pourquoi limiter la mémoire disponible de cette méthode et non utiliser directement les API de l’OS pour les allocations?

Si la reponce c’est pour les applet web, well. C’est une mauvaise réponse, seul l’environnement pour les applets devrait avoir ce type de limitations :/
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3912

Pen^2 (./3910) :
Je ne connais pas les détails des implémentations des GC, mais je doute quand même un peu qu'ils continuent d'allouer jusqu'au XMX sans rien libérer avant, ce serait débile et il ne me semble pas que ce soit ce que je constate.
Ça s'y rapproche en pratique. Dans mon expérience, le -Xms ne sert pas à grand chose, le -Xmx est la seule chose qui compte réellement.

Mais là encore, c'est un problème de runtime et moi je parle plutôt du langage
Le langage ne peut pas être implémenté sans GC (à moins de tout leaker, ce qui n'est pas une implémentation utilisable en pratique). Même les compilateurs qui compilent le Java en code natif utilisent un GC, par exemple, GCJ utilisait le Boehm Conservative GC. Donc les inconvénients existent dans tout runtime, de par la conception du langage.

Kevin Kofler (./3909) :
il y a ce hack de "try with resources"
Je ne vois pas bien en quoi c'est un hack, ça fait ce que ça dit et c'est plutôt pratique cheeky
Tu as un langage qui te promet sur le papier que tu ne dois jamais rien libérer et tu te tapes une construction qui reprend une syntaxe RAII (de plus avec un mot clé qui à l'origine est prévu pour autre chose, mais try-finally allait déjà dans le même sens) en tant que sucre syntaxique pour un workaround (la méthode close()) parce que tu dois après tout, si si, libérer explicitement tes ressources. FAIL!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3913

Godzil (./3911) :
Sinon c’est un problème de runtime, mais le fait que java a des tailles fixes de mémoire est un vrai problème dignes d’OS des années 1980...
Oui, "640 KB should be enough for everybody". gni
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3914

Non rien avoir avec cette citation.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3915

(Fausse)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

3916

Kevin Kofler (./3906) :
Je veux voir le langage qui te permet de faire ce genre de transformations de types avec une syntaxe plus lisible.
En PHP, tu utilises "=" et zou, tu transformes ton type embarrassed (oui, je sais, mais na tongue )
avatar

3917

M'étonne pas, Nil aime bien transformer les types en meufs, et vice-versa.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3918

Godzil (./3914) :
Non rien avoir avec cette citation.
Je fais référence au fait que DOS et pas mal d'applications DOS n'utilisent que 640 kibioctets même si la machine a des gigaoctets de RAM. Ça rejoint les tailles arbitraires de heap Java.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3919

Ça n'a pas grand-chose à voir (et c'est d'ailleurs faux si on creuse un peu, mais c'est pas le sujet). La limitation des 640 Ko est due à une contrainte technique pour la rétrocompatibilité, et date d'une époque où ça avait une justification technique.

Dans le cas de Java c'est un choix de conception délibéré, on ne peut pas invoquer les limitations techniques d'accès à la mémoire (Sun faisait déjà des machines 64 bits quand Java est sorti).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3920

Le GC qui casse toute contrainte temps réel était peut-être un choix volontaire pour empêcher l'utilisation dans les centrales nucléaires et dans les voitures. gni
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3921

le try-with-resources c'est ni plus ni moins qu'une copie du using de C#.

Au niveau des spurious wakeups du GC, en C# on a des mecanismes pour dire au GC de s'absenter pendant l'execution d'une routine je crois. En Java je connais pas.

Et puis faut quand meme savoir ce qu'on fait, les collegues ne se rendent pas compte qu'ils ont des problemes de memoire parce que y a du final partout pour reutiliser des variables dans des callback (mention speciale aux jobs d'Eclipse RCP qui invoquent d'autres job et les join immediatement sans les scheduler sur le thread du job qui les spawn), et des copies de tableau a tous les coins. Imo, c'est pas parce que t'as un GC que tu dois pas faire gaffe a ce que tu fais, c'est un truc important de comprendre comment ca fonctionne, et comment travailler avec

3922

On a le même problème dès qu'on a une abstraction quelconque (c'est vrai par exemple avec les ORM pour éviter le SQL brut).
Ce ne sont pas des outils pour éviter de comprendre comment ça fonctionne, ce sont des outils pour gagner du temps et qui au contraire demandent souvent une bonne compréhension de ce qu'il y a sous le capot (sauf si on se contente de trucs basiques).
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

3923

Zerosquare (./3917) :
M'étonne pas, Nil aime bien transformer les types en meufs, et vice-versa.
cheeky
avatar

3924

grin

3925

Arvi89 (./3901) :
Franchement, le PHP a une mauvaise réputation à cause de certains trucs historiques, et le fait que c'est permissif (donc qui permet de faire du code dégeu), mais tu peux faire des trucs très propres quand même, encore plus avec les frameworks modernes (et composer ça marche plutôt très bien).
Ce discours vaut pour n'importe quel langage. Le soucis est justement que c'est trop facile de faire des trucs dégueux, donc en pratique, les gens font des truc dégueux.
avatar

3926

Warpten (./3921) :
ils ont des problemes de memoire parce que y a du final partout pour reutiliser des variables dans des callback
Ce n'est pas final qui empêche la libération par le GC, mais l'utilisation dans le callback (qui maintient en vie la référence).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3927

Pen^2 (./3902) :
(et concernant java j'ai toujours pas compris ce qu'on lui reproche, justement c'est pas permissif, il a une bonne bibliothèque standard, etc. Et c'est pas plus verbeux qu'autre chose, et sans doute largement moins que le C++. C'est pas bien de troller comme ça un dimanche, tu pourrais attendre lundi embarrassed)
On a a déjà discuté, ce qu'on lui reproche est plus ou moins juste suivant le sens par lequel on l'aborde. En fait comme souvent dans les discutions a propos de langage de programmation, tous les argument sont pertinent, on oublie juste que s'il existe plusieurs langages, c'est avant tout que certain sont bons pour certaines choses et pas d'autre.

Personnellement je trouve que le langage en lui même est plutôt bon dans le domaine pour lequel il est prévu. En effet son lourd Runtime avec un GC fait qu'il ne peut pas concourir avec le C++ pour les application ou le contrôle de la mémoire est essentiel pour les performances, mais il reste généralement plus performant et maintenable que les langages a typage dynamique comme le Python et le JavaScript.
Selon moi son plus gros problème c'est ses Framework populaires qui on tendance a souffrir d'overengineering. La culture des ingénieurs Java fait qu'il a trop souvent servi à faire des usines à gaz qui ont contribué à sa mauvaise réputation.
avatar

3928

AbstractObjectFactoryFactoryFactory gni
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3929

Je n'aurais pas cru mais:

Uther (./3927) :
mais il reste généralement plus performant et maintenable que les langes a typage dynamique

##pointgodzil##
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3930

Ahah grin J'imagine bien le bébé dont le lange change de type...
Hop, lavable, hop en coton, hop jetable... grin
avatar