Java 8 débarque enfin avec ses expressions lambda et sa sécurité renforcée

Java 8 débarque enfin avec ses expressions lambda et sa sécurité renforcée

La route a été particulièrement longue

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

19/03/2014 3 minutes
183

Java 8 débarque enfin avec ses expressions lambda et sa sécurité renforcée

Après un très long développement, la huitième version de l’environnement Java est enfin disponible pour les développeurs de manière officielle. Plus que les moutures précédentes, Java 8 doit remplir de nombreux objectifs, car outre la modernisation d’un langage et son adaptation aux besoins d’aujourd’hui, notamment ceux du « Cloud », Oracle avait également besoin de revoir largement le modèle de sécurité de son produit.

java 8

La part belle au développement fonctionnel...

Java 8 est donc la nouvelle version de l’environnement de développement proposé par Oracle. L’actualité des deux dernières années concernant la technologie était essentiellement marquée par la sécurité et ce sont plus de 50 mises à jour qui ont été diffusées pour colmater plusieurs centaines de brèches. On se rappelle d’ailleurs qu’Oracle avait expliqué l’année dernière que cette version 8 serait repoussée pour que la sécurité soit davantage retravaillée.

 

Mais commençons par les expressions lambda, clairement la nouveauté la plus importante de cette nouvelle version. Il s’agit pour le développeur de découper son code en différentes fonctionnalités qui s’échangent ensuite des informations. Pour Oracle, c’est une réponse directe à l’explosion des langages de type JavaScript et Scala et, en filigrane, au déplacement progressif des produits vers le « Cloud ». Or, ce dernier se trouve essentiellement dans des environnements fortement parallélisés à cause de la présence de multiples processeurs, nécessitant de repenser les architectures logicielles pour en tirer parti.

... et au parallélisme 

Cet effort pour axer Java sur le développement parallèle se retrouve dans d’autres nouveautés, notamment les API Streams. Ces dernières permettent justement d’effectuer des traitements parallèles sur de grandes quantités de données. C’est également l’orientation de la nouvelle machine virtuelle JavaScript (Nashorn) qui doit permettre une hausse très sensible des performances quand les serveurs ont à faire avec de fortes charges.

 

Java 8 dispose d’un très grand nombre de nouveautés mais toutes n’ont pas pour autant été implémentées. À cause notamment des gros travaux sur la sécurité, Oracle a dû faire l’impasse sur le projet Jigsaw, qui devrait apporter des gains notables de modularité. Cette fonctionnalité a été reportée à Java 9.

 

Quant à la sécurité, la liste des améliorations est particulièrement fournie. On notera par exemple l’intégration de TLS 1.2 côté client, des algorithmes renforcés pour le chiffrement basé sur des mots de passe, le support des algorithmes AEAD, le support de la fonction de hachage SHA-224, une meilleure gestion de la High Entropy Random Number Generation, la prise en charge de PCKS11 sous Windows, le support amélioré de Kerberos 5 ou encore celui du service SASL pour les noms de domaines multiples.

 

java 8

 

Signalons enfin que de très nombreux outils ont été mis à jour au passage et que la nouvelle version modernise enfin les interfaces proposées dans JavaFX, lui aussi passant à la version 8. La liste complète de tous les changements apportés par Java 8 peut être consultée depuis le site officiel.

 

Les développeurs intéressés pourront quant à eux récupérer la nouvelle version de l’environnement depuis cette page. Notez que l’IDE IntelliJ a déjà été mis à jour pour prendre en charge Java 8.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

La part belle au développement fonctionnel...

... et au parallélisme 

Commentaires (183)


Aucune mise à jour détectée par mon PC ! Sur Java.com c’est la 7 update 51 qui est encore proposée !



C’est une honte de la part d’une société comme Oracle !


Premier message, premier troll ??



Sinon pour l’utilisateur lambda que nous sommes, ça vaut la peine de mettre à jour ou pas vers la version 8 ?



Ramiel.



Il y a des chances que oui, ils ont due boucher des failles de sécurité








linconnu a écrit :



Aucune mise à jour détectée par mon PC ! Sur Java.com c’est la 7 update 51 qui est encore proposée !



C’est une honte de la part d’une société comme Oracle !







Bof, si t’avais lu l’article :



“Après un très long développement, la huitième version de l’environnement Java est enfin disponible pour les développeurs de manière officielle.”



Et en plus c’est la première ligne de l’article…



<img data-src=" />



<img data-src=" />





avec ses expressions lambda



Supporté depuis C++11…



Ca craint pas un peu un langage managé qui propose moins de fonctionnalité sur sa plateforme qu’un langage natif aussi standard et vieux que le c++? <img data-src=" />



‘fin, je dis pas ça pour dire les java-istes sont des personnes arriérés… Rassurez vous les mecs, c’est toujours mieux que du Delphi…<img data-src=" />


Bah, quand tu vois que dans les boîtes ils en sont encore à java 6 (dans le meilleur des cas) , que t’as même jamais pu tester le multicatch ou le switch de string, bah t’as plus envie d’aller danser la lambada que d’apprendre à te servir des lambdas…


Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…




Supporté depuis C++11…



Depuis python 2 (voire 1 mais pas sûr), C#2, php 5.3…



Néanmoins, pour avoir vu et codé quelques codes JAVA 8 avec des lambda et leur intégration dans l’API Stream, je peux dire que ça m’a fait moins détester le Java.



Par contre d’autres choix sont plus douteux…


J’ai installé ça ne m’a même pas désinstallé la version 7 ! Faut le faire soit même ! Faites attention vous allez remplir votre disque pour rien !








linconnu a écrit :



J’ai installé ça ne m’a même pas désinstallé la version 7 ! Faut le faire soit même ! Faites attention vous allez remplir votre disque pour rien !







Ça a toujours été comme ça avec Java.



“Remplir votre dique” parce qu’il reste une ancienne version de java. Je sais pas s’il faut rire ou pleurer.








nateriver a écrit :



Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…





Pour rappel chaque langage vise des besoins bien spécifique.

à mon sens, le c/c++ c’est surtout pour des performances pur et/ou une bonne gestion des ressources



. . JavaFX.

Wow.

… …Such native look’n’feel.

…So much integrated.

… . .Wow.








nateriver a écrit :



Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…





Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />

(si vous le tentez en C#, c’est perdu d’avance <img data-src=" />)









telperien a écrit :



Ça a toujours été comme ça avec Java.







Mais aussi avec C++ ! Les COTS microsoft s’installent toutes indépendamment les unes des autres (VC 2005 3264 à 2012 3264) . Un peu moins pour dotNet (qui peuvent parfois contenir d’anciennes versions)









psn00ps a écrit :



Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />







Cela dit, il y a des cas où un garbage collector permet de gagner en perf. Plutôt que de passer son temps à faire des appels à free au milieu de son algo, un truc qui passe une bonne fois pour toute régulièrement, c’est pas mal.



Regarde en Python, ça se passe plutôt bien. Le fait que java soit aussi lourd pour exécuter un simple hello world est surtout lié à la lourdeur de la jvm.









Parkkatt a écrit :



“Remplir votre dique” parce qu’il reste une ancienne version de java. Je sais pas s’il faut rire ou pleurer.







Surtout que ce n’est pas une version “grand public” alors bon…



Déjà tout à l’heure il disait “Aucune mise à jour détectée par mon PC ! Sur Java.com c’est la 7 update 51 qui est encore proposée !

C’est une honte de la part d’une société comme Oracle ! ”



Forcément, c’est un version développeur, lire la première ligne de l’article…



Lire !



<img data-src=" />



<img data-src=" />









Max81 a écrit :



Regarde en Python, ça se passe plutôt bien […]







Ou pas cf http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=java…



Java est de 30 à 3x plus rapide que Python.

A prendre avec des pincettes, c’est vrai, c’est du micro-bench.









Ribibi a écrit :



Mais aussi avec C++ ! Les COTS microsoft s’installent toutes indépendamment les unes des autres (VC 2005 3264 à 2012 3264) . Un peu moins pour dotNet (qui peuvent parfois contenir d’anciennes versions)







C’est le truc qui pourrait être intégrè au système depuis le temps.









tanguy_k a écrit :



Ou pas cf http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=java…



Java est de 30 à 3x plus rapide que Python.

A prendre avec des pincettes, c’est vrai, c’est du micro-bench.







Tout dépend de ce qu’on cherche à faire. En l’occurrence, tu as complètement sorti ma phrase de son contexte. Je ne parlais pas de vitesse mais d’occupation mémoire.









vloz a écrit :



Ca craint pas un peu un langage managé qui propose moins de fonctionnalité sur sa plateforme qu’un langage natif aussi standard et vieux que le c++? <img data-src=" />







99% du temps, le malloc/free et l’arithmétique des pointeurs ne me manquent pas trop… Et quand ils me manquent vraiment, j’ai toujours la possibilité de faire un appel vers du code C++/natif depuis java JNI/JNA.



Non, ce qui me manque vraiment c’est que la JVM de Oracle/Sun alloue/libère la mémoire à la demande, au lieu de faire une allocation fixe au démarrage. <img data-src=" />









127.0.0.1 a écrit :



Non, ce qui me manque vraiment c’est que la JVM de Oracle/Sun alloue/libère la mémoire à la demande, au lieu de faire une allocation fixe au démarrage. <img data-src=" />







Met ton Xmx égal a ton Xms et ton XX:PermSpace égal a ton XX:MaxPermSize et ta JVM ne bougera que trés peu au cours du temps… (en jdk8, le code n’est plus forcement dans son propre espace, il doit y avoir des options équivalente pour le borner…)





Mais commençons par les expressions lambda, clairement la nouveauté la plus importante de cette nouvelle version. Il s’agit pour le développeur de découper son code en différentes fonctionnalités qui s’échangent ensuite des informations.





<img data-src=" /> <img data-src=" /> Il s’agit de définir des fonctions anonymes. Par exemple, en Scala :



val lst = List(1, 2, 3)

lst.map(x =&gt; x + 1) // ou lst.map(_ + 1)



Va produire List(2, 3, 4)








nateriver a écrit :



Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…





Le C++ utilise le paradigme RAII, qui rend obsolète ou du moins inutile les systèmes de garbage collection. Pour les cas ou c’est réellement nécessaire il y a les shared_ptr.



Je pense que toute personne ayant tenté de faire de la haute performance ou de la basse latence avec du Java aura compris…



De plus avec C++11, le C++ est devenu un vrai plaisir à utiliser. Rien à voir avec la lourdeur démente du Java (rien que d’imaginer un programme en Java me fatigue).









wagaf a écrit :



Je pense que toute personne ayant tenté de faire de la haute performance ou de la basse latence avec du Java aura compris…







Et pourtant ca se fait plutôt bien… sachant qu’il faut suivre les même règles que pour tout programme très haute performance…










wagaf a écrit :



Le C++ utilise le paradigme RAII, qui rend obsolète ou du moins inutile les systèmes de garbage collection. Pour les cas ou c’est réellement nécessaire il y a les shared_ptr.



Je pense que toute personne ayant tenté de faire de la haute performance ou de la basse latence avec du Java aura compris…



De plus avec C++11, le C++ est devenu un vrai plaisir à utiliser. Rien à voir avec la lourdeur démente du Java (rien que d’imaginer un programme en Java me fatigue).





Ou du crash de la bourse de Londres qui était passée sous une solution en .NET <img data-src=" />









psn00ps a écrit :



Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />

(si vous le tentez en C#, c’est perdu d’avance <img data-src=" />)





D’un autre côté, en C++, c’est pas toujours gagné non plus vu la taille de certaines bibliothèques liées par défaut. Un hello world en VB6 pesera peut-être moins lourd qu’en C++. Et je ne te raconte pas en Delphi3!



D’un autre côté, je peux te faire un hello world en assembleur, c’est joli, ça prend moins de place que le fichier sur le FS, mais ça n’a aucune utilité.



Par ailleurs, on peut se dire qu’en .Net, la plupart des DLL sont partagées entre les applis, donc on alourdi peu la mémoire si on l’utilise beaucoup.



Enfin, dan l’autre sens, le garbage collector c’est bien, mais en 32bits ça limite la mémoire utilisable par un processus à environ 1,2, 1,3 Go. Sinon, le GC ne fonctionne plus.









wagaf a écrit :



Je pense que toute personne ayant tenté de faire de la haute performance ou de la basse latence avec du Java aura compris…



De plus avec C++11, le C++ est devenu un vrai plaisir à utiliser. Rien à voir avec la lourdeur démente du Java (rien que d’imaginer un programme en Java me fatigue).







C’est un peu comme vouloir faire le dakar en skate… en même temps si tu te pointes en 4x4 dans un skatepark ça va être n’importe quoi aussi!



Je me demande si on te demande de faire un site web en C++ si tu vas vraiment te faire plaisir, alors qu’en java/c#/php ça se fait plutôt bien et rapidement.



Pourtant C++, langage objet, on doit avoir vaguement entendu parler des design pattern et des anti pattern comme le golden hammer… mon marteau est super, c’est le meilleur, j’enfonce même les vis avec… <img data-src=" />









wagaf a écrit :



Le C++ utilise le paradigme RAII, qui rend obsolète ou du moins inutile les systèmes de garbage collection. Pour les cas ou c’est réellement nécessaire il y a les shared_ptr.



Je pense que toute personne ayant tenté de faire de la haute performance ou de la basse latence avec du Java aura compris…



De plus avec C++11, le C++ est devenu un vrai plaisir à utiliser. Rien à voir avec la lourdeur démente du Java (rien que d’imaginer un programme en Java me fatigue).







Mouais, t’as pas du faire beaucoup de java moderne. Si c’est bien architecturé ça va très vite (sans battre c++ certes mais c’est plus concis) et c’est agréable a coder aussi. Mais c’est comme c++ dans les libs il y a du très bon et du très mauvais.



Bref comme d’hab, il n’y a pas de silver bullet, chaque langage a ses domaines de prédilection.









zepompom a écrit :



Mouais, t’as pas du faire beaucoup de java moderne. Si c’est bien architecturé ça va très vite (sans battre c++ certes mais c’est plus concis) et c’est agréable a coder aussi. Mais c’est comme c++ dans les libs il y a du très bon et du très mauvais.



Bref comme d’hab, il n’y a pas de silver bullet, chaque langage a ses domaines de prédilection.







Je dirais plutôt que comme d’hab c’est tous les jours dredi. Cet aficionado du C++ ne démordra jamais que son language est le meilleur et que java pue.



En même temps, java ça pue non?



Bon après ça permet de faire des logiciels plutôt bon, en un temps raisonnable et même de supporter la mobilité accrue des employés. Et puis faut avouer que J1.7 et 1.8 ont de bonnes perf grâce à la compilation à la volée donc ça amenuise un peu les faiblesses.








linconnu a écrit :



J’ai installé ça ne m’a même pas désinstallé la version 7 ! Faut le faire soit même ! Faites attention vous allez remplir votre disque pour rien !





c’est le principe de Java. Certaines applis nécessitent une version spécifique (5, 6, 7…) pour fonctionner et ne tourneront pas sans adaptations sur des versions supérieures. Donc il vaut mieux qu’il conserve les versions.

Je parle d’un environnement pro, du type où chaque upgrade nécessite une validation lourde…









linconnu a écrit :



J’ai installé ça ne m’a même pas désinstallé la version 7 ! Faut le faire soit même ! Faites attention vous allez remplir votre disque pour rien !









c’est vrai que java prend quelques giga <img data-src=" />









psn00ps a écrit :



Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />

(si vous le tentez en C#, c’est perdu d’avance <img data-src=" />)









c’est plus utile de savoir programmer un vrai programme…









Max81 a écrit :



Cela dit, il y a des cas où un garbage collector permet de gagner en perf. Plutôt que de passer son temps à faire des appels à free au milieu de son algo, un truc qui passe une bonne fois pour toute régulièrement, c’est pas mal.



Regarde en Python, ça se passe plutôt bien. Le fait que java soit aussi lourd pour exécuter un simple hello world est surtout lié à la lourdeur de la jvm.







python est une tortue face a java, sans compté que ce dernier consomme moins



Le 19/03/2014 à 21h 07

Oui enfin ça ne vaut quand même pas le brainfuck tout ça. Quand on veut écrire un programme concis, lisible et auto-documenté, il n’y a pas photo.








lsPCI a écrit :



Oui enfin ça ne vaut quand même pas le brainfuck tout ça. Quand on veut écrire un programme concis, lisible et auto-documenté, il n’y a pas photo.







Le binaire les gars, le binaire. Pas de garbage collector, pas de raii, une enpreinte memoire mini, les meilleures perfs posssibles !









linconnu a écrit :



J’ai installé ça ne m’a même pas désinstallé la version 7 ! Faut le faire soit même ! Faites attention vous allez remplir votre disque pour rien !







Tu ne dois pas être développeur du coup je t’explique : un environnement de développement digne de ce nom se fait sur plusieurs versions. C’est donc tout naturellement que le JDK X.X ne désinstallera pas le JDK X.Y ou Y.Y.









brice.wernet a écrit :



D’un autre côté, en C++, c’est pas toujours gagné non plus vu la taille de certaines bibliothèques liées par défaut. Un hello world en VB6 pesera peut-être moins lourd qu’en C++. Et je ne te raconte pas en Delphi3!



D’un autre côté, je peux te faire un hello world en assembleur, c’est joli, ça prend moins de place que le fichier sur le FS, mais ça n’a aucune utilité.



Par ailleurs, on peut se dire qu’en .Net, la plupart des DLL sont partagées entre les applis, donc on alourdi peu la mémoire si on l’utilise beaucoup.



Enfin, dan l’autre sens, le garbage collector c’est bien, mais en 32bits ça limite la mémoire utilisable par un processus à environ 1,2, 1,3 Go. Sinon, le GC ne fonctionne plus.





J’ai fait un programme en C qui appelle la fonction Beep() en boucle for, rien de plus. Ca fait 6k sur disque (50k sans optimisation) et en disasm je vois que ça appelle plein de trucs inutiles. Vous avez dit moderne ?



Un .com de 256 octets fait une démo 3D.



Et .NET est un gouffre à temps de démarrage (compilation JIT) et RAM.









nateriver a écrit :



Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…







Ca existe. Le C++ est un langage très modulaire dans lequel on peut ajouter de nombreuses extensions.



Mais il faut comprendre que s’il n’y en a pas en standard, c’est qu’il y a des raison : le C++ est principalement utilisé pour les applications très optimisées pour lesquelles les programmeurs ont surtout besoin de personnaliser la gestion de la mémoire eux même.



Le garbage collector “standard”, c’est très bien pour le petit logiciel courant. Pas pour les gros logiciels performants.



C++ et Java sont deux langages qui n’ont pas la même vocation. Pour C++, le but est de permettre les meilleures performances et le plus de contrôle possible a des programmeurs expérimentés. Pour Java, le but est de rendre le développement plus rapide et empêcher des programmeurs peu expérimentés (et pressés) de faire des bêtises.



Bref, Java pour le tout venant RAD en SS2I, C++ pour l’écriture de progiciels à forte valeur ajoutée.



Entre




  • PCI qui ne sait manifestement pas de quoi il parle quand il aborde le sujet des fonction anonymes, et

  • les 35 commentaires sur 40 représentant des trolls vieux de 20 ans,



    dites donc on a un grand Chelem ici bas ! <img data-src=" />


Attention la grande nouveauté de Java 8 ce n’est pas les lambdas … Mais les default implementation dans les interfaces.

Car vous voyez faire de l’héritage multiple c’est pas beau… Donc tu implémentes plusieurs interfaces qui ont des implémentations par défaut…

Ils fument quoi chez Oracle?








psn00ps a écrit :



Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />







En Brainfuck, c’est fastoche ! <img data-src=" />



@sr17, belle tentative d’expliquer à un troupeau d’abrutis de trolls que le Saint Graal n’existe pas et que la diversité des langages répond à la diversité des besoins. Sur ce point, c’est parfait.



Par contre tu te vautres sur la fin, à la fois sur le fait que le seul intérêt de Java concernerait le RAD et l’efficience du coding, et également sur la place de la valeur ajoutée du côté du bas niveau (c’est justement plutôt l’inverse: la valeur ajoutée est désormais du côté des couches hautes).








brazomyna a écrit :



@sr17, belle tentative d’expliquer à un troupeau d’abrutis de trolls que le Saint Graal n’existe pas et que la diversité des langages répond à la diversité des besoins. Sur ce point, c’est parfait.



Par contre tu te vautres sur la fin, à la fois sur le fait que le seul intérêt de Java concernerait le RAD et l’efficience du coding, et également sur la place de la valeur ajoutée du côté du bas niveau (c’est justement plutôt l’inverse: la valeur ajoutée est désormais du côté des couches hautes).





Exactement, aujourd’hui ce qu’on cherche n’est plus si bas dans les couches, tout va être une question de coût en rapport avec le besoin et on reste indubitablement dans les couches moyenne/haute.



La couche basse est directement traitée par le service finance de l’entreprise.



Chaque langage, pour chaque besoin. Déjà à la base (je m’excuse pour les personnes qui se sentiront blessées), c’est faire preuve d’ignorance que de militer pour un seul et unique langage.



Quand on programme une application, c’est et ce sera toujours la combinaison de plusieurs langages.



j’espère que le nouveau runtime viendra avec une maj de la barre ask.com

… ma préférée








nateriver a écrit :



Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…







Ce n’est pas vraiment le même usage…

L’un est un langage système, ou le développeur est le seul maître à bord, l’autre est un langage de plus haut niveau qui doit te permettre de te concentrer un maximum sur la partie métier d’un projet…









Antwan a écrit :



. . JavaFX.

Wow.

… …Such native look’n’feel.

…So much integrated.

… . .Wow.







Dingue de pas réussir à faire mieux que ça <img data-src=" />



Mouais… Pour moi le java est, et restera, un langage de merde.



Ça permet uniquement à des développeurs inexpérimentés/nuls de sortir de la merde rapidement sans rien comprendre à ce qui se passe réellement en dessous. “T’inquiètes pas, je gère”



Tout ce que le dev java ne fait plus, par feignantise ou par incompétence, c’est le sysadmin qui se le tape en maintenant l’environnement nécessaire à faire marcher tout le merdier qu’est java.



La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus. Et bah j’ai plus assez de doigts pour compter le nombre de softs qui ne fonctionne plus après avoir mis à jour la jvm. Donc on garde un magnique système faillible, et pi cé tou…



Le dev n’as plus à s’occuper de nettoyer les objets déréférencé…. Mais à quel prix? rien que de devoir spécifier les xmx et xms est une aberration en soit pour un programme…



java essaye de réinventer tout ce qui est déjà présent dans un OS, mais forcement en moins bien, c’est quoi l’utilité? Quant à gérer des permissions systèmes, et bien c’est magique, tout programme lancé depuis /usr/bin/java… Donc pour faire de la sécurité système apparmor ou selinux… et bien tu peux pas…



Quant au serveur d’application jboss and co… touours sencé simplifier le boulot des développeurs, juste LOL, l’usine à gaz complètement inmaintenable, qui du coup n’est jamais mis à jour. Sauf à avoir une équipe de plusieurs personne dédié à le gérer.



Tant que les choix techniques partent du dev, forcement, java a de beaux jours devant lui. Mais combien de dev sont capable d’administrer une jvm? 10%? Bref…



Voilà, c’est ça java.








nateriver a écrit :



Bah, quand tu vois que dans les boîtes ils en sont encore à java 6 (dans le meilleur des cas) , que t’as même jamais pu tester le multicatch ou le switch de string, bah t’as plus envie d’aller danser la lambada que d’apprendre à te servir des lambdas…







ça a l’air cool cette fonctionnalité dis m’en plus <img data-src=" />









zepompom a écrit :



Mouais, t’as pas du faire beaucoup de java moderne. Si c’est bien architecturé ça va très vite (sans battre c++ certes mais c’est plus concis) et c’est agréable a coder aussi. Mais c’est comme c++ dans les libs il y a du très bon et du très mauvais.



Bref comme d’hab, il n’y a pas de silver bullet, chaque langage a ses domaines de prédilection.





Par “moderne”, tu veux dire après avoir rajouté une couche d’abstraction complète par dessus ? <img data-src=" />







wargre a écrit :



Et pourtant ca se fait plutôt bien… sachant qu’il faut suivre les même règles que pour tout programme très haute performance…





Ça se fait, mais bien plus péniblement qu’avec du C++, car en Java impossible d’instancier un objet sur le Stack pour éviter une allocation.







gokudomatic a écrit :



Je dirais plutôt que comme d’hab c’est tous les jours dredi. Cet aficionado du C++ ne démordra jamais que son language est le meilleur et que java pue.





J’utilise Java et c’est bien, c’est propre.



Avec Java 8 les nouveautés ont l’air intéressantes, avec les lambdas plus besoin de 5 lignes pour créer un callback ?



Je préfère néanmoins C++ surtout depuis C++11 pour le contrôle absolu qu’il permet, tout en restant sans bug ni fuite de mémoire si l’on suit quelques règles élémentaires. Coder la même chose demande moins de lignes de code pour des performances pourtant bien meilleurs que Java et un code souvent plus lisible.



Le 20/03/2014 à 03h 45

Le cauchemar, je vais sur PCI, et je vois une news qui annonce que Java continue au lieu de jeter l’éponge (ses créateurs devraient aller en prison vu toutes les failles de sécurité dont ils sont responsables).








Yzokras a écrit :



Le cauchemar, je vais sur PCI, et je vois une news qui annonce que Java continue au lieu de jeter l’éponge (ses créateurs devraient aller en prison vu toutes les failles de sécurité dont ils sont responsables).





Javapocalypse



<img data-src=" /> <img data-src=" />



Signalons enfin que de très nombreux outils ont été mis à jour au passage et que la nouvelle version modernise enfin les interfaces proposées dans JavaFX, lui aussi passant à la version 8. La liste complète de tous les changements apportés par Java 8 peut être consultée depuis le site officiel.



c.a.d des zolis boutons, des zolies couleurs ? comme a peu près toutes les boites now <img data-src=" /> juste du cosmétique comme d’hab <img data-src=" />








TopQuiSuisJe a écrit :



ça a l’air cool cette fonctionnalité dis m’en plus <img data-src=" />







switch(“prout”){



case “prot”: log.debug(“areuu”);

}

throw new RuntimeException(“le java c’est caca, moi je suis trop compétant tavu”);









psn00ps a écrit :



Et .NET est un gouffre à temps de démarrage (compilation JIT) et RAM.





Ce n’est pas le JIT qui plombe .Net au démarrage, c’est le chargement des DLL référencées et la résolution des liens.

Tu peux créer l’image native pour virer le JIT et simplifier la résolution de dépendances en les mettant dans le GAC.



Sur ce point, .Net est bien plus abouti que Java à mon avis.



Pour la RAM, disons qu’il a un besoin de base plus grand que du C/C++ ou VB6, mais sur des applis complexes et lourdes, la différence n’est pas notable.



Enfin, .Net permet d’imaginer et d’implémenter des choses magiques, comme générer un arbre d’expression lambda, le sérialiser avec ses paramètres, le sauvegarder sur disque ou l’envoyer par le réseau à une autre machine, le compiler en mémoire avant de l’exécuter…



Déjà en 1.1, on pouvait générer dans un programme de nouvelles classes avec les opcodes et faire confiance au JIT pour exécuter ça rapidement.



Au delà de la librairie et des manques habituels d’une VM (comme la gestion d’instruction vectorielles), la VM .NEt est un truc très adroit, d’une souplesse très loin devant la VM Java.









Alesk a écrit :



Mouais… Pour moi le java est, et restera, un langage de merde.



Ça permet uniquement à des développeurs inexpérimentés/nuls de sortir de la merde rapidement sans rien comprendre à ce qui se passe réellement en dessous. “T’inquiètes pas, je gère”



Tout ce que le dev java ne fait plus, par feignantise ou par incompétence, c’est le sysadmin qui se le tape en maintenant l’environnement nécessaire à faire marcher tout le merdier qu’est java.



La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus. Et bah j’ai plus assez de doigts pour compter le nombre de softs qui ne fonctionne plus après avoir mis à jour la jvm. Donc on garde un magnique système faillible, et pi cé tou…



Le dev n’as plus à s’occuper de nettoyer les objets déréférencé…. Mais à quel prix? rien que de devoir spécifier les xmx et xms est une aberration en soit pour un programme…



java essaye de réinventer tout ce qui est déjà présent dans un OS, mais forcement en moins bien, c’est quoi l’utilité? Quant à gérer des permissions systèmes, et bien c’est magique, tout programme lancé depuis /usr/bin/java… Donc pour faire de la sécurité système apparmor ou selinux… et bien tu peux pas…



Quant au serveur d’application jboss and co… touours sencé simplifier le boulot des développeurs, juste LOL, l’usine à gaz complètement inmaintenable, qui du coup n’est jamais mis à jour. Sauf à avoir une équipe de plusieurs personne dédié à le gérer.



Tant que les choix techniques partent du dev, forcement, java a de beaux jours devant lui. Mais combien de dev sont capable d’administrer une jvm? 10%? Bref…



Voilà, c’est ça java.







Trop swag les développeurs C++ qui utilisent des templates à tout bout de champs, qui nomment leurs variables “a”, “b” ou “c” , qui réutilisent ces variables plusieurs fois dans le même algorithme de 2000 lignes de code pour gagner 1 octet en ram, qui commentent jamais leur code, parce qu’ils sont vraiment trop fort et que taper 3 lignes de commentaires c’est une énorme perte selon eux, pas seulement pour eux-même mais pour leur patron et , plus généralement, la galaxie entière.



C’est donc ça un “bon” développeur, un mec qui sait taper un hello world avec 12 pointeurs?



Mettez-vous à jour les mecs!



Dans ma boîte, même des projets d’envergures, qui doivent manipuler des millions ou des milliards de données, le choix de java ou de .net est fait. Peux-être aussi parce qu’aujourd’hui tu peux te faire une machine avec 64 go de ram pour pas grand chose.



Mais bon, à vous écouter vous les curés de la programmation, les arbres à connaissance, ceux qui savent parce que comment ils sont trop bons en codant trois pointeurs, vous devez bosser chez microsoft ou google, pour encore devoir développer en C++ en 2014. <img data-src=" />



je dis pas que C++ 11 c’est de la merde, j’y connais que dalle. Mais la réalité du marché c’est ça. Si tu veux gagner trois octets ou si tu veux avoir le swag en développant sur un machin comme le C++ , libre à toi.



PS (non je n’adhère pas à ce parti) :J’ose même pas vous parler du Javascript, je risque de me faire cruxifier <img data-src=" />



Le java pour tous !!! <img data-src=" />



doublon, à supprimer merci ^^








Alesk a écrit :



Quant au serveur d’application jboss and co… touours sencé simplifier le boulot des développeurs, juste LOL, l’usine à gaz complètement inmaintenable, qui du coup n’est jamais mis à jour. Sauf à avoir une équipe de plusieurs personne dédié à le gérer.



Tant que les choix techniques partent du dev, forcement, java a de beaux jours devant lui. Mais combien de dev sont capable d’administrer une jvm? 10%? Bref…



Voilà, c’est ça java.







Tu déconnes un peu non ? La non mise à jour des conteneurs applicatifs est plus un problème de management qu’un soucis technique. Je mets à jour trés souvent les conteneurs applicatifs sans que ça pose le moindre soucis et sans que ça me prenne un temps de monstre. Mais pour ça il y’a de la coordination entre l’équipe de dev et l’équipe des admins. MAis techniquement je vois pas le soucis.









foetus a écrit :



Javapocalypse



<img data-src=" /> <img data-src=" />





J’ai beaucoup beaucoup ri, merci &lt;3









psn00ps a écrit :



Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />

(si vous le tentez en C#, c’est perdu d’avance <img data-src=" />)





3,8 Mo en C# 4.5 avec OS 64 bits.

<img data-src=" />



Et accessoirement je vois très rarement des programmes dépasser les 20-30Mo. A la rigueur VS occupe 100Mo mais vu le monstre…







psn00ps a écrit :



J’ai fait un programme en C qui appelle la fonction Beep() en boucle for, rien de plus. Ca fait 6k sur disque (50k sans optimisation) et en disasm je vois que ça appelle plein de trucs inutiles. Vous avez dit moderne ?



Un .com de 256 octets fait une démo 3D.



Et .NET est un gouffre à temps de démarrage (compilation JIT) et RAM.





Primo, quel est l’intérêt d’avoir des programmes qui font 50k sur PC aujourd’hui ? Aucun. Deuxio si tu t’intéresses à la mémoire les 3Mo de surcharge initiale ne sont pas le facteur le plus pertinent et le C++ n’empêche pas Firefox de se bouffer des centaines de ou milliers de mégaoctets. Tertio, tu préfères confier ton wallet bitcoin à un prog écrit en C bourré de failles et qui plante ou à un truc écrit en C# ? Pour moi c’est vite vu. Bienvenue en 2014.



Quant au “gouffre au temps de démarrage”, c’est étrange car j’ai des pelletées de logiciels dotnet qui démarrent instantément.







wagaf a écrit :



Le C++ utilise le paradigme RAII, qui rend obsolète ou du moins inutile les systèmes de garbage collection.





Qu’est-ce qu’il ne faut pas lire…





De plus avec C++11, le C++ est devenu un vrai plaisir à utiliser.



C’est sûr qu’après les coups de fouets les orties sont rafraîchissantes mais bon…







foetus a écrit :



Javapocalypse



<img data-src=" /> <img data-src=" />





You will see Stephen Hawking pole-vaulting before you see a security breach with Java.

<img data-src=" />









wargre a écrit :



Met ton Xmx égal a ton Xms et ton XX:PermSpace égal a ton XX:MaxPermSize et ta JVM ne bougera que trés peu au cours du temps… (en jdk8, le code n’est plus forcement dans son propre espace, il doit y avoir des options équivalente pour le borner…)









plus de permgen en java 8 donc tu peux laisser tomber le paramètre





Les Loutres (Lutrinae) sont une sous-famille de mammifères carnivores de la famille des Mustelidés. Il existe plusieurs espèces de loutres, caractérisées par de courtes pattes, des doigts griffus et palmés (aux pattes avant et arrière) et une longue queue.



Cette sous-famille a été décrite pour la première fois en 1838 par le zoologiste Charles Lucien Bonaparte (1803-1857), l’un des neveux de Napoléon Bonaparte.



Dans de nombreux pays les loutres ont disparu de tout ou partie de leurs aire naturelle de répartition, de même que les castors qui partageaient leur milieu de vie. Ces deux espèces-clé font l’objet depuis un siècle environ de protection et de programmes ou projets de réintroduction2 ou confortement de populations par translocation3. La loutre étant particulièrement discrète elle fait souvent l’objet d’un suivi par recherche d’indice (poils, marquage de territoire, pièges photographiques et suivi télémétrique par puce électronique4,5.





Voilà, ça fera au moins un comm’ apportant une quelconque valeur ajoutée à ce fil de discussion.








nateriver a écrit :



Et le c++ c’est à vomir. En 2014 ton langage a pas de garbage collector? Allo? Autant faire du cobol…







Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.









Alesk a écrit :



Mouais… Pour moi le java est, et restera, un langage de merde.



Ça permet uniquement à des développeurs inexpérimentés/nuls de sortir de la merde rapidement sans rien comprendre à ce qui se passe réellement en dessous. “T’inquiètes pas, je gère”



Tout ce que le dev java ne fait plus, par feignantise ou par incompétence, c’est le sysadmin qui se le tape en maintenant l’environnement nécessaire à faire marcher tout le merdier qu’est java.



La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus. Et bah j’ai plus assez de doigts pour compter le nombre de softs qui ne fonctionne plus après avoir mis à jour la jvm. Donc on garde un magnique système faillible, et pi cé tou…



Le dev n’as plus à s’occuper de nettoyer les objets déréférencé…. Mais à quel prix? rien que de devoir spécifier les xmx et xms est une aberration en soit pour un programme…



java essaye de réinventer tout ce qui est déjà présent dans un OS, mais forcement en moins bien, c’est quoi l’utilité? Quant à gérer des permissions systèmes, et bien c’est magique, tout programme lancé depuis /usr/bin/java… Donc pour faire de la sécurité système apparmor ou selinux… et bien tu peux pas…



Quant au serveur d’application jboss and co… touours sencé simplifier le boulot des développeurs, juste LOL, l’usine à gaz complètement inmaintenable, qui du coup n’est jamais mis à jour. Sauf à avoir une équipe de plusieurs personne dédié à le gérer.



Tant que les choix techniques partent du dev, forcement, java a de beaux jours devant lui. Mais combien de dev sont capable d’administrer une jvm? 10%? Bref…



Voilà, c’est ça java.







Il faut toujours partir du besoin, et Java répond à certains besoins, dont ceux de faire du logiciel de gestion, des applications web, …

Java et les frameworks sont matures et permettent de réaliser des solutions globalement complexes.



Il semble que des frameworks Javascript tentent de percer, ils sont intéressants, mais pas encore matures.





Java et J2EE sont des spécifications. Il existe plusieurs fournisseurs d’implémentation.



Les softs qui ne fonctionnent plus après avoir mis à jour une JVM ? A part dans les grosses merdes propriétaires de type Weblogic et les applets (berk), je n’en ai pas rencontré. Tu peux en citer une ou deux ? Les frameworks Apache ont des bonnes compatibilités, et comme ils servent beaucoup dans mon métier, je n’ai pas rencontré ce genre de problématique.



Les paramètres xms/xmx ne sont pas des aberrations : tu spécifies les limites qu’occupe le soft sur le système, donc tu ne plantes pas le système par une occupation de mémoire. Je peux comprendre que ça ne plaise pas dans certains contextes.





Validation des applications sur une grosse version de JVM : il faut faire de tests et de l’intégration continue. (Mais ça veut dire qu’il faut écrire des tests, çà vaut pour tous les langages…)



La sécurité, les droits sont à la charge



JBoss et autres Websphere sont des grosses usines, je le concède volontiers.











caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.









caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.





Et les memory leaks, c’est un peu l’incontinence fécale des développeurs c++ en fin de carrière lol. Ouch parait que le c++14 apporte un GC au c++…



Sa me fait marrer cette gueguerre debille a savoir qu’elle est le meilleur language…



Excepter pour les dev amateur qui vont choisir leur langage sur des critères plus ou moins valable (on est plus dans les année 90, la gestion de la ram n’est plus le centre des préoccupation), on choisi un langage pour sa finalité.



Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)



Par contre .net et java eu le sont, ils sont dailleur fait pour sa, et il n’est pas question de ne pas savoir codé ou d’être feignant (bien que pour un dev la feignantise est un gros plus), mais bien d’utilisé les outils adéquate…



Il ne faut oublié (pour les pro en tous cas) que se qui compte avant tous c’est la productivité et le rendu final, que le code soit fait en bas niveau avec une gestion tres optimisé de la ram, le client il sans fout complètement, par contre si on doit y passé deux semaine au lieux d’une pars-que le bas niveau implique d’y passé plus de temp, la sa le fait toute de suis moin bien



Aprés en lisant les coms de certain, je ne suis pas convaincu que se qui se permétre de critiqué java et/ou le .net ont réellement regardé se que ces langages pérmétait réellement et qu’elles était leur réel atout (il n’y a pas que les perf et la conso ram dans la vie).








nateriver a écrit :



Trop swag les développeurs C++ qui utilisent des templates à tout bout de champs, qui nomment leurs variables “a”, “b” ou “c” , qui réutilisent ces variables plusieurs fois dans le même algorithme de 2000 lignes de code pour gagner 1 octet en ram, qui commentent jamais leur code, parce qu’ils sont vraiment trop fort et que taper 3 lignes de commentaires c’est une énorme perte selon eux, pas seulement pour eux-même mais pour leur patron et , plus généralement, la galaxie entière.







Je ne suis pas sûr que le nommage, la réutilisation de variables, le découpage des fonctions et les commentaires soient liés au langage de programmation.









nateriver a écrit :



[quote:4960370:caesar]



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.









caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.





Et les memory leaks, c’est un peu l’incontinence fécale des développeurs c++ en fin de carrière lol. Ouch parait que le c++14 apporte un GC au c++…

[/quote]



Bah c’est ça aussi, les couches réapparaissent en fin de vie, java a prévu ça très tôt.









Alesk a écrit :



Mouais… Pour moi le java est, et restera, un langage de merde.



Ça permet uniquement à des développeurs inexpérimentés/nuls de sortir de la merde rapidement sans rien comprendre à ce qui se passe réellement en dessous. “T’inquiètes pas, je gère”



(…)



La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus.



(…)



Quant au serveur d’application jboss and co… touours sencé simplifier le boulot des développeurs, juste LOL, l’usine à gaz complètement inmaintenable, qui du coup n’est jamais mis à jour. Sauf à avoir une équipe de plusieurs personne dédié à le gérer.



(…)



Voilà, c’est ça java.







Donc en résumant, c’est de la merde, mais tu n’y connais rien. Car non j2ee n’est pas une norme que la jvm doit suivre, et je ne m’étendrai pas sur la suite de tes inepties. Ensuite ta diatribe est suivie de plusieurs énormes fautes et d’un ‘juste LOL’.



Bravo, tu as officiellement montré que tu es un gros crétin.









wagaf a écrit :



Par “moderne”, tu veux dire après avoir rajouté une couche d’abstraction complète par dessus ? <img data-src=" />







Même pas <img data-src=" />









HarmattanBlow a écrit :



3,8 Mo en C# 4.5 avec OS 64 bits.

<img data-src=" />



Et accessoirement je vois très rarement des programmes dépasser les 20-30Mo. A la rigueur VS occupe 100Mo mais vu le monstre…





Il faut regarder la colonne “Mémoire privée” plutôt que “Jeu de travail” ou “Mémoire”. La mémoire privée est à peu près la mémoire nécessaire à ton appli. Le jeu de travail, c’est la mémoire physique actuellement mangée par ton appli. Mais une appli de 800Mo en mémoire peu n’avoir besoin temporairement que de 20Mo en RAM.



Pour moi, quelque soit le programme .Net la charge mini est d’environ 20Mo.



Et VS prend plutôt 300 à 800 Mo (120Mo si tu fais un “HelloWorld”)







HarmattanBlow a écrit :



Tertio, tu préfères confier ton wallet bitcoin à un prog écrit en C bourré de failles et qui plante ou à un truc écrit en C# ? Pour moi c’est vite vu. Bienvenue en 2014.





Là c’est aussi un sujet. Ton programme C# aura des failles “applicatives” (difficile de faire un bufferoverflow par exemple), mais les failles seront dans des librairies que tu ne contrôles pas.

En C++, tu pourrais faire des failles de type bufferoverflow (en plus des applicatives) mais là tu peux maîtriser leur correction.



[quote:4960345:HarmattanBlow]

Quant au “gouffre au temps de démarrage”, c’est étrange car j’ai des pelletées de logiciels dotnet qui démarrent instantément.

[quote]

TAFA (Tout A Fait d’Accord).



J’ajoute autre chose: C++ c’est un language, .Net c’est une plate-forme.



Je sais par exemple qu’un algo très dynamique nécessitant des allocations mémoire très différentes d’une exécution à l’autre sera assez prédictible sur une plate-forme Java ou .Net, car les langages à Garbage collection sont très rapides généralement à créer de nouveaux objets.

En C++, ça dépend de la librairie sous-jacente (malloc).

Par ailleurs, sur le long terme, pour des projets complexes, à moins de créer des espèces de “cage mémoire” en C++, le C++ aura tendance à fragmenter la mémoire, pas les environnements à GC qui le défragmentent souvent.









goldbergg a écrit :



Sa me fait marrer cette gueguerre debille a savoir qu’elle est le meilleur language…



Excepter pour les dev amateur qui vont choisir leur langage sur des critères plus ou moins valable (on est plus dans les année 90, la gestion de la ram n’est plus le centre des préoccupation), on choisi un langage pour sa finalité.



Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)



Par contre .net et java eu le sont, ils sont dailleur fait pour sa, et il n’est pas question de ne pas savoir codé ou d’être feignant (bien que pour un dev la feignantise est un gros plus), mais bien d’utilisé les outils adéquate…



Il ne faut oublié (pour les pro en tous cas) que se qui compte avant tous c’est la productivité et le rendu final, que le code soit fait en bas niveau avec une gestion tres optimisé de la ram, le client il sans fout complètement, par contre si on doit y passé deux semaine au lieux d’une pars-que le bas niveau implique d’y passé plus de temp, la sa le fait toute de suis moin bien



Aprés en lisant les coms de certain, je ne suis pas convaincu que se qui se permétre de critiqué java et/ou le .net ont réellement regardé se que ces langages pérmétait réellement et qu’elles était leur réel atout (il n’y a pas que les perf et la conso ram dans la vie). Y A L’ORTHOGRAPHE AUSSI







Tu ferais bien de regarder tes cours de français &gt;&lt; quelque soit le langage faut respecter à minima la structure. Si t’es aussi fort en programmation qu’en français j’ai peur…



La mes yeux font “syntaxe error” en lettres de sang.









caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.









I had hoped that a garbage collector which could be optionally enabled would be part of C++0x, but there were enough technical problems that I have to make do with just a detailed specification of how such a collector integrates with the rest of the language, if provided. As is the case with essentially all C++0x features, an experimental implementation exists.

Bjarne Stroustrup



Le GC etait initialement prévu pour le C++ …. <img data-src=" />









HarmattanBlow a écrit :



Primo, quel est l’intérêt d’avoir des programmes qui font 50k sur PC aujourd’hui ?





Pour le greenIT?<img data-src=" />



Nan plus serieusement, c’est pas tant la capacité de mémoire qui gene aujourd’hui mais le temps de mise en mémoire de truc inutile dans un contexte précis…



Je veux dire à une epoque on reprochait à firefox d’etre gourmand en memoire, c’etait pas parce qu’il saturait la RAM, mais surtout parce qu’il mettait 3 plombe à demarrer, et recharger/fermer ses onglets…









caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.





+1 <img data-src=" />









XalG a écrit :



Je ne suis pas sûr que le nommage, la réutilisation de variables, le découpage des fonctions et les commentaires soient liés au langage de programmation.







Ouais t’as raison, comme quoi il suffit pas juste de savoir chasser la galinette coder en C++ pour être un bon chasseur développeur.



Java est en tres nette perte de vitesse en ce moment et tarde à se repenser. Les lacunes historiques sont toujours la et les nouveautés font vraiment “usine à gaz”.



Quant à la stratégie d’Oracle, il est à craindre qu’ils pensent Java pour leurs interets et donc le tuent à moyen terme …


Le 20/03/2014 à 09h 19







goldbergg a écrit :



Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)







Parce que la majorité des développeurs Web ne sont pas des vrais développeurs, ils ont appris PHP et c’est tout, sans savoir même ce qu’est un pointeur.

Donc faire un site en C++, c’est possible, ça se fait parfois, mais le jour où il faut remplacer le dév, ben on a personne pour pas cher, alors que les devs PHP ça manque pas puisque tout le mondre peut l’être.









127.0.0.1 a écrit :



Non, ce qui me manque vraiment c’est que la JVM de Oracle/Sun alloue/libère la mémoire à la demande, au lieu de faire une allocation fixe au démarrage. <img data-src=" />





http://java.dzone.com/articles/java-8-permgen-metaspace









psn00ps a écrit :



Sinon, il y a aussi la solution de savoir programmer un HelloWorld qui utilise moins de 20Mo de RAM <img data-src=" />

(si vous le tentez en C#, c’est perdu d’avance <img data-src=" />)





J’ai gagné quoi ?

http://hpics.li/cb589eb

<img data-src=" />









Yzokras a écrit :



Parce que la majorité des développeurs Web ne sont pas des vrais développeurs, ils ont appris PHP et c’est tout, sans savoir même ce qu’est un pointeur.

Donc faire un site en C++, c’est possible, ça se fait parfois, mais le jour où il faut remplacer le dév, ben on a personne pour pas cher, alors que les devs PHP ça manque pas puisque tout le mondre peut l’être.





je me trompe ou tu ne te prend pour une me#de à prendre des milliers de dev sans doute pour la plus pars plus calé que toi de haut?



Il ne faut pas oublier qu’il y a le monde amateur (avec en effet une majorité de dev PHP qui ne comprenne pas réellement se qu’il sont en train de faire) et le monde pro, ou la que sa soit pour du php, du .net ou en java, on a généralement des dev qualifié qui savent parfaitement se qu’il font (j’ai appris le c en cours bien avant le php/c#/java en se qui me concerne, sans oublié tous les cours théorique).



Et pour les site web en c++ si sa ne se fait pas ou que tres rarement en entreprise c’est juste que le langage n’est absolument pas adapté (la seul vrais solution est le CGI qui est une horreur)

(au passage les plus gros site a très fort trafique ne sont pas en c++, mais bien en asp.net, jee ou encore php)



j’ai l’impression que c’est maladifs chez les dev C++ de pensser que le C++ &gt; all

et de prendre tous le monde de très haut.



Sympa cette news, ça permet de se distraire en lisant les commentaires.



Sur ce, je vous quitte, et je retourne coder mon bootstrap en assembleur



<img data-src=" />


Le 20/03/2014 à 09h 55







goldbergg a écrit :



Et pour les site web en c++ si sa ne se fait pas ou que tres rarement en entreprise c’est juste que le langage n’est absolument pas adapté (la seul vrais solution est le CGI qui est une horreur)







Le C++ pourrait faire des jeux vidéo de dingue, mais pas afficher du texte avec quelques boucles et quelques accès à MySQL ? “adapté” pour le web veut dire “facile”. Certes le C++ n’est pas facile. C’est pourquoi presque personne n’est capable d’en faire. Mais il permettrait de faire des sites Web qui consommeraient moins de ressources serveurs, moins de mémoire, plus rapides… Alors certes, maintenant que la solution est toujours de prendre un serveur de plus en plus gros, bref solution de facilité comme pour le langage (avant PHP c’était le Basic qui était le + populaire, parce qu’il était… “adapté” ?), ce n’est plus d’actualité…









caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.





Les développeurs “adultes” ? Ah oui, ces gros bouffons(*) qui se prennent pour superman parce qu’ils écrivent trois instructions assembleur par mois et qui collent des failles de sécurité partout parce que c’est ça être un vrai homme ?



Le C++ est amené à disparaître pour la quasi-totalité des nouveaux projets et c’est une excellente nouvelle parce que l’état actuel des systèmes informatiques est inacceptable avec des centaines des centaines de millions de machines infestées de par le monde par des menaces persistantes avancées (APT) sur tous les OS sans exception. Demain les programmes écrits dans des langages non-vérifiables tourneront tous dans des machines virtuelles, à peu de choses près, seuls les langages vérifiables ayant droit aux places prestige. Et personne ne regrettera la façon de faire actuelle.



(*) Le commentaire vaut pour tous ceux qui se croient supérieurs parce qu’ils utilisent tel ou tel langage. Je n’ai pas de préjugés en général contre les hommes, qu’ils se farcissent du cobol, du JS ou de l’asm 68k. Dans toutes les catégories on trouve le pire comme le meilleur.









brice.wernet a écrit :



Il faut regarder la colonne “Mémoire privée”

plutôt que “Jeu de travail” ou “Mémoire”





C’est bien ça. Win 8.0 64, compilation AnyCPU release et VS2012. Accessoirement j’ai restreint les références à mscorlib et System.Core mais ça faisait peu de différences (500ko après avoir viré Xml et Data)





Et VS prend plutôt 300 à 800 Mo (120Mo si tu fais un “HelloWorld”)



158 avec une une dizaine de projets et quelques centaines de sources.

Tu n’utiliserais pas Resharper par hasard ? ;)





Là c’est aussi un sujet. Ton programme C# aura des failles “applicatives” (difficile de faire un bufferoverflow par exemple), mais les failles seront dans des librairies que tu ne contrôles pas.



Mais tu ne contrôles pas non plus les dll de l’OS en C++ et c’est là que se niche 90% du code utilisé par ton appli, les 0,5% de la STL ne pèsent pas lourd. Alors puis comment se positionne l’avantage de pouvoir modifier la STL au regard de celui de ne pas pouvoir créer de failles de sécurité et d’avoir un programme qui plante au moindre problème plutôt que de silencieusement corrompre les données et nécessitant quatre semaines de débogage avec les clients qui hurlent ?







AlphaBeta a écrit :



Java est en tres nette perte de vitesse en ce moment et tarde à se repenser. Les lacunes historiques sont toujours la et les nouveautés font vraiment “usine à gaz”.





Ouais enfin quand on voit qu’il est remplacé par node.js… Javascript, quoi. Pitié épargnez-nous le couplet sur JS incompris qui en fait est un super langage, etc. Merci, je comprends très bien la programmation par protoypage. Et c’est quand même une bouse.









goldbergg a écrit :



Sa me fait marrer cette gueguerre debille a savoir qu’elle est le meilleur language…



Excepter pour les dev amateur qui vont choisir leur langage sur des critères plus ou moins valable (on est plus dans les année 90, la gestion de la ram n’est plus le centre des préoccupation), on choisi un langage pour sa finalité.



Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)



Par contre .net et java eu le sont, ils sont dailleur fait pour sa, et il n’est pas question de ne pas savoir codé ou d’être feignant (bien que pour un dev la feignantise est un gros plus), mais bien d’utilisé les outils adéquate…



Il ne faut oublié (pour les pro en tous cas) que se qui compte avant tous c’est la productivité et le rendu final, que le code soit fait en bas niveau avec une gestion tres optimisé de la ram, le client il sans fout complètement, par contre si on doit y passé deux semaine au lieux d’une pars-que le bas niveau implique d’y passé plus de temp, la sa le fait toute de suis moin bien



Aprés en lisant les coms de certain, je ne suis pas convaincu que se qui se permétre de critiqué java et/ou le .net ont réellement regardé se que ces langages pérmétait réellement et qu’elles était leur réel atout (il n’y a pas que les perf et la conso ram dans la vie).





<img data-src=" /> arrête développeur, fais prof de français <img data-src=" />









Alesk a écrit :



Ça permet uniquement à des développeurs inexpérimentés/nuls de sortir de la merde rapidement sans rien comprendre à ce qui se passe réellement en dessous.







Je suppose que quand le C est sorti, les crétins barbus qui ne savaient coder qu’en Assembleur disaient la même chose pour se donner une consistance face à un truc qu’ils ne comprenait pas. La suite de ton commentaire montre que tu ne comprends pas ce qu’est Java, donc je pense que tu fais partie de cette catégorie de personnes.







Alesk a écrit :



Tout ce que le dev java ne fait plus, par feignantise ou par incompétence, c’est le sysadmin qui se le tape en maintenant l’environnement nécessaire à faire marcher tout le merdier qu’est java.





N’importe quoi… Avant Java, le sysadmin gérait des serveurs. Avec Java, il… gère des serveurs. Whaa, ça a drolement évolué.







Alesk a écrit :



La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus.







OK, t’y connais rien. JEE n’a rien à voir avec le fonctionnement de la JVM.







Alesk a écrit :



Et bah j’ai plus assez de doigts pour compter le nombre de softs qui ne fonctionne plus après avoir mis à jour la jvm. Donc on garde un magnique système faillible, et pi cé tou…





Ben oui, parce que dans Java, comme dans la plupart des langages, il y a des fonctions deprecated, et des API internes qu’on ne doit pas utiliser. Si le développeur les utilise quand même, ben Java ne va pas corriger le code tout seul. C’est pas magique…







Alesk a écrit :



Le dev n’as plus à s’occuper de nettoyer les objets déréférencé…. Mais à quel prix? rien que de devoir spécifier les xmx et xms est une aberration en soit pour un programme…







Tu ne dois pas les spécifier, tu peux les spécifier. Et je vois pas où est l’aberration.







Alesk a écrit :



java essaye de réinventer tout ce qui est déjà présent dans un OS





N’importe quoi…









Alesk a écrit :



Voilà, c’est ça java.





C’est surtout ça un gars qui n’y connait pas grand chose…



Continuons avec les posts à valeur ajoutée dans ce fil:





galinette n. féminin: Petite poule, poulette.



Une poule naine, est une poule atteinte de nanisme. Selon les provinces et les patois la poule naine a de nombreuses dénominations : poule de Cayenne, bassette, gallinette…



Il faut distinguer deux types de poules naines :




  • Les naines vraies, c’est-à-dire n’ayant pas d’équivalent en grande race

  • Les nanifications de grandes races existantes (ex: Brahma, Cou-nu, Araucana…)



    Différents noms en usage:



    Les poules naines sont communément appelées en France sous le terme anglophone de bantam, le club officiel en France affilié à la Société centrale d’aviculture de France qui publie le standard officiel et regroupe les clubs et éleveurs de poules naines s’appelle le Bantam Club français.



    But de l’élevage:



    La conduite d’un élevage de poules naines ne diffère guère de celui des grandes races. Il y a plusieurs raisons de préférer l’élevage des poules naines aux grandes races :



  • Pour des raisons de place : plus petites, elles demandent moins d’espace.

  • Pour des raisons décoratives : la plupart du temps ce sont des races plutôt vouées à l’ornement, de par leur petite taille, leur forme et leurs nombreuses variétés de plumage, même si certaines races produisent des poulets corrects et de bonnes pondeuses.



    Certaines races naines sont sélectionnées pour leur aptitude à couver (nègre-soie, Pictave…), ce qui est est recherché par les éleveurs qui veulent une incubation naturelle de leurs volailles (poussins, canetons…), ainsi que certains chasseurs qui leur confient leurs œufs de faisans et perdrix.








HarmattanBlow a écrit :



Pitié épargnez-nous le couplet sur JS incompris qui en fait est un super langage, etc.





Oé! Le JS ça sert juste à afficher l’heure sur les pages html, alors pouet pouet!<img data-src=" />



Il faut faire du Dart!!!<img data-src=" />









HarmattanBlow a écrit :



Les développeurs “adultes” ? Ah oui, ces gros bouffons(*) qui se prennent pour superman parce qu’ils écrivent trois instructions assembleur par mois et qui collent des failles de sécurité partout parce que c’est ça être un vrai homme ?







Exactement ! Un vré un poiluuuu. <img data-src=" />



De tout façon tout bon vrai développeur sait que la faille se situe entre le clavier et la chaise. <img data-src=" />









levhieu a écrit :



Sympa cette news, ça permet de se distraire en lisant les commentaires.



Sur ce, je vous quitte, et je retourne coder mon bootstrap en assembleur



<img data-src=" />





<img data-src=" /> <img data-src=" />

Un magnifique « j’ai la plus grosse » glissé au milieu de tout ça <img data-src=" />







brazomyna a écrit :



biologie, faune





Et sinon un p’tit <img data-src=" /> @ brazomyna pour ses derniers posts <img data-src=" />









HarmattanBlow a écrit :



Les développeurs “adultes” ? Ah oui, ces gros bouffons(*) qui se prennent pour superman parce qu’ils écrivent trois instructions assembleur par mois et qui collent des failles de sécurité partout parce que c’est ça être un vrai homme ?



Le C++ est amené à disparaître pour la quasi-totalité des nouveaux projets et c’est une excellente nouvelle parce que l’état actuel des systèmes informatiques est inacceptable avec des centaines des centaines de millions de machines infestées de par le monde par des menaces persistantes avancées (APT) sur tous les OS sans exception. Demain les programmes écrits dans des langages non-vérifiables tourneront tous dans des machines virtuelles, à peu de choses près, seuls les langages vérifiables ayant droit aux places prestige. Et personne ne regrettera la façon de faire actuelle.



(*) Le commentaire vaut pour tous ceux qui se croient supérieurs parce qu’ils utilisent tel ou tel langage. Je n’ai pas de préjugés en général contre les hommes, qu’ils se farcissent du cobol, du JS ou de l’asm 68k. Dans toutes les catégories on trouve le pire comme le meilleur.





<img data-src=" />



C’est d’ailleurs pour ça qu’il y a nombres de systèmes temps réels ultra-sécurisés qui tournent en C/C++.



N’importe quel programme écrit en n’importe langage peut contenir des failles, à moins que tu t’amuses à écrire toi-même sans aucune faute ta propre chaîne de compilation ou interpréteur…



Et quand on voit certains commentaires, on se doute bien que la plupart des failles viennent de développeurs qui ne savent pas ce qu’ils font.









mistigrite a écrit :



Avant Java, le sysadmin gérait des serveurs. Avec Java, il… gère des serveurs. Whaa, ça a drolement évolué.







Le pire a gérer étant un serveur sur lequel tournent des process C++ pleins de fuites qui reposent sur un exécutable java horriblement gourmand, et une jvm qu’on ne peut pas mettre à jour sous peine de rendre le merdier inutilisable.



Le pire des 2 mondes.

[ /vécu inside]









HarmattanBlow a écrit :



3,8 Mo en C# 4.5 avec OS 64 bits.

<img data-src=" />



Et accessoirement je vois très rarement des programmes dépasser les 20-30Mo. A la rigueur VS occupe 100Mo mais vu le monstre…





Primo, quel est l’intérêt d’avoir des programmes qui font 50k sur PC aujourd’hui ? Aucun. Deuxio si tu t’intéresses à la mémoire les 3Mo de surcharge initiale ne sont pas le facteur le plus pertinent et le C++ n’empêche pas Firefox de se bouffer des centaines de ou milliers de mégaoctets. Tertio, tu préfères confier ton wallet bitcoin à un prog écrit en C bourré de failles et qui plante ou à un truc écrit en C# ? Pour moi c’est vite vu. Bienvenue en 2014.





Un programme en C/C++ bien écrit ne plantera pas et ne nécessitera pas autant de ressources que Java/C#. Voilà pourquoi les machines ont des disques/cpu/RAM immenses.





youtpout978 a écrit :



J’ai gagné quoi ?

http://hpics.li/cb589eb





<img data-src=" />



Toujours les mêmes débats <img data-src=" />

Pour le moment aucun langage ne remplit tous les usages. Ca devrait être le cas quand M# sortira <img data-src=" />



En attendant je code en C++ pour la programmation cliente et .net (C#) sur serveur.



sinon visual studio 2012 consomme 161Mo chez moi avec une dizaine de projets ouverts et une centaine de fichiers sources.



Pour le fait que les hello world consomment plus de ram en java ou .net c’est parce que le runtime est chargé dans le processus de l’application.


Pour revenir à la news : ne pensez vous pas que les lambdas expressions vont nuire à la lisibilité du code ?



Franchement, quel intérêt, à part mettre des miettes de code partout ?











psn00ps a écrit :



Un programme en C/C++ bien écrit ne plantera pas et ne nécessitera pas autant de ressources que Java/C#. Voilà pourquoi les machines ont des disques/cpu/RAM immenses.



<img data-src=" />





Comme l’a dit plus haut HarmattanBlow ils sont surtout bourrés de failles. Si on en croit certains ça voudrait dire que les développeurs de navigateur web ou d’os codent avec les pieds…









charon.G a écrit :



Comme l’a dit plus haut HarmattanBlow ils sont surtout bourrés de failles. Si on en croit certains ça voudrait dire que les développeurs de navigateur web ou d’os codent avec les pieds…





Ce n’est pas parce qu’il sera managé qu’il n’y aura pas de failles <img data-src=" />









caesar a écrit :



De tout façon tout bon vrai développeur sait que la faille se situe entre le clavier et la chaise. <img data-src=" />





Et tout vrai développeur comprend que puisqu’il est et sera toujours la causse des problèmes, il lui faut des outils qui détectent le plus de problèmes possibles.



Et entre ma réponse et les message auquel je répondais, le poilu ce n’était pas moi. Ce n’est pas un troll ! Nous devons aller vers des langages offrant de plus en plus de mécanismes de sûreté parce que nous ne sommes pas fiables et je ne comprends même pas que ça fasse débat, ce n’est pas professionnel.



Tant que nous continuerons à utiliser des langages de bas niveau le résultat sera le même : plus de bogues et plus de failles, et des centaines de millions de machines infestées. Alors soit on continue comme ça soit on prend acte du problème et on évolue vers des langages de plus haut niveau encore avec des modèles vérifiables de concurrence et autres joyeusetés.







ActionFighter a écrit :



C’est d’ailleurs pour ça qu’il y a nombres de systèmes temps réels ultra-sécurisés qui tournent en C/C++.





Ils sont écrits en C parce qu’ils n’avaient pas le choix : parce que le matos est encore souvent si peu puissant qu’il faut rester proche du matériel, et parce que sur du matériel exotique le choix de compilateur et de langage est restreint. Sauf que tout ça est en train de changer avec l’explosion des technos mobiles et la loi de Moore.



Est-ce que le C/C++ est un bon choix pour un système chargé de diriger une bagnole ? Non, c’est même criminel, comme l’a encore récemment prouvé Toyota avec un bogue qui aurait été aisément détecté avec un langage de plus haut niveau (dépassement de la pile d’appels causant une modification du code lui-même avec accélération constante au bout du compte).





N’importe quel programme écrit en n’importe langage peut contenir des failles



Bien sûr mais certains langages détectent automatiquement certains problèmes qui, dans d’autres, passeront inaperçus.



L’homme est faillible, la machine peut détecter certaines de ces erreurs. Profitons-en et ne dédaignons pas ces avancées sous prétexte qu’elles ne détectent pas tous les problèmes !









psn00ps a écrit :



Ce n’est pas parce qu’il sera managé qu’il n’y aura pas de failles <img data-src=" />





pas de buffer overflow possible ,vu que tu ne peux pas manipuler de pointeurs. C# est type safe et memory safe.









charon.G a écrit :



pas de buffer overflow possible ,vu que tu ne peux pas manipuler de pointeurs. C# est type safe et memory safe.





Ah bon ? On m’aurait menti ?

http://msdn.microsoft.com/fr-fr/library/chfa2zb8.aspx









psn00ps a écrit :



Ah bon ? On m’aurait menti ?

http://msdn.microsoft.com/fr-fr/library/chfa2zb8.aspx





Je savais que tu allais sortir ça en écrivant mon commentaire. C’est un cas particulier ,il faut l’autoriser dans les options de l’application. Mais si tu codes en .net il est déconseillé d’utiliser du code unsafe. Il faut aussi une permission pour autoriser le code unsafe sur ton application.

Après tu peux faire aussi du p-invoke sur des api win32. et le .net repose sur des api natives. C’est pour ça qu’on se dirige vers un os entièrement en code safe(M#)

C’est comparable au jni en java









HarmattanBlow a écrit :



Et tout vrai développeur comprend que puisqu’il est et sera toujours la causse des problèmes, il lui faut des outils qui détectent le plus de problèmes possibles.



Et entre ma réponse et les message auquel je répondais, le poilu ce n’était pas moi. Ce n’est pas un troll ! Nous devons aller vers des langages offrant de plus en plus de mécanismes de sûreté parce que nous ne sommes pas fiables et je ne comprends même pas que ça fasse débat, ce n’est pas professionnel.



Tant que nous continuerons à utiliser des langages de bas niveau le résultat sera le même : plus de bogues et plus de failles, et des centaines de millions de machines infestées. Alors soit on continue comme ça soit on prend acte du problème et on évolue vers des langages de plus haut niveau encore avec des modèles vérifiables de concurrence et autres joyeusetés.





Ils sont écrits en C parce qu’ils n’avaient pas le choix : parce que le matos est encore souvent si peu puissant qu’il faut rester proche du matériel, et parce que sur du matériel exotique le choix de compilateur et de langage est restreint. Sauf que tout ça est en train de changer avec l’explosion des technos mobiles et la loi de Moore.



Est-ce que le C/C++ est un bon choix pour un système chargé de diriger une bagnole ? Non, c’est même criminel, comme l’a encore récemment prouvé Toyota avec un bogue qui aurait été aisément détecté avec un langage de plus haut niveau (dépassement de la pile d’appels causant une modification du code lui-même avec accélération constante au bout du compte).





Bien sûr mais certains langages détectent automatiquement certains problèmes qui, dans d’autres, passeront inaperçus.







Taaaaaain mais tu les vois pas les poils sur mes message <img data-src=" />



je m’auto quote





caesar a écrit :



Le garbage collector c’est un peu la couche culotte du developpeur, c’est la pour ramasser sa merde. ^^’ les développeurs adultes ça n’en a pas besoin.







Tu le vois tjrs pas le troll de forain en train de décuvé? Je pêche au bazooka voir même à l’arme nucléaire (ou fatale pour les vieux) <img data-src=" />







HarmattanBlow a écrit :



L’homme est faillible, la machine peut détecter certaines de ces erreurs. Profitons-en et ne dédaignons pas ces avancées sous prétexte qu’elles ne détectent pas tous les problèmes !







Une petite update sur ton détecteur a troll ne serait pas de trop :P









uzak a écrit :



Pour revenir à la news : ne pensez vous pas que les lambdas expressions vont nuire à la lisibilité du code ?



Franchement, quel intérêt, à part mettre des miettes de code partout ?





En fait, c’est plutôt l’inverse: les fonctions anynmes permettent au contraire de regrouper au même endroit des parties de code qui sont liées, plutôt que les éparpiller partout.









HarmattanBlow a écrit :



Nous devons aller vers des langages offrant de plus en plus de mécanismes de sûreté parce que nous ne sommes pas fiables et je ne comprends même pas que ça fasse débat, ce n’est pas professionnel.







<img data-src=" />





Autruche est le nom donné aux espèces d’oiseaux du genre Struthio, de la famille des Struthionidae. Le mot dérive de l’italien ostruce, lui-même issu du latin avis struthio.



Au XXIe siècle, il ne reste plus dans ce genre que deux espèces vivantes, voire une seule selon que les auteurs considèrent Struthio molybdophanes comme étant une espèce distincte ou une simple sous-espèce de l’Autruche d’Afrique.



(…)



« Faire l’autruche » ou « appliquer la politique de l’autruche » sont des expressions populaires, des idiotismes animaliers partant de l’idée reçue qu’une autruche ayant peur reste figée debout et la tête dans le sable au lieu de s’enfuir. La légende trouve différentes explications du fait que cet animal se tient souvent la tête près du sol :



Pour échapper aux prédateurs, l’autruche se fige au sol, couchée, la tête au sol. Cette stratégie paraît dérisoire à l’homme qui est capable de la repérer facilement en suivant ses empreintes, contrairement aux animaux sensibles aux signaux auditifs et olfactifs8.









brazomyna a écrit :



<img data-src=" />







Manchot est un nom vernaculaire désignant en français des oiseaux marins de l’hémisphère austral, incapables de voler à cause de leur adaptation à la vie aquatique. Ce terme désigne spécifiquement plusieurs espèces de la famille des Spheniscidae à laquelle appartiennent aussi les gorfous ou « manchots à aigrettes ».

Les ailes des manchots, devenues inutilisables pour le vol, se seraient, par contre, merveilleusement adaptées à la nage et à la plongée : le Manchot papou peut atteindre 35 km/h à la nage (contre 9 km/h pour le meilleur nageur olympique) et le Manchot empereur peut plonger à plus de 520 m pour rechercher de la nourriture, soit le record absolu chez tous les oiseaux.

Le cri des manchots est appelé braiement ou jabotement.

Les différentes espèces de manchots sont souvent appelées par confusion « pingouins » dans le langage courant, à la fois à cause d’une ressemblance physique et à cause d’une ressemblance lexicale entre ce mot et la racine désignant le manchot dans la plupart des langues voisines du français1.









HarmattanBlow a écrit :



Et tout vrai développeur comprend que puisqu’il est et sera toujours la causse des problèmes, il lui faut des outils qui détectent le plus de problèmes possibles.



Et entre ma réponse et les message auquel je répondais, le poilu ce n’était pas moi. Ce n’est pas un troll ! Nous devons aller vers des langages offrant de plus en plus de mécanismes de sûreté parce que nous ne sommes pas fiables et je ne comprends même pas que ça fasse débat, ce n’est pas professionnel.



Tant que nous continuerons à utiliser des langages de bas niveau le résultat sera le même : plus de bogues et plus de failles, et des centaines de millions de machines infestées. Alors soit on continue comme ça soit on prend acte du problème et on évolue vers des langages de plus haut niveau encore avec des modèles vérifiables de concurrence et autres joyeusetés.



Ils sont écrits en C parce qu’ils n’avaient pas le choix : parce que le matos est encore souvent si peu puissant qu’il faut rester proche du matériel, et parce que sur du matériel exotique le choix de compilateur et de langage est restreint. Sauf que tout ça est en train de changer avec l’explosion des technos mobiles et la loi de Moore.



Est-ce que le C/C++ est un bon choix pour un système chargé de diriger une bagnole ? Non, c’est même criminel, comme l’a encore récemment prouvé Toyota avec un bogue qui aurait été aisément détecté avec un langage de plus haut niveau (dépassement de la pile d’appels causant une modification du code lui-même avec accélération constante au bout du compte).





Bien sûr mais certains langages détectent automatiquement certains problèmes qui, dans d’autres, passeront inaperçus.



L’homme est faillible, la machine peut détecter certaines de ces erreurs. Profitons-en et ne dédaignons pas ces avancées sous prétexte qu’elles ne détectent pas tous les problèmes !





Encore une fois, tout dépend de l’usage.



Si le matériel évolue, les langages évoluent également.



Le c++ n’a rien à voir avec ce qu’il était au début. Pointeurs intelligents, bientôt garbage collector, il va continuer à évoluer vers plus de sécurité.









ActionFighter a écrit :



Encore une fois, tout dépend de l’usage.



Si le matériel évolue, les langages évoluent également.



Le c++ n’a rien à voir avec ce qu’il était au début. Pointeurs intelligents, bientôt garbage collector, il va continuer à évoluer vers plus de sécurité.





C++ ne peut pas devenir un langage safe. Il n’a pas été conçu pour ça ou sinon il perd toute compatibilité avec le C++ actuel ce qui enlève de son intérêt.









HarmattanBlow a écrit :



Les développeurs “adultes” ? Ah oui, ces gros bouffons(*) qui se prennent pour superman parce qu’ils écrivent trois instructions assembleur par mois et qui collent des failles de sécurité partout parce que c’est ça être un vrai homme ?



Le C++ est amené à disparaître pour la quasi-totalité des nouveaux projets et c’est une excellente nouvelle parce que l’état actuel des systèmes informatiques est inacceptable avec des centaines des centaines de millions de machines infestées de par le monde par des menaces persistantes avancées (APT) sur tous les OS sans exception. Demain les programmes écrits dans des langages non-vérifiables tourneront tous dans des machines virtuelles, à peu de choses près, seuls les langages vérifiables ayant droit aux places prestige. Et personne ne regrettera la façon de faire actuelle.



(*) Le commentaire vaut pour tous ceux qui se croient supérieurs parce qu’ils utilisent tel ou tel langage. Je n’ai pas de préjugés en général contre les hommes, qu’ils se farcissent du cobol, du JS ou de l’asm 68k. Dans toutes les catégories on trouve le pire comme le meilleur.







C’est bien ça. Win 8.0 64, compilation AnyCPU release et VS2012. Accessoirement j’ai restreint les références à mscorlib et System.Core mais ça faisait peu de différences (500ko après avoir viré Xml et Data)





158 avec une une dizaine de projets et quelques centaines de sources.

Tu n’utiliserais pas Resharper par hasard ? ;)





Mais tu ne contrôles pas non plus les dll de l’OS en C++ et c’est là que se niche 90% du code utilisé par ton appli, les 0,5% de la STL ne pèsent pas lourd. Alors puis comment se positionne l’avantage de pouvoir modifier la STL au regard de celui de ne pas pouvoir créer de failles de sécurité et d’avoir un programme qui plante au moindre problème plutôt que de silencieusement corrompre les données et nécessitant quatre semaines de débogage avec les clients qui hurlent ?





Ouais enfin quand on voit qu’il est remplacé par node.js… Javascript, quoi. Pitié épargnez-nous le couplet sur JS incompris qui en fait est un super langage, etc. Merci, je comprends très bien la programmation par protoypage. Et c’est quand même une bouse.





Tiens j’ai une info pour toi qui devrait te plaire :

source





For C#, we are working on the cutting edge of pre-compiling managed languages for adoption in critical high-performance systems. Our goal is make the performance of managed languages exceed that of traditional unmanaged languages.









psn00ps a écrit :



Ah bon ? On m’aurait menti ?

http://msdn.microsoft.com/fr-fr/library/chfa2zb8.aspx





J’ai oubliéce lien

Il faut autoriser le code unsafe dans les paramètres du compilo sinon ça ne marche pas. Il est désactivé par défaut. Comme je disais plus haut ce n’est pas la norme et c’est déconseillé.









charon.G a écrit :



J’ai oubliéce lien

Il faut autoriser le code unsafe dans les paramètres du compilo sinon ça ne marche pas. Il est désactivé par défaut. Comme je disais plus haut ce n’est pas la norme et c’est déconseillé.



Il était indiqué dans le mien déjà <img data-src=" />









psn00ps a écrit :



Il était indiqué dans le mien déjà <img data-src=" />





T’as perud t’es grilled depuis bien longtemps <img data-src=" /><img data-src=" />









ActionFighter a écrit :



Le c++ n’a rien à voir avec ce qu’il était au début. Pointeurs intelligents, bientôt garbage collector, il va continuer à évoluer vers plus de sécurité.





Malheureusement je suis d’accord avec Charon : pour rendre le langage sûr il faudrait commencer par en supprimer toutes les fonctionnalités centrales, notamment remplacer les pointeurs par des références. C’est peine perdue et l’industrie va s’en débarrasser dans les décennies à venir, tout comme on est en train de se débarrasser de cobol et fortran.



C/C++ a été mon compagnon de voyage aux tous débuts et pendant des années après ça. J’ai eu beaucoup d’affection pour lui mais jamais je n’y retournerais (bon, je le dois parfois). Et aujourd’hui ce qui m’intéresse ce sont les langages de demain.







caesar a écrit :



Taaaaaain mais tu les vois pas les poils sur mes message <img data-src=" />

(…)

Tu le vois tjrs pas le troll de forain en train de décuvé? Je pêche au bazooka voir même à l’arme nucléaire (ou fatale pour les vieux) <img data-src=" />





Raaaaaahlalalalala ! Rogntudju ! Tu n’as pas honte, hein ?

<img data-src=" />







charon.G a écrit :



Tiens j’ai une info pour toi qui devrait te plaire :

source





Je te remercie. Je ne crois pas à leurs promesses de faire mieux que les langages natifs mais il est bon de voir que les rumeurs sur Bartok sont confirmées d’autant qu’un vrai compilo ne sera pas du luxe (en espérant qu’ils offrent une compilation AOT poussée vers l’IL et pas seulement vers du code natif).



Accessoirement MS semble réinvestir sérieusement dans sa pile de développement (rumeurs sur le rachat de Xamarin, etc) et c’est une excellente nouvelle même si je ne sais pas si suffira à enrayer l’inexorable domination de JS et Java. Pour ma part j’ai commencé à diversifier mes billes vers ces deux plateformes.







charon.G a écrit :



J’ai oubliéce lien

Il faut autoriser le code unsafe dans les paramètres du compilo sinon ça ne marche pas. Il est désactivé par défaut. Comme je disais plus haut ce n’est pas la norme et c’est déconseillé.



Et par ailleurs l’utlisation d’un code unsafe nécessite l’octroi d’une permission par le système, ce qui peut être désactivé par les admins. Ajoutons à ça qu’il y a en plus une protection en place, utilisant je présume (mais à vérifier, je n’ai jamais cherché) les mécanismes de mémoire virtuelle au niveau CPU, comme ce que fait Chrome pour ses processus légers. Enfin, bien sûr, c’est très rarement utilisé.









Dyblast a écrit :



Attention la grande nouveauté de Java 8 ce n’est pas les lambdas … Mais les default implementation dans les interfaces.

Car vous voyez faire de l’héritage multiple c’est pas beau… Donc tu implémentes plusieurs interfaces qui ont des implémentations par défaut…

Ils fument quoi chez Oracle?





En fait on n’a toujours pas d’héritage multiple “intégral”, comme en C++, en Java. On a désormais de l’héritage multiple de méthodes, mais pas d’héritage multiple pour l’état (variables d’instance), ce qui simplifie tout de même la gestion des cas où on hérite de deux interfaces implémentant des méthodes ayant la même signature.



Mais oui, il va falloir que les développeurs Java qui utilisent cette fonctionnalité fassent attention car même si les règles de résolution permettant au runtime de choisir l’implémentation à appeler restent relativement simples (ça dépend des relations d’héritage pouvant exister entre ces interfaces, puis de l’ordre dans lequel elles sont déclarées), il va sans doute y avoir pas mal de gens à se planter, résultant en des bugs pas toujours évidents à résoudre.









charon.G a écrit :



C++ ne peut pas devenir un langage safe. Il n’a pas été conçu pour ça ou sinon il perd toute compatibilité avec le C++ actuel ce qui enlève de son intérêt.





On est bien d’accord.



Maintenant, pour laisser des fuites mémoire avec les nouvelles fonctionnalités de C++11 et tous les outils de tests et de profilage de code, il faut que la recette soit mal faite.



Quant au code managé, il n’est pas exempt de faille. Java s’apparente à du code managé, et pourtant…

Et il y a également des mises à jour de sécurité du .net, ce n’est pas pour rien.









HarmattanBlow a écrit :



Malheureusement je suis d’accord avec Charon : pour rendre le langage sûr il faudrait commencer par en supprimer toutes les fonctionnalités centrales, notamment remplacer les pointeurs par des références. C’est peine perdue et l’industrie va s’en débarrasser dans les décennies à venir, tout comme on est en train de se débarrasser de cobol et fortran.



C/C++ a été mon compagnon de voyage aux tous débuts et pendant des années après ça. J’ai eu beaucoup d’affection pour lui mais jamais je n’y retournerais (bon, je le dois parfois). Et aujourd’hui ce qui m’intéresse ce sont les langages de demain.





Là, où je suis d’accord, c’est que le c++ va sûrement disparaître de l’industrie (sauf peut-être pour le jeu vidéo). Non pas, pour moi, par manque de fonctionnalité du langage, mais surtout par manque de bons développeurs.









HarmattanBlow a écrit :



Malheureusement je suis d’accord avec Charon : pour rendre le langage sûr il



Accessoirement MS semble réinvestir sérieusement dans sa pile de développement (rumeurs sur le rachat de Xamarin, etc) et c’est une excellente nouvelle même si je ne sais pas si suffira à enrayer l’inexorable domination de JS et Java. Pour ma part j’ai commencé à diversifier mes billes vers ces deux plateformes.

$





Oui j’ai vu ça ce matin et il y aurait aussi une nouvelle version de WPF.









ActionFighter a écrit :



On est bien d’accord.



Maintenant, pour laisser des fuites mémoire avec les nouvelles fonctionnalités de C++11 et tous les outils de tests et de profilage de code, il faut que la recette soit mal faite.



Quant au code managé, il n’est pas exempt de faille. Java s’apparente à du code managé, et pourtant…

Et il y a également des mises à jour de sécurité du .net, ce n’est pas pour rien.





Les failles peuvent encore exister(mais il y en a bcp moins) car le runtime et l’os sont en code natif. Microsoft se dirige vers un os entièrement en code safe avec une architecture complètement revue.









charon.G a écrit :



Les failles peuvent encore exister(mais il y en a bcp moins) car le runtime et l’os sont en code natif. Microsoft se dirige vers un os entièrement safe avec une architecture complètement revue.





Et donc on se lie entièrement à MS.









uzak a écrit :



Pour revenir à la news : ne pensez vous pas que les lambdas expressions vont nuire à la lisibilité du code ?



Franchement, quel intérêt, à part mettre des miettes de code partout ?





Pourquoi ils nuiraient à la lisibilité du code ? C’est en très grande majorité utilisé pour des fonctions très simple (à mon sens, si une lambda doit faire plusieurs lignes pour ne pas être incompréhensible, elle mérite d’être définie en tant que méthode).



Pour les fonctionnalités plus complexes, le mieux est d’utiliser les références de méthodes, ce qui devrait permettre de garder le code lisible.









ActionFighter a écrit :



Et donc on se lie entièrement à MS.





Pas plus qu’aujourd’hui quand tu utilises les API Windows. Après, oui, l’innovation en ce domaine vient du secteur privé mais le libre suivra et je suis certain qu’on, verra peu après un OS libre bâti sur les mêmes principes faire son apparition.









ActionFighter a écrit :



Et il y a également des mises à jour de sécurité du .net, ce n’est pas pour rien.





Tout comme il y a des updates de sécurité des librairies tierces en C/C++. <img data-src=" />



Si on suit la logique des ‘failles’ dans les frameworks Java/.Net, on devait considérer qu’une faille dans gnuTLS est une faille du langage C pour être parfaitement cohérent (ce qui serait évidemment absurde, faut-il le préciser).
















HarmattanBlow a écrit :



Pas plus qu’aujourd’hui quand tu utilises les API Windows. Après, oui, l’innovation en ce domaine vient du secteur privé mais le libre suivra et je suis certain qu’on, verra peu après un OS libre bâti sur les mêmes principes faire son apparition.





Il y a Mono pour porter le framework .net sur le manchot, mais j’ai pas trop suivi l’avancement.







brazomyna a écrit :



Tout comme il y a des updates de sécurité des librairies tierces en C/C++. <img data-src=" />





Et ? Je n’ai jamais dis le contraire.







brazomyna a écrit :



Si on suit la logique des ‘failles’ dans les frameworks Java/.Net, on devait considérer qu’une faille dans gnuTLS est une faille du langage C pour être parfaitement cohérent (ce qui serait évidemment absurde, faut-il le préciser).





C’est effectivement un abus de langage de ma part, mais c’est juste histoire de dire que la notion de langage safe en sécurité est relative.









HarmattanBlow a écrit :



Pas plus qu’aujourd’hui quand tu utilises les API Windows. Après, oui, l’innovation en ce domaine vient du secteur privé mais le libre suivra et je suis certain qu’on, verra peu après un OS libre bâti sur les mêmes principes faire son apparition.





Du coté libre il y a cet os cloud qui me parait prometteur: osv

Il se base sur un runtime java et il s’inspire apparemment de quelques idées de singularity. Les applications et le noyau tournent tous les deux en ring 0. L’isolation se fait par le langage avec le bytecode java. C’est exactement le même principe qu’avec Singularity.









ActionFighter a écrit :



C’est effectivement un abus de langage de ma part





Quand “l’abus de langage” consistue le fondement de la réflexion, c’est plus qu’un abus de langage.





la notion de langage safe en sécurité est relative.



Si tu pars là dessus, tout est relatif.



Mais dans la dicsussion:





  • d’une part dire que Java a des failles comme contre-argument est fallacieux.



  • d’autre part, ce n’est pas parce qu’une solution tehcnique n’est pas exempte de faille à 200% qu’elle n’a pas intrinsèquement une propention à rendre le code écrit moins safe.





    Au delà, le fait est que les langages managés sont très souvent choisis justement pour cet aspect là des choses: la capacité à ne pas exploser en plein vol en anéantissant tout son environnement au passage, en cas de bug dans le code.



Que pensez-vous de la montée de Node.js vs Java.



J’ai beaucoup de mal à m’adapter à Javascript car je viens d’un environement Objet (C++, Java). Cependant je m’efforce de comprendre le monde prototypé.

Avec Google derrière Node.js et un stack full JS: Angular/Node/Mongo cela nous fait qu’un langage à gérer et les performances sont plutôt bonnes.

Maintenant c’est beaucoup moins mature en terme de framework que Python, Ruby et Java :(








brazomyna a écrit :



Quand “l’abus de langage” consistue le fondement de la réflexion, c’est plus qu’un abus de langage.





Si tu pars là dessus, tout est relatif.



Mais dans la dicsussion:





  • d’une part dire que Java a des failles comme contre-argument est fallacieux.





    Si mon argument est fallacieux, dans ce cas, attribuer des défauts de programmation au langage l’est également, puisqu’il est possible dans l’absolu de faire un programme sans faille, ce qui est le point de départ de la discussion.







    brazomyna a écrit :



  • d’autre part, ce n’est pas parce qu’une solution tehcnique n’est pas exempte de faille à 200% qu’elle n’a pas intrinsèquement une propention à rendre le code écrit moins safe.



    Au delà, le fait est que les langages managés sont très souvent choisis justement pour cet aspect là des choses: la capacité à ne pas exploser en plein vol en anéantissant tout son environnement au passage, en cas de bug dans le code.





    Plus safe, tu voulais dire ?



    Sinon, sur le fait que le code managé permet d’apporter une certaine sécurité supplémentaire, je n’ai pas dis le contraire.









charon.G a écrit :



Oui j’ai vu ça ce matin et il y aurait aussi une nouvelle version de WPF.





What ?

T’as des sources ?



Si seulement Python pouvait avoir un typage plus strict et autant d’outils que pour le Java… On pourrait simplement arrêter d’utiliser le Java et utiliser un langage plaisant à utiliser. Vous savez, pas un C++ simplifié. Un langage qui permet d’exprimer en peu de lignes ce qu’on cherche à faire et de manière élégante.








Strimy a écrit :



What ?

T’as des sources ?





ici





Word has leaked that Microsoft is building a new version of Windows Presentation Foundation (WPF), the framework for building desktop applications, that many believed Microsoft had abandoned the way it had Silverlight. It sounds like the new WPF could be one of the topics addressed at Build. (De Icaza told another person on Twitter yesterday that he’d recommend using WPF to build new projects.)









Max81 a écrit :



Si seulement Python pouvait avoir un typage plus strict et autant d’outils que pour le Java… On pourrait simplement arrêter d’utiliser le Java et utiliser un langage plaisant à utiliser. Vous savez, pas un C++ simplifié. Un langage qui permet d’exprimer en peu de lignes ce qu’on cherche à faire et de manière élégante.





C#? c’est du java en moins chiant avec LINQ en bonus.

(seul propléme c’est du M$, même si il y a mono le plus gros reste dans .net)









ActionFighter a écrit :



Si mon argument est fallacieux, dans ce cas, attribuer des défauts de programmation au langage l’est également, puisqu’il est possible dans l’absolu de faire un programme sans faille, ce qui est le point de départ de la discussion.





Si tes développeurs sont des aliens ou des T-800, il est effectivement possible de faire un programme sans faille quel que soit le langage. Mais c’est de la rhétorique.



Le choix du langage joue fortement sur les failles potentielles du programme, et donc sur les failles en pratique puisque des humains feront des erreurs. C’est incontestable : un langage de plus haut niveau s’accompagne de moins de bogues dans le programme en général et de beaucoup moins de failles de sécurité en particulier.









charon.G a écrit :



Du coté libre il y a cet os cloud qui me parait prometteur: osv

Il se base sur un runtime java et il s’inspire apparemment de quelques idées de singularity. Les applications et le noyau tournent tous les deux en ring 0. L’isolation se fait par le langage avec le bytecode java. C’est exactement le même principe qu’avec Singularity.





Je ne connaissais pas et c’est intéressant mais à l’exception du fait qu’il est destiné au cloud il n’a pas grand chose à voir avec Singularity : certes dans les deux cas le code application est exécuté en anneau 0 mais dans le cas d’OSV c’est parce que l’OS est enfermé dans une machine virtuelle, est stateless et n’exécute qu’une seule application. Alors que dans le cas de Singularity c’est parce qu’il a été prouvé que le code est sûr.









HarmattanBlow a écrit :



Je ne connaissais pas et c’est intéressant mais à l’exception du fait qu’il est destiné au cloud il n’a pas grand chose à voir avec Singularity : certes dans les deux cas le code application est exécuté en anneau 0 mais dans le cas d’OSV c’est parce que l’OS est enfermé dans une machine virtuelle, est stateless et n’exécute qu’une seule application. Alors que dans le cas de Singularity c’est parce qu’il a été prouvé que le code est sûr.





Oui j’ai pas dit qu’il était pareil. mais le point que j’ai donné c’est typique de singularity. Je pense qu’ils s’en sont inspires.Après il y a un runtime,singularity il yen pas et sur osv le code du noyau est en c++, pas en java.

Sinon oui il peut exécuter qu’une seule application, A mon avis c’est fait pour faire tourner un site web par exemple ou un web service.





Since the JVM protects itself from the application by verifying bytecode, OSV does not need to do this. The application and the kernel run in the same privilege level, and so expensive context switches and parameter validation are avoided.









goldbergg a écrit :



C#? c’est du java en moins chiant avec LINQ en bonus.

(seul propléme c’est du M$, même si il y a mono le plus gros reste dans .net)







Le C# c’est surtout le Java de Microsoft. Ça n’apporte pas grand chose comparé à du Java pour moi. Il y a bien des points où il est meilleur mais sa mauvaise portabilité sur du non Windows est vraiment un problème.



Le 20/03/2014 à 19h 16







Max81 a écrit :



Si seulement Python pouvait avoir un typage plus strict et autant d’outils que pour le Java…





<img data-src=" /> Ainsi qu’une programmation concurrente plus performante, mais il faudrait supprimer le GIL, ce qui ne se fera pas.

Je préfère Python, mais Java a parfois du bon.









Max81 a écrit :



Le C# c’est surtout le Java de Microsoft. Ça n’apporte pas grand chose comparé à du Java pour moi..





Pour moi c’est pas du tout pareil…



Quand je passe de l’un à l’autre, j’ai vraiment l’impression d’utiliser un langage à la traîne, voir meme un langage qui a fait plusieurs mauvais choix par le passé…

Le Java est beaucoup plus rigoureux (voir logique) dans son apprentissage certes , mais il est surtout beaucoup moins confortable à utiliser…



Ceci dit là où la différence me plombe le plus moral, c’est surtout en terme de framework… Quand t’as goutté à du WPF/Entity Framework et que tu passes à du JavaFX/Hibernate tu tombes en dépression…









nateriver a écrit :



switch(“prout”){



case “prot”: log.debug(“areuu”);

}

throw new RuntimeException(“le java c’est caca, moi je suis trop compétant tavu”);







<img data-src=" /> merci ça n’avait rien à voir avec des strip-teaseuses alors <img data-src=" />









HarmattanBlow a écrit :



Le C++ est amené à disparaître pour la quasi-totalité des nouveaux projets











goldbergg a écrit :



Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)





<img data-src=" /><img data-src=" />



Ouais ce n’est pas comme si depuis les années 2000 les sociétés (petites, moyennes, grosses) voire SCII et autres ont TOUT misé sur J2EE et .NET.



Rendez-vous dans 15-20 ans lorsque tout bout de code sera facile à coder, “safe” et tout le toutim OS-Dépendant (parce que lui aussi il aura son rôle), et qu’on se fera bouffer par les indiens et autres chinois.

Et niveau ressources on s’en fiche en 2014 on a des smartphones avec des CPU qui tournent à 2 GHz et 3 GO en RAM.









HarmattanBlow a écrit :



Si tes développeurs sont des aliens ou des T-800, il est effectivement possible de faire un programme sans faille quel que soit le langage. Mais c’est de la rhétorique.





C’est impossible, on est d’accord.







HarmattanBlow a écrit :



Le choix du langage joue fortement sur les failles potentielles du programme, et donc sur les failles en pratique puisque des humains feront des erreurs. C’est incontestable : un langage de plus haut niveau s’accompagne de moins de bogues dans le programme en général et de beaucoup moins de failles de sécurité en particulier.





ENcore une fois, je suis d’accord, je rajoute juste un bémol : tout dépend de l’implémentation du framework dudit langage.









brazomyna a écrit :



@sr17, belle tentative d’expliquer à un troupeau d’abrutis de trolls que le Saint Graal n’existe pas et que la diversité des langages répond à la diversité des besoins. Sur ce point, c’est parfait.



Par contre tu te vautres sur la fin, à la fois sur le fait que le seul intérêt de Java concernerait le RAD et l’efficience du coding, et également sur la place de la valeur ajoutée du côté du bas niveau (c’est justement plutôt l’inverse: la valeur ajoutée est désormais du côté des couches hautes).







Demandez vous pourquoi autant de logiciels restent codés en C++.



Parce que sur de nombreux logiciels, pour pouvoir apporter de la valeur ajoutée sur les couches hautes, une des condition indispensable, c’est d’abord de disposer de couches basses qui sont ultra performantes.



Des couches basses performantes, c’est la fondation même de nombreux logiciels très connus.



Prenez l’exemple d’un logiciel de retouche d’image, un jeu vidéo, une base de données ou un décodeur vidéo : si les couches basses manquent de performance, il sera moins évident de développer de la valeur ajoutée par dessus.



Bien sûr, il existe de nombreux exemples de logiciels ou l’on se moque de la performance. Mais les programmeurs de SS2I qui ne voient souvent passer que cela ont tendance à oublier qu’il existe des logiciels ou ce n’est pas le cas.



En réalité, il existe en informatique des réalités très différentes. Entre ceux qui produisent des logiciels personnalisés et ceux qui produisent des progiciels, les paradigmes sont assez différents.
























goldbergg a écrit :





Si le C++ est idéale pour faire du bas niveau, dev des pilote ou encore des jeux, il n’est certainement pas adapter a l’informatique de gestion ou le web… (en tous cas j’ai jamais vu d’entreprise, surtout ces dernière année faire du web en CGI/C++)









Et bien si…



Mais effectivement, dans la petite web agency du coin, ça n’est pas courant.



Par contre, sur des services web qui demandent des centaines de milliers de serveurs, c’est bien le genre de question qui se pose.










HarmattanBlow a écrit :



Les développeurs “adultes” ? Ah oui, ces gros bouffons(*) qui se prennent pour superman parce qu’ils écrivent trois instructions assembleur par mois et qui collent des failles de sécurité partout parce que c’est ça être un vrai homme ?



Le C++ est amené à disparaître pour la quasi-totalité des nouveaux projets et c’est une excellente nouvelle parce que l’état actuel des systèmes informatiques est inacceptable avec des centaines des centaines de millions de machines infestées de par le monde par des menaces persistantes avancées (APT) sur tous les OS sans exception. Demain les programmes écrits dans des langages non-vérifiables tourneront tous dans des machines virtuelles, à peu de choses près, seuls les langages vérifiables ayant droit aux places prestige. Et personne ne regrettera la façon de faire actuelle.



(*) Le commentaire vaut pour tous ceux qui se croient supérieurs parce qu’ils utilisent tel ou tel langage. Je n’ai pas de préjugés en général contre les hommes, qu’ils se farcissent du cobol, du JS ou de l’asm 68k. Dans toutes les catégories on trouve le pire comme le meilleur.









L’ennui, c’est qu’il y a des cas de figure ou les langages “sécurisés” gaspillent une trop grande partie de la puissance.



Comme tu le sais certainement, les deux types de langages cohabitent depuis la nuit des temps. Et il y a des raisons à cela.



Pour ma part, je pense qu’il se passera dans le temps ce qu’il s’est toujours passé : l’utilisation du bon outil pour le bon usage.



Et ce n’est pas parce que certains langages sont lents et ne permettent pas de manipuler directement la mémoire que pour autant on ne peut pas y trouver de failles de sécurité. Demandez à un développeur web ce qu’il en pense.









sr17 a écrit :



Comme tu le sais certainement, les deux types de langages cohabitent depuis la nuit des temps. Et il y a des raisons à cela.





C’est vrai, et j’apprécie que tu sois resté général en parlent de deux types de langages puisque autrefois le C++ était un langage lent, par opposition à l’assembleur alors seul à offrir la vitesse nécessaire sur ces machines à la puissance restreinte.







sr17 a écrit :



Demandez vous pourquoi autant de logiciels restent codés en C++.





Pour une partie, oui, c’est à cause des performances.

Pour une autre partie c’est pour des raisons historiques, car le projet doit intégrer, exploiter ou faire évoluer un code C++.

Mais trop souvent c’est un refus de remise en cause et d’évolution.









charon.G a écrit :



Oui j’ai pas dit qu’il était pareil. mais le point que j’ai donné c’est typique de singularity. Je pense qu’ils s’en sont inspires.Après il y a un runtime,singularity il yen pas et sur osv le code du noyau est en c++, pas en java.

Sinon oui il peut exécuter qu’une seule application, A mon avis c’est fait pour faire tourner un site web par exemple ou un web service.





Merci pour le lien vers OSV. Je ne connaissais pas et ça a l’air intéressant tel que tu le décris.









sr17 a écrit :



L’ennui, c’est qu’il y a des cas de figure ou les langages “sécurisés” gaspillent une trop grande partie de la puissance.





y’en a.



Mais à l’heure actuelle c’est plus la majorité des besoins, encore moins la totalité.



Hors grosses contraintes en temps réel, et au prix d’un serveur de nos jours. Il est infiniment plus intéressant de balancer quelques milliers d’euros dans une config hardware un peu plus puissante (soit le prix de quelques homme.jours) plutôt que faire un choix de langage qui impliquera x homme.jour de développement supplémentaire parce qu’un peu moins efficient, ou à langage égal parce qu’on veut optimiser le bouzin.



C’est d’autant plus vrai au fur et à mesure que le temps passe puisque la puissance du matos augmente de façon considérable chaque année.





Et ce n’est pas parce que certains langages sont lents et ne permettent pas de manipuler directement la mémoire que pour autant on ne peut pas y trouver de failles de sécurité. Demandez à un développeur web ce qu’il en pense.



A nouveau, sors de ces raisonnements “tout ou rien”. Personne ne dit qu’un langage “de plus haut niveau” ferait tout à coup disparaître tous les bugs de la Terre. On dit juste que ces langages vont en limiter le nombre, de par la nature même du langage.



Par exemple, un langage managé comme le Java te protègera contre les dépassements de mémoire tampon de façon à peu près définitive. Il t’aidera également à éviter les fuites de mémoire, sans pour autant t’en protéger complètement.









mistigrite a écrit :



Je suppose que quand le C est sorti, les crétins barbus qui ne savaient coder qu’en Assembleur disaient la même chose pour se donner une consistance face à un truc qu’ils ne comprenait pas. La suite de ton commentaire montre que tu ne comprends pas ce qu’est Java, donc je pense que tu fais partie de cette catégorie de personnes.





N’importe quoi… Avant Java, le sysadmin gérait des serveurs. Avec Java, il… gère des serveurs. Whaa, ça a drolement évolué.



&gt;&gt; Faux, maintenant, il faut AUSSI gérer la jvm, qui peut être considéré comme un framework applicatif. le java permet au dev de se prendre bien moins la tête…. puisque la merde est refiler au sysadmin.





OK, t’y connais rien. JEE n’a rien à voir avec le fonctionnement de la JVM.








&gt;&gt; Comme je l’ai dit, je n’étais pas sûre de JEE. Après une petite recherche c’est J2SE. Mille excuse, mais comme tu t’y connais si bien, tu aurais pu juste corrigé au lieu de dire que je n’y connais rien.





Ben oui, parce que dans Java, comme dans la plupart des langages, il y a des fonctions deprecated, et des API internes qu’on ne doit pas utiliser. Si le développeur les utilise quand même, ben Java ne va pas corriger le code tout seul. C’est pas magique…



&gt;&gt; C’est exactement ce que je reproche à java, permettre au 90% de gens qui s’improvise developpeur de faire n’importe quoi. Et ton exemple l’illustre parfaitement.



Tu ne dois pas les spécifier, tu peux les spécifier. Et je vois pas où est l’aberration.



&gt;&gt; Parque qu’un programme ne devrait être limité QUE par les limites systèmes. Il existe déjà tout pour contrôler/limiter/emprisonner une application au niveau OS. Pas besoin de réinventer la roue, en moins bien…





N’importe quoi…







C’est surtout ça un gars qui n’y connait pas grand chose…












zepompom a écrit :



Donc en résumant, c’est de la merde, mais tu n’y connais rien. Car non j2ee n’est pas une norme que la jvm doit suivre, et je ne m’étendrai pas sur la suite de tes inepties. Ensuite ta diatribe est suivie de plusieurs énormes fautes et d’un ‘juste LOL’.



Bravo, tu as officiellement montré que tu es un gros crétin.







Si tu savais lire, j’ai écrit: “La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus. ”



Tu es le deuxième à m’insulter alors que j’ai bien précisé que je n’étais pas sûre sur ce point. Tu aurais pu corriger tout simplement.



Sinon, j’ai rechercher, c’est j2se. Heureux?









ben5757 a écrit :



Tu déconnes un peu non ? La non mise à jour des conteneurs applicatifs est plus un problème de management qu’un soucis technique. Je mets à jour trés souvent les conteneurs applicatifs sans que ça pose le moindre soucis et sans que ça me prenne un temps de monstre. Mais pour ça il y’a de la coordination entre l’équipe de dev et l’équipe des admins. MAis techniquement je vois pas le soucis.







Nan nan, je suis sérieux. L’architecture jboss:




  • avec toutes ses briques indépendantes empilées les unes sur les autres

  • avec chaque module qui a ses propres fichiers de conf et disséminés un peu partout, au format XML pour bien faire… (xml = langage machine)

  • avec ses fuites de mémoire connues lors de déchargement/chargement d’appli sans redémarrer le server d’application (ce qui est le comble, car c’est l’une des fonctions principales d’un serveur d’application)













nateriver a écrit :



Trop swag les développeurs C++ qui utilisent des templates à tout bout de champs, qui nomment leurs variables “a”, “b” ou “c” , qui réutilisent ces variables plusieurs fois dans le même algorithme de 2000 lignes de code pour gagner 1 octet en ram, qui commentent jamais leur code, parce qu’ils sont vraiment trop fort et que taper 3 lignes de commentaires c’est une énorme perte selon eux, pas seulement pour eux-même mais pour leur patron et , plus généralement, la galaxie entière.



C’est donc ça un “bon” développeur, un mec qui sait taper un hello world avec 12 pointeurs?



Mettez-vous à jour les mecs!



Dans ma boîte, même des projets d’envergures, qui doivent manipuler des millions ou des milliards de données, le choix de java ou de .net est fait. Peux-être aussi parce qu’aujourd’hui tu peux te faire une machine avec 64 go de ram pour pas grand chose.



Mais bon, à vous écouter vous les curés de la programmation, les arbres à connaissance, ceux qui savent parce que comment ils sont trop bons en codant trois pointeurs, vous devez bosser chez microsoft ou google, pour encore devoir développer en C++ en 2014. <img data-src=" />



je dis pas que C++ 11 c’est de la merde, j’y connais que dalle. Mais la réalité du marché c’est ça. Si tu veux gagner trois octets ou si tu veux avoir le swag en développant sur un machin comme le C++ , libre à toi.



PS (non je n’adhère pas à ce parti) :J’ose même pas vous parler du Javascript, je risque de me faire cruxifier <img data-src=" />



Le java pour tous !!! <img data-src=" />







C’est bien! Tu as bien creusé ton sujet.



L’optimisation, c’est pour les noob. Ca ne sert qu’à faire perdre du temps aux développeurs!



La RAM ça coute pas cher, c’est sûre qu’avec des jvm à 64GB, on va faire tourner au moins 3 VM sur mon serveur à 256GB de RAM. Pourquoi s’embêter!

En plus la DDR3 ECC, dans du serveur HP/DELL/IBM, on en trouve à grosbill pour une bouché de pain!



Et puis comme tu le dis, faut que j’ouvre les yeux, c’est ca la réalité du marché!



Mais…. attends… tu serais pas commercial cher oracle ou microsoft?









Groumfy a écrit :



Il faut toujours partir du besoin, et Java répond à certains besoins, dont ceux de faire du logiciel de gestion, des applications web, …

Java et les frameworks sont matures et permettent de réaliser des solutions globalement complexes.



Il semble que des frameworks Javascript tentent de percer, ils sont intéressants, mais pas encore matures.





Java et J2EE sont des spécifications. Il existe plusieurs fournisseurs d’implémentation.



Les softs qui ne fonctionnent plus après avoir mis à jour une JVM ? A part dans les grosses merdes propriétaires de type Weblogic et les applets (berk), je n’en ai pas rencontré. Tu peux en citer une ou deux ? Les frameworks Apache ont des bonnes compatibilités, et comme ils servent beaucoup dans mon métier, je n’ai pas rencontré ce genre de problématique.



&gt;&gt; Comme ça, deux qui me passe par la tête:




  • ASDM (Console d’admin des Cisco ASA)

  • console RSA IBM





    Les paramètres xms/xmx ne sont pas des aberrations : tu spécifies les limites qu’occupe le soft sur le système, donc tu ne plantes pas le système par une occupation de mémoire. Je peux comprendre que ça ne plaise pas dans certains contextes.



    &gt;&gt; Le système sait déjà se démerder tout seul, entre autre l’oom killer s’occupera du problème. En cas de congestion, on peut utiliser les cgroup. Bref, pas la peine de réinventer la roue.

    Et surtout combien de développeurs savent comment est gérer la mémoire en java? qui a déjà pris le temps de lire au moins l’intro? A mon avis, très peu





    Validation des applications sur une grosse version de JVM : il faut faire de tests et de l’intégration continue. (Mais ça veut dire qu’il faut écrire des tests, çà vaut pour tous les langages…)



    La sécurité, les droits sont à la charge



    JBoss et autres Websphere sont des grosses usines, je le concède volontiers.



    &gt;&gt; Merci :)













Alesk a écrit :



C’est bien! Tu as bien creusé ton sujet.



L’optimisation, c’est pour les noob. Ca ne sert qu’à faire perdre du temps aux développeurs!



La RAM ça coute pas cher, c’est sûre qu’avec des jvm à 64GB, on va faire tourner au moins 3 VM sur mon serveur à 256GB de RAM. Pourquoi s’embêter!

En plus la DDR3 ECC, dans du serveur HP/DELL/IBM, on en trouve à grosbill pour une bouché de pain!



Et puis comme tu le dis, faut que j’ouvre les yeux, c’est ca la réalité du marché!



Mais…. attends… tu serais pas commercial cher oracle ou microsoft?







pahahaha j’aimerais bien. chiotte mec abandonne ton C++ , c’est mainstream. Viens dans le tur-fu, mange une bouchée de sharepoint <img data-src=" />









nateriver a écrit :



pahahaha j’aimerais bien. chiotte mec abandonne ton C++ , c’est mainstream. Viens dans le tur-fu, mange une bouchée de sharepoint <img data-src=" />





Sharepoint is a colossal piece of shit.

Ne le lui conseil pas SharePoint si tu ne veux pas le dégoûter des technos Microsoft.









HarmattanBlow a écrit :



C’est vrai, et j’apprécie que tu sois resté général en parlent de deux types de langages puisque autrefois le C++ était un langage lent, par opposition à l’assembleur alors seul à offrir la vitesse nécessaire sur ces machines à la puissance restreinte.







Ca c’est bien vrai…



Et ça l’est même encore puisque l’assembleur est toujours utilisé(et indispensable) pour accélérer certaines parties critiques ou pour accéder à des fonctionnalités particulières des processeurs.



C’est la ou l’on trouve paradoxalement encore un énorme avantage de C/C++ dont les bonnes implémentations ont été conçues pour s’interfacer très facilement avec de l’assembleur.





Pour une partie, oui, c’est à cause des performances.

Pour une autre partie c’est pour des raisons historiques, car le projet doit intégrer, exploiter ou faire évoluer un code C++.

Mais trop souvent c’est un refus de remise en cause et d’évolution.





D’un autre côté, choisir C++, c’est avoir la certitude de pouvoir faire absolument tout ce qu’on pourrait avoir besoin de faire. Choisir Java (ou autre langage du même type), c’est s’imposer certaines limites d’emblée : il faut être certain que cela est compatible avec le type de projet et que cela n’entravera pas son futur.



Ensuite, il ne faut pas sous estimer la souplesse apportée par C++. Vous voulez programmer “sécurisé”, c’est à dire sans utiliser de pointeurs et en utilisant des tableaux et chaines de caractères avec vérification de borne ? Et bien avec C++ c’est tout à fait possible.

L’avantage de le faire avec C++ c’est que vous aurez toujours la possibilité de faire des exceptions (bien contrôlées) au besoin.

Après, C++ est comme tous les langages avec ses avantages et inconvénients, ses forces et faiblesses. C’est en fonction de ce qu’on fait qu’on choisit un langage. Un programmeur ne devrait jamais se restreindre à un unique langage.





Mais trop souvent c’est un refus de remise en cause et d’évolution.





Je n’en suis pas sûr dans la mesure ou ce qu’on nous présente comme nouveau… ne l’est en réalité pas du tout.



Rappelons que les plus anciens programmeurs ont tous connu dans leur jeunesse de très nombreux langages et de très nombreux paradigmes. Des langages sécurisés, des langages utilisant du pseudo code, des langages fonctionnels, etc…

Et la question du choix “sécurité vs puissance” est un très vieux débat avec lequel même les plus anciens programmeurs sont familiarisés.



Après, il y a sans doute des programmeurs qui utilisent C++ dans des projets ou ils gagneraient plutôt à utiliser Java. Mais aujourd’hui, on observe plus souvent l’erreur inverse.



Pour ma part, je pense que la grave erreur, c’est la pensée du moment : celle de vouloir unifier des os autour d’un seul langage et de vouloir l’imposer comme tel. La réalité, c’est qu’en informatique, tous les langages de programmation ont leur importance.














goldbergg a écrit :



je me trompe ou tu ne te prend pour une me#de à prendre des milliers de dev sans doute pour la plus pars plus calé que toi de haut?



Il ne faut pas oublier qu’il y a le monde amateur (avec en effet une majorité de dev PHP qui ne comprenne pas réellement se qu’il sont en train de faire) et le monde pro, ou la que sa soit pour du php, du .net ou en java, on a généralement des dev qualifié qui savent parfaitement se qu’il font (j’ai appris le c en cours bien avant le php/c#/java en se qui me concerne, sans oublié tous les cours théorique).



Et pour les site web en c++ si sa ne se fait pas ou que tres rarement en entreprise c’est juste que le langage n’est absolument pas adapté (la seul vrais solution est le CGI qui est une horreur)

(au passage les plus gros site a très fort trafique ne sont pas en c++, mais bien en asp.net, jee ou encore php)



j’ai l’impression que c’est maladifs chez les dev C++ de pensser que le C++ &gt; all

et de prendre tous le monde de très haut.







En même temps, il n’a pas vraiment tort. De nombreux programmeurs te diront qu’il faut bien plus d’expérience pour programmer en C/C++ qu’en Java ou en PHP. Et que c’est une des raison évidente pour lesquelles les SS2I préfèrent certains langages conçus pour limiter les risques de la même façon que ces entreprises préfèrent employer des salariés moins expérimentés et moins cher.



Parce que mettre un stagiaire sur un projet en C++, faudrait vraiment pas avoir froid aux yeux.



Sinon, ça me fera toujours marrer de voir les réactions épidermiques sur les forums quand on explique à des jeunes qu’ils ne sont pas au top du top en sortant de l’école et que (comme dans n’importe quel métier), ils progresseront avec le temps.



Non, on ne vous prends pas de haut. Il y a simplement des réalités évidentes.









Yzokras a écrit :



Alors certes, maintenant que la solution est toujours de prendre un serveur de plus en plus gros, bref solution de facilité comme pour le langage (avant PHP c’était le Basic qui était le + populaire, parce qu’il était… “adapté” ?), ce n’est plus d’actualité…





Mouarf ! T’es vraiment sérieux ? Prendre un serveur toujours plus gros, c’est ce qui se faisait il y a 20 ans et jusqu’à il y a 10 ans hein… Les architectures de nos jours tablent plus sur l’extensibilité horizontale, pas verticale. Et au cas où tu n’aurais pas encore saisi, ça veut dire distribuer les opérations en multipliant les serveurs “de base” au lieu de chercher un serveur toujours plus puissant. La mode des supercomputers, c’est globalement obsolète, et ça se fait de moins en moins.



Et le C++ pour du web, c’est pas que ce n’est pas “simple”, c’est juste que c’est une merde sans nom, et qu’il faudrait développer tellement de frameworks autours pour pouvoir le faire sans réinventer la roue à chaque projet (et mettre 2 ans) que tu n’aurais plus aucun avantage du C++, et plus d’inconvénients que java, php, ruby et .net réunis !







charon.G a écrit :



En attendant je code en C++ pour la programmation cliente et .net (C#) sur serveur.





Un serveur sous Windows, mais quelle idée… Tu utilises IIS avec ça je suppose ? <img data-src=" />







uzak a écrit :



Pour revenir à la news : ne pensez vous pas que les lambdas expressions vont nuire à la lisibilité du code ?



Franchement, quel intérêt, à part mettre des miettes de code partout ?





Plus verbeux (le java actuel, on fait difficilement pire niveau verbosité) ne veut pas dire plus lisible. Bien au contraire c’est souvent beaucoup moins lisible parce que la logique du code et des traitements se retrouvent perdue dans l’amas énorme de boilerplate.



Bien sûr comme tout le reste les lambdas vont être mal utilisés par beaucoup et donneront des trucs illisibles, mais bien utilisés ça améliore au contraire largement la lisibilité du code, ainsi que sa maintenabilité en permettant dans bien des cas d’éviter des répétitions inutiles. Globalement la popularité des lambdas (et plus globalement des fonctions comme objets de première classe) aujourd’hui vient d’un retour sur le devant de la scène de la programmation fonctionnelle, qui pour bien des choses (pas toutes, et il est important de bien choisir ses outils, et c’est ce qui fait qu’on bon développeur est un bon développeur) permettent d’avoir du code plus lisible, plus efficace, et plus facile à maintenir que du code purement impératif, en plus d’être dans l’ensemble beaucoup plus adapté à des architectures distribuées, architectures qui sont les plus adaptées pour la plupart des projets aujourd’hui.







Max81 a écrit :



Si seulement Python pouvait avoir un typage plus strict et autant d’outils que pour le Java… On pourrait simplement arrêter d’utiliser le Java et utiliser un langage plaisant à utiliser. Vous savez, pas un C++ simplifié. Un langage qui permet d’exprimer en peu de lignes ce qu’on cherche à faire et de manière élégante.





Python avec un typage plus strict, ce n’est plus du python hein…



Par contre si tu veux un langage plus expressif que du java, et plus souple, et qui pour autant bénéficie tout de même de tout l’environnement java par une compatibilité bytecode, t’as Scala, qui prend chaque jour un peu plus d’ampleur et est désormais particulièrement mûr ; ou Groovy si vraiment t’as pas envie d’aller trop loin de ta zone de confort (en étant caricatural, Groovy c’est du syntaxic sugar sur Java qui rend tout ça nettement plus plaisant à utiliser, plus efficace, et avec un typage moins fort que côté java, sans pour être complètement du typage dynamique comme python). Ou alors tu peux t’orienter vers d’autres langages fonctionnels sur la jvm, mais qui dans l’ensemble ne sont pas compatibles avec les librairies existantes, et beaucoup plus jeunes, comme clojure ou fantom.







sr17 a écrit :



Et bien si…



Mais effectivement, dans la petite web agency du coin, ça n’est pas courant.



Par contre, sur des services web qui demandent des centaines de milliers de serveurs, c’est bien le genre de question qui se pose.





Donne donc des exemples, au lieu de juste affirmer. Parce que chez les plus gros services web, C++/CGI ne montrent pas le bout de leur nez hein… C’est du java, du ruby, du php, du scala, du nodejs, parfois du .net aussi (StackOverflow par exemple, même s’il est très loin des plus gros services comme Google, Facebook, Twitter, YouPorn - ce dernier c’est du php avec le framework Symfony2 par exemple).



Les seuls services web que j’ai pu voir en C++/CGI, ils ont été développés il y a 20 ans, comme pour les services web en perl, et certains n’ont pas changé de techno en cours de route et continuent d’essayer de faire évoluer leur plat de spaghetti, mais c’est d’une rareté incroyable, et sauf les monomaniaques du langage, ils utiliseraient tous une autre techno s’ils devaient le refaire de zéro aujourd’hui.







Alesk a écrit :



(xml = langage machine)





Euh, non, absolument pas… xml est un langage qui est fait pour être lisible par un être humain, tout en étant facilement interprétable par la machine et en permettant de valider les fichiers selon un certain nombre de règles. Des langages de description comme le yaml ou le json sont de nos jours préférés pour les fichiers “lisibles par des humains”, mais uniquement quand on se fout des options de validation de fichier du xml.



Si tu veux des fichiers de description spécifiquement pour les machines, t’utiliseras pas du XML…







youtpout978 a écrit :



Sharepoint is a colossal piece of shit.

Ne le lui conseil pas SharePoint si tu ne veux pas le dégoûter des technos Microsoft.





T’inquiètes, si il n’est pas dégoûté des technos Microsoft aujourd’hui, il ne le sera probablement jamais <img data-src=" />









sr17 a écrit :



En même temps, il n’a pas vraiment tort. De nombreux programmeurs te diront qu’il faut bien plus d’expérience pour programmer en C/C++ qu’en Java ou en PHP. Et que c’est une des raison évidente pour lesquelles les SS2I préfèrent certains langages conçus pour limiter les risques de la même façon que ces entreprises préfèrent employer des salariés moins expérimentés et moins cher.





Je pourrais parler de consultants entre 1k€ et 2k€ / jour qui bossent dans un domaine aussi peu sérieux que la finance. C’est mon quotidien.



Dans ce contexte, la (l’ultra) compétence n’est pas une denrée rare, pas plus que les budgets sont serrés (encore moins au point de vouloir chercher la solution technologique ‘low cost’). Et pourtant, ça tourne aussi sur des technos managées (esentiellement pour des garanties de “non crash total” en cas de bug, plus faciles à obtenir sur ce genre d’écosystème).



Bref, je crois que tout le monde a compris: Le Java de la SSII qui tire les prix et les compétences de ses pisseurs de code frais péchés de l’école, c’est UNE raison PARMI D’AUTRES qui peut justifier ce choix. Mais il ne faudrait pas croire que le Java (ou les autres langages réputés plus faciles d’accès) n’apporte de la valeur ajoutée que dans ces cas là.







PS: au passage, (pour notre ami le troll en mode monologue): les 32Go de DDR3 ECC c’est moins cher que 4 heures de temps de travail facturés par chez moi. En fonction du nombre de pauses café prises dans la matinée, tu as quelques Go en plus ou en moins pour le même prix <img data-src=" />



Je ne pousserai pas la comparaison avec le coût du moindre bug à corriger en quelques heures ou l’influence d’un coût dérivé (temps de compil’ accumulé dans une journée ?) sur l’efficience et donc le coût global du développement au final. Ceux qui argumentent dans ces eaux là sont de toute façon manifestement incapables de comprendre avec leur nez dans le guidon qu’un projet est composé d’infiniment plus de variables que le seul choix d’une techno.









Gorkk a écrit :



T’inquiètes, si il n’est pas dégoûté des technos Microsoft aujourd’hui, il ne le sera probablement jamais <img data-src=" />





Je fais du c# et si y a bien une techno qui m”attire pas c’est SharePoint par contre c’est très hype en ce moment et donc super recherché et bien payé.



Il y a certaine personne qui pense que le .net est génial mais veule pas en faire parce que c’est Microsoft, c’est un peu bête de s’en priver pour ça.



En ce moment il commence à prendre une sacrée avance sur ses concurrents comme Microsoft est seul maître à bord il peut valider et implémenter des fonctionnalités plus vite et faire de grosse évolution tous les 2 ans, surtout que certaine partie (asp MVC par exemple) se mette à jour comme des plugins, ce ce qui permet d’avoir des mise à jour plus fréquente sans faire de grosse update.









youtpout978 a écrit :



Il y a certaine personne qui pense que le .net est génial mais veule pas en faire parce que c’est Microsoft, c’est un peu bête de s’en priver pour ça.





Personnellement, de ce que j’en ai vu il y a des trucs intéressants dans le .net, mais j’ai jamais cherché plus loin pour une raison majeure : ça implique de ne développer que pour Windows (parce que bon, Mono c’est bien gentil, mais t’es plusieurs versions en arrière et même comme ça tu n’as pas tout, donc autant ne pas faire du .net), et ça c’est du niet tout de suite, en particulier quand il s’agit de développer pour du serveur ; c’est pas demain la veille que je développerait quelque chose pour le faire tourner sur un serveur Windows, et encore moins un truc qui ne tournerait que sur un serveur Windows.



Pour les nouveautés java 8 (et même d’ailleurs une bonne partie de celles de 7 <img data-src=" /> ) j’ai toujours pas eu le temps de regarder en détail, mais j’ai globalement assez peur sur les détails justement, quand je repense à la façon dont ils ont fait les génériques (et encore plus depuis que j’ai découvert la gestion des génériques dans scala avec la gestion de la variance justement, même s’ils restent contraints par leur compatibilité avec java qui fait qu’ils sont victimes de cet erasure qu’ils ont contourné de façon plus ou moins élégante avec les Manifest puis les TypeTag).









Gorkk a écrit :



Personnellement, de ce que j’en ai vu il y a des trucs intéressants dans le .net, mais j’ai jamais cherché plus loin pour une raison majeure : ça implique de ne développer que pour Windows (parce que bon, Mono c’est bien gentil, mais t’es plusieurs versions en arrière et même comme ça tu n’as pas tout, donc autant ne pas faire du .net), et ça c’est du niet tout de suite, en particulier quand il s’agit de développer pour du serveur ; c’est pas demain la veille que je développerait quelque chose pour le faire tourner sur un serveur Windows, et encore moins un truc qui ne tournerait que sur un serveur Windows.

.







Mono en est à la dernière version du langage c# (v5), je ne sais pas si toutes les fonctionnalités ont été implémentées mais je pense que l’essentiel est là, après c’est une implémentation du langage et pas du framework en entier étant donné qu’une bonne partie est close source.









youtpout978 a écrit :



Mono en est à la dernière version du langage c# (v5), je ne sais pas si toutes les fonctionnalités ont été implémentées mais je pense que l’essentiel est là, après c’est une implémentation du langage et pas du framework en entier étant donné qu’une bonne partie est close source.





Quand j’avais regardé un peu .net (un peu après la sortie de la v4), mono en était en v2. Et se retrouver avec la portion congrue de l’environnement .net, bah autant ne pas faire du .net et aller sur du java et son environnement qui est lui entièrement multi-plateforme (et à de rares exceptions près entièrement open source), ou mieux du scala qui profite de l’environnement java en permettant de surpasser la très grande majorité des problèmes de java.



Globalement en l’état, pour vouloir faire du .net, faut vraiment décider de se donner corps et âmes à Microsoft et d’ignorer le reste du monde, ce qui n’est pas prêt de m’arriver.



Remarque ça a été le même problème avec Silverlight qui était vraiment intéressant par rapport à Flash tant que Microsoft respectait leur engagement du multiplateforme, et qui a perdu tout intérêt quand ils se sont retrouvés à avoir deux versions de retard dans la version Linux (gérée par Novell, sauf que Microsoft ne leur donnait pas toute la documentation, et pas assez en avance pour qu’ils puissent suivre) et ont décidé de mettre de plus en plus de trucs 100% Microsoft 100% fermé qui ne peut tourner sur aucune autre plateforme, et architecturer le tout fortement autour de ça (COM, OLE). Résultat ça a disparu avant même que Flash ne commence à se faire du souci avec HTML5 ^^.



Franchement même si sur certain point le .net a des avantages par rapport aux autres technos concurrentes, j’ai vraiment du mal à comprendre comment on peut décider de s’en fermer sur une techno propriétaire mono-plateforme quand tous les concurrents sont ouverts et multi-plateformes. Même si un tel environnement était très largement supérieur aux alternatives (et on est plus que très loin du compte), j’aurais du mal à comprendre une telle approche.









Gorkk a écrit :





Et le C++ pour du web, c’est pas que ce n’est pas “simple”, c’est juste que c’est une merde sans nom, et qu’il faudrait développer tellement de frameworks autours pour pouvoir le faire sans réinventer la roue à chaque projet (et mettre 2 ans) que tu n’aurais plus aucun avantage du C++, et plus d’inconvénients que java, php, ruby et .net réunis !







En même temps, il faut comprendre que tout est question de logique. Quand on utilise un langage comme C/C++, c’est parce qu’on veut en tirer de la performance. Il est évident qu’on ne développera pas comme dans un projet “RAD” ou l’on n’hésite pas à entasser les frameworks pour gagner du temps.



La programmation optimisée, c’est tout le contraire du RAD : On attaque à bas niveau, on fait ses propres fonctions adaptées et optimisées précisément pour le besoin. On évite d’empiler des couches que l’on ne connait pas et qui gaspillent de la puissance. On n’hésite pas à réinventer la roue si cela peut faire gagner de la puissance. On essaye au contraire de maitriser de A à Z tout ce qui se passe à tous les niveaux.

Il est bien sûr évident que cela coûte beaucoup plus cher et prends beaucoup plus de temps.



C/C++, c’est le langage idéal pour un projet de 10 ans, pas le langage de 10 projets par an.



La question c’est de savoir quel métier tu fais. Est ce que tu travaille pour une industrie qui fait beaucoup de programmes pour peu d’utilisateurs ou au contraire pour une industrie qui fait peu de programmes pour beaucoup d’utilisateurs.





Donne donc des exemples, au lieu de juste affirmer. Parce que chez les plus gros services web, C++/CGI ne montrent pas le bout de leur nez hein… C’est du java, du ruby, du php, du scala, du nodejs, parfois du .net aussi (StackOverflow par exemple, même s’il est très loin des plus gros services comme Google, Facebook, Twitter, YouPorn - ce dernier c’est du php avec le framework Symfony2 par exemple).





Justement, si tu veux te donner la peine de comprendre de qui je parles, tu comprendra. Et google est ton ami. Oui, je parle bien des plus gros acteurs du monde du web. Ceux dont les infrastructures se comptent en centaines de milliers de serveurs.



Il est bien évident que pour une industrie qui fait tourner le même logiciel sur un nombre énorme de serveurs, l’optimisation en C++ vaut largement le coup. Un code plus efficace peut faire économiser des centaines de millions de dollars en matériel.



Après, il est difficile d’affirmer a partir de quel seuil ça vaut le coup d’optimiser plutôt que d’aligner les serveurs.









sr17 a écrit :



C/C++, c’est le langage idéal pour un projet de 10 ans, pas le langage de 10 projets par an.





Et c’est ce qui fait que ce n’est pas adapté à du web justement.







sr17 a écrit :



Justement, si tu veux te donner la peine de comprendre de qui je parles, tu comprendra. Et google est ton ami. Oui, je parle bien des plus gros acteurs du monde du web. Ceux dont les infrastructures se comptent en centaines de milliers de serveurs.





Pourquoi ne pas en citer ne serait-ce qu’un si c’est si facile ? Je te rappelle que c’est toi qui t’es pointé en prétendant que le C++ était courant parmi les gros services web, et que je t’ai cité la plupart des plus gros services web qui justement n’utilisent pas du C++ pour ça. Il faudrait en plus que ce soit à moi de chercher des exemples compatibles avec ton affirmation ? “Google est ton ami”, c’est un peu facile hein.







sr17 a écrit :



Il est bien évident que pour une industrie qui fait tourner le même logiciel sur un nombre énorme de serveurs, l’optimisation en C++ vaut largement le coup. Un code plus efficace peut faire économiser des centaines de millions de dollars en matériel.





Et c’est pour ça que Google (je ne vois pas d’autre service web avec plus de serveurs qu’eux) font leurs devs avec du C++ ? Ah merde, non justement. Ou à plus petite échelle (mais toujours énorme) Facebook, Twitter, YouPorn, la galaxie Mega ? Ah bah non eux non plus n’utilisent pas C++…







sr17 a écrit :



Après, il est difficile d’affirmer a partir de quel seuil ça vaut le coup d’optimiser plutôt que d’aligner les serveurs.





L’optimisation ce n’est pas uniquement économiser 1 octet par ci, 1 octet par là, ou 1 ms par ci, 1 ms par là. En particulier dans les développements sur le réseau (principalement internet donc, pas forcément uniquement web d’ailleurs), c’est aussi et surtout une question d’architecture.









Gorkk a écrit :



Quand j’avais regardé un peu .net (un peu après la sortie de la v4), mono en était en v2. Et se retrouver avec la portion congrue de l’environnement .net, bah autant ne pas faire du .net et aller sur du java et son environnement qui est lui entièrement multi-plateforme (et à de rares exceptions près entièrement open source), ou mieux du scala qui profite de l’environnement java en permettant de surpasser la très grande majorité des problèmes de java.



Globalement en l’état, pour vouloir faire du .net, faut vraiment décider de se donner corps et âmes à Microsoft et d’ignorer le reste du monde, ce qui n’est pas prêt de m’arriver.



Remarque ça a été le même problème avec Silverlight qui était vraiment intéressant par rapport à Flash tant que Microsoft respectait leur engagement du multiplateforme, et qui a perdu tout intérêt quand ils se sont retrouvés à avoir deux versions de retard dans la version Linux (gérée par Novell, sauf que Microsoft ne leur donnait pas toute la documentation, et pas assez en avance pour qu’ils puissent suivre) et ont décidé de mettre de plus en plus de trucs 100% Microsoft 100% fermé qui ne peut tourner sur aucune autre plateforme, et architecturer le tout fortement autour de ça (COM, OLE). Résultat ça a disparu avant même que Flash ne commence à se faire du souci avec HTML5 ^^.



Franchement même si sur certain point le .net a des avantages par rapport aux autres technos concurrentes, j’ai vraiment du mal à comprendre comment on peut décider de s’en fermer sur une techno propriétaire mono-plateforme quand tous les concurrents sont ouverts et multi-plateformes. Même si un tel environnement était très largement supérieur aux alternatives (et on est plus que très loin du compte), j’aurais du mal à comprendre une telle approche.







Pour avoir fait du java pendant ma formation pro (et très peu en entreprise) je n’aime pas cette plateforme, eclipse est un ide pas génial (je trouve netbeans un peu mieux).



Alors qu’avec la plateforme .net j’ai vite accroché Visual Studio est un des meilleurs ide sur le marché et le langage permet de faire des choses très complexe en très peu ligne de code grâce à linq par exemple, au niveau desktop wpf est vraiment incroyable au niveau des possibilités offerte par l’ui, on peut faire des programmes sans taper énormément de code juste avec l’interaction dans l’ui.



Certe .net n’est pas multiplateforme mais il y a rien qui me donne envie de bosser sur un langage multiplateforme, j’aurai l’impression de faire marche arrière, je bosserai peut être sur mono pour pas être dépaysé mais actuellement il y a assez de boulot en .net pour pas avoir à faire autre chose (à part du JS bien sur si on fait du web).



Pour le c++ c’est encore très utilisé sur des machines ou la microseconde est importante, ou on est obligé de coder en bas niveau (firmware …), sur des projets scientifiques où les calculs se comptent en année et l’optimisation permet de gagner des mois…



Mais pour le reste la tendance est au managé et à la productivité plutôt que la qualité, en plus maintenant les entreprises gagnent plus à investir dans du gros matos que dans du dev supplémentaire; sur combien de projet j’ai travaillé avec une architecture pourrit, du code pourrit à tous les niveaux, des rustines un peu partout et devoir rajouter du code encore plus dégueux juste pour entrer dans les délais (ce qui fait que rien ne vas en s’améliorant); le client ce qu’il regarde c’est juste le résultat si ça marche comme il le désire ça lui va.









youtpout978 a écrit :



Pour avoir fait du java pendant ma formation pro (et très peu en entreprise) je n’aime pas cette plateforme, eclipse est un ide pas génial (je trouve netbeans un peu mieux).





En termes d’IDE, difficile de surpasser Intellij IDEA de JetBrains, même avec simplement la version Community open source (après il y a une version payante, mais c’est pas extravagant non plus pour du dev professionnel, et si t’as pas à travailler avec des jsps pourries - donc si tu fais pas du vieux Struts 1 legacy quoi ;) - la community passe très bien).







youtpout978 a écrit :



Pour le c++ c’est encore très utilisé sur des machines ou la microseconde est importante, ou on est obligé de coder en bas niveau (firmware …), sur des projets scientifiques où les calculs se comptent en année et l’optimisation permet de gagner des mois…





Clairement, et pour ces usages là ça reste le plus souvent le langage le plus adapté. Pour du web faut vraiment être un monomaniaque, et c’est probablement encore plus antithétique que d’enfoncer une vis avec un marteau :) Mais même dans ces cas là, le point le plus important sera l’optimisation de la complexité des algorithmes en premier lieu, et l’optimisation à l’octet / ms prêt ne peut venir qu’après : vouloir optimiser à l’octet / ms ton appli qui utilise un algorithme en O(N^2) c’est un peu con et inefficace quand il existe un algorithme en O(Nlg(N)).



Personnellement il m’a fallu beaucoup de temps en passant à java pour accepter de ne plus gérer moi-même directement la mémoire et pouvoir choisir entre les différentes façon de passer des arguments (pointeur, référence, copie, copie de pointeur, tout ça quoi).







youtpout978 a écrit :



en plus maintenant les entreprises gagnent plus à investir dans du gros matos que dans du dev supplémentaire;





C’est pas vraiment nouveau, et aujourd’hui c’est plus sur la multiplication de petit matos que sur le gros matos (à condition que l’architecture du programme le permette, bien sûr).







youtpout978 a écrit :



sur combien de projet j’ai travaillé avec une architecture pourrit, du code pourrit à tous les niveaux, des rustines un peu partout et devoir rajouter du code encore plus dégueux juste pour entrer dans les délais (ce qui fait que rien ne vas en s’améliorant); le client ce qu’il regarde c’est juste le résultat si ça marche comme il le désire ça lui va.





La problématique à ce niveau là, c’est que bien souvent sur le début d’un projet, on “oublie” (ou plutôt on te dit “y a pas le temps, c’est pas urgent, on fera ça plus tard”) le refactoring progressif pour réduire la dette technique (entropie inhérente au développement), et quand ça saute aux yeux qu’on est dans la merde, c’est trop tard, il faudrait tout réécrire, et là clairement y a pas le temps, donc on est obligé de faire de la rustine et de la bidouille en essayant quand même que ça soit un peu moins pourri après, mais ça finit bien vite quelque part entre un plat de spaghettis et frankenstein.



La solution à ce niveau là c’est de progressivement ré-architecturer pour découpler le code et le découper en petits composants qui pourront être facilement réécrits et/ou optimisés indépendamment du reste, mais c’est un travail de longue haleine (d’autant plus qu’il faut concilier ça avec le besoin de faire du CA pour pouvoir financer ces évolutions qui n’ont de valeur business qu’à moyen long terme).









brazomyna a écrit :



Je pourrais parler de consultants entre 1k€ et 2k€ / jour qui bossent dans un domaine aussi peu sérieux que la finance. C’est mon quotidien.



Dans ce contexte, la (l’ultra) compétence n’est pas une denrée rare,

pas plus que les budgets sont serrés (encore moins au point de vouloir chercher la solution technologique ‘low cost’).







En même temps, j’ai déjà vu tellement d’incompétence et de mauvais logiciels dans des domaines très sérieux ou l’argent n’était pas un problème que j’éviterais de tirer des conclusions hâtives.



Parce que pour obtenir de l’ultra compétence, aligner de l’argent ne suffit pas toujours.





Et pourtant, ça tourne aussi sur des technos managées (esentiellement pour des garanties de “non crash total” en cas de bug, plus faciles à obtenir sur ce genre d’écosystème).





Et pourquoi pas ? Si leur utilisation est bien adaptée au cas de figure.



Faudra t’il vous répéter 10000 fois qu’il n’y a pas de technologie reine. Pas de langage parfait.



La perfection en informatique, c’est d’utiliser le bon outil pour le bon usage.





Bref, je crois que tout le monde a compris: Le Java de la SSII qui tire les prix et les compétences de ses pisseurs de code frais péchés de l’école, c’est UNE raison PARMI D’AUTRES qui peut justifier ce choix. Mais il ne faudrait pas croire que le Java (ou les autres langages réputés plus faciles d’accès) n’apporte de la valeur ajoutée que dans ces cas là.





La dessus, on est bien d’accord.



Il y a par contre un paradoxe. C’est que pour qu’un programmeur soit bon, il faut qu’il faut qu’il ait une bonne connaissance de toutes les couches d’un système. Ce qu’il n’acquierera jamais en faisant juste de la programmation java.





PS: au passage, (pour notre ami le troll en mode monologue): les 32Go de DDR3 ECC c’est moins cher que 4 heures de temps de travail facturés par chez moi. En fonction du nombre de pauses café prises dans la matinée, tu as quelques Go en plus ou en moins pour le même prix <img data-src=" />





Tout dépends sur combien de serveurs ton programme devra tourner. Si c’est sur plus d’un million de serveurs comme chez Google, tu conviendra qu’il faut revoir le calcul. Parce que 4 heures à comparer à plusieurs millions de barettes ECC, ce n’est plus la même chose.



C’est la ou je tente d’expliquer que pour mesurer la valeur ajoutée de l’optimisation et du langage utilisé, il faut prendre en compte le secteur d’activité. Par exemple, le domaine du logiciel personnalisé n’a pas les mêmes paradigmes que celui du progiciel.





Je ne pousserai pas la comparaison avec le coût du moindre bug à corriger en quelques heures ou l’influence d’un coût dérivé (temps de compil’ accumulé dans une journée ?) sur l’efficience et donc le coût global du développement au final. Ceux qui argumentent dans ces eaux là sont de toute façon manifestement incapables de comprendre avec leur nez dans le guidon qu’un projet est composé d’infiniment plus de variables que le seul choix d’une techno.





Cela signifie t’il pour autant qu’un mauvais choix technologique serait sans conséquences ?
















Gorkk a écrit :



Et c’est ce qui fait que ce n’est pas adapté à du web justement.







Justement, c’est une erreur d’écrire cela.



Le web, c’est aussi bien les petits sites que les gros services.





Pourquoi ne pas en citer ne serait-ce qu’un si c’est si facile ? Je te rappelle que c’est toi qui t’es pointé en prétendant que le C++ était courant parmi les gros services web, et que je t’ai cité la plupart des plus gros services web qui justement n’utilisent pas du C++ pour ça. Il faudrait en plus que ce soit à moi de chercher des exemples compatibles avec ton affirmation ? “Google est ton ami”, c’est un peu facile hein.





J’ai la flemme de chercher pour toi.





Et c’est pour ça que Google (je ne vois pas d’autre service web avec plus de serveurs qu’eux) font leurs devs avec du C++ ? Ah merde, non justement. Ou à plus petite échelle (mais toujours énorme) Facebook, Twitter, YouPorn, la galaxie Mega ? Ah bah non eux non plus n’utilisent pas C++…





Pour Google, j’ai trouvé quelques informations qui confirment qu’ils ont bien réécri leurs logiciels en C++. Et pour facebook, ils ont développé des logiciels pour convertir leur code php en C++.



http://fr.wikipedia.org/wiki/HipHop_for_PHP



Quand à Mega ou Youporn j’imagine que l’essentiel de leur charge ne viens pas des pages, mais plutôt des fichiers. Ce sont donc surtout des hébergeurs de gros fichiers. Donc intéret plus limité.





L’optimisation ce n’est pas uniquement économiser 1 octet par ci, 1 octet par là, ou 1 ms par ci, 1 ms par là. En particulier dans les développements sur le réseau (principalement internet donc, pas forcément uniquement web d’ailleurs), c’est aussi et surtout une question d’architecture.





L’architecture, ça ne fait pas tout non plus. Quand un code optimisé permet de diviser le nombre de serveur, c’est aussi bon à prendre.



Et l’optimisation efficace c’est justement tout le contraire de gagner 1ms par ci ou un octet par la. C’est plutôt d’optimiser les portions de code critiques, les quelques lignes de code qui sont appelés des milliards de fois et qui représentent au final un gain non négligeable à la clé.






Il faut pas oublier que pour le code managé il est aussi possible de faire des optimisations conséquente mais pour ça il faut une bonne connaissance du langage.

Ce qui est bien comme on a un code intermédiaire qui est exécuté par la VM, si on récupère une VM optimisé on aura un programme plus performant sans même recompilé notre projet.








youtpout978 a écrit :



Il faut pas oublier que pour le code managé il est aussi possible de faire des optimisations conséquente mais pour ça il faut une bonne connaissance du langage.

Ce qui est bien comme on a un code intermédiaire qui est exécuté par la VM, si on récupère une VM optimisé on aura un programme plus performant sans même recompilé notre projet.





Autant optimisée qu’elle soit, il y aura toujours une couche entre ton programme/ ton code et le matériel.



D’autant plus que le comportement d’une V.M. est par définition “aléatoire”: par exemple, tu ne sais pas quand sera fait la destruction des objets non-utilisés.



Mais Microsoft a trouvé la parade: fusionné l’O.S. et la V.M. <img data-src=" />



Wait & See: Windows 10 ne sortira pas avant 2017 <img data-src=" />









foetus a écrit :



Autant optimisée qu’elle soit, il y aura toujours une couche entre ton programme/ ton code et le matériel.



D’autant plus que le comportement d’une V.M. est par définition “aléatoire”: par exemple, tu ne sais pas quand sera fait la destruction des objets non-utilisés.



Mais Microsoft a trouvé la parade: fusionné l’O.S. et la V.M. <img data-src=" />



Wait & See: Windows 10 ne sortira pas avant 2017 <img data-src=" />







Ce que je voulais dire par là Microsoft boss sur un nouveau compilo JIT pour le 64 bits boostant pas mal les performances:

RyuJIT









foetus a écrit :



Autant optimisée qu’elle soit, il y aura toujours une couche entre ton programme/ ton code et le matériel.



D’autant plus que le comportement d’une V.M. est par définition “aléatoire”: par exemple, tu ne sais pas quand sera fait la destruction des objets non-utilisés.



Mais Microsoft a trouvé la parade: fusionné l’O.S. et la V.M. <img data-src=" />



Wait & See: Windows 10 ne sortira pas avant 2017 <img data-src=" />





Ca pourrait arriver en partie bien avant. Microsoft bosse sur project N, Un nouveau compilateur ahead of time qui compile le code managé en code natif directement. C’est aussi apparemment lié à Redhawk(connu aussi sous le nom de system language runtime). Ca vise la programmation système.

Felix une des sources de foley a réussi à activer il y a deux jours project N dans Visual Studio 2013 update1. Source

Il y avait aussi depuis environ un an des offres d’emploi sur ce compilateur qui vise de hautes performances pour C#. J’en avais posté quelques exemples sur PCI.

D’après félix, certaines applications de Windows 8.1 RT seraient déjà compilées avec project N.

Si il y a déjà des traces dans Visual Studio 2013 , il y a de fortes chances que project N soit annoncé à la build conférence 2014 début avril.



Si on regarde l’histoire de l’informatique les grands changements ont souvent été accompagnés par de grosses avancées au niveau des compilateurs et langages.

M# est à Midori ce que le langage C est à Unix.








Alesk a écrit :



Si tu savais lire, j’ai écrit: “La jvm est censée suivre une norme (j2ee il me semble) pour que n’importe quelle code java tourne dessus. ”



Tu es le deuxième à m’insulter alors que j’ai bien précisé que je n’étais pas sûre sur ce point. Tu aurais pu corriger tout simplement.



Sinon, j’ai rechercher, c’est j2se. Heureux?







Si tu ne veux pas te faire rembarrer, commence par ne pas critiquer violemment les choses que tu ne connais pas.Tu verras, ça se passera bien mieux !









youtpout978 a écrit :



Ce que je voulais dire par là Microsoft boss sur un nouveau compilo JIT pour le 64 bits boostant pas mal les performances:

RyuJIT





Dans le jargon développeur cela s’appelle “nettoyage de code et refactoring du code “sensible” après une grosse tempête ‘correction de bogues/ maintenance/ évolution’ “

<img data-src=" />







charon.G a écrit :



Ca pourrait arriver en partie bien avant. Microsoft bosse sur project N, Un nouveau compilateur ahead of time qui compile le code managé en code natif directement. C’est aussi apparemment lié à Redhawk(connu aussi sous le nom de system language runtime). Ca vise la programmation système.

Felix une des sources de foley a réussi à activer il y a deux jours project N dans Visual Studio 2013 update1. Source

Il y avait aussi depuis environ un an des offres d’emploi sur ce compilateur qui vise de hautes performances pour C#. J’en avais posté quelques exemples sur PCI.

D’après félix, certaines applications de Windows 8.1 RT seraient déjà compilées avec project N.

Si il y a déjà des traces dans Visual Studio 2013 , il y a de fortes chances que project N soit annoncé à la build conférence 2014 début avril.





Désolé mais face à ton enthousiasme, moi je vois que Microsoft ne fait que temporiser depuis 2009- 2010.

Le projet N c’est juste de la compilation à l’installation en code C++ optimisé pour la plateforme cible, et essentiellement pour le mobile.



C’est banal, classique et justement cela ne servira plus à rien lorsque le nouveau noyau Windows sera là.

<img data-src=" />



Je note juste, encore une fois, que pour rendre “facilement” performant le .Net [et le Java] , on passe par du C++ <img data-src=" />









foetus a écrit :



Dans le jargon développeur cela s’appelle “nettoyage de code et refactoring du code “sensible” après une grosse tempête ‘correction de bogues/ maintenance/ évolution’ “

<img data-src=" />





Désolé mais face à ton enthousiasme, moi je vois que Microsoft ne fait que temporiser depuis 2009- 2010.

Le projet N c’est juste de la compilation à l’installation en code C++ optimisé pour la plateforme cible, et essentiellement pour le mobile.



C’est banal, classique et justement cela ne servira plus à rien lorsque le nouveau noyau Windows sera là.

<img data-src=" />



Je note juste, encore une fois, que pour rendre “facilement” performant le .Net [et le Java] , on passe par du C++ <img data-src=" />





Mouais tu n’as pas bien compris..

Project N génère du code natif pas du c++. Le compilo effectue tous un tas d’optimisations poussées en particulier pour le many core.

PS: en relisant j’ai compris tes propos, le code natif c’est du code machine hein <img data-src=" />









charon.G a écrit :



Mouais tu n’as pas bien compris..

Project N génère du code natif pas du c++. Le compilo effectue tous un tas d’optimisations poussées en particulier pour le many core.





Oui tu as raison:

“Le projet N c’est juste de la compilation à l’installation en passant par un compilateur C++ optimisé pour la plateforme cible, et essentiellement pour le mobile. ”

<img data-src=" />



Et oui tu as raison; Windows sait exécuter du code C++, comme du code SQL <img data-src=" />



Et pour ton truc many core encore heureux. Parce que si un dév se casse le popotin à faire des threads, c’est pour qu’au final il y en a réellement <img data-src=" />







charon.G a écrit :



PS: en relisant j’ai compris tes propos, le code natif c’est du code machine hein <img data-src=" />





Désolé pour toi mais moi aucun employeur n’a voulu que je code en J2E, Java Android ou en .Net <img data-src=" />









foetus a écrit :



Je note juste, encore une fois, que pour rendre “facilement” performant le .Net [et le Java] , on passe par du C++ <img data-src=" />





<img data-src=" /> Du C++ ? Où vois-tu que ça serait simple ?



Il faut bien voir que ce n’est pas simplement une histoire de langage. C# tourne via le CLR, ce qui implique un nombre de fonctionnalités qui n’existeront jamais dans un langage compilé sans runtime : reflection, dynamic, generic (différent des templates C++), etc…



Du C# sans compilé et sans runtime, ça existe. Ce n’est pas public, mais l’idée c’est de se débarrasser de ces fonctionnalités pour se débarrasser plus ou moins d’un runtime. Ensuite, il possible de faire des choses très performantes grâce à des tables de garbage collection, etc…



En passant, il est toujours risible de voir des gens conspuer les GC en pensant qu’un malloc/free est O(1) alors qu’il suffit de savoir comment c’est implémenté dans les noyaux pour se rendre compte qu’un GC est bien plus optimal en allocation (pas libération, entendons nous bien) mémoire puisque conscient des allocations futures.







Gorkk a écrit :



Et c’est pour ça que Google (je ne vois pas d’autre service web avec plus de serveurs qu’eux) font leurs devs avec du C++ ? Ah merde, non justement.









Most other front ends are in C++ (google.com) and Java (gmail).



Source:http://web.archive.org/web/20110708015633/http://panela.blog-city.com/python_at_google_greg_stein__sdforum.htm



Sinon, il y a Wt, qui est en quelque sorte le Qt pour le web.http://www.webtoolkit.eu/







sr17 a écrit :



En même temps, il n’a pas vraiment tort. De nombreux programmeurs te diront qu’il faut bien plus d’expérience pour programmer en C/C++ qu’en Java ou en PHP.





Certes. Cela fait-il des développeurs C++ des développeurs supérieurs ? Cela fait-il du C++ un langage supérieur ? Personnellement, je trouve le C++ inutilement compliqué. Pas compliqué dans l’absolu (quand tu as goûté à un langage tel qu’Haskell, tout est simple), mais compliqué pour les fonctionnalités apportées.









jrbleboss a écrit :



Il faut bien voir que ce n’est pas simplement une histoire de langage. C# tourne via le CLR, ce qui implique un nombre de fonctionnalités qui n’existeront jamais dans un langage compilé sans runtime : reflection, dynamic, generic (différent des templates C++), etc…





<img data-src=" /><img data-src=" />



Est-ce que tu connais le RTTI du C++?

Est-ce que tu connais l’Objective C avec le “duck typing” et “KVO”?



Est-ce que tu sais que les templates est un outil très très large?

Tu peux templater des objets et des fonctions.

Tu as des template partielles, des template par défaut ce qui permet de faire du calcul avec le compilateur.









jrbleboss a écrit :



En passant, il est toujours risible de voir des gens conspuer les GC en pensant qu’un malloc/free est O(1) alors qu’il suffit de savoir comment c’est implémenté dans les noyaux pour se rendre compte qu’un GC est bien plus optimal en allocation (pas libération, entendons nous bien) mémoire puisque conscient des allocations futures. .





Dans un sens c’est normal <img data-src=" />

Sans V.M. les allocations et destructions sont faites en direct.

Alors que dans une V.M., c’est une gestion d’arbre.



Est-ce que tu connais ARC d’iOS?









jrbleboss a écrit :



Certes. Cela fait-il des développeurs C++ des développeurs supérieurs ? Cela fait-il du C++ un langage supérieur ? Personnellement, je trouve le C++ inutilement compliqué. Pas compliqué dans l’absolu (quand tu as goûté à un langage tel qu’Haskell, tout est simple), mais compliqué pour les fonctionnalités apportées





Bjarne Stroustrup a toujours dit que le C++ est une caisse à outils.

Donc, il y en a que tu n’utilises pas ou peu. Par exemple l’amitié.









foetus a écrit :



<img data-src=" /><img data-src=" />

Est-ce que tu connais le RTTI du C++?





Sauf erreur, c’est bien plus limité que ce qu’il est possible de faire avec le CLR.







foetus a écrit :



Est-ce que tu sais que les templates est un outil très très large?

Tu peux templater des objets et des fonctions.

Tu as des template partielles, des template par défaut ce qui permet de faire du calcul avec le compilateur.





Oui, je n’ai jamais dit le contraire. Je disais juste que les generics sont différents des templates. Tu peux créer un generic, le compiler et l’utiliser avec un type qui n’était pas disponible à la compilation. Aux dernières nouvelles les templates C++ sont résolus à la compilation non?







foetus a écrit :



Dans un sens c’est normal <img data-src=" />

Sans V.M. les allocations et destructions sont faites en direct.

Alors que dans une V.M., c’est une gestion d’arbre.





Justement non. Ce que tu appelles “direct”, c’est gérer une liste chainée de blocs mémoire. Ce qui implique son parcours pour malloc/free. Le GC est plus optimal pour l’allocation car il a une connaissance des objets à initialiser avant de devoir le faire. En revanche, là où un GC impacte les perfs c’est pour savoir quand la mémoire (parcours de graph et non d’arbre) doit être libérée.



http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.8219









jrbleboss a écrit :



Sauf erreur, c’est bien plus limité que ce qu’il est possible de faire avec le CLR.





Évidemment par exemple créer un objet à partir du nom de la classe n’est pas possible en C++.

Mais en Objective-C (qui est aussi une surcouche du C) tu peux le faire



Donc je ne vois rien d’impossible, surtout lorsque tu sais des “trucs” comme les const c’est du flan (c’est le compilateur qui les gère) <img data-src=" />









jrbleboss a écrit :



le compiler et l’utiliser avec un type qui n’était pas disponible à la compilation.







Tu crées des types à l’exécution <img data-src=" /> <img data-src=" />

Tant bien même, tes generics ont “un contrat”, elles ne sont pas “open bar”









jrbleboss a écrit :



lAux dernières nouvelles les templates C++ sont résolus à la compilation non?





Oui les templates a une époque (2004-2006) c’était le chantier (avec les nouveaux compilateurs je ne sais pas): tout mettre dans l’header pour que le compilateur puisse faire son travail.



À l’époque (tjs 2002-2004) on parlait du mot clef export que seul le VIsual avait un support boiteux <img data-src=" /> <img data-src=" />







jrbleboss a écrit :



Justement non. Ce que tu appelles “direct”, c’est gérer une liste chainée de blocs mémoire. Ce qui implique son parcours pour malloc/free. Le GC est plus optimal pour l’allocation car il a une connaissance des objets à initialiser avant de devoir le faire. En revanche, là où un GC impacte les perfs c’est pour savoir quand la mémoire (parcours de graph et non d’arbre) doit être libérée.





Depuis 1987, le tas doit avoir quand même une autre tronche qu’une banale liste chainée <img data-src=" /> <img data-src=" />









foetus a écrit :



Tu crées des types à l’exécution <img data-src=" /> <img data-src=" />

Tant bien même, tes generics ont “un contrat”, elles ne sont pas “open bar”





Tu peux créer des types à l’exécution, oui. J’ai par exemple un projet où le code d’une classe est générée à partir d’un fichier de config, compilé en mémoire. Tu as un objet crée entièrement au runtime. Ensuite, tu peux l’utiliser avec des méthodes generic. C’est quand même plus avancé que le RTTI.







foetus a écrit :



Depuis 1987, le tas doit avoir quand même une autre tronche qu’une banale liste chainée <img data-src=" /> <img data-src=" />





Il y a des optimisations, bien sûr. Mais toutes ces optimisations sont plus efficaces sur un GC car il a plus d’information. En fait, souvent un GC est un meilleur heap manager que le noyau (moins de fragmentation, pre-allocation, etc…) mais forcément trouver la mémoire a libérer le ralenti. Ce dernier point devient de moins en moins vrai car certains GC (pas encore public) peuvent s’éxécuter sur un autre core sans stopper l’éxécution.









jrbleboss a écrit :



Tu peux créer des types à l’exécution, oui. J’ai par exemple un projet où le code d’une classe est générée à partir d’un fichier de config, compilé en mémoire. Tu as un objet crée entièrement au runtime. Ensuite, tu peux l’utiliser avec des méthodes generic. C’est quand même plus avancé que le RTTI.





Je viens de regarder et tu es un truand <img data-src=" />



Cela existe depuis 20 ans en C/ C++ et cela s’appelle LoadLibrary sous Windows



Après je l’accorde c’est plus bas niveau, moins 2.0 sans XML sans assemblies, sans compilation à l’exécution, moins sexy parce que cela ne s’interface pas facilement avec des generic et assez bordélique parce qu’il faut savoir si le “contrat” est interne, externe, mi interne-externe, sans parler des “compatibilités”



Boost, ou une autre librairie, a peut-être rendu les choses plus sexy.





Mais bon après 10 ans [parce que cela existe depuis la version 2 si j’ai bien lu], une V.M. collé au derrière, les erreurs du passé, un langage qui a une vraie réflexion, Microsoft a fait un “truc” propre <img data-src=" />