C'était un EXEMPLE ! L'exemple bête de ce qu'il ne faut pas faire justement, mais qui met bien en évidence le fait que ta « protection » n'en est pas une.
Comme je le disais, tu as pris exemple sur un langage qui n'est pas 100% objet et qui justement te permet de faire ce genre de conneries. D'où l'intérêt d'un langage qui tend à utiliser au maximum les notions objets.
Que ce soit le typage qui me permette de résoudre ce problème dans mon langage, Ok. Et alors ? Si ça me permet de mieux respecter un principe objet d'encapsulation ? Pourquoi s'en passer ?
Pour le protected moi perso ça ne me dérange pas, il peut avoir une utilité. D'ailleur tu verras que d'autres langages utilisent encore d'autres mot supplémentaire : internal par exemple ;) (je te laisse trouver le langage puisque tu as une expérience bien plus élevée que moi en la matière)
Ok, vu tes lectures, je commence à comprendre. Il n'y a pas que du mauvais chez Microsoft, mais si c'est là ta référence de base pour assimiler les autres langages, tu risques d'avoir une vision quelque peu déformée du fonctionnement d'un ordinateur.
Tu crois franchement que j'ai commencé à code sur .NET alors que ca ne fait qu'à peine 2 ans que ca existe ?
1) Je te file une VCS2600 avec une cartouche vierge de 4Ko et je te demande de réécrire Space Invader et de le faire tenir dans le médium fourni. Si tu ne peut pas le faire alors que tes prédécesseurs l'ont fait vingt ans avant toi et sans langage objet, c'est que ce n'est pas une évolution.
Et ? tu cherches à montrer quoi là ?
2) Si tu utilises une JVM comme garde-fou parce que tu estimes que ton programme ne pourra fonctionner de façon sûre que dans ce genre d'environnement, c'est toi qu'il faut remettre en cause. Pas ta machine. Comment feras-tu le jour où tu devras à ton tour écrire une machine virtuelle ?
Je ne dis pas que j'utilise une VM (y'a pas que JVM ;) ) comme garde-fou mais comme machine capable d'exprimer et de respecter au mieux les informations introduite par les notions objets. J'utilise également une VM pour pouvoir utiliser le langage le plus adapté selon la partie de l'application que je rédige, sans avoir à me soucier de l'interopérabilité entre les composant de mon appli.
Oui j'avoue je programme avec .NET, mais parcque ils ont introduit un CLR (Common Langage Runtime) dédié à faire tourner n'importe quel langage, pourvu qu'il soit OBJET (parcque justement la VM en tire partie) et parcqu'elle introduit des un ensemblre de types de bases autre que le simple mot mémoire.
Pour le jour où j'aurai à rédiger une machine virtuelle, désolé je dois être con mais je vois pas ce que tu veux dire.
3) Parlons-en de la portabilité: Un programme écrit dans un langage de haut-niveau fonctionnera sur toutes les machines ... sur lesquelles la librairie standard et la machine virtuelle du langage auront été portées ! Ce qui limite déjà les différents modèles. Ensuite, il fonctionneront exactement de la même façon: A quoi cela sert-il d'avoir des machines différentes alors ? Une machine peut très bien être en avance sur ses concurrentes parce qu'elle apporte une killer-feature, comme on dit. Le programmeur Java/.Net est-il condamné à ne jamais en profiter ?
Au niveau de la machine physique, ces killer-features comme tu dis ne peuvent pas apporter grand chose directement au programmeur. Les optimisations peuvent se faire au niveau de la VM qui apportera tout de suite le gain à lappli qui tourne au dessus... Et puis franchement, une VM apporte beaucoup plus de "killer-features" qu'une simple architecture processeur... d'ailleur un des autres intérêt des machine virtuelles c'est aussi de favoriser la diversité des architectures processeurs, il n'y a pas besoin de recompiler tous les progs, juste la VM et les biblio qui vont avec.
Encore une fois, je ne vois pas trop l'intérêt, en dehors de l'assembleur et parfois du C de programmer pour un processeur spécifique. A part peut être pour coder sur un proc très lent avec très peu de mémoire, mais c'est loin tout ça maintenant...
Pourquoi « pseudo » ?
- Sous GTK+ en C, c'est:
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- En Java, ce sera
window1 = new gtk_window (GTK_WINDOW_TOPLEVEL);
nan t'as pas compris ma question. Je ne te parle pas des différence de syntaxe mais du passage de l'un à l'autre Je voulais justement te demander comment tu passes du C à Java sans perdre ton temps à réécrire un wrapper intermédiaire tout ça parcque ton langage de base simulait l'objet. Le langage C exprimerait des notions objets, elles auraient pu être directement wrapper automatiquement pour être utilisables en Java...
Non, non, non et non. D'abord, c'est à se demander si tu as effectivement jamais écrit une ligne d'assembleur.
Du 68k dans ma jeunesse et du x86 pendant mes études. http://c2team.fr.st/(...) (matte les screenshots pris sur une TI89) pour voir ce que j'ai fait. C'est modeste mais j'ai fait tout le moteur graphique en 3D iso, alors les optimisations, voilà quoi... mais bon c'est peut-être pas un niveau suffisant pour toi...
Pour ce qui est du x86, j'avoue que je suis moins doué en la matière, je me contente de ce que j'apprends en cours. Enfin j'ai déjà rédigé quelques lignes de code (genre un noyau de syncrhonisation en asm avec une passerelle en C, et là d'ailleur on applaudit la manipulation des données en passant d'un langage à un autre, pourtant réputés comme très proche...)
J'ai également à travers mes études eu l'occasion de rédiger 2 compilateurs, pour 2 machines virtuelles (question de pratique, on ne peut pas avoir pleins de machines sous la main) complètement différente, une à pile, une autre basé sur du code 3 adresses.
Tu remarqueras que je ne remets nullement en doute tes compétences.
connaître le fonctionnement d'un ordinateur, c'est précisément le métier du programmeur. Connaître le principe de fonctionnement général de la plupart des ordinateurs (surtout si tu te limites aux ordinateurs), oui, c'est le boulot du programmeur. Connaître les spécificités de chaque machine, non, ça n'est pas son taf. Sauf pour le programmeur système. Si la machine virtuelle (ou le compilateur) fait bien son taf, c'est à elle de tirer partie des différente architecture.
En quoi le fait que ton langage soit « objet » apporte des informations supplémentaires au compilateur ? Au contraire, la plupart des langages objet, C++ en tête d'ailleurs, ont la fâcheuse réputation de consommer plus de mémoire pour un même résultat.
Comme je l'ai expiqué plus haut, les informations apportés au compilateurs sont justement celles liées aux notions objets. J'ai pris exemple sur l'encapsulation. Effectivement si le compilateur transforme le code en natif, toutes ces informations seront perdues et tu pourras faire n'importe quoi comme en C++ dans l'exemple que tu m'as donné. Si c'est une VM qui tourne dessous, et qu'elle est conçu pour justement exploiter toutes ces informations, alors elle prend tous son sens : tu pourras t'arracher à essayer d'accéder à un membre private si tu n'y est pas autorisé depuis un autre langage que le langage dans lequel tu as écris ta classe de base.
Lorsqu'un codeur écrit avec les pieds un programme utilisant un langage de trop haut niveau
Si le programmeur code avec les pieds dans un langage de haut niveau, il est à peu près certain qu'il codera encore plus avec les peids dans un langage de bas-niveau, ou alors il y met de la mauvaise volonté.
80% de la puissance de la machine est consommée dans les conversions successives entre ces couches
T'as déjà utilisé une VM bien foutue ? Si je prend exemple sut la machine virtuelle .NET elle compile le programme en natif avant la première exécution sur l'architecture cible. Pour avoir fait des tests basique, je n'ai pas vu de différence de rapidité entre du C++ natif et du C# sur .NET. Aller, je prend exemple sur Quake2.NET (http://www.codeproject.com/managedcpp/Quake2.asp(...)) qui tourne à 90% de la vitesse en natif.
Je crois qu'il va falloir abandonner ce mythe qui a la vie dur qu'une machine virtuelle ralenti considérablement une application... (évidemment, quand on parle VM, tout le monde penses Java, forcement...) :-p
D'autre part, optimiser un programme ne se limite pas à « simplifier l'algorithme utilisé », mais aussi à parler le langage de ta machine. Tu oublies qu'un compilateur est avant tout un traducteur.
On est bien d'accord, sauf sur les rôles. Simplifier l'algorithme utilisé c'est au programmeur de le faire. Opitmiser le code machine, c'est au compilateur ou à la machine virtuelle de le faire.
Pour ton exemple foireux de traducteur, tu remarqueras qu'il y a une différence entre un langage naturelle (parlé) et un langage informatique : il y en as un que l'ont peut exprimer sur ordinateur, et pas l'autre, un qui est exprimable par une grammaire, pas l'autre. C'est pour celà que les traducteurs de langages naturelles ne sont pas parfaits.
C'est bien la mentalité Microsoft, ça. On sort un produit tordu à la base, et on applique des patches successifs plutôt que de revoir le concept
Y dit qu'il voit pas le rapport (???)
Il suffit que tu intègres le code concerné au sein d'une boucle pour que le gain en question ne soit plus une durée fixe mais un pourcentage du temps consommé. Ainsi, si tu écris ton programme en assembleur, et que tu l'optimises pour passer de 10 cycles machines par boucle à 5 cycles (soit 2ns de gain sur une machine moyenne), tu doubles la vitesse de ton programme.
Ton exemple demande à être rédigé noir sur blanc pour plus de compréhension, mais si je ne m'abuse, tu as utilisé une astuce d'algorithmie pour diminuer la complexité de ton problème... tu n'as pas du tout fait d'optimisation propre à la machine...
Personnellement, je n'ai jamais eu de problème à manipuler un pointeur. Peut-être parce qu'à la base je savais ce qu'est une adresse mémoire.
Merci moi aussi je sais ce que c'est. Mais pour moi les pointeurs doivent être utilisé avec prudence, et seulement par un programmeur expérimenté et qui effectivement connaît bien les mécanismes internes à la machine. Seulement on parlait de programmation objet qui le plus souvent se passe également de la notion de pointeur, donc ne changeont pas de sujet.
- En C/C++ le programmeur se tape des segfaults;
- En Java, le programmeur se tape des NullPointerException.
Tu vois que le C++ a des inconvénients ;)
Pour le Java, désolé, j'aime pas Java, donc je ne peut que aller dans ton sens et dire que c'est tout à fait crétin d'obtenir ce genre de messages...
Un programmeur qui ne sait pas comment fonctionne un microprocesseur - et qui en plus le revendique - est pour moi un paradoxe.
Si ça m'est adressé, mdr. Sinon je suis d'accord que certains programmeurs "pro" ferais mieux de regarder de plus près le ofnctionnement interne de la machine. Mais pas forcement de toutes les machines qu'il utilise, notamment s'il utilise un langage de haut niveau. Et puis s'il est futé et qu'il utilise une machine virtuelle, il n'aura besoin d'apprendre le fonctionnement que d'une seule machine qui elle regroupe la plupart des concepts des architectures processeurs ;)
Ton post me laisse perplexe, pour le moins. J'ai l'impression que tu confonds plusieurs notions, notament typage, sécurité, et approche objet, de la même façon que Jayce the Crazychild confondait mode texte et langage interprété (là, 'faut quand même le faire, soi dit en passant) ou, plus sérieusement, comme beaucoup de monde assimilait programmation 32 bits et mode protégé lors des débuts de Win32.
Je confond surement certaines notions, mais pour la bonne raison que pour moi elles sont complémentaire et le plus souvent liées quand toi tu préfères les dissocier entièrement. C'est sans doute là la grande différence...
PS : ouh ca va commencer à faire long tous ces posts ;)
SU-PER. Tu prends exemple sur le langage C++ qui comme tout le monde le sait n'est pas un langage 100% objet et qui permet de faire tout et n'importe quoi (grâce -- ou à cause -- des pointeurs).
Tu prends un environnement d'exécution qui intègre des notions objets comme .NET et alors là tu peux te toucher pour espérer accéder à une fonction private depuis un objet externe en C#, VB.NET ou Java. Sauf bien sûr en allant toi même faire la bidouille avec des pointeurs en C++ par exemple. Celà dis ton code ne sera alors plus sécurisé et tu devras le déclarer explicitement au compilateur.
Tu remarqueras aussi qu'une autre notion de la programmation objet, l'héritage (et tout ce qui touche la réutilisation) est possible quelque soit le langage sur la plate-forme .NET. Tout ça parcque les langages ont une seule contrainte : implémenter certaines notions objet.
Evidemment, si tu programme en natif, tout code sera au final traduit en code machine et vu que la machine autorise à peu près tout et n'importe quoi (à l'intérieur d'un même programme j'entend, l'OS est là pour limiter les débordement éventuels). Mais l'informatique a évoluer. Et certain ont su tirer partie justement de la sémantique de ces nouveaux langages dits "orientés objets" pour améliorer la sécurité ou tout simplement l'interopérabilité et l'intégration en implémentant une machine virtuelle qui utilise ces informations.
Tu peux continuer à insister que la POO est un simple concept dans la tête, moi je suis persuader que la POO va plus loin et fournit des informations supplémentaire à la machine que des langages comme C ne peuvent exprimer. Juste pour le fun, j'aimerai savoir avec quelle simplicité tu vas réussir à instancier un pseudo-objet en C de GTK en Java, sans bien sûr refaire une surcouche qui te demanderas des heures et la nécessaire compréhension du mécanisme pseudo-objet de GTK...
Pour ce qui est des optimisations je ne suis pas du tout d'accord avec toi. Pour moi ce n'est pas au programmeur de connaître les spécificités de la machine pour laquelle il code, sauf peut-être si celui-ci code en assembleur. Le programmeur doit pouvoir utiliser le langage pour exprimer ses idées et algorithme, c'est au compilateur d'optimiser pour une machine spécifique. Et c'est là qu'un langage objet s'avère plus utile que le langage C par exemple : le langage purement objet introduit des informations supplémentaires au compilateur qui peut effectuer plus de vérifications, d 'optimisation.
Pour ce qui est des optimisations par le programmeur, celles-ci ne doivent s'effectuer qu'au niveau de l'algorithme en diminuant la complexité de celui-ci si nécessaire. Bref, modifier son idée. Mais en aucun cas il ne doit bidouiller et utiliser des "raccourcis" pour que celà soit profitable à l'utilisateur. Tout d'abord c'est une perte de temps vu le gain final, et ensuite la plupart des machines actuelles ont suffisament de puissance pour faire tourner la plupart des algorithmes utilisés par le commun des programmeurs.
Après il y a deux niveaux de programmation : il y a la programmation système ou un langage bas-niveau comme le C est utilisé, par soucis d'optimisation. Mais c'est limité aux programmeurs expérimentés qui maîtrise les pointeurs à merveille (le pointeur c'est comme un scalpel, dans des mains expertes il fait des merveilles, mais donner les au programmeur de base...)
Si on veut programmer par "objet" dans ce contexte (par soucis de structuration et de lisibilité), on utilisera le C++.
Si on veut utiliser toute la sémantique qu'introduit les notions objets et qu'on veut notamment appuyer les notions l'interopérabilité ou de sécurité, on prendra un vrai langage objet, et si possible une machine (virtuelle) qui exploite justement ces notions...
J'ai juste voulu emettre un autre point de vue, mais le plus souvent ca sert même pas à grand chose d'argumenter parcque la plupart du temps on se fait moinsser pour ses id et non pour leur valeur ;)
Anti-américanisme, oui. Primaire, pas convaincu. Comme je l'ai dit plus haut, c'est la maison mère aux US qui donne les consignes. Me semble que je peux donc critiquer les américains. (pour une fois d'ailleur c'est pas le gouvernement mais leurs administrés que je critique)
Sauf que c'est la Warner américaine qui a "commandé" ça à sa filiale française. Il est donc clair que la ligne "bien-pensante" est dirigé outre-atlantique.
si je puis me permettre, plusieurs réflexions :
Si il ests si difficile de modifier l'écran de login c'est parcque Microsoft n'a pas prévu que ça soit possible. Donc pour l'utilisateur lambda ce n'est pas difficile de le modifier puisque le choix ne lui est même pas proposé. (et c'est là qu'il dit qu'il voit donc pas le rapport avec le sujet du journal)
Ensuite râler parcqu'on ne peut pas le changer voilà, quoi, c'est un détail, surtout que la plupart des utilisateurs n'ont qu'un seul compte et windows se log automatiquement dans ce cas. L'utilisateur ne voit donc même pas cet écran de logon. Le peu de personnes que je connais qui utilisent plusieurs sessions différentes ne m'ont jamais demander s'il était possible de modifier celà.
Ensuite, MacPanther (je trouve ca classs comme nom :) ) qui se veut la référence en matière de destktop ne propose pas non plus ce genre de modifications.
De plus, il faut savoir que sous windows, changer l'écran de logon ne se résume pas à changer l'image de fond (il faut aussi changer 4 ou 5 bitmap qui représente l'affichage des différentes sessions), il est donc tout à fait logique que Microsoft n'est pas laissé cette possibilité à l'utilisateur. C'est plus une "skin" qu'autre chose, et ça demande d'autres connaissance.
Pour finir, il existe un soft, StyleXP, qui propose non seulement des thèmes mais aussi des logon supplémentaires et StyleXP les installe avec un clique de souris. Donc pour ceux qui tienne vraiment à le faire et qui vont sur le site de référence en la matière (themeXP.org) il vont vite trouver leur bonheur sans avoir à aller bidouiller en mode sans échec un obscure .exe...
Donc bref,y dit qu'il ne voit toujours pas le rapport entre le journal et le lien.
Désolé mais le concept de programmation objet implique de pouvoir exprimer justement ce concept. Et le langage C n'a pas tous les mots pour pouvoir exprimer tous ces concepts. Seul un langage orienté objet peut le faire. La philosophie de la programmation objet introduit des bonnes pratiques qu'on peut effectivement reproduire dans un langage comme C mais la programmation objet introduit également de nombreuses informations supplémentaire sur le contenu du code à destination du compilateur : ce dernier peut effectuer plus de vérifications, produire un code plus sûr (même si on peut évidemment faire du code peu sûr en objet également).
Nimportnawak. C'est que de la pure bidouille et le principe d'encapsulation objet ne peut être respecter pour la simple et bonne raison qu'en C tu ne peux pas spécifier ce qui est public ou privé, bref, tu peux toujours accéder à tout... alors ca m'étonnerai franchement que GTK implémente un système de cryptage pour déterminé si un pseudo "objet" a le droit d'utiliser telle ou telle méthode. Faut arrêter la fumette.
D'ailleur je me pose une question toute conne : mais pourquoi ceux qui ont codé GTK n'ont pas penser à utiliser C++ ? Même si c'est pas entirèrement objet ca aurait suffit à leur besoins puisque de toute façon le résultat est le même (du pseudo-objet qui n'en sera jamais puisque le concept objet est une notion propre au langage et à la SYNTAXE)
Moi ce que je comprend pas c'est qu'il y a suffisament de revendeurs de PC qui fournissent sans OS... Celui qui achète son PC à carrouf veut la simplicité et donc un OS préinstallé et tout ce qui faut qui va avec.
ah oué aussi quand il n'y a pas lieu de scroller, firebird affiche quand même le curseur, quadridirectionnel qui plus est :)
ou l'art de rechercher les détails dont tout le monde s'en bat les couilles :)
Aller j'ai fait exprès de poster cette réponse pour que vous puissiez moinsser l'auteur de ce journal idiot :)
Je vois pas l'intérêt du site internet, celà suppose que l'utilisateur en question a déjà installé la distri et a réussi à se connecter à internet... Ensuite je vois pas l'intérêt de savoir si l'utilisateur est un newbie ou pas, dans le 2ème cas le wizard sert à rien.
Pour le système des rapports, l'uitlisateur de base ne prendra pas le temps de s'y attarder : c'est pour celà qu'il est encore un newbie et risque de le rester (d'ailleur le but est qu'il le reste, peu de gens ont envie de devenir un geek)
Tout le système de discutions, de forum, de wiki & co ne pourra être utilisé que par des personnes un minimum intéressé par le problème, connaisseurs de linux. Bref, toi ou moi, bref, on va rien tirer de plus de la cible.
Bref, tout ce que tu veux faire ne peut se concrêtiser que d'une manière : faire une distri. C'est d'ailleur tout ce qui différencie les distris : elle cherchent toutes d'une manière ou d'une autre cette forme d'ergonomie, d'homogénéité logicielles parfaite. Bref, elle s'y sont toutes cassées les dents et je doute qu'un projet "multi-distri" basé sur des scripts répondent vraiment aux besoins pharaoniques que tu souhaites. Seul Apple qui contrôle la plupart des appli installés (ils gèrent tout, du matos à l'OS jusqu'au choix très limité des logiciels) a à peu près réussi le pari (quoique y'a encore et y'aura toujours du boulot).
Pour la démo en capture video, un truc en flash (ca pu c pas libre mais SVG est encore trop mal supporté) avec une femme à la voix sensuelle qui parle serait nickelle. Bref, faire comme sous XP quoi.
Pour le "que voulez-vous faire ?" t'as pensé au trombone de Word ?
--->[]
C'est subjectif en partie seulement. Et tu vois tu soulignes toi même la difficulté. Et c'est justement là qu'il faut travailler si on veut faire un logiciel de qualité : rendre un produit à la fois intuitif et ergonomique pour le plus grand nombre ce n'est pas simple, et rarement à la portée du programmeur. le codage des fonctionnalités ça ne représente qu'une infime partie du boulot de la conception d'un logiciel. Je crois qu'il y en a trop qui l'oublie, et c'est en partie pour ça que Linux n'est toujours pas accessible pour le grand public, ce que ne comprennent pas les geeks qui sont pourtant certains d'avoir copier toutes les fonctionnalités des OS et softs concurrents... Bref, y'a du boulot pour rattraper le niveau de Apple ou Microsoft qui ont des années d'expérience en la matière. J'entend déjà d'ici certains qui vont me dire : "ahahah, Microsoft qualité logiciel intuitivité mdr, Démarrer > Arrêter, trop lol". Même si ce choix était sans doute idiot au départ, Microsoft a compris qu'il ne fallait pas perturber l'utilisateur et c'est pour celà que l'interface globale de Windows reste à peu près la même, et c'est ce qui fait son succès.
Pour la distribution standard spéciale newbie, plusieurs entreprises y bossent déjà (on peut citer les distributions Lindows ou Mandrake), mais c'est justement loin de se résumer à quelques scripts bien placer... Et d'autres entreprises comme Red Hat l'ont bien compris (cf déclaration du PDG). En la matière, l'expérience de Microsoft et Apple leur permettent d'avoir encore de beauc jours devant eux (et vi, chez Microsoft il n'y a pas que la méthode Embrass & Extend, il n'ont pas une équipe de plusieurs milliers de chercheurs qui servent à rien et qui peuvent être remplacer par 2 ou 3 Stallman)
On est bien d'accord : questions fonctionnalités, Linux a tout ce qu'il faut. Il manque l'intuitivité, l'ergonomie, l'homogénéité... bref tout ce qui fait un logiciel de qualité et tout ce qui fait que certains dépensent des milliards pendant que d'autres s'amusent à réinventer la roue sous GPL. (et vi, suffit pas de savoir coder pour faire un bon soft)
Je vais me faire moinsser mais cpa grave, je tenais à le dire :)
[^] # Re: Le langage du futur ?
Posté par TImaniac (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à 0.
Comme je le disais, tu as pris exemple sur un langage qui n'est pas 100% objet et qui justement te permet de faire ce genre de conneries. D'où l'intérêt d'un langage qui tend à utiliser au maximum les notions objets.
Que ce soit le typage qui me permette de résoudre ce problème dans mon langage, Ok. Et alors ? Si ça me permet de mieux respecter un principe objet d'encapsulation ? Pourquoi s'en passer ?
Pour le protected moi perso ça ne me dérange pas, il peut avoir une utilité. D'ailleur tu verras que d'autres langages utilisent encore d'autres mot supplémentaire : internal par exemple ;) (je te laisse trouver le langage puisque tu as une expérience bien plus élevée que moi en la matière)
Ok, vu tes lectures, je commence à comprendre. Il n'y a pas que du mauvais chez Microsoft, mais si c'est là ta référence de base pour assimiler les autres langages, tu risques d'avoir une vision quelque peu déformée du fonctionnement d'un ordinateur.
Tu crois franchement que j'ai commencé à code sur .NET alors que ca ne fait qu'à peine 2 ans que ca existe ?
1) Je te file une VCS2600 avec une cartouche vierge de 4Ko et je te demande de réécrire Space Invader et de le faire tenir dans le médium fourni. Si tu ne peut pas le faire alors que tes prédécesseurs l'ont fait vingt ans avant toi et sans langage objet, c'est que ce n'est pas une évolution.
Et ? tu cherches à montrer quoi là ?
2) Si tu utilises une JVM comme garde-fou parce que tu estimes que ton programme ne pourra fonctionner de façon sûre que dans ce genre d'environnement, c'est toi qu'il faut remettre en cause. Pas ta machine. Comment feras-tu le jour où tu devras à ton tour écrire une machine virtuelle ?
Je ne dis pas que j'utilise une VM (y'a pas que JVM ;) ) comme garde-fou mais comme machine capable d'exprimer et de respecter au mieux les informations introduite par les notions objets. J'utilise également une VM pour pouvoir utiliser le langage le plus adapté selon la partie de l'application que je rédige, sans avoir à me soucier de l'interopérabilité entre les composant de mon appli.
Oui j'avoue je programme avec .NET, mais parcque ils ont introduit un CLR (Common Langage Runtime) dédié à faire tourner n'importe quel langage, pourvu qu'il soit OBJET (parcque justement la VM en tire partie) et parcqu'elle introduit des un ensemblre de types de bases autre que le simple mot mémoire.
Pour le jour où j'aurai à rédiger une machine virtuelle, désolé je dois être con mais je vois pas ce que tu veux dire.
3) Parlons-en de la portabilité: Un programme écrit dans un langage de haut-niveau fonctionnera sur toutes les machines ... sur lesquelles la librairie standard et la machine virtuelle du langage auront été portées ! Ce qui limite déjà les différents modèles. Ensuite, il fonctionneront exactement de la même façon: A quoi cela sert-il d'avoir des machines différentes alors ? Une machine peut très bien être en avance sur ses concurrentes parce qu'elle apporte une killer-feature, comme on dit. Le programmeur Java/.Net est-il condamné à ne jamais en profiter ?
Au niveau de la machine physique, ces killer-features comme tu dis ne peuvent pas apporter grand chose directement au programmeur. Les optimisations peuvent se faire au niveau de la VM qui apportera tout de suite le gain à lappli qui tourne au dessus... Et puis franchement, une VM apporte beaucoup plus de "killer-features" qu'une simple architecture processeur... d'ailleur un des autres intérêt des machine virtuelles c'est aussi de favoriser la diversité des architectures processeurs, il n'y a pas besoin de recompiler tous les progs, juste la VM et les biblio qui vont avec.
Encore une fois, je ne vois pas trop l'intérêt, en dehors de l'assembleur et parfois du C de programmer pour un processeur spécifique. A part peut être pour coder sur un proc très lent avec très peu de mémoire, mais c'est loin tout ça maintenant...
Pourquoi « pseudo » ?
- Sous GTK+ en C, c'est:
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- En Java, ce sera
window1 = new gtk_window (GTK_WINDOW_TOPLEVEL);
nan t'as pas compris ma question. Je ne te parle pas des différence de syntaxe mais du passage de l'un à l'autre Je voulais justement te demander comment tu passes du C à Java sans perdre ton temps à réécrire un wrapper intermédiaire tout ça parcque ton langage de base simulait l'objet. Le langage C exprimerait des notions objets, elles auraient pu être directement wrapper automatiquement pour être utilisables en Java...
Non, non, non et non. D'abord, c'est à se demander si tu as effectivement jamais écrit une ligne d'assembleur.
Du 68k dans ma jeunesse et du x86 pendant mes études.
http://c2team.fr.st/(...) (matte les screenshots pris sur une TI89) pour voir ce que j'ai fait. C'est modeste mais j'ai fait tout le moteur graphique en 3D iso, alors les optimisations, voilà quoi... mais bon c'est peut-être pas un niveau suffisant pour toi...
Pour ce qui est du x86, j'avoue que je suis moins doué en la matière, je me contente de ce que j'apprends en cours. Enfin j'ai déjà rédigé quelques lignes de code (genre un noyau de syncrhonisation en asm avec une passerelle en C, et là d'ailleur on applaudit la manipulation des données en passant d'un langage à un autre, pourtant réputés comme très proche...)
J'ai également à travers mes études eu l'occasion de rédiger 2 compilateurs, pour 2 machines virtuelles (question de pratique, on ne peut pas avoir pleins de machines sous la main) complètement différente, une à pile, une autre basé sur du code 3 adresses.
Tu remarqueras que je ne remets nullement en doute tes compétences.
connaître le fonctionnement d'un ordinateur, c'est précisément le métier du programmeur. Connaître le principe de fonctionnement général de la plupart des ordinateurs (surtout si tu te limites aux ordinateurs), oui, c'est le boulot du programmeur. Connaître les spécificités de chaque machine, non, ça n'est pas son taf. Sauf pour le programmeur système. Si la machine virtuelle (ou le compilateur) fait bien son taf, c'est à elle de tirer partie des différente architecture.
En quoi le fait que ton langage soit « objet » apporte des informations supplémentaires au compilateur ? Au contraire, la plupart des langages objet, C++ en tête d'ailleurs, ont la fâcheuse réputation de consommer plus de mémoire pour un même résultat.
Comme je l'ai expiqué plus haut, les informations apportés au compilateurs sont justement celles liées aux notions objets. J'ai pris exemple sur l'encapsulation. Effectivement si le compilateur transforme le code en natif, toutes ces informations seront perdues et tu pourras faire n'importe quoi comme en C++ dans l'exemple que tu m'as donné. Si c'est une VM qui tourne dessous, et qu'elle est conçu pour justement exploiter toutes ces informations, alors elle prend tous son sens : tu pourras t'arracher à essayer d'accéder à un membre private si tu n'y est pas autorisé depuis un autre langage que le langage dans lequel tu as écris ta classe de base.
Lorsqu'un codeur écrit avec les pieds un programme utilisant un langage de trop haut niveau
Si le programmeur code avec les pieds dans un langage de haut niveau, il est à peu près certain qu'il codera encore plus avec les peids dans un langage de bas-niveau, ou alors il y met de la mauvaise volonté.
80% de la puissance de la machine est consommée dans les conversions successives entre ces couches
T'as déjà utilisé une VM bien foutue ? Si je prend exemple sut la machine virtuelle .NET elle compile le programme en natif avant la première exécution sur l'architecture cible. Pour avoir fait des tests basique, je n'ai pas vu de différence de rapidité entre du C++ natif et du C# sur .NET. Aller, je prend exemple sur Quake2.NET (http://www.codeproject.com/managedcpp/Quake2.asp(...)) qui tourne à 90% de la vitesse en natif.
Je crois qu'il va falloir abandonner ce mythe qui a la vie dur qu'une machine virtuelle ralenti considérablement une application... (évidemment, quand on parle VM, tout le monde penses Java, forcement...) :-p
D'autre part, optimiser un programme ne se limite pas à « simplifier l'algorithme utilisé », mais aussi à parler le langage de ta machine. Tu oublies qu'un compilateur est avant tout un traducteur.
On est bien d'accord, sauf sur les rôles. Simplifier l'algorithme utilisé c'est au programmeur de le faire. Opitmiser le code machine, c'est au compilateur ou à la machine virtuelle de le faire.
Pour ton exemple foireux de traducteur, tu remarqueras qu'il y a une différence entre un langage naturelle (parlé) et un langage informatique : il y en as un que l'ont peut exprimer sur ordinateur, et pas l'autre, un qui est exprimable par une grammaire, pas l'autre. C'est pour celà que les traducteurs de langages naturelles ne sont pas parfaits.
C'est bien la mentalité Microsoft, ça. On sort un produit tordu à la base, et on applique des patches successifs plutôt que de revoir le concept
Y dit qu'il voit pas le rapport (???)
Il suffit que tu intègres le code concerné au sein d'une boucle pour que le gain en question ne soit plus une durée fixe mais un pourcentage du temps consommé. Ainsi, si tu écris ton programme en assembleur, et que tu l'optimises pour passer de 10 cycles machines par boucle à 5 cycles (soit 2ns de gain sur une machine moyenne), tu doubles la vitesse de ton programme.
Ton exemple demande à être rédigé noir sur blanc pour plus de compréhension, mais si je ne m'abuse, tu as utilisé une astuce d'algorithmie pour diminuer la complexité de ton problème... tu n'as pas du tout fait d'optimisation propre à la machine...
Personnellement, je n'ai jamais eu de problème à manipuler un pointeur. Peut-être parce qu'à la base je savais ce qu'est une adresse mémoire.
Merci moi aussi je sais ce que c'est. Mais pour moi les pointeurs doivent être utilisé avec prudence, et seulement par un programmeur expérimenté et qui effectivement connaît bien les mécanismes internes à la machine. Seulement on parlait de programmation objet qui le plus souvent se passe également de la notion de pointeur, donc ne changeont pas de sujet.
- En C/C++ le programmeur se tape des segfaults;
- En Java, le programmeur se tape des NullPointerException.
Tu vois que le C++ a des inconvénients ;)
Pour le Java, désolé, j'aime pas Java, donc je ne peut que aller dans ton sens et dire que c'est tout à fait crétin d'obtenir ce genre de messages...
Un programmeur qui ne sait pas comment fonctionne un microprocesseur - et qui en plus le revendique - est pour moi un paradoxe.
Si ça m'est adressé, mdr. Sinon je suis d'accord que certains programmeurs "pro" ferais mieux de regarder de plus près le ofnctionnement interne de la machine. Mais pas forcement de toutes les machines qu'il utilise, notamment s'il utilise un langage de haut niveau. Et puis s'il est futé et qu'il utilise une machine virtuelle, il n'aura besoin d'apprendre le fonctionnement que d'une seule machine qui elle regroupe la plupart des concepts des architectures processeurs ;)
Ton post me laisse perplexe, pour le moins. J'ai l'impression que tu confonds plusieurs notions, notament typage, sécurité, et approche objet, de la même façon que Jayce the Crazychild confondait mode texte et langage interprété (là, 'faut quand même le faire, soi dit en passant) ou, plus sérieusement, comme beaucoup de monde assimilait programmation 32 bits et mode protégé lors des débuts de Win32.
Je confond surement certaines notions, mais pour la bonne raison que pour moi elles sont complémentaire et le plus souvent liées quand toi tu préfères les dissocier entièrement. C'est sans doute là la grande différence...
PS : ouh ca va commencer à faire long tous ces posts ;)
[^] # Re: Le langage du futur ?
Posté par TImaniac (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à 0.
Tu prends un environnement d'exécution qui intègre des notions objets comme .NET et alors là tu peux te toucher pour espérer accéder à une fonction private depuis un objet externe en C#, VB.NET ou Java. Sauf bien sûr en allant toi même faire la bidouille avec des pointeurs en C++ par exemple. Celà dis ton code ne sera alors plus sécurisé et tu devras le déclarer explicitement au compilateur.
Tu remarqueras aussi qu'une autre notion de la programmation objet, l'héritage (et tout ce qui touche la réutilisation) est possible quelque soit le langage sur la plate-forme .NET. Tout ça parcque les langages ont une seule contrainte : implémenter certaines notions objet.
Evidemment, si tu programme en natif, tout code sera au final traduit en code machine et vu que la machine autorise à peu près tout et n'importe quoi (à l'intérieur d'un même programme j'entend, l'OS est là pour limiter les débordement éventuels). Mais l'informatique a évoluer. Et certain ont su tirer partie justement de la sémantique de ces nouveaux langages dits "orientés objets" pour améliorer la sécurité ou tout simplement l'interopérabilité et l'intégration en implémentant une machine virtuelle qui utilise ces informations.
Tu peux continuer à insister que la POO est un simple concept dans la tête, moi je suis persuader que la POO va plus loin et fournit des informations supplémentaire à la machine que des langages comme C ne peuvent exprimer. Juste pour le fun, j'aimerai savoir avec quelle simplicité tu vas réussir à instancier un pseudo-objet en C de GTK en Java, sans bien sûr refaire une surcouche qui te demanderas des heures et la nécessaire compréhension du mécanisme pseudo-objet de GTK...
Pour ce qui est des optimisations je ne suis pas du tout d'accord avec toi. Pour moi ce n'est pas au programmeur de connaître les spécificités de la machine pour laquelle il code, sauf peut-être si celui-ci code en assembleur. Le programmeur doit pouvoir utiliser le langage pour exprimer ses idées et algorithme, c'est au compilateur d'optimiser pour une machine spécifique. Et c'est là qu'un langage objet s'avère plus utile que le langage C par exemple : le langage purement objet introduit des informations supplémentaires au compilateur qui peut effectuer plus de vérifications, d 'optimisation.
Pour ce qui est des optimisations par le programmeur, celles-ci ne doivent s'effectuer qu'au niveau de l'algorithme en diminuant la complexité de celui-ci si nécessaire. Bref, modifier son idée. Mais en aucun cas il ne doit bidouiller et utiliser des "raccourcis" pour que celà soit profitable à l'utilisateur. Tout d'abord c'est une perte de temps vu le gain final, et ensuite la plupart des machines actuelles ont suffisament de puissance pour faire tourner la plupart des algorithmes utilisés par le commun des programmeurs.
Après il y a deux niveaux de programmation : il y a la programmation système ou un langage bas-niveau comme le C est utilisé, par soucis d'optimisation. Mais c'est limité aux programmeurs expérimentés qui maîtrise les pointeurs à merveille (le pointeur c'est comme un scalpel, dans des mains expertes il fait des merveilles, mais donner les au programmeur de base...)
Si on veut programmer par "objet" dans ce contexte (par soucis de structuration et de lisibilité), on utilisera le C++.
Si on veut utiliser toute la sémantique qu'introduit les notions objets et qu'on veut notamment appuyer les notions l'interopérabilité ou de sécurité, on prendra un vrai langage objet, et si possible une machine (virtuelle) qui exploite justement ces notions...
[^] # Re: Ability Office ? kezako ?
Posté par TImaniac (site web personnel) . En réponse au journal Ability Office ? kezako ?. Évalué à -1.
[^] # Re: C'est du floutage de gueule...
Posté par TImaniac (site web personnel) . En réponse au journal C'est du floutage de gueule.... Évalué à -1.
[^] # Re: C'est du floutage de gueule...
Posté par TImaniac (site web personnel) . En réponse au journal C'est du floutage de gueule.... Évalué à 1.
[^] # Re: Ability Office ? kezako ?
Posté par TImaniac (site web personnel) . En réponse au journal Ability Office ? kezako ?. Évalué à 2.
[^] # Re: Windows toujours pas pret pour le desktop...
Posté par TImaniac (site web personnel) . En réponse au journal Windows toujours pas pret pour le desktop.... Évalué à 2.
Si il ests si difficile de modifier l'écran de login c'est parcque Microsoft n'a pas prévu que ça soit possible. Donc pour l'utilisateur lambda ce n'est pas difficile de le modifier puisque le choix ne lui est même pas proposé. (et c'est là qu'il dit qu'il voit donc pas le rapport avec le sujet du journal)
Ensuite râler parcqu'on ne peut pas le changer voilà, quoi, c'est un détail, surtout que la plupart des utilisateurs n'ont qu'un seul compte et windows se log automatiquement dans ce cas. L'utilisateur ne voit donc même pas cet écran de logon. Le peu de personnes que je connais qui utilisent plusieurs sessions différentes ne m'ont jamais demander s'il était possible de modifier celà.
Ensuite, MacPanther (je trouve ca classs comme nom :) ) qui se veut la référence en matière de destktop ne propose pas non plus ce genre de modifications.
De plus, il faut savoir que sous windows, changer l'écran de logon ne se résume pas à changer l'image de fond (il faut aussi changer 4 ou 5 bitmap qui représente l'affichage des différentes sessions), il est donc tout à fait logique que Microsoft n'est pas laissé cette possibilité à l'utilisateur. C'est plus une "skin" qu'autre chose, et ça demande d'autres connaissance.
Pour finir, il existe un soft, StyleXP, qui propose non seulement des thèmes mais aussi des logon supplémentaires et StyleXP les installe avec un clique de souris. Donc pour ceux qui tienne vraiment à le faire et qui vont sur le site de référence en la matière (themeXP.org) il vont vite trouver leur bonheur sans avoir à aller bidouiller en mode sans échec un obscure .exe...
Donc bref,y dit qu'il ne voit toujours pas le rapport entre le journal et le lien.
[^] # Re: Le langage du futur ?
Posté par TImaniac (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à 1.
[^] # Re: Le langage du futur ?
Posté par TImaniac (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à 0.
[^] # Re: Le langage du futur ?
Posté par TImaniac (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à 0.
D'ailleur je me pose une question toute conne : mais pourquoi ceux qui ont codé GTK n'ont pas penser à utiliser C++ ? Même si c'est pas entirèrement objet ca aurait suffit à leur besoins puisque de toute façon le résultat est le même (du pseudo-objet qui n'en sera jamais puisque le concept objet est une notion propre au langage et à la SYNTAXE)
[^] # Re: Windows toujours pas pret pour le desktop...
Posté par TImaniac (site web personnel) . En réponse au journal Windows toujours pas pret pour le desktop.... Évalué à 1.
[^] # Re: Ability Office ? kezako ?
Posté par TImaniac (site web personnel) . En réponse au journal Ability Office ? kezako ?. Évalué à 0.
# Re: C'est du floutage de gueule...
Posté par TImaniac (site web personnel) . En réponse au journal C'est du floutage de gueule.... Évalué à -1.
Mais quel bande de cons ces ricains quand même.
[^] # Re: Ability Office ? kezako ?
Posté par TImaniac (site web personnel) . En réponse au journal Ability Office ? kezako ?. Évalué à 5.
[^] # Re: Tiens, un bug dans firebird :)
Posté par TImaniac (site web personnel) . En réponse au journal Tiens, un bug dans firebird :). Évalué à 0.
# Re: Tiens, un bug dans firebird :)
Posté par TImaniac (site web personnel) . En réponse au journal Tiens, un bug dans firebird :). Évalué à 4.
ou l'art de rechercher les détails dont tout le monde s'en bat les couilles :)
Aller j'ai fait exprès de poster cette réponse pour que vous puissiez moinsser l'auteur de ce journal idiot :)
# Re: Windows toujours pas pret pour le desktop...
Posté par TImaniac (site web personnel) . En réponse au journal Windows toujours pas pret pour le desktop.... Évalué à 0.
[^] # Re: Le plus grand python du monde capturé en java
Posté par TImaniac (site web personnel) . En réponse au journal Le plus grand python du monde capturé en java. Évalué à 1.
[^] # Re: Bilan ;o)
Posté par TImaniac (site web personnel) . En réponse au journal Linux pourraît être plus convivial que Windows et MAC.... Évalué à 1.
Pour le système des rapports, l'uitlisateur de base ne prendra pas le temps de s'y attarder : c'est pour celà qu'il est encore un newbie et risque de le rester (d'ailleur le but est qu'il le reste, peu de gens ont envie de devenir un geek)
Tout le système de discutions, de forum, de wiki & co ne pourra être utilisé que par des personnes un minimum intéressé par le problème, connaisseurs de linux. Bref, toi ou moi, bref, on va rien tirer de plus de la cible.
Bref, tout ce que tu veux faire ne peut se concrêtiser que d'une manière : faire une distri. C'est d'ailleur tout ce qui différencie les distris : elle cherchent toutes d'une manière ou d'une autre cette forme d'ergonomie, d'homogénéité logicielles parfaite. Bref, elle s'y sont toutes cassées les dents et je doute qu'un projet "multi-distri" basé sur des scripts répondent vraiment aux besoins pharaoniques que tu souhaites. Seul Apple qui contrôle la plupart des appli installés (ils gèrent tout, du matos à l'OS jusqu'au choix très limité des logiciels) a à peu près réussi le pari (quoique y'a encore et y'aura toujours du boulot).
Pour la démo en capture video, un truc en flash (ca pu c pas libre mais SVG est encore trop mal supporté) avec une femme à la voix sensuelle qui parle serait nickelle. Bref, faire comme sous XP quoi.
Pour le "que voulez-vous faire ?" t'as pensé au trombone de Word ?
--->[]
[^] # Re: Le langage du futur ?
Posté par TImaniac (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à -1.
C'est moi ou c'est une énorme connerie ?
[^] # Re: Linux pourraît être plus convivial que Windows et MAC...
Posté par TImaniac (site web personnel) . En réponse au journal Linux pourraît être plus convivial que Windows et MAC.... Évalué à 2.
Pour la distribution standard spéciale newbie, plusieurs entreprises y bossent déjà (on peut citer les distributions Lindows ou Mandrake), mais c'est justement loin de se résumer à quelques scripts bien placer... Et d'autres entreprises comme Red Hat l'ont bien compris (cf déclaration du PDG). En la matière, l'expérience de Microsoft et Apple leur permettent d'avoir encore de beauc jours devant eux (et vi, chez Microsoft il n'y a pas que la méthode Embrass & Extend, il n'ont pas une équipe de plusieurs milliers de chercheurs qui servent à rien et qui peuvent être remplacer par 2 ou 3 Stallman)
# Re: Linux pourraît être plus convivial que Windows et MAC...
Posté par TImaniac (site web personnel) . En réponse au journal Linux pourraît être plus convivial que Windows et MAC.... Évalué à 1.
Je vais me faire moinsser mais cpa grave, je tenais à le dire :)
[^] # Re: Nucléaire
Posté par TImaniac (site web personnel) . En réponse au journal Nucléaire. Évalué à 1.
[^] # Re: Nucléaire
Posté par TImaniac (site web personnel) . En réponse au journal Nucléaire. Évalué à 1.
[^] # Re: XviD iz ze ouineur video codec !
Posté par TImaniac (site web personnel) . En réponse au journal XviD iz ze ouineur video codec !. Évalué à 1.
--->[]