• [^] # Re: Le langage du futur ?

    Posté par (site web personnel) . En réponse au journal Le langage du futur ?. Évalué à 0.

    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...