Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Richard Clark

J'aime pas les blogs mais comme j'aime le mouton...

Actualités

  • c2i.fr
Le Code Editor du futur ? (suite)

Dans la série "un sujet qui devient à la mode", sur l'avenir de l'IDE de Visual Studio .NET comme (cochez au choix) :

  • Bloc Note v13,
  • Visio Architecte qui marche v 2015,
  • Powerpoint 95,
  • VS EMacs 1.1,

J'avais déjà parlé sur ce sujet lundi dernier en réaction de l'opinion de Don Box. Et bien je suis bien content de n'être pas le seul.

Wesner Moise, qui lui n'y va pas avec le dos de la cuillère disant carrement que "Whidbey rate la prochaine révolution d'éditeur de code".

Fabrice Marguerie lui évoque l'idée d'un "patcher d'assembly" comme plug-in de Reflector (fortement inspiré de la présentation PowerPoint de Lutz). J'aime bien l'idée mais là ou je suis pas d'accord du tout c'est quand il affirme : "I think this tool should not be very difficult to create !". Wahoo, fastoche la minoche mais comme Saint Thomas, je demande à voir.

Tant mieux si la pression monte, si les idées arrivent à flot, il ne peut en ressortir que du bien.

Une question d'ailleurs : connaissez-vous des sites parlant de représentation graphique d'algorithme ?

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: jeudi 24 juin 2004 08:10 par richardc

Commentaires

richardc a dit :

Non ça ne devrait pas être très difficile, voir mes comments sur le blog de Fabrice.

Ensuite pour les graphs moi y a ça que j'ai bien aimé :

http://blog.dotnetwiki.org/archive/2004/06/11/403.aspx
http://blog.dotnetwiki.org/archive/2004/05/11/198.aspx

# juin 24, 2004 08:18

richardc a dit :

Ouaip merci pour les liens, j'avais vu et téléchargé et installé ce plug-in d'ailleurs (mais qui marchotait). J'ai du mal m'expliquer mais ce n'est pas une représentation du code IL que je cherche, mais bien des algos, comme au bon vieux temps de mes culottes trouées sur les bancs de l'école. Tu sais les trucs qui représentent le test conditionnel dans une boite, une flèche vers une autre boite avec "Oui" si la condition est vérifié, une autre flèche avec Non vers une autre boite. Puis les deux se rejoignent vers une dernière (la suite quoi).

L'idée est d'en faire une bijection (mais je suis persuadé que ce sera impossible) avec CodeDOM pour une représentation graphique du code. Une idée en l'air.

Pour les comments, j'ai vu mais j'ai peut être mal compris le but exact. Ce que j'ai compris :
Pouvoir voir du code d'une assembly, le modifier, en supprimer des parties, etc.
Bref, décomilateur, éditeur, compilateur. Si tu automatise tout ca avec des règles prédéfinies, ca ressemble pas à la programmation aspect (ou un truc approchant ) ? Enfin y'a au moins du refactoring dans l'air.

Si la réponse est même un tout petit oui, voila l'explication de ma perplexité (pour info, le refactoring n'est toujours pas au point pour Whidbey)
# juin 24, 2004 08:31

richardc a dit :

Bah pour les graphs je crois me souvenir d'un truc comme ça, mais c'était plus qu'une ébauche, mais je jetterais un coup d'oeil chez moi en rentrant ce soir.

Pour l'utilitaire :
Deux options, soit on travaille seulement en IL, soit en code de plus "haut niveau", C#, VB.Net, (Delphi ???).

Dans tous les cas on utilise le résultat fourni par Reflector comme base de travail.

Si on travaille en IL, ce n'est pas vraiment dur a parser, sachant qu'on ne permet que de modifier le corps des membres, et pas les signatures. Donc la seule difficulté en IL est de maintenir les branchements dans le code valides. Après on parle le résultat, qu'on met sous forme avec Rail, on ouvre l'assembly de base, et avec Rail, donc un framework d'instrumentation, on substitue l'ancien membre avec le nouveau. Trivial.

Si on travaille dans un langage plus "évolué", on devrait pouvoir utiliser CodeDom pour parser l'ensemble du membre modifié, le sauvegarder dans une assembly, ouvrir cette dernière avec Rail, ouvrir l'assembly de base avec Rail, et remplacer l'ancien membre par le nouveau.
Le seul doute que j'ai émis sur cette méthode c'est que Reflector sort des trucs un peu tordus des fois, avec des vilains goto, et que j'espère que CodeDom arrivera à le parser sans problèmes.

Ensuite pour le coté aspect, ça n'a rien a voir avec la programmation orientée aspect, mais la seulement à la technique utilisée dans les tisseurs statiques. C'est a dire tout simplement de l'instrumentation de code. Ce qui manque énormement au Framework. Mais Rail est la pour ça. D'ailleurs la prochaine version de Rail va vraiment cartonner, et les doutes que j'ai émis dans les commentaires sur cette librairie se dissipent peu à peu, vu la progression qu'on a obtenu ces deux derniers jours avec son principal développeur.

Enfin pour le refactoring je ne pense pas que l'on puisse appeler ça vraiment du refactoring. D'autant plus que dans ma vision de l'outil, on ne touche pas aux signatures des membres. Sinon dans ce cas la l'outil sera beaucoup plus compliqué.
# juin 24, 2004 09:34

richardc a dit :

Salut,

C'est moi qui développe l'addin graphe. En fait, tu as raison sur le fait que l'on veut voir des "statements" plutot que le graphe du code IL. En fait, il y a une raison très rationelle à cela: la simplicité du code IL permet de rapidement le transformer en graphe, l'API statements de Reflector rend les choses plus compliquées -> plus de temps -> pas assez de temps -> ...

En ce qui concerne la bijection CodeDom, j'y travailles. Reflector effectue la transformation IL -> source code, je suis en train d'écrire un nouveau plugin qui fait IL -> source code CodeDom -> source code. Une machine à template en quelque sorte. Le plus marrant c'est que l'on peut appliquer récursivement cette transformation à elle même: créer du CodeDom qui génére du CodeDom qui génère du CodeDom ..... qui génère le code original. :)
# juin 24, 2004 09:36

richardc a dit :

OK, j'avais mal compris ;-) puisque ce qui me semblait le plus dur était effectivement la modification des signatures (voir suppression complète d'une méthode).

J'adore l'idée de récursivité sur le CodeDom ;-)
# juin 24, 2004 09:40

richardc a dit :

J'avais oublié : bravo pour le plug-in de Reflector
# juin 24, 2004 09:40

richardc a dit :

En fait la modification de l'application a un nom: Mutation Testing. On injecte des fautes articifiellement dans un programme (mutant) et on regarde si les tests sur le programme détectent l'erreur (killed mutant).

Le proglème du mutation testing est que le nomber de modification possible est énorme, si on combine certaines modif elle peuvent s'annuler, etc....

Le problème de la compilation - décompilation est que certaines construction de language ne sont pas supportée en IL. par exemple

foreach(Object o in colleciton)
{
...
}

est transformé en
IEnumerator en;
try
{
en = collection.GetEnumerator();
while (en.MoveNext())
{
Object o = en.Current;
...
}
}
catch(Exception)
{
IDisposable disposable = en as IDisposable;
if(disposable)
disposable.Dispose();
throw;
}

Donc évidement, cela rend la tache du décomilateur beaucoup plus difficile!
# juin 24, 2004 11:43

richardc a dit :

Pour le foreach... c bel et bien son implémentation IL que tu vois, car il s'agit rien d'autre qu'un enum :p
# juin 24, 2004 17:50

richardc a dit :

Gné ?
# juin 24, 2004 17:54

richardc a dit :

HiHi, oui je manque de sommeil .. ou plutot j'ai trop dormi aujourd'hui.

je dis exactement la même chose que jonathan, alors je tournerais 7 fois le doigt sur mon clavier la prochaine fois lol

C'est le problème de s'appuyer sur des intructions de base pour accomplir des sortes de séquences de base (comme les boucles & autres switch), on perd forcément en lisibilité pour passer de l'un à l'autre ... (methode de l'encryptage dailleurs) donc en fait, j'ai rien à dire par rapport au post de jonathan, si ce n'est que la prochaine fois, je lirais tout, et plus attentivement...

Erebuss


# juin 24, 2004 19:07

richardc a dit :

> je lirais tout, et plus attentivement...

+ tourner 7 x sans la langue dans sa bouche, 3 bonhomme sans rire, une chope et une bonne petite cigarette...
# juin 25, 2004 15:14
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Technofolies, votre évènement numérique de l'année par Le Blog (Vert) d'Arnaud JUND le 09-26-2014, 18:40

- Xamarin : From Zero to Hero par Fathi Bellahcene le 09-24-2014, 17:35

- Conférences d’Automne 2014 par Le blog de Patrick [MVP SharePoint] le 09-24-2014, 14:53

- [TFS] Supprimer un projet de Visual Studio Online par Blog de Jérémy Jeanson le 09-22-2014, 20:42

- Nouveau blog en anglais / New blog in english ! par Le blog de Patrick [MVP SharePoint] le 09-18-2014, 18:42

- [ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour ! par Le blog de Patrick [MVP SharePoint] le 09-15-2014, 11:31

- [ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services par Le blog de Patrick [MVP SharePoint] le 09-11-2014, 08:50

- Problème de déploiement pour une démo SharePoint/TFS? par Blog de Jérémy Jeanson le 09-10-2014, 21:52

- [ #Office365 ] Delve first impressions / Premières impressions sur Delve par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 16:57

- [ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ? par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 08:25