Delphi Prism, la seconde mort de Delphi...

J'en parle très rarement, vu le peu d'intérêt du sujet, mais l'ancien delphiste que je suis a toujours un oeil nostalgique sur Delphi. La mort de Delphi est arrivée avec l'annonce de la volonté de vendre l'EDI et le langage par Borland. L'époque était déjà trouble avant cette dernière d'où d'ailleurs mon bouquin en 2005 "De Delphi à C#" (que mon éditeur n'a hélas jamais voulu appeler comme ça malgré mon instance, mais plus banalement "delphi 2006 et c#").

Cette vente loupée et jamais réalisée qui s'est transformée en la création de l'écran de fumée "CodeGear" histoire de donner l'impression qu'il s'était passé quelque chose a réellement marqué la mort de Delphi. La vraie vente, trop tardive, à des inconnus du monde du développement (Embarcadero) n'a fait que confirmer que les carottes étaient cuites.

Mais Delphi n'était que moribond, dans un coma qui devenait de plus en plus profond et irréversible mais il y avait parfois quelques sursauts reflexes. Le coup de grâce vient d'être porté par Embarcadero qui a annoncé la fin de Delphi .NET, le seul produit intelligent (mais mal fini) des dernières années. La VCL.NET est morte dans la foulée (et tout le code développé autour).

Certes "Delphi Prism" est désormais en vente, mais il ne s'agit d'une part que d'un plugin Visual Studio et d'autre part ce n'est même pas un produit CodeGear ni Embarcadero mais une simple évolution du plugin Chrome de RemObjects, société qui reste indépendante, un simple partenaire de Embarcadero ce qui pose quand même problème en termes de maîtrise de la technologie par Embarcadero, ce qui entraîne de facto quelques doutes sur l'avenir du produit, de ses évolutions et du code qui sera produit avec.

Pendant très longtemps, en tant que partenaire Borland, j'ai insisté pour que Delphi.NET soit un plugin VS et que l'EDI "BDS" soit abandonné vu l'impossibilité de le mettre au point. Idée rejetée pendant des années. Pour finalement y venir mais trop tard pour sauver le produit. Delphi Prism n'est certainemenett pas un mauvais produit, au moins avec VS comme EDI on est sûr que l'environnement de développement est de bonne qualité ! De plus, j'ai été dans les premiers à dire du bien de Chrome en affirmant que c'était la voie à suivre pour Delphi.NET. J'ai été exhaussé, mais trop tard, et au pied de la lettre... Une tragédie grecque !

Delphi.NET, seul produit d'avenir qui aurait pu sauver le langage est donc enterré, avec ces quelques fidèles et leur code VCL.NET qu'ils peuvent mettre à la poubelle.

Je suis à la fois bien triste, on n'efface pas son passé comme on reformate un disque dur, et en même temps bien heureux d'avoir dès 2005 recommandé à tous mes lecteurs et à mes clients d'abandonner définitivement Delphi pour Visual Studio et C#. Bien malins et surtout aujourd'hui serins ceux qui m'ont écouté !

La page se tourne définitivement.

Vive C# !


Tags: Categories: Delphi | Humeur

Mon 09 Mar 2009 02:13 15 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed

Comments

March 10. 2009 00:47

VLDG

sans remettre en cause les qualités du framework .NET, je le trouve d'une lourdeur extrême pour les applications Desktop !

Donc Delphi a encore de l'avenir !

Il y en a même qui revienne :
www.hans-eric.com/2009/02/09/welcome-back-delphi/

VLDG

March 10. 2009 05:56

Olivier

Je respecte ton point de vue, mais il faudrait préciser ton affirmation qui est très subjective tu en conviendras.
As tu des chiffres, des données qui permettent de préciser ce que tu entends par là ? Je ne "finasse" pas, très honnêtement si je comprends l'impression subjective que tu veux signifier, techniquement je ne comprends pas ce que veut dire "extrème lourdeur du framework .NET". Sur quel plan ?

Enfin, de quel "delphi" parles-tu qui pourrais avoir de l'avenir ? Delphi Win32 ?

Raisonnablement, tu penses vraiment que le développement Win32 a "de l'avenir" (avec ou sans delphi) ? Ne crois tu pas que l'avenir est déjà en train de s'écrire avec des technologies autrement plus modernes, plus séduisantes, plus efficaces et plus fiables ?

Comment peux tu encore développer en Win32 en te passant de LINQ, en te passant du garbage collector, des API claires et directes de .NET au lieu de l'embrouille infernale des API Win32 ? Comment peux tu préférer un langage Win32 qui n'était même pas vraiment natif Win32 au point que la moindre API Win32 doive faire l'objet d'une traduction de header C avant d'être utilisable alors que sous .NET, en n'importe quel langage, tu accèdes directement à des API claires et objectivées ?

Delphi Win32 a eu son heure de gloire, et avec humilité mais conviction je pense avoir fait partie de ceux qui ont contribué, même modestement, à ce succès. Mais il est temps de regarder l'avenir en face...
Et l'avenir de l'informatique, sous quelque angle que tu te places ne s'écrit pas en Win32, en delphi ou en c++ d'ailleurs là n'est plus la question.

Pour moi, "l'extrème lourdeur" ça serait d'être obligé aujourd'hui d'écrire 5 pages de code delphi pour faire ce que je fais en 1 ligne de LINQ to object, ça serait de vérifier les pertes de mémoire à la main au lieu de dormir sur mes deux oreilles et sur le garbage collector. La vraie lourdeur serait d'avoir à écrire du code win32 et d'y passer plein de temps en sachant que je ne pourrais pas en réutiliser une ligne si demain l'application doit passer sur le web ou sur des unités mobiles. La vraie lourdeur absolue serait que je sois encore obligé d'utiliser Delphi 7 et ses composants visuels d'un autre âge quand je peux utiliser Silverlight ou WPF avec Visual Studio et Blend, intégrer de la 3D que je réalise dans LightWave ou même Xam3D, ou simplement faire une fenêtre de n'importe quelle forme avec des transparences, tout cela nativement (et j'insiste sur le nativement) et facilement !

En fait plus j'y pense et plus je me rend compte que je ne comprends pas ce que tu appelles "l'extrème lourdeur du framework .NET" alors même qu'il est évident que c'est le framework .NET qui nous a libéré de l'extreme lourdeur de Win32 !

Comme quoi chacun voit midi à sa porte. C'est la diversité du monde, elle est parfois surprenante de contraste et de contradiction mais c'est bien mieux qu'un monde de clones, alors finissons ainsi sur cette note optimiste Smile

Olivier

March 10. 2009 23:30

VLDG

"extrème lourdeur du framework .NET". Sur quel plan ?
J'ai beaucoup de clients (des concessionnaires Peugeot) dont le dernier OS validé est Windows 2000 qui ne sont pas relié à internet. Pour déployer une application Win32 : c'est simple et pas long...
Quand tu dois déployer le framework .net (car il n'est pas déployé chez eux) : c'est hyper long et ça plante souvent. On n'a d'ailleurs abandonné...
Pour la suite Peugeot compte abandonner Windows pour Linux. Je recherchai activement un composant avec un bon planning mais pour l'instant je ne trouve pas d'équivalent à celui que j'utilise dans la VCL Delphi et Tiers... pourtant j'en ai regardé plusieurs. J'étais justement sur le site internet de www.devexpress.com (qui me demande d'ailleurs à chaque fois de télécharger une nouvelle version de SilverMachin Tong) avant de passer sur ton blog.
Il y a des choses formidables dans .net : les génériques, le garbage collector, LINQ mais d'autres même si elles peuvent convenir à certains n'ont que peu d'intérêt à mes yeux...
Tout ne passe pas par dotnet : il y a d'autres alternatives... De plus, dire qu'avec Delphi on ne peux pas faire de code réutilisable pour les applications web est quand même pas très juste : on peut très bien faire un serveur SOAP ou REST que l'on pourra appeler de n'importe quel site web...

Bon courage et félicitation pour ton MVP.

ps: ta petite application sur les codes postaux en SilverMachin m'a fait un joli message d'erreur "Ooops ! Erreur d'exécution"

VLDG

March 11. 2009 02:01

Olivier

Je comprends mieux le sens de "extrème lourdeur du framework". Windows 2000 est un OS qui date de dix ans et qui n'a pas vraiment été prévu pour faire tourner le framework, c'est évident.
Mais quel soft reste utilisable passé 10 ans... alors un OS qui est le centre nerveux d'un PC !
C'est peut être injuste de ta part de juger le framework dans un tel contexte qui est malgré tout très restrictif puisque XP qui est une vieillerie fait tourner magnifiquement le framework.

Je ne connais pas les arguments techniques de peugeot qui fonde leur envie de passer à linux, mais si c'est parce que windows 2000 est peu performant en 2009, je ne suis pas sûr que les versions de linux de la même époque que win2k puissent rivaliser même avec Windows 98. Et celles d'aujourd'hui si elles sont plus sympas n'apportent en réalité aucun avantage technique par rapport à windows pour des postes utilisateurs. Reste le prix. Mais beaucoup de grands comptes en sont revenus de linux. L'OS n'est pas tout, il faut des softs et des gens pour maintenir les infrastructures. Et il est mille fois plus facile et moins couteux de trouver un logiciel windows ou un administrateur windows qu'un bon soft ou un bon admin linux. Du coup, comme c'est rare, c'est cher. Linux c'est comme certaines imprimantes : ça coute rien à l'achat mais les recharges d'encre coutent une fortune !

Pour le site de devexpress je ne sais pas, Silverlight 2 est très récent et certains sites ont encore des parties qui sont restées en version beta incompatible avec la finale au niveau du plugin.
L'autre possibilité est que ce soit toi qui utilises une version beta qui ne se met donc pas à jour automatiquement. Ceci expliquerait aussi pourquoi tu n'as pas accès à mon exemple Silverlight qui nécessite une version 2 finale. désintalle la version sur ta machine et installe la v2 finale, tout ira mieux Smile

Pour le reste, qu'importe le langage ou l'OS l'essentiel c'est de se faire plaisir et de gagner sa croute Wink

Olivier

March 12. 2009 15:25

Gabrie

"Linux c'est comme certaines imprimantes : ça coute rien à l'achat mais les recharges d'encre coutent une fortune ! "

Sans être linuxophobe, la comparaison est superbe et bien trouvé.

"Pour la suite Peugeot compte abandonner Windows pour Linux."
Raison de plus pour passer au C#. Avec le support de Novell, Mono peut avoir un réel avenir.

Avec C#, tu développes des acquis pour WinForm, WPF, Asp.Net, Linux, Silver/Moon Light, téléphone portable...

Pour le reste, si j'ai bien compris que ça sentait le sapin, dès la création de CodeGear, je n'ai jamais pensé que la VCL.Net avait le moindre avenir.

Le framework .Net etant plutôt bien fait (normal, c'est le même papa) plaquer le framework VCL sur le framework .Net n'avait que peu d'intérêt. J'ai toujours aimé le Pascal, mais c'est un critère de choix insuffisant.

La VCL.net aurait forcement toujours eu un train de retard sur .Net
Tous les exemples, docs, tutoriels etc. qui tourne autour de .Net sont en C# (ou au pire en VB).

Autant passer au C# qui est le langage naturel de .Net

Je pense que beaucoup ont eu le même raisonnement (dont toi, visiblement) ce qui explique l'échec commercial du produit (et donc son abandon).

"Pour le reste, qu'importe le langage ou l'OS l'essentiel c'est de se faire plaisir et de gagner sa croute".

Je partage.

Cordialement.
Gabriel

Gabrie

March 12. 2009 19:56

Olivier

@Gabriel:
Je suis d'accord que Mono est une réalisation vraiment intéressante et même si les EDI sont loin d'arriver à la cheville de VS ou Blend, le niveau technique est excellent. Solution d'avenir, je ne sais pas, car "linux c'est l'avenir" je l'entends depuis 20 ans et j'attends toujours... Mais en tout cas je miserai plus volontier sur l'avenir de Mono que l'avenir du développement Win32, c'est une évidence.
La VCL.NET n'avait pas d'avenir dès le début, je n'en ai jamais vu l'intérêt. Même pour le portage des applis existentes. J'ai fait pas mal d'essai à l'époque et je n'ai jamais été convaincu, le passage de Delphi Win32 à Delphi.NET imposait une migration en raison de nombreuses incompatibilités du langage et de la plateforme. Quant aux forms, soient elles étaient simples (donc faciles à refaire en WinForms) soit elles étaient complexes et mal développées dans 80% des audit que j'ai pu mener ce qui compliquait le passage à VCL.NET... De fait, quitte à migrer, au final c'était plus rentable de migrer en Windows Forms / C#, plus propre, plus sûr, et plus d'avenir.
C'est d'ailleurs, sur mon conseil, ce qu'a fait une majorité de mes clients et ils en sont très contents Smile

L'abandon de VCL.NET et de Delphi.NET me donne aujourd'hui mille fois raison.

Comme je le disais : Vive C# ! Smile

Nota: j'ai testé Delphi Prism, c'est sympa, ça marche pas trop mal, mais franchement l'intérêt d'écrire un "If Then Else" sans ";" après le Then, même si ça m'agace en C#, ça ne justifie pas de revenir à la syntaxe Delphi... Mais c'est étonnant qu'une petite boîte comme RemObjects ait pu réaliser un compilo natif .NET de bonne qualité alors que les cadors de chez Borland/CodeGear n'y sont jamais arrivé. Le management laissait vraiment à désirer je pense, faut pas s'étonner de la fin tragique de l'histoire...

Olivier

May 31. 2009 15:03

Yves

Intéressant.
Mais le C# ou plutôt le .net est il adapté à tout les développements ?
Pour ma part, je développe (professionnellement) des applications en Windev qui au niveau de l'efficacité pour construire une application est extrêmement rapide et cohérent. C'est très loin au niveau facilité de construction des interfaces devant tout ce que j'ai pu essayer. Cependant, j'ai parfois besoin de performance comme pour faire du traitement d'image. J'utilise alors mon vieux Delphi 5 pour faire mes dll(Voire parfois PowerBasic, aussi performant que le C compilé (sur mes applications)).
On pourrait critiquer, dire que ces technologies sont obsolètes et non dignes d'un "vrai" développeur actuel. Mais ça marche, et ça marche bien, rapide, opérationnel, sur n'importe quel OS Windows de 98 à Vista. Des dizaines de milliers de lignes de code sur des centaines de machines, sans bug recensé, en production depuis trois ans
Mais curieux de nature (comme tout développeur) je cherche des solutions qui seraient peut être aussi performantes mais pérennes et portables
C'est pour cela que j'avais écarté au début l'option .net (au niveau du manque de portabilité).
Mais la mise semble changer. J'ai aussi commencé à développer en Qt (C++). J'ai aussi l'option d'évoluer vers Delphi 2009 ou C++ Builder(pour les dll unicode)...
Le C# avec .net semble convaincre de plus en plus de développeurs.
Quand est il de sa portabilité réelle (Mac, Téléphone, Win, Linux) ?
Quand est il de sa performance quand il s'agit de coder des traitements lourds (image, calcul scientifique) ou des interfaces machines, drivers ?
Merci

Yves

May 31. 2009 18:22

Olivier

@Yves:
Tu as raison de séparer C# de .Net quand tu t'interroges "peut-on tout faire avec", car si C# est un merveilleux langage, il n'est pas le seul sous .NET et ce qui fait la force de .NET c'est justement ça. C'est d'être une plateforme et non un langage.
Tout faire ? Disons qu'aujourd'hui de façon certaine, avec le même langage (C# ou autre), le même IDE, les mêmes API, sous .NET tu peux écrire du code pour des applis desktop (winforms, Wpf), des applis pour unités mobiles (smartphones...), des applis pour le web (asp.net, ajax, asp.net mvc, xbap, et silverlight), des applis pour le "cloud" (azure).
ça fait déjà beaucoup de choses sans jamais changer de langage ni d'IDE !
Côté portabilité elle est parfaite sous Windows de XP à Windows 7, pour les unités mobiles elle est tout aussi parfaite pour celles qui supporte le Compact Framework (windows mobile).
Pour attaquer Linux il existe Mono, mouture Novell de .NET parfaitement compatible et d'un niveau technique plus qu'honorable (pas trop en retard sur le vrai framework .NET MS).
Pour attaquer les Mac, tu peux choisir Silverlight qui a l'avantage d'être du client riche web, et qui dans sa V3 (qui sort bientôt) permet d'installer les applis en dehors du browser. Ces dernières se comportent donc comme des applis desktop et peuvent gérer le offline facilement.

Au final, même si rien n'est parfait, la plateforme .NET offre la possibilité d'attaquer 99.9% des environnements qui font le marché aujourd'hui. J'oubliai qu'une appli .NET 32 bit passe en 64 bit aussi, ce qui ouvre des perspectives d'avenir indispensables.

Je n'ai pas à porter de "jugement" sur tes choix techniques, comme je le disais, l'essentiel c'est que tu y prennes plaisir et que ça paye le loyer... Bien entendu, Windev n'est pas ma tasse de thé pour d'innombrables raisons techniques, mais tant qu'on me force pas à l'utiliser ça ne me pose pas de problème que ça existe Smile
En tout cas, tu arrives au bout de ces technos, la preuve tu es obligé de mixer plusieurs langages et plusieurs IDE pour arriver à finir certains jobs.
Le vrai premier avantage de .NET que j'ai vu au début quand j'ai décidé de basculer vers cette plateforme c'était justement la cohérence. Un seul IDE, un seul langage (au choix), et plusieurs cibles sans changer d'habitude. Tout ce que tu apprends pour faire du desktop, ça te sert pour faire du Web ou du mobile et inversement.
En termes de productivité c'est un argument massue.

Tout cela n'enlève rien à ce que _fut_ Delphi, de loin la meilleure solution sous Win32 pendant une dizaine d'année. Cela n'enlève rien non plus à la simplicité apparente de Windev pour faire des interfaces.
Après tout, tout le monde ne développe pas des applis web avec de la 3D, mais au bout du compte on s'aperçoit que les limites d'un langage ou d'une plateforme bloquent sournoisement les développeurs et leur créativité. C'est humain.
Il est donc très important de choisir une plateforme _aussi_ pour sa capacité à faire plein de choses dont on ne voit pas tout de suite l'utilité.

Avec Windev ou Delphi on faisait un choix "utile" : j'ai besoin de faire de l'interface, ça en fait, et bien, c'est donc un bon choix. Mais si on voulait faire du web à l'époque, il fallait apprendre Php ou Java ou autre... et on ne le faisait pas, donc plein de développeurs Delphi ou Windev n'ont jamais évolué.

En choisissant .NET et sa couverture très au delà des besoins habituels, on s'ouvre aussi cette possibilité de pouvoir facilement tester, et peut être adopter, des technos plus puissantes, plus intéressantes.

Quant aux performances, C# est même plus rapide que Delphi pourtant réputé "natif et meilleur que C++". J'ai fait des tests moi-même, mais hélas Borland, tout comme Microsoft, refusent qu'on publie des benches de leurs langages sous peine de voir leurs avocats débouler...
Depuis des années j'ai écrit pas mal d'applications en C#, de tout type, et la plupart sont "time critical". Justement avec du traitement d'image lourd et en très grande quantité par exemple.
Je n'ai jamais eu de problème même avec des machines cible peu puissantes sous XP.
Des drivers, je n'en ai pas écrit, mais je sais par exemple qu'il existe une lib open source pour faire des drivers USB en C# c'est donc que c'est possible même si je pense que pour certains pilotes hardware il doit falloir peut-être une aide en C. C# utilise le CLR, le runtime de base pour simplifier, et je doute que le kernel de windows puisse charger le CLR dans les versions actuelles de windows. Mais tout cela réclame plus d'investigation, notamment en direction des drivers "user mode" qui sont différents des "kernel mode" et qui peuvent se programmer en utilisant d'autres techniques, dont .NET peut-être.

Pour conclure je dirais que si tu passes à .NET en te formant bien (pour être sûr de comprendre tous les concepts absents des environnements comme Delphi, C ou Windev), je suis certain que tu ne le regreteras pas. Je n'ai jamais rencontré un seul développeur déçu d'être passé à .NET.

Dans tous les cas : Bon Dev !

Olivier

June 1. 2009 08:45

Yves

Merci Olivier de ces conseils.
Je suis presque convaincu.
Il est bien pas question bien sûr pour l'instant que j'abandonne le couple Windev/Delphi (surtout que j'ai aussi un site en webdev et des applis en Windev mobile), ne serait ce que pour la maintenance et le savoir faire que j'ai actuellement.
Mais effectivement, je cherche depuis plusieurs mois un environnement comme C#/.NET semble le proposer. Cependant, se former en parallèle demande de l'investissement. Donc faire un choix que l'on ne regrettera pas est primordial.
Le problème, c'est qu'on ne peut guère se fier aux avis divers des forum qui sont souvent contradictoires (et on ne connait pas l'expérience réelle de ceux qui postent les messages).
Ton avis en tant qu'auteur reconnu et expérimenté (de plus ancien delphi-iste)est pour moi une base solide de réflexion.
C#/.NET était "passé à la trappe" dans mes choix (par préjugé inconscient anti Microsoft sans doute), m'orientant plus vers Java, C++ (+bibliothèques, Qt ou autre), Delphi 2009.
Par élimination, un ensemble séduisant semblait être Qt/Qt Creator/MingW de Nokia, surtout avec la nouvelle licence LGPL, après avoir testé la lourdeur de Java (qui semble pourtant être apprécié par beaucoup) et d'autres bibliothèques.
C# pour certains manque de rapidité (routines machine), mais ton post précédent semble démentir cette info, c'est intéressant, je vais sans doute essayer.
On parle aussi d'un problème de reversing facile du code (on doit donc protéger son code en C# ?). Qu'en est il ?
C#/.NET n'offre-t-il vraiment que des avantages, comparé à QT Creator par ewemple.
De plus il y a un problème d'évolution de langage aussi. S'ils nous sortent un nouveau concept aussi révolutionnaire que LINQ tous les deux ans, j'aurai du mal à assurer la maintenance, faire de nouvelles applis et me former en même temps...
Il y a aussi le fait que Microsoft a plusieurs fois "abandonné les siens" comme par exemple l'andandon de Visual Basic (je suis un ancien de visual basic abandonné pour Delphi à l'époque) ou les MFC ou peut être les Winform. Je ne sais pas n'étant pas du tout un spécialiste des produits Microsoft, mais si de nouvelles moutures .NET n'assurent pas la compatibilité avec d'anciennes versions .NET jugées trop anciennes, cela peut tourner à la catastrophe.
Merci de tes conseils

Yves

June 1. 2009 17:50

Olivier

@Yves : On a tous eu une période anti-MS... Il y avait des raisons, mais il est vrai aussi que MS, depuis la sortie de .NET, a fait beaucoup d'efforts. Les outils de developpement ne sont plus des parents pauvres par exemple. VB n'a jamais été abandonné en réalité, la preuve VB.NET est bien vivant et riche de nombreux utilisateurs. Mais pour franchir une telle distance MS n'a pas hésité à faire des ruptures de compatibilité. Peut-on les blamer, avec le recul, alors que Borland ayant adopté la stratégie contraire s'est écroulé ? Ceux qui ont investi dans VB il y a 10 ans peuvent toujours utiliser VB sans risque pour le futur. On ne peut pas en dire autant de Delphi, Windev ou d'autres produits de ce genre.
Pour être plus technique, l'une des forces de .NET c'est la compatibilité justement : on peut avoir autant de versions que nécessaires sur sa machine et tous les programmes continuent à marcher.
Tu sais comme moi par exemple que sous Delphi les packages compilés n'ont jamais été compatibles entre versions, un gros problème. Sous .NET tu peux avoir une appli en .NET 3.5 qui appelle un composant .NET en 2.0 sans que ça plante. Et si tu n'as pas les sources de ce dernier tu es bien content... Impossible d'utiliser un composant Delphi compilé sous une autre version de Delphi. Une gêne énorme. Les problèmes de compatibilité sont donc plutôt à chercher dans ces vieux outils plutôt que sous .NET !
.NET est un énorme édifice, et par force, même MS n'a pas pu tout livrer d'un bloc. Il y a donc des choses qu'on savait dès le départ, ce n'était pas "caché". Par exemple on savait que Windows Forms n'était qu'une solution temporaire pour les fiches. On attendait WPF qui est arrivé. WinForms est donc "mort" en termes d'évolution, mais même sous VS2010 il est toujours possible de créer et maintenir des applis WinForms... Pas de cassure.
Les MFC n'ont jamais été géniales, c'était d'ailleurs un gros argument en faveur de la VCL. Que le produit ait fini par être délaissé au profit de .NET et de ses API objets et cohérentes, on le savait aussi depuis longtemps et c'est bien. Il ne faut pas avoir peur du changement quand il est inéluctable. Delphi aurait du changer en profondeur et profiter de .NET pour renaître. Ils ont eu une stratégie de réac, se repliant sur la niche Win32. Ils ont perdu...
L'informatique est une science jeune qui, par force, bouge très vite. On est loin de faire encore "tout ce qu'on veut". Chaque génération de machine est vendue comme le "top de la puissance" mais on sait très bien que tant qu'on n'aura pas atteint un certain niveau, beaucoup de choses changeront et que chaque innovation, chaque gain de vitesse, sera exploité pour afficher de meilleurs graphiques, plus jolis, plus rapidement, plus fluide, créer des interfaces comme celle de Surface ou Windows 7 en multi-touch, etc...
Je ne crois pas qu'on puisse "en vouloir" à MS d'investir autant dans le R&D et justement oser aller plus loin que le ronronnement des autres éditeurs qui n'innovent pas vraiment depuis longtemps.
Les évolutions de C# depuis la 1.0 jusqu'à la 4.0 qui va sortir ont toutes été maîtrisées et compatibles arrière, idem pour le Framework.
Cela fait presque dix ans que tout cela existe, je crois que c'est un temps suffisamment long pour reconnaître la vérité : MS a réellement fait des efforts. Même Vista, beaucoup critiqué, est un excellent OS. J'ai 6 PC bureau/portables en fonctionnement, 3 sous Vista et 3 sous XP. Franchement que je repasse d'un Vista à un XP ça me fait pitié...
Donc même au niveau OS cela fait longtemps que MS n'a pas fait de grosses bourdes. La longévité et la stabilité exceptionnelle de XP est d'ailleurs là pour prouver que l'époque "Millénium" est définitivement révolue.
Choisir un outil de travail, tu as raison, doit se faire en considérant l'avenir et la confiance qu'on peut placer dans l'éditeur, sa solidité, sa volonté de cohérence.
.NET est devenu le socle des produits MS : de l'OS aux applis de bureau en passant par le Web. Autant il était possible de bousculer les utilisateurs VB à une certaine époque (une goutte d'eau dans la stratégie et les revenus de MS), autant remettre en cause .NET ça serait mettre à terre dix ans d'efforts, des OS, des inventions comme Surface, le multi-touch sous W7, WPF, ASP.NET, Silverlight, etc.. Autant d'outils qui ne sont plus si marginaux que ça dans la stratégie de MS qui s'est rendu compte que pour vendre ses OS (principaux revenus) il fallait _aussi_ séduire les développeurs. C'est un changement de mentalité complet qui s'est fait. Les versions gratuites de Visual Studio (tout à fait utilisables pas comme les versions personnelles de Delphi), SQL Server Express, l'effort de documentation, de videos de formation, etc, tout cela démontre clairement une volonté forte. Et quand 10 ans se sont passés sans changement de cap, on peut malgré tout leut accorder un peu de crédit pour le futur.

Pour répondre à ta question sur ce qu'on appelle l'obfuscation en Java ou C# (à noter ça existait aussi pour Turbo Pascal 1.0 à 3.0, c'est amusant Smile ) : Le code compilé sous .NET l'est dans un langage pivot. C'est ce qui permet à ce code de pouvoir s'exécuter avec la plus grande compatibilité. Un "exe" ou une "dll" .NET ne sont en réalité jamais exécutés par la machine : c'est le CLR qui les compile à la volée et qui utilise le "vrai" exe qui est mis dans un cache. La 1ere utilisation d'un soft peut donc être plus lente que les suivantes (mais on peut forcer la compilation "réelle" pour éviter ce problème dans des applis où cela serait gênant comme du temps réel, traitement de signal etc). Le code "compilé" par .NET est donc en réalité une sorte d'assembleur, et comme c'est objet, bien structuré et tout, c'est encore plus facile de "décompiler" un exe ou une dll qu'en Win32. Il est vrai qu'il est donc possible de partir d'un code compilé .NET pour revenir sur un code source très proche de l'original et même en changeant de langage ! Par exemple une Dll écrite en C# et compilée .NET peut être décompilée avec affichage du source .. en VB.NET!
Pour éviter que cette décompilation ne soit trop facile on peut "obfusquer" le code une fois compilé. En gros ça change les noms de variables etc, histoire que le code décompilé soit une horreur à lire.
Très honnêtement personne ne s'en sert, même les meilleurs d'entre nous n'inventent pas des algos super-secrets-de-la-mort-qui-tue tous les jours qui mériteraient d'être cachés... La sécurité se gère ailleurs.
En revanche, un code .NET compilé peut être signé numériquement, et ça c'est déjà plus intéressant : tu peux facilement prouver que tel exe est l'original et que tel autre a été bricolé par exemple. De même si un virus ou un humain modifie ton exe ou ta dll, .NET refusera de l'exécuter.
ça ce sont des protections réellement utiles. L'obfuscation est plutôt réservée aux paranos incurables ou aux inventeurs géniaux protégeant un algo qui change la face du monde. Autant dire que les utilisateurs d'outils d'obfuscation sont malgré tout à 99.99% des cas dans la première catégorie ! Smile

Le mieux, c'est que tu télécharges un Visual Studio Express, totalement gratuit, avec un SQL Express, et que tu suives des tutors. Tu verras que .NET est vraiment un environnement plaisant.

Amuses toi bien !

Olivier

June 1. 2009 18:46

Yves

Bien,
je crois effectivement que je vais regarder du coté de cette technologie.
Un petit bémol cependant concernant Vista et concernant la critique de cet OS venat de gens ne l'ayant même pas testé. Nous avons une quinzaine de machine dont six sous Vista. Le temps d'affichage des fenêtres d sous certains outils, est exaspérant. Certaines fenêtres mettent cinq ou six secondes pour s'afficher sur un PC récent (de bureau). Dans la même application sous XP et avec un PC portable centrino agé de quatre, avec deux fois moins de mémoire vive, ces fenêtres s'ouvrent en une demi seconde. J'ai été obligé de désactiver Aero sur toutes les machines Vista pour pouvoir commencer à travailler efficacement. Le problème, c'est qu'en concevant mes fenêtres ainsi c'est que je ne vois pas tout de suite l'effet visuel de mes modifs dans le cas où l'utilisateur final possède Vista.
La lenteur et le manque de réactivité graphique est une constante sur toutes nos machines Vista et pas qu'un peu. Les plantages, le système qui ralentit au fil de la journée me fait redémarrer la machine (quelque soit celle que j'utilise) au moins une fois par jour, parfois plus. Pas forcement avec les mêmes logiciels, mais essentiellement quand il s'agit de créer ou gérer du graphisme.
C'est aussi une des raisons qui m'ont fait m'éloigner un peu plus de Microsoft. Seven semble être plus réactif, même s'il n'atteint pas la vitesse de XP. C'est sûr, c'est tristounet comme affichage, mais ça fait le boulot au moins, vite et bien.
J'ai trouvé intéressant ton tuto sur "10 raisons pour choisir les WPF".
je vais y regarder de plus près, c'est sûr.
PS Windev gère depuis longtemps le dégradé dans la couleur des composants, la transparence, l'effet 3D, les jauges avec dégradé de couleur, le RTF dans les composants et ... le databinding sur les données...
Amicalement

Yves

June 1. 2009 18:52

Yves

Bis
Je voulais dire le databinding sur les variables du programme et non pas uniquement les champs d'un fichier de base de données...

Yves

June 2. 2009 03:09

Olivier

@Yves: J'ai entendu des témoignages comme le tien sur Vista, et il n'y a aucune raison de douter de leur véracité. En revanche on peut se demander pourquoi chez certains utilisateurs Vista se comporte comme tu le décris et pourquoi chez d'autres, comme moi, ça marche comme un charme. Je n'ai pas la réponse, c'est juste une interrogation à "voix haute".
Ce que je sais c'est que beaucoup de conseils de développement donnés par MS n'ont jamais été écoutés, et que Vista imposant des contraintes particulières, les softs développés sans tenir compte de ces dernières posent souvent des problèmes.
Je sais aussi que les machines doivent être bien configurées et bien adaptées et que beaucoup de marques même très connues font des trucs approximatifs.
L'un de mes derniers portables est un Asus, un modèle correct sans plus, autour des 1000 euros. Les premières fois que mes contacts chez MS l'ont vu fonctionner ils étaient verts, ils n'avaient jamais vu un indice aussi haut sous Vista ni un affichage aussi fluide. Pourtant au MTC ils ne sont pas équipés comme des débutants !
Donc, il est clair que le mélange de softs très bien programmés en accord avec les specs déjà données du temps de XP sur des machines à l'architecture bien faite comme les Asus, ça donne un Vista stable et très rapide.
Pour peu que les softs soient trop anciens, peu conformes aux normes ou que les machines aient une architecture mal adaptée (chipset, carte video..), Vista peut donner une mauvaise impression. Je pense que le clivage est là. Et quand je dis ça, ça ne veut pas dire "achetez vous de bonnes machines et des softs récents", Vista a certainement une faiblesse de ce côté là en étant trop "élitiste". Tout le monde ne peut pas changer son parc de machines ou ses softs d'un claquement de doigts.

Quant à Windows 7, je l'ai testé pas mal de temps, et même dans une machine virtuel virtual PC sous XP ! Et j'ai été surpris par sa réactivité. C'est Vista II, tout simplement, avec les petits défauts corrigés. 7 sera un très bon OS visiblement.

Pour ce qui est Windev, je ne doute pas un instant que le produit a évolué et qu'il est bourré d'astuces. Mais même Borland et sa VCL ne pouvait pas lutter contre un édifice comme .NET : les domaines couverts, leur nombre, la cohérence des API, le support de plusieurs langages, etc, les idées ne sont pas forcément neuves, mais à ma connaissance seule la plateforme .NET sait les regrouper dans un tout aussi homogène. Même Java et ses tas de trouvailles ne peut s'aligner sur la cohérence du framework (en plus d'imposer un seul langage, Java).
Mais les bonnes idées ne sont en aucun cas le privilège de .NET ou C#, tout comme Turbo Pascal ou Delphi ont fait la synthèse des choses les plus pratiques à leur époque, tout comme Java à su proposer un langage tout objet reprenant les bonnes idées de l'instant, .NET dix ans après se fonde sur tout ce qui a été fait d'intelligent avant, et ailleurs.
C'est ça force. Jusqu'à ce .NET soit un jour détrôné, même par une nouveauté MS, car .NET sera détrôné un jour, c'est obligé ou alors cela sera l'exception des exceptions ! Ce jour là, je bloguerai sur le nouveau truc, mais pour l'instant je garde mon baril de C# Smile

WPF est un peu déroutant au départ, il ne faut pas le cacher. Certains adhèrent tout de suite, pour d'autres il faut un effort. Pas tellement que ça soit compliqué mais cela force à penser vraiment autrement, à séparer le visuel du code très nettement, à savoir quand il faut faire une chose par code C# et quand il faut le faire en Xaml. C'est pas simple au début. Personnellement j'ai pataugé un peu au départ surtout qu'il y avait rien ou presque en tutors ou livres. C'est le désaventage de prendre les technos très en avance. Aujourd'hui on trouve plein de ressources pour se former. Mais il faut s'investir car l'esprit est très différent de celui des MFC, de la VCL, de Windev, Windows Forms ou tous ces anciens systèmes de gestion de GUI.

En revanche, une fois qu'on a gouté à WPF et à son fréro Silverlight, on a du mal à revenir en arrière. Surtout avec les bons outils comme Blend 2 qui est indispensable pour travailler confortablement et visuellement les interfaces.

Dans tous les cas tu ne perdras rien à découvrir WPF, ce type de programmation me semble être l'avenir, chez MS comme chez d'autres. Au même titre que les sites web en HTML, même avec ASP.NET me semblent dépassés et que l'avenir du Web sera en Flash ou en Silverlight.

Autant se tenir au courant aujourd'hui !

Olivier

June 2. 2009 03:57

Yves

Il s'agit pourtant de machines diverses: Sony, HP, Fujitsu-Siemens et Lenovo (IBM). Mais bon, tout ça n'empêche que Seven semble être optimisé au niveau graphique. Et cela n'enlève en rien à l'intérêt de .NET et Silverlight (je programmais en Flash jusqu'à présent: réactif, puissant mais une usine à gaz à mon sens). Je vais tester tout ça.
Merci Olivier

Yves

June 2. 2009 16:50

Olivier

@Yves: Je n'ai jamais aimé les HP ni les Lenovo, à chaque fois que j'en vois en clientèle je trouve que c'est des bourrins ces machines. Pour Sony et Fujitsu je n'en ai pas vu assez pour me faire une idée. Mais tout dépend des configs. En entreprise c'est hélas très peu souvent de la bonne machine bien configurée, les acheteurs se rangent derrière des marques connues et je trouve que les offres de Dell et consors sont généralement trop cheap, ou alors il faut payer très cher ce que ne font pas les entreprises. Et bien entendu Vista a un peu de mal sur de telles machines.
La stratégie de Seven c'est de faire en sorte qu'il soit rapide sur les machines actuelles alors que Vista pariait sur les machines à venir.
Mais en réalité Vista est la génération sacrifiée, peu importe ses qualités, le temps que les entreprises changent d'OS la première version est toujours sacrifiée, entre temps les entreprises ont rénové leur parc et tout le monde est content de la V2 qu'on trouve plus rapide (normal, un ou deux ans après la V1 ont a des machines plus modernes très souvent)...
Mais ce petit décalage a permi à MS de faire des ajustement dans Vista, enfin Seven, pour le rendre plus agréable. L'intégration de la machine virtuelle transparente XP capable de faire tourner des softs en mode XP qui auraient des pb avec Seven est une excellente idée. La virtualisation ça rend service. Toutefois, cela impliquera malgré tout d'avoir des machines users avec 2 ou 3 Go de Ram mini, on retombe dans la nécessité d'avoir un parc de bon niveau malgré tout.
C'est le paradox entre une demande de plus en plus forte pour des interfaces de science fiction mais avec de vieilles machines pas cheres.. Le moindre pékin de base a un IPhone avec interface tactile et effets de transitions hyper cool, il veut la même chose sur son PC, normal... Vista, Seven, et des technos comme WPF/Silverlight visent justement à faire rattraper ce retard aux PC. Il n'est pas normal que lorsqu'on surfe sur le Web, on ait le droit à de supers interfaces type Flash, et que les softs très chers qu'on utilise tous les jours aient encore un look Windows 3.10 !
C'est pour ça cette raison là que WPF/Silverlight sont l'avenir, car ça existe déjà partout ailleurs : web, téléphones portables. Il serait illogique de croire que sur PC les applis qui se vendront demain pourront le faire en gardant un look XP...

Flash je l'ai testé aussi, bien entendu. A la fin j'avais trouvé un autre soft SwishMax ou un nom comme ça, qui produisait du flash mais bien plus sympa à utiliser et avec des tonnes d'effets, parfait pour faire des banners par exemple. Le "langage" de Flash est trop pauvre et ne s'appuie sur rien. L'avantage de Silverlight c'est de se reposer sur .NET depuis la V2, et là on peut vraiment envisager des applis pro aussi puissantes que du desktop. Mais en plus jolies Smile

En tout cas ça va te faire pas mal de choses à tester, les longues soirées d'été vont être bien chargées Smile

Et surtout : amuses toi bien, on développe bien de bon softs uniquement que si on prend plaisir à le faire !

Olivier

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading