Aller au contenu

Messages recommandés

Posté

A chaque fois que tu as un machin=bidule ou fonc(bidule), Java incrémente un compteur de référence sur le bidule.

Donc même à la sortie du scope l'éboueur ne va pas détruire un objet puisqu'il sera encore utilisé.

Le compteur est décrémenté quand tu sors de la fonction ou quand le scope de machin est terminé (fin d'accolade)

Ça n'est qu'avec un compteur à zéro que le machin se retrouve dans la liste des objets à détruire.

 

Les garbage collectors ne marchent pas avec des compteurs à cause des références circulaires.

Les algorithmes sont d'ailleurs très sophistiqués.

 

Le Gabagge collector c'est bête et méchant, ça vaut pas l'analyse plus fine d'un développeur qui gère de beaux finalizers.

 

Pour avoir dirigé des projets assez gros on va dire avec et sans, j'ai plutôt constaté l'inverse : le garbage collector est bien meilleur qu'un programmeur et on a moins de memory leak.

 

Non, le passage ne se fait pas par valeur pour les objets en Java.

 

En fait si. Parce que tous les objets ne sont manipulés que par pointeur et qu'on passe toujours le pointeur par valeur et pas par référence.

Mais en pratique, tu as raison en effet.

Posté (modifié)
Une remarque sur ActionScript : attention avec flash. C'est effectivement un gouffre à mémoire et surtout c'est loin d'être simple à maitriser. J'ai l'habitude maintenant de construire mes interfaces graphiques en C# .NET, que j'apprécie particulièrement pour son accessibilité et sa documentation bien fournie. Ma compagne travaille elle sur ActionScript et j'ai pu constaté à quel point les libraires ActionScript sont mal documentées.

 

Je rejoins aussi Pascal sur la séparation en 2 languages. Je choisirais certainement le C/C++ pour le traitement des données et je passerais les informations utiles via un wrapper vers le code d'interface graphique écrit dans un language plus adapté à cet effet.

 

Ouaip mais là tu n'es plus cross plateformes.

Ton C/C++ compilé ne peut pas passer à la fois sur un linux, un windows, un MacOS et un téléphone Android alors qu'ActionScript ou Java si.

 

Ne pas confondre modélisation MVC et techno.

 

Le MVC (Modèle, Vue, Contrôle) ne dépend pas de la techno mais du développeur.

MVC ça ne signifie pas que chacun des blocs est dans un composant logiciel différent.

Par exemple on a un rectangle et on l'affiche en zoom x2.

Celui qui ne programme pas en MVC doublera les valeurs dans le rectangle avant l'affichage alors que celui qui modélise façon MVC ne fera que lire les valeurs du rectangle, il ne les changera pas: La vue n'a pas d'incidence sur le modèle.

MVC c'est juste une autre façon de dire correctement: de grands principes que les vieux aiment bien parce qu'ils se sont déjà tapé des bugs et de la réécriture.

 

Désolé mais pour mélanger du C et du Java faut tout de même avoir envie de souffrir !

 

Faut pas mettre la charrue avant les boeufs et faut pas mettre le comment avant le quoi.

La techno et le langage n'ont pas autant d'importance que l'utilisateur final.

J'aime beaucoup le C et le C++ mais pour ce que Bruno recherche ça n'est pas adapté du tout.

 

Toutes les technos se valent... du moment qu'elles puissent réaliser le cahier des charges !

Modifié par Leimury
Posté (modifié)

D'abord ça n'est pas le scope mais plutôt le nombre de références actives.

 

Oui Leimury et encore comme moi tu simplifies (pascal_meheut explique pourquoi plus haut) mais voilà je n'ai pas voulu en rajouter une tartine pour expliquer le fonctionnement d'un garbage collector simplement avec ce système on ne sais jamais vraiment lorsque la mémoire va être réellement libérée (voir aussi ce que sont les young / old / tenured generation), ça peut être un pb comme cela peut ne pas en être un. On contourne aussi la question en allouant une quantité de mémoire bien définie pour un programme donnée comme ça cela n'impacte pas les autres processus qui cohabitent avec notre programme. Il faut retenir aussi que le GC malgré ses défauts (dont l'optimisation de l'utilisation mémoire) est un immense progrès pour le développement d'application et les succès planétaire respectifs des langages Java et C# ne s'y trompe pas, car la plupart des bugs des programmes proviennent de la gestion de la mémoire lorsqu'elle est confiée exclusivement au développeur, tous le monde a pu s'en rendre compte au moins une fois ;) Et puis celà va dans le sens de la productivité, on passe moins de temps à traquer les fuites mémoire qu'à construire des choses intéressantes pour ses clients.

 

Y'a pas vraiment de mieux ou moins bien, c'est surtout une affaire de gouts.

 

Je crois que ça va plus loin qu'une simple préférence perso du moins lorsqu'on a des choix technologiques à faire dans des projets industriels de plusieurs millions d'euros mais bon ici je suis d'accord ce n'est pas vraiment le cas Bruno ne se pose pas ce genre de question, du moins pas encore ? :)

 

Le MVC (Modèle, Vue, Contrôle) ne dépend pas de la techno mais du développeur.

 

Bien sur que non c'est pour cela que je parlais précisément de schéma de construction (design pattern en anglais) comme pour un plan d'architecte qui ne dépend pas des matériaux utilisés ni des moyens mis en oeuvre au moment de la construction.

 

Ne le prends pas mal mais on n'apprends pas à un vieux singe à faire la grimace

 

Non pas de soucis je suis vieux aussi ;) c'est juste que j'avais eu un moment une réminiscence lointaine d'un projet de reprise de code bien pourri et in-maintenable où le développeur stagiaire non encadré avait pris le soins de tout mélanger (la présentation, les calculs, les données) je lui en ai voulu à mort avant de tout refaire de zéro depuis le service de maintenance m'a dit merci plusieurs fois.

 

Sinon je persiste il n'y a pas de pointeur en Java ! Mais c'est vrai qu'en pratique on peut modifier les attributs d'un objet passé en argument voir aussi le cas emblématique de la fonction de swap(a,B) de deux valeurs cela aide à comprendre la différence avec le C par exemple. Sinon ce n'est pas plus compliqué que le C où les effets de bord sont plus pernicieux je trouve.

 

Sinon Leimury tu dis que C/C++ n'est pas adapté ... je serai moins catégorique, d'abord je ne suis pas pro Java, ni pro C++ ni pro C# ni ... je crois que toutes les techno sont intéressantes du moment qu'on les maîtrises un peu et que l'on sait où sont les pièges, juste que pour un débutant il peut être intéressant de ne pas partir de la feuille blanche et de s'adosser à une puissante API pour faire ce qu'il a à faire même les choses les plus évidentes. Je ne suis pas un gourou du C++ (j'ai déjà fait quelques projets d'info indus. avec mais sans plus) mais je trouve par exemple avec QT tout est compris dedans, et que l'on a une facilité déconcertante pour construire des IHM modernes (une gestion évènementielle exemplaire avec les slots et les signaux), faire du graphisme, du calcul scientifique etc ... donc voir aussi avec d'autres langages mais la question des API (librairies) est essentielle à mon avis pour mener à bien un tel projet.

 

PS: j'espère que Bruno suit encore la discussion :)

Modifié par jgricourt
Posté

PS: j'espère que Bruno suit encore la discussion :)

 

Je pense que Bruno ne devrait pas trop écouter les vieux cons qui joue à évoquer leurs souvenirs de la guerre au mieux, à comparer des tailles de pointeur au pire.

 

De toute manière, il choisit une techno, il commence à implémenter et quand son truc commencera à tourner, il sera toujours temps de serrer les boulons, passer un coup de peinture, mettre le tout dans une joli boite avec un noeud et livrer.

Posté (modifié)
je trouve par exemple avec QT tout est compris dedans, et que l'on a une facilité déconcertante pour construire des IHM modernes (une gestion évènementielle exemplaire avec les slots et les signaux), faire du graphisme, du calcul scientifique etc ... donc voir aussi avec d'autres langages mais la question des API (librairies) est essentielle à mon avis pour mener à bien un tel projet.

 

PS: j'espère que Bruno suit encore la discussion :)

 

Ouaip mais tu trouves Qt sur le PC de monsieur tout le monde ?

 

Ensuite même avec Qt il n'en reste pas moins qu'en C ou C++ tu es bon pour compiler pour chacune des plateformes.

Les sources changent peut être pas mais l’exécutable si.

 

Et puis quid des phones et tablettes ?

 

Bruno préfère Java et il a raison.

S'il préférait l'ActionScript (allez quoi, ça s'appelle aussi JavaScript, on y est presque) ce serait mieux :p

Modifié par Leimury
Posté
Ouaip mais tu trouves Qt sur le PC de monsieur tout le monde ?

 

Tu livres l'appli avec les DLL dedans. C'est simple à faire. Comme je le disais, je fais ca pour un projet sur Sourceforge.

 

Ensuite même avec Qt il n'en reste pas moins qu'en C ou C++ tu es bon pour compiler pour chacune des plateformes.

Les sources changent peut être pas mais l’exécutable si.

 

Qt fournit tout ce qu'il faut pour compiler sur toutes les plateformes sans changement. Là aussi, ca marche bien.

Pour le projet dont je parlais plus haut, les autres viennent sur un site Web, appuient sur le bouton "Build" et ca leur génère 4 distributions (OSX, Windows, Linux32 et Linux64) à télécharger.

Tranquille, pépère.

 

Et puis quid des phones et tablettes ?

 

Déjà, ca n'est pas vraiment dans le cahier des charges initial. Ensuite, une appli mono-code/mono-langage qui marche sur toutes ces plateformes et qui est adaptée, je demande à voir. Oui, je sais, il y a Adobe qui promet ca. Curieusement, je n'ai pas encore vu une migration massive des développeurs C++, Java, C# et autres vers AIR/Flex/Flash.

 

 

Bruno préfère Java et il a raison.

S'il préférait l'ActionScript (allez quoi, ça s'appelle aussi JavaScript, on y est presque) ce serait mieux :p

 

Ben oui parce que Java, ca marche bien sur iOS...

Posté (modifié)

AIR n'est pas nécessaire pour Flash, le test plus haut avec la bataille navale le démontré.

Alors pourquoi AIR ?

Si quelqu'un voulait faire un photoshop en flex ça ne tiendrait pas dans un seul swf et il faudrait avoir les mêmes droits qu'une appli quelconque et c'est tout de même mieux si ça s’exécute sans navigateur ni player.

le problème d'une appli swf c'est qu'elle évolue en milieu isolé. Il y'a des restrictions qui ne permettent pas par exemple de se balader dans les fichiers comme une vraie appli.

AIR n'est pas là pour exécuter simplement du Flash mais pour donner à une appli flash les caractéristiques d'une appli tout court et aussi pour pouvoir exécuter du Flash en dehors du navigateur.

Ca permet également des applis plus conséquentes avec prise en charge des dépendances.

 

C'est Flash qui ne fonctionne pas bien sous iPhone. Sous iOS de Mac de bureau aucun problème.

Java: pas de problème sur iOS et Apple ne fait même pas concurrence à Sun: la situation est même plus claire que sous Windows.

 

C'est plutôt avec les Linuxiens et leur sale manie de se chercher des trucs underground qu'il y'a problème.

le Linuxien pur jus n'ira pas chercher son java cher sun (qui est pourtant très bien). Non, ce serait trop simple ! Le linuxien pure souche ira se chercher Kaffe et il ira même jusqu'à le recompiler juste pour le fun.

Evidement ensuite il critiquera toutes les applis java de :censuré: qui ne tournent pas chez lui parce qu'elles sont vraiment mal foutues.

Le vrai linuxien finit d'ailleurs par lancer un PC pour observer le comportement de l'appli et la réécrire sur son linux avec son java saveur Kaffe.

 

Un Linuxien c'est quelqu'un qui développe sous Windows avec Qt et OpenGL pour faire les mêmes choses qu'avec les API Microsoft et DirectX et râler parce que l'appli ne pèse que 300k chez lui mais 20Gb avec les dépendances dont il est le seul à avoir besoin passke Windaube cé pourri et cé lourd !

 

PS: A peine exagéré :p

Modifié par Leimury
Posté (modifié)
Ouaip mais tu trouves Qt sur le PC de monsieur tout le monde ?

 

Avec QT pas besoin d'interpréteur ... il suffit de fournir l’exécutable en code natif (exe) qui va bien en fonction de la plateforme, une simple recompilation sans modif de code original (C/C++) suffit pas mal pour un IHM ! Donc oui l'idée est de distribuer plusieurs exécutables pour un même code source ce qui est tout de même un moindre mal lorsqu'on doit assurer la maintenance du programme.

 

Ensuite même avec Qt il n'en reste pas moins qu'en C ou C++ tu es bon pour compiler pour chacune des plateformes.

 

Oui mais avec l'avantage énorme de ne pas avoir à recoder un IHM adapté à MacOSX ou Windows ou Android etc ...

 

Et puis quid des phones et tablettes ?

 

Il y a moyen car une bonne partie des dernières avancées de QT concerne justement les smartphones. Bon je te l'accordes c'est surement pas aussi bien que Java lorsqu'on développe pour Android ni mieux que Objective C pour iPhone ou iPad. L'environnement de dev idéal n'existe pas sinon on ne s'embêterai pas à apprendre des dizaines de langages et puis c'est ça qui est amusant la dedans ;)

 

Bruno préfère Java et il a raison.

S'il préférait l'ActionScript (allez quoi, ça s'appelle aussi JavaScript, on y est presque) ce serait mieux :p

 

D'accord pour Java car Java me parait nettement plus pérenne étant donné l'ancienneté, le marché qui le supporte et qui reconnait sa robustesse ainsi que l'ouverture de cette plateforme qui n'est pas verrouillée par un éditeur en particulier.

 

PS: @Leimury au fait Java c'est plus Sun ... il ne faut pas exagérer non plus les linuxiens et autres geeks invétérés j'en ai jamais vu en entreprise car en milieu pro on n'aime pas trop les gens étroits d'esprit ;) donc si ils existent ils sont une minorités et bossent dans la pénombre de leur piaule. Ceci dit dans l'industrie ou les services on utilise aussi Linux massivement pour plein de raisons valables (performance, scalabilité, économique etc ..) mais pas pour des raisons dogmatiques (Windows ça pu Linux "is King").

Modifié par jgricourt
Posté
j'espère que Bruno suit encore la discussion

Je vous lis et je ne comprends pas tout. J'en retiens que la programmation, c'est devenu drôlement compliqué ! :)

Posté
Je vous lis et je ne comprends pas tout. J'en retiens que la programmation' date=' c'est devenu drôlement compliqué ! :)[/quote']

 

Pas vraiment. Il y a juste plein de choix entre autre parce qu'on est dans une période de changements. Dans les années 90 où tu avais Windows d'un coté, Unix de l'autre, c'était plus simple quelque part mais artificiel.

 

D'un autre coté, va lire un fil sur la photo astro à coup de taille de photosite, dark, offset, PEC + le post-traitement et tu vas voir que l'astro, c'est devenu compliqué aussi depuis l'argentique et le guidage à l'oeil.

Posté

Je viens de voir un truc qui s'appelle wxWidgets, ce serait une bibliothèque graphique libre utilisable en C++. C++, je ne connais pas, mais je connais C, et ça se trouve il y a moyen de s'y adapter plus facilement qu'en apprenant Java. Qu'en pensez-vous ?

 

(Pour le moment je vais reprendre mon programme Fortran qui fabriquait les cartes à imprimer et le refaire en C (et mieux), ce sera une première étape.)

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.