Masters IIGLI et IGLII – Programmation générique et conception objet – 2005-2006 – Claude Montacié 1 Cours n° 9 Interopérabilité logicielle I Entre C++

Slides:



Advertisements
Présentations similaires
Cours n° 1 Introduction à la programmation
Advertisements

Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Langage C# et Plate-forme .NET
Cours n° 1 Présentation du langage C++
Cours n° 2 Les entrées-sorties Biliothèque C++ (iostream) –
Cours n° 7 Standard Template Library II.
Cours n° 6 Standard Template Library I.
Introduction au langage C++
Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Appels de fonctions natives sous C#
Object Management Architecture (OMA)
L’architecture .net et ASP.net
(Classes prédéfinies – API Java)
Cours 2 : Les Web Services Concepts Généraux
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
UML (Unified Modeling Langage)
Architecture de machines Principes généraux
Cours Visual Basic pour Application
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Introduction aux services WEB
CPI/BTS 2 Programmation Web Introduction au PHP
XML-Family Web Services Description Language W.S.D.L.
Démarche de résolution de problèmes
Programmation Approche composants Ing5 SI
Programme et Langage C++
Introduction à la programmation (Java)
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Bases de la programmation en C++
Algorithmique et Programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Microsoft .NET.
Introduction IFT6800 Jian-Yun Nie.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 1 Préliminaires.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 4 Polymorphisme II.
Une introduction à Java
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 10 Interopérabilité logicielle I Entre C++
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Les différents langages de programmation
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
Travail réalisé par : LATRECHE Imed Eddine MENASRIA Med Lamine
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Programmer en langage c
Programmation Système et Réseau (sous Linux)
Présentation de CORBA et de IIOP
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Cours Architecture des Systèmes Informatiques
CORBA Un concept de l ’OMG Mathieu Estival Biomédical, 3°Année.
Cours 1 1 Java. Cours 1 2 Plan général 1.Introduction 2.Les types primitifs, évaluation d’expressions 3.Instructions for, if…. 4.Introduction de l’objet,
UML : un peu d’histoire H. Lounis.
Introduction à la plateforme .NET
CSI 3525, Histoire, page 1 Aperçu historique Voir le chapitre 2 du livre pour plus de détails.
Cours n° 1 Présentation du langage C++
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES
Histoire de la programmation
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
Transcription de la présentation:

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 9 Interopérabilité logicielle I Entre C++ et Perl

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 2 1. Interopérabilité entre C++ et Perl 1.Appels de programmes et de sous-programmes Perl en C++ Sommaire

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 3 INTRODUCTION Problématique (1) Multitude de langages informatiques universels 1956 – Fortran (FORmula TRANslation) 1959 – Cobol (COmmon Business-Oriented Language) (DARPA) 1965 – Basic (Beginner's All-purpose Symbolic Instruction Code) 1968 – Pascal (successeur d’Algol-1951 ALGOrithm Langage) 1972 – C (successeur de B lui-même successeur de A-1951) Bell Labs 1981 – C – Ada (DARPA) 1995 – PHP (Personal Home Pages Hypertext Processor) 1996 – Java (Sun) 2000 – C# (Microsoft) 2001 – WDSL (Web Services Description Language ) IBM, Microsoft

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 4 INTRODUCTION Problématique (2) Pas de langage informatique universellement utilisé Habitudes de programmation anciennes normes de développement Maintenance du logiciel existant Bibliothèques de composant logiciel Difficulté de la traduction automatique Influence du matériel ancienneté du parc machine disponibilité des compilateurs et des interpréteurs inflation de la mémoire utilisée Nécessité d’une interopérabilité entre langages

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 5 INTRODUCTION Solutions (1) - CORBA ( Common Object Request Broker Architecture Pont logiciel ou intergiciel (norme de communication inter-applications en environnement hétérogène) multi-langages, multi-systèmes, multi-communications Langage de définition d’interfaces (Interface Definition Langage) Transmission des paramètres par un bus logiciel (Object Request Broker) 1995 – Version 2.0 IDL pour les langage C, C – Version 2.1 IDL pour les langages Cobol et Ada 1998 – Version 2.2 IDL pour le langage Java (version standard) 2003 – Règles de construction des IDL, standardisées pour les langages Lisp, PL1, Python, Smalltalk, XML/DTD Solution complexe, non triviale à mettre en oeuvre

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 6 INTRODUCTION Solutions (2) - Microsoft.NET ( Plateforme Microsoft pour les services Web/XML Intégré au système d’exploitation Windows (CE, XP, Xbox) Bibliothèque unifiée de classes accessible d’un ensemble de langages CLR (C, C++, C#, Cobol, Fortran, Eiffel, Python, Pascal mais pas Java) Langage commun de spécification d’interface CLS (inspiré de CORBA) Plateforme de développement multilingue (Visual Studio.NET) Lancement en 2001 Solution efficace, plus simple que CORBA à mettre en œuvre, mais propriétaire

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 7 INTRODUCTION Solutions (3) - Java Native Interface ( Interface de communication entre des méthodes en Java et des méthodes écrites dans un autre langage (non natives) Intégrée directement le langage Java (langage pivot) Prise en compte de types évolués (objet) 1996 JDK 1.0 – Native Method Interface (NMI) 1997 JDK 1.1 – Java Native Interface (JNI) 2002 J2SE 1.4 – Java Native Interface Extension Solution très efficace, facile à mettre en œuvre, mais restreinte aux langages C, C++ (Cobol, Ada, Fortran)

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 8 INTRODUCTION Solutions (4) - Edition de Liens Assemblage d’un ensemble de programmes compilés dans le but de créer un exécutable Introduit par la programmation modulaire Norme commune de représentation des symboles (noms de variables et de méthodes) Pas de norme commune de représentation des variables Restriction aux langages compilés natifs (C, C++, Pascal, Ada, Fortran, Cobol) Librairies statiques (.o.lib) ou dynamiques (.dll.so) Solution simple, accessible sur tous systèmes, mais complexe si transmission de paramètres

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié INTEROPERABILITE ENTRE C++ ET PERL Caractéristiques et méthodologies Lien naturel entre C++ et Perl Implémentation de Perl en C, Bibliothèque Perl58.lib (toutes les fonctionnalités de Perl) Edition de liens statique (ajout d’un interpréteur Perl) Bibliothèques de macros et de fonctions perlembed (ajout d’un interpréteur Perl) perlcall (conventions de communication entre C++ et Perl) perlguts (API Perl) Ajout d’un interpréteur Perl (fonction PerlToCpp) Un paramètre d’entrée (1 booléen) création (true) / destruction (false) Paramètre de retour (PerlInterpreter) référence sur un interpréteur Perl

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Extrait de l’API Perl perl_parse(…) Evaluation d’une expression ou exécution d’un programme call_pv(N, T) Exécution d’un sous-programme N T (type du retour) {G_NOARGS, G_SCALAR, G_ARRAY} newSViv(I) Conversion (C++ -> Perl) d’un entier I newSVpv(s, 0) Conversion de (C++ -> Perl) d’une chaîne de caractères s newSVnv(x) Conversion de (C++ -> Perl) d’un réel x sv_2mortal(V) Ajout d’une variable v dans la pile Perl POPi Conversion du sommet de Pile en un entier (Perl -> C++) POPp Conversion du sommet de Pile en une chaîne de caractères (Perl -> C++) POPs Conversion du sommet de Pile en un réel (Perl -> C++)

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Exemple 1 – Exécution du programme « bonjour.pl » print("bonjour"); Implémentation Perl 5.8 (fonction CallPerlProgram) Deux paramètres d’entrée (référence sur un interpréteur Perl, nom du programme Perm) #include "CppToPerl.h" int main (int argc, char* argv[]) { PerlInterpreter *iPerl = CppToPerl(true); string prog("cours4b/perl/bonjour.pl"); CallPerlProgram(iPerl, prog); }

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Exemple 2 – Exécution d’un sous-programme (1) sub boucle { for ( $i=10 ; $i>=0 ; $i-- ) { print("$i"); } Création d’une méthode d’interface void boucle(PerlInterpreter *my_perl) { cout >" << endl; call_pv("boucle", G_NOARGS); }

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Exemple 2 – Exécution d’un sous-programme (2) int main (int argc, char* argv[]) { PerlInterpreter *iPerl = CppToPerl(true); string prog("cours4b/perl/lib1.pl"); CallPerlProgram(iPerl, prog); boucle(iPerl); Exécution Début d'exécution du programme Perl > >

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Exemple 3 – Passage de paramètres (1) sub ssChaineG { my($s, $n) ; return substr($s, 0, $n); }

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Création et utilisation d’une pile Perl string ssChaineG(PerlInterpreter *my_perl, string s, int n) { dSP ; ENTER ; SAVETMPS ; PUSHMARK(SP) ; // création de la pile XPUSHs(sv_2mortal(newSVpv(s.c_str(), 0))); // string empilé XPUSHs(sv_2mortal(newSViv(n))); // entier empilé PUTBACK ; call_pv("ssChaineG", G_SCALAR);// lancement du sous-programme SPAGAIN; string res((char*)POPp);// résultat dépilé PUTBACK; FREETMPS ; LEAVE ; return res; }

Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié APPEL DE PROGRAMMES ET DE SOUS-PROGRAMMES PERL EN C++ Exemple d’exécution int main (int argc, char* argv[]) { PerlInterpreter *iPerl = CppToPerl(true); string prog("cours4b/perl/lib1.pl"); CallPerlProgram(iPerl, prog); string s("maison rouge"); cout << ssChaineG(iPerl, s, 4) << endl; } > mais