IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Langage impératif très facile?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Par défaut Langage impératif très facile?
    Bonjour,

    Je suis sur la création d'un programme en C# qui aura pour but entre autres d'interpréter un langage impératif.

    En fait, je souhaite qu'un utilisateur ayant le minimum de connaissances en programmation puisse coder.

    Voici un programme simple qui pourrait être réalisé:

    fonction main
    {
    Test();
    Test2();
    }

    Rien de plus, un langage très haut niveau quoi.
    Que me proposez vous ?

    Je vous remercie!

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un utilisateur ayant peu de connaissances ne pourra pas écrire du code, même simple, le mieux étant alors de faire une interface style workflow

    mais si ca peut t'être utile, on peut compiler du code .net à la volée à partir d'un string et l'appeler
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Franck0 Voir le message
    Que me proposez vous ?
    De ne pas le faire en C# ?

    Non sérieusement, faire un langage en C#, c'est déjà un langage avec je ne sais combien de couches et énormément de dépendances ! En générale lorsqu'on fait un langage, on le fait avec un langage de plus bas niveau comme en C ou encore un mixe avec C et Flex/Bison (ou Lex/Yacc). D'autant plus que créer un langage n'est pas si simple en soit car beaucoup d'aspects entre en jeu comme la théorie des langages par exemple, il te faut un analyseur syntaxique, sémantique, etc...

    Donc si tu veux un langage portable, pas de C# ou bien tu sera limité par le nombre d'OS qui supportent C#
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il nous manque une précision, tu veux faire un langage de développement ou un morceau d'une appli où l'utilisateur pourra se faire quelques fonctions automatisées avec des lignes de commandes ?

    car si tu veux faire un langage complet en effet ce n'est pas la peine d'essayer je pense ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Par défaut
    Je suis en fait obligé d'utiliser C#.

    J'ai besoin de faire un interpréteur de code assez simple, qui sera exécuté au démarrage de l'application et qui permettra de modifier l'application elle même.

    Ce matin j'ai refait quelques recherches et j'ai trouvé cet article:

    http://www.codeproject.com/Articles/...s-using-Csharp

    Je vais le lire et essayer de reproduire un interpréteur.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un système de plugin par dll ne conviendrait pas ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Un exemple d'utilisation de CodeDom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    // executable assumed to be "MyProg.exe" 
    using System.CodeDom ;
    using System.CodeDom.Compiler ;
    namespace MyNameSpace
    {
      public partial class MyForm : Form
     ... 
     
    private void button2_Click(object sender, EventArgs e)
    {
      string result = ExecuteUserCode("int i=100 ; int j=23 ; MyNameSpace.MyForm.UnTest() ; result=(i+j).ToString() ; ") ;
      MessageBox.Show(result) ;
    }
     
    public static void UnTest() { MessageBox.Show("Test") ; }
     
    delegate string ExecDelegate();
     
    private static string ExecuteUserCode(string UserCode)
    {
      string CRLF = Environment.NewLine ;
      string SourceHeader = "using System; "               +CRLF+ // eventually add other reference
                            "class UserClass"              +CRLF+
                            "{"                            +CRLF+
                            "  static public string Exec()"+CRLF+
                            "  {"                          +CRLF+
                            "     string result=\"\" ;"    ;
      string SourceFooter = "     return result ; "        +CRLF+
                            "  }"                          +CRLF+
                            "}"                            ;
      string error="" ;
      Assembly assembly = CompileSource(SourceHeader+UserCode+SourceFooter,out error);
      string result="" ;
      if (assembly==null) result=error ;
      else
      {
        MethodInfo ExecMethod = assembly.GetType("UserClass").GetMethod("Exec");
        result=((ExecDelegate)Delegate.CreateDelegate(typeof(ExecDelegate), ExecMethod))();
      }
      return result ;
    }
     
    private static Assembly CompileSource( string sourceCode,out string error )
    {
       CompilerParameters cp = new CompilerParameters();
       cp.ReferencedAssemblies.Add("System.dll");
       cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
       cp.ReferencedAssemblies.Add("MyProg.exe"); // eventually add other reference
       cp.GenerateExecutable = false;
       CompilerResults cr = new  Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource(cp, sourceCode);
       error="" ;
       for (int i=0;i<cr.Errors.Count;i++) 
         error+=(i==0?"":Environment.NewLine)+"Line "+cr.Errors[i].Line.ToString()+" : "+cr.Errors[i].ErrorText;
       return cr.Errors.Count==0?cr.CompiledAssembly:null;
    }

Discussions similaires

  1. [Débat] Langage Fonctionnel vs Langage impératif
    Par millie dans le forum Débats sur le développement - Le Best Of
    Réponses: 152
    Dernier message: 30/08/2010, 10h35
  2. [Très facile] tutoriel de sun ComboBox
    Par grabriel dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/02/2007, 13h37
  3. Les langages les plus faciles et à apprendre en priorité
    Par florent2005 dans le forum Débuter
    Réponses: 6
    Dernier message: 07/10/2005, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo