Humeur excessive de Genesys
Par Laurentj le mardi, avril 13 2004, 11:49 - Geek-log - Lien permanent
Comme on ne peut poster des commentaires sur le blog de Genezys, je vais poster le mien ici, à propos de son humeur sur les langages de haut niveau tels que java, C# etc..
Donc voilà, déjà trois petites choses :
- renseigne toi sur les différences entre langage interprété, compilé, semi compilé (byte code). Java n'est pas un langage interprété, ni même C# ou autre langage .Net (même PHP n'est qu'à moitié interprété). Surtout que maintenant les machines virtuelles modernes traduisent le byte-code en langage machine avant execution... Donc...
- Révise ton histoire d'informatique :
Le premier langage fut l'assembleur, le second est le C/C++
. Qu'est ce qu'il ne faut pas entendre ! :-D Cobol, Fortran .. Ça te dis quelque chose ? ;-) Surtout que même encore de nos jours, le nombre de programmes existants écrit en C/C++ est une goutte d'eau par rapport à tout ceux réalisés en Cobol.
Ensuite, attardes toi un peu plus sur la finalité, l'objectif de ces langages semi-compilés, parce qu'en fait, tout le reste de ton billet, c'est un peu n'importe quoi. C'est comme si tu comparais des choux et des gateaux.
Je pense qu'il te manque une donnée importante issues du monde réèl (Mais c'est normal pour un étudiant :-) ) : plus de 90% des programmes réalisés de par le monde, c'est fait pour faire de la gestion de données. Les programmes systèmes comme linux, gnome ou les outils comme Mozilla, c'est une goutte d'eau dans l'océan de la production mondiale de ligne de code.
Balade toi dans les SSII, les grosses boîtes, et tu te rendras compte d'une chose : c'est que l'on fait des programmes pour gérer des choses, pas des programmes "systèmes". Et à ce jeu là, le C/C++ n'est clairement pas à la hauteur. Il est même anti-productif. Je vais faire une comparaison qui va faire sourire, mais là où en quelques lignes de code de Cobol tu implémentes une gestion de donnée structurée dans des fichiers, en c/c++ il va te falloir multiplier ce nombre par .. beaucoup. Là où en Java, Cobol, Python, tu peux te concentrer mieux et plus rapidement sur le fonctionnel de ton logiciel, en C/C++ il te faut d'abord résoudre les problèmes de gestion de mémoire, de pointeur etc... Des trucs rébarbatifs quoi. Ce n'est clairement pas l'objectif de l'informatique en général. Et puis entre nous, il n'a jamais été dit que Java était déstiné à réaliser un système d'exploitation donc pourquoi le critiquer sur ce terrain ?
Cela nous amène à se mettre en tête une autre donnée : l'ordinateur, c'est un outil. Rien de plus. Ce n'est pas une finalité. L'objectif de l'informatique, est d'automatiser les traitements d'informations, pas de taper des lignes et des lignes de code.
C'est pourquoi des langages comme Java, des technologies comme XPCOM ont été inventés : se débarrasser le plus possible des contraintes du bas-niveau (gestion mémoire etc..), de la réécriture de code (d'où XPCOM, les Dll etc..), et donc pouvoir mieux se concentrer sur l'objectif du logiciel : réaliser une tâche précise.
Quant aux critiques sur Minimo ( et pas Minimoz ), et bien si tu penses faire mieux, yaka ;-) Mais faire tenir un analyseur XML/SGML (avec mode quirks+strict) + un analyseur CSS + interpreteur JS dans peu de place, ce n'est pas chose facile.
Bref, pour tes souhaits pour le futur, tu oublies, tu ouvres les yeux, tu continues d'étudier et tu utilises les bonnes technologies pour tes besoins ;-)
Qu'on oublie pas qu'on est sur un ordinateur
: Eh bien si, c'est clairement le but de l'informatique, même si ça peut paraître paradoxal.
PS : et tout ça, c'est un fana du C/C++ et de l'assembleur qui te le dis ;-)
Commentaires
Juste une mini précision (j'espère ne pas me tromper) pour le coté "PHP est à moitié interprété".
En fait, PHP est un language "compilé" depuis la version 4. Le seul truc, c'est qu'il ne se souvient pas de son "fichier pcode".
Globalement, le cycle est le suivant:
A notter qu'on a donc X compilation pour X appels de pages. C'est l'objet (entres autres) des caches PHP type APC, TurkMMCache, ZendXXX de se souvenir de ces fichiers de PCode, pour économiser les temps de compilation.
Ces caches sont d'ailleurs les plus bénéfiques sur les bibliothèques volumineuses (Smarty, Copix, ...)
Bon, juste le petit complément du jour. (sinon j'ai pas lu le billet d'origine, je me fais jetter par le proxy.... je lirais ça ce soir)
A noter que pour les languages .Net rien n'est simple :
Il en est à peut près de même avec java qui peut être compilé (GCJ) et même peut être converti en MSIL pour être exécuté par du .Net (Ikvm)
Note: Je parle de .Net comme plateforme, je la connais surtout par Mono mais j'immagine que l'implémentation microsoft en fait autant.
Euhm je voudrais pas dire une connerie, mais Delphi n'est pas un Langage, il me semble que Delphi c'est du Pascal (du moins à l'époque de Windows 95) ?
Pour le PHP, ou Gerald, c'est aussi ce que j'en ai compris :-) Bon par contre, j'appelle ça du langage semi compilé comme Java, dans la mesure où ce n'est pas du code machine qui est généré mais du byte-code.
Oui Delphi est un environnement de développement, proposant des composants tout fait. Et le langage de base est le Pascal Objet (amélioré).
Pour PHP c'est bien du compilé en byte code mais contrairement à Java ou .Net il y a énormément de choses qui sont calculées à l'exécution. Ce n'est pas tant qu'il soit "plus interpété" mais que globalement la phase compilation ne donne pas un code presque statique comme on en a avec java.
Bon je vais répondre ici :)
Je vais clarifier 2/3 choses avant de discuter afin de remettre les choses en places : je ne suis pas étudiant, je suis apprenti depuis 1 an et demi, et j'ai travaillé 1 an auparavant. Dans ma société, je travaille sur des choses pointues (2D, 3D, simulation, etc) et des choses plus simples (utilitaires, appli web, etc).
Maintenant revenons au débat.
Encore une fois, le débat prend place là où il ne devrait pas :
« Cobol, Fortran .. Ça te dis quelque chose ? »
Bien sûr, mais c'est langage sont déjà des langages de haut niveau destiné à des besoins précis. Je nes les utiliserais pas pour mon moteur 3D. Ils ne permetttent pas de *tout* faire avec un ordinateur.
« Je vais faire une comparaison qui va faire sourire, mais là où en quelques lignes de code de Cobol tu implémentes une gestion de donnée structurée dans des fichiers, en c/c++ il va te falloir multiplier ce nombre par .. beaucoup. »
En effet, COBOL est fait pour ça et c'est d'ailleurs pourquoi c'est le langage le plus utilisé dans les applications banquaires :D
« Là où en Java, Cobol, Python, tu peux te concentrer mieux et plus rapidement sur le fonctionnel de ton logiciel, en C/C++ il te faut d'abord résoudre les problèmes de gestion de mémoire, de pointeur etc... Des trucs rébarbatifs quoi. »
Pas d'accord. Tu es *encore* en train de comparer les bibliothèques et pas les langages. Écrire une liste chainées est tout aussi fatigant en Java qu'en C++. Utiliser une liste chainée est tout aussi simple en C++ qu'en Java. Nous parlions de COBOL, avec une bonne bibliothèque, il est tout aussi simple de mettre des données dans un fichier en C++ qu'en COBOL, COBOL le fait juste en natif.
« Et puis entre nous, il n'a jamais été dit que Java était déstiné à réaliser un système d'exploitation donc pourquoi le critiquer sur ce terrain ? »
Parce que Sun est en pleine réalisation d'un OS en Java. Parce que certains croient encore que faire un moteur 3D en Java est de l'ordre du possible. Parce que j'ai envie que les gens se rendent compte de la *vraie* puissance de nos machines.
« C'est pourquoi des langages comme Java, des technologies comme XPCOM ont été inventés : se débarrasser le plus possible des contraintes du bas-niveau (gestion mémoire etc..) »
On a aussi inventé la bombe atomique, et je ne l'utilise pourtant pas pour tuer les cafards chez moi. Une technologie doit être créée/utilisée pour répondre à un besoin et pas parce qu'elle existe. Maintenant, si tu veux te passer des contraintes bas-niveau, on a inventé les bibliothèques.
« de la réécriture de code (d'où XPCOM, les Dll etc..) »
Tu fais toi aussi l'erreur de confondre bibliothèques dynamiques et bibliothèques tout court. Si une DLL n'est pas chargée/déchargée/remplacée dynamiquement, elle n'a aucune raison d'être une DLL, une bibliothèque statique (LIB/A) fait très bien l'affaire. (PS: L'EXE sera plus rapide et plus petit en plus.)
« et bien si tu penses faire mieux, yaka »
Bah oui, yaka. Mais ça commence à me fatiguer de devoir réécrire tous les logiciels de la Terre.
« Bref, pour tes souhaits pour le futur, tu oublies, tu ouvres les yeux, tu continues d'étudier et tu utilises les bonnes technologies pour tes besoins »
Ce n'est pas de ma faute si beaucoup trop de décideurs se lancent à cœur perdu dans l'utilisation de technologies « modernes » au lieu de vraiment évaluer leurs besoins.
Maintenant rigolons ensemble et explique-moi l'intéret de la technologie .NET. Faire de l'interprété sur une machine Windows/PC/x86/pas-libre. C'est à dire utiliser des principes de portabilité sur une cible... fermée. Ouah ! Là je pense qu'on est dans ce qu'on appelle L'INNOVATION.
Pfiou, c'était long, désolé :D
Bon, si j'ai bien compris, en fait tu te plaçais en temps que developpeur 3D. Donc effectivement faire du Java pour ça, c'est ridicule.
Mais finalement dans la pensée, on se rejoint : utilisons la techno adaptée à nos besoins.. (mais c'était pas trés clair dans ton billet :-)
Sinon, concernant les DLL, je suis d'accord, mais pas pour les composants COM/XPCOM, puisque ceux-ci ne sont chargés que quand ils sont utilisés : économie de mémoire, et possibilité de les partager.
Et moi donc ! :-D
Pouvoir écrire son application dans le langage que l'on veut mais compilé dans un même byte code, et utilisant les mêmes bibliothèques, puisque les applis reposent sur un même framework ? j'ai bon ? ( + un environnement d'execution controlé, délimité, sécurisé, avec garbage collector &co même si c'est pas parfait etc...)
:-)
An: Maintenant rigolons ensemble et explique-moi l'intéret de la technologie .NET. Faire de l'interprété sur une machine Windows/PC/x86/pas-libre. C'est à dire utiliser des principes de portabilité sur une cible... fermée.
Peut-être que Microsoft ne sera pas lié éternellement à Intel. 25 ans, c'est un mariage qui dure, mais tout a une fin. Bill Gates prédit que le hardware vaudra peanuts dans 10 ans.
http://www.reuters.co.uk/newsArticle.jhtml?type=internetNews&storyID=4693305
Bonjour,
Je me permets de vous signaler l'adresse d'un nouveau site web parlant des standards, de CSS, de la séparation entre html (structure) et css (présentation) : http://www.spip.net/fr_rubrique269.html . Juste une introduction aux CSS, mais un petit troll de temps en temps ne peut pas faire de mal ?