Lier Erlang avec d autres langages de programmation

Dimension: px
Commencer à balayer dès la page:

Download "Lier Erlang avec d autres langages de programmation"

Transcription

1 16 Lier Erlang avec d autres langages de programmation Les logiciels actuels, quelle que soit leur taille, sont souvent écrits dans plusieurs langages de programmation. Généralement, les pilotes de périphériques sont écrits en C et de nombreux environnements de développement intégrés comme Eclipse sont écrits en Java ou en C# ; les applications web peuvent être développées en Ruby et en PHP. De son côté, Erlang permet d offrir une concurrence légère et résistante aux pannes et, pour manipuler ou analyser efficacement des chaînes de caractères, Perl et Python sont la norme. Par ailleurs, si la bibliothèque dont vous avez besoin pour résoudre un problème n existe pas dans votre langage favori, vous devrez alors choisir entre utiliser une bibliothèque externe ou tout recoder vous-même en Erlang 1. La communication entre les langages n est jamais simple, qu il s agisse du langage naturel ou des langages de programmation. Avec le premier, il faut comprendre comment chaque langue fonctionne utilise-t-elle des articles? Différencie-t-elle le genre? Où sont placés les verbes dans une phrase? Il faut également savoir traduire les mots le verbe ser du portugais signifie-t-il la même chose que "être" en français? (La réponse est non.) Il en va de même pour les langages de programmation : quel paradigme utilisent-ils? Sont-ils fonctionnels, orientés objet, concurrents ou structurés? Est-ce qu un entier Java est identique à un entier Erlang? (La réponse est non!) En outre, cette communication entre les langages n est pas tout ; Erlang/OTP permet également de communiquer en utilisant XML, ODBC, CORBA, ASN et SNMP, qui aident Erlang dans son rôle sans cesse croissant de "colle distribuée" pour relier des programmes monothreads classiques. 1. C est ce que fait Wrangler, l outil de refactoring pour Erlang, pour détecter le code dupliqué : il utilise une bibliothèque C efficace pour identifier les "clones" éventuels dans le code Erlang.

2 362 Programmer en Erlang Présentation du problème Erlang fournit un certain nombre de mécanismes pour travailler avec plusieurs langages : un modèle de haut niveau reposant sur des nœuds Erlang distribués, un modèle de plus bas niveau permettant de communiquer avec un programme externe par un port et un mécanisme permettant de lier des programmes les pilotes liés dans la machine virtuelle elle-même. Le modèle de programmation distribuée d Erlang offre une solution à la fois simple et souple au problème du fonctionnement des autres langages avec Erlang : les programmes écrits dans d autres langages s exécutent dans d autres nœuds sur la même machine ou sur des machines différentes et apparaissent comme des nœuds Erlang distribués qui envoient et reçoivent des messages. Ces nœuds offrent un environnement dans lequel les programmes externes peuvent s exécuter, mais également communiquer avec des nœuds Erlang. Pour que cet échange avec un programme écrit dans un autre langage fonctionne, on peut utiliser des ports ou fournir un modèle plus élaboré des primitives de communication Erlang dans cet autre langage. Dans les deux cas, il faut savoir comment gérer les types de base et traduire les structures de données composées entre les deux langages. Dans ce chapitre, nous verrons comment construire des nœuds en Java et en C qui peuvent interagir avec Erlang. Nous présenterons également erl_call, qui permet au shell Unix de communiquer avec un nœud Erlang distribué et qui repose sur la bibliothèque erl_interface fournie avec Erlang, tout comme le paquetage Java JInterface. Ces bibliothèques offrent un code et une architecture stables aux dépens de la vitesse pure. Puis nous expliquerons comment communiquer au moyen des ports et nous donnerons un exemple d interaction avec Ruby en nous servant de la bibliothèque erlectricity. Autres langages Ce chapitre traite des interactions avec Java, C et Ruby, mais Erlang peut être lié à un grand nombre d'autres langages de programmation : OTP.NET fournit un lien vers la plateforme.net, via un portage du code de JInterface. Py-Interface, une implémentation Python d'un nœud Erlang, permet de faire communiquer ces deux langages. Le Perl Erlang-Port permet à du code Perl de communiquer avec Erlang via un port. PHP/Erlang est une extension PHP fournissant un ensemble de fonctions pour transformer un thread PHP en nœud Erlang C. Haskell/Erlang-FFI autorise une communication complète et dans les deux sens entre des programmes écrits en Haskell et en Erlang. Les messages envoyés depuis Haskell vers Erlang ressemblent à des appels de fonctions et les messages envoyés d'erlang à Haskell sont délivrés à des MVar. L'interface Erlang/Gambit permet de faire communiquer Scheme et Erlang. Distel améliore le mode Erlang d'emacs en autorisant l'interaction entre Emacs Lisp et Erlang.

3 Chapitre 16 Lier Erlang avec d autres langages de programmation 363 Pour obtenir une interaction la plus efficace possible, vous pouvez définir un pilote lié. Cependant, un pilote lié mal écrit pouvant provoquer des fuites mémoire, figer ou crasher tout le système d exécution d Erlang, ces pilotes doivent être utilisés avec la plus grande prudence. Interagir avec Java Le paquetage Java JInterface offre à Java un modèle de processus et de communication à la Erlang. Vous pouvez l utiliser seul pour bénéficier de la concurrence de type Erlang en Java, ou comme composante d un système distribué mélangeant les deux langages afin d intégrer des composants Erlang dans un système Java et vice versa. JInterface est une collection de classes Java dont les noms commencent quasiment tous par Otp. Cette section décrira les plus utilisées et donnera des exemples d envoi de messages et de gestion des types de données entre les deux langages. Vous trouverez plus d informations sur JInterface et ses classes Erlang dans la section "Interface and Communication Applications" de la documentation d Erlang/OTP. Le fil rouge de cette section sera une réécriture de l exemple d appel de procédure distante (RPC) du Chapitre 11. Nœuds et boîtes aux lettres Nous avons décrit les nœuds Erlang au Chapitre 11, qui a également présenté la programmation distribuée. Un nœud Erlang est désigné par son nom, constitué d un identifiant suivi d un nom d hôte (au format court ou long) ; chaque hôte peut exécuter plusieurs nœuds, pourvu que leurs noms soient différents. La classe OtpNode est la représentation JInterface d un nœud Erlang : OtpNode machin = new OtpNode("machin"); Cette instruction crée l objet Java machin que nous appellerons un nœud, qui représente le nœud Erlang machin qui s exécute sur la machine sur laquelle elle est exécutée. Vous pouvez créer un processus sur ce nœud en créant une boîte aux lettres, représentée par un identifiant de processus ou enregistrée sous un certain nom. L instruction suivante crée un processus : OtpMbox mbox = machin.creatembox(); Pour donner un nom à cette boîte, il suffit de passer une chaîne en paramètre : OtpMbox mbox = machin.creatembox("serveurfacto"); L enregistrement peut également s effectuer après la création : mbox.registername("serveurfacto");

4 364 Programmer en Erlang Dans les deux cas, le processus est enregistré sous le nom serveurfacto. Nous l avons nommé ainsi car il agira comme un "serveur de factorielles" en renvoyant la factorielle des entiers qu il reçoit aux processus qui les ont envoyés. Vous pouvez désormais accéder à cette boîte aux lettres par son nom. Si vous avez également besoin de son identifiant de processus pour un nœud Erlang distant, par exemple, utilisez sa méthode self() : OtpErlangPid pid = mbox.self(); Représentation des types Erlang Le paquetage JInterface contient plusieurs classes pour représenter les différents types Erlang en Java. Leurs méthodes permettent de convertir les types natifs dans ces représentations et réciproquement, ce qui est essentiel à l interaction entre les deux langages. Nous avons déjà vu un exemple dans l instruction précédente : la classe OtpErlang- Pid produit la représentation Java d un identifiant de processus Erlang. De même, les classes OtpErlangAtom,..., OtpErlangTuple, OtpErlangObject permettent de représenter les atomes, les binaires, les listes, les ports, les références, les tuples et les termes. Les types points flottants d Erlang sont convertis en OtpErlangFloat ou OtpErlang- Double ; les types entiers en OtpErlangByte, OtpErlangChar, OtpErlangShort, OtpErlangInt, OtpErlangUInt ou OtpErlangLong, selon la valeur et le signe de la valeur concernée. La classe OtpErlangBoolean permet de représenter les deux atomes spéciaux true et false et les chaînes Erlang qui ne sont que des listes d entiers sont décrites par la classe OtpErlangString. Tous les détails de ces classes se trouvent dans la documentation de JInterface ; nous les utiliserons dans la prochaine section et dans l exemple RPC. Communication Les processus Erlang envoient et reçoivent des messages ; dans JInterface, ces opérations sont implémentées par les méthodes send et receive d une boîte aux lettres. Les messages échangés sont des termes Erlang et sont donc représentés par des objets OtpErlangObject en Java. L envoi du message suivant dans le processus mbox : Pid! {ok, M} sera donc traduit par : mbox.send(pid,tuple);

5 Chapitre 16 Lier Erlang avec d autres langages de programmation 365 où la variable Java pid correspond à la variable Erlang Pid, et tuple 2 représente le terme Erlang {ok, M}. Un message est reçu par une instruction de la forme : OtpErlangObject o = mbox.receive(); Cette instruction est différente d un receive Erlang car elle n effectue aucun pattern matching sur le message. Nous verrons dans l exemple suivant comment décomposer et analyser ce message. Récapitulatif : RPC revisité Le code Erlang suivant met en place un serveur de factorielles sur le nœud machin de l hôte STC : setup() -> serveur() -> register(serveurfacto,self()), factoloop(). factoloop() -> receive {Pid, N} -> Pid! {ok, facto(n)} end, factoloop(). Le serveur reçoit des messages de la forme {Pid, N} et renvoie le résultat {ok, facto(n)} au processus identifié par Pid. Voici le code Java qui effectue le même travail : 1 import com.ericsson.otp.erlang.*; // Pour JInterface 2 import java.math.biginteger; // Pour la factorielle 3 4 public class NoeudServeur { 5 6 public static void main (String[] _args) throws Exception{ 7 8 OtpNode machin = new OtpNode("machin"); 9 OtpMbox mbox = machin.creatembox("serveurfacto"); OtpErlangObject o; 12 OtpErlangTuple msg; 13 OtpErlangPid de; 2. Si vous programmez en Erlang depuis plusieurs années et que vous soyez troublé par le fait que des variables comme pid et tuple sont toutes en minuscules, vous n êtes pas seul. Ce qui est important, ici, est que vous ne les preniez pas pour des atomes.

6 366 Programmer en Erlang 14 BigInteger n; 15 OtpErlangAtom ok = new OtpErlangAtom("ok"); while(true) try { 18 o = mbox.receive(); 19 msg = (OtpErlangTuple)o; 20 de = (OtpErlangPid)(msg.elementAt(0)); 21 n = ((OtpErlangLong (msg.elementat(1))).bigintegervalue(); 22 OtpErlangObject[] reponse = new OtpErlangObject[2]; 23 reponse[0] = ok; 24 reponse[1] = new OtpErlangLong(Facto.facto(n)); 25 OtpErlangTuple tuple = new OtpErlangTuple(reponse); 26 mbox.send(de,tuple); }catch(otperlangexit e) {break; } 29 } 30 } Dans cet exemple, les aspects concurrents sont marqués en gras aux lignes 8, 9, 18 et 26 ; le reste sert à analyser, à décomposer et à reconstruire les valeurs des données et à créer la boucle de contrôle. Le programme principal commence par lancer un nœud machin et un processus serveurfacto sur ce nœud. La boucle qui s étend de la ligne 18 à la ligne 26 reçoit et répond à un message. Le message reçu est un terme Erlang, c est-à-dire un OtpErlangObject, qui est transtypé en OtpErlangTuple à la ligne 19 pour pouvoir en extraire l identifiant de l expéditeur (ligne 20) et l entier envoyé (ligne 21). Cette valeur est extraite comme un entier long mais est convertie en BigInteger pour permettre le calcul de sa factorielle. Le reste du code (lignes 22 à 26) construit et envoie le tuple reponse. La ligne 22 crée un tableau d objets contenant la représentation de l atome ok (ligne 23) et la valeur renvoyée par facto(n) (ligne 24). Ce tableau est ensuite reconverti en tuple (ligne 25) avant d être renvoyé au client à la ligne 26. Interactions Pour interagir avec le nœud Java, vous pouvez utiliser le code suivant et appeler la fonction monrpc:f/1 à partir du shell Erlang : -module(monrpc).... f(n) -> {serveurfacto, {self(), N}, receive {ok, Res} -> io:format("la factorielle de ~p est ~p.~n", [N,Res]) end.

7 Chapitre 16 Lier Erlang avec d autres langages de programmation 367 Ce code client est exactement le même que celui qui permet d interagir avec un nœud Erlang ; un "test de Turing" 3 envoyant des messages au nœud ou en recevant de celui-ci devrait être incapable de faire la différence entre un nœud Java et un nœud Erlang. Notes de bas de page Nous expliquerons dans cette section comment utiliser correctement JInterface dans vos programmes. Pour établir et gérer les connexions entre les nœuds Java et Erlang, il faut d abord que epmd (Erlang Port Mapper Daemon) s exécute vous pouvez le lancer en tapant simplement epmd (la version Windows du programme s appelle epmd.exe) et tester qu il s exécute déjà à l aide de la commande suivante : epmd -names Vous obtiendrez alors la liste des nœuds Erlang qui s exécutent sur la machine et vous pourrez donc vérifier qu un nœud a bien été lancé. Le système créera un nœud avec le cookie par défaut si vous n en fournissez pas. Pour créer un nœud avec un cookie précis, utilisez une instruction de la forme : OtpNode machin = new OtpNode("machin", "valeur-cookie"); S il faut utiliser un port particulier, celui-ci sera passé en troisième paramètre. La ligne 1 du programme de la section "Récapitulatif : RPC revisité" importait le paquetage JInterface, mais il faut également indiquer son emplacement au compilateur et à la machine virtuelle car il fait partie de la distribution OTP, pas de la distribution Java. Son chemin est de la forme : <racine-otp>/jinterface-xxx/priv/otperlang.jar où <racine-otp> est le répertoire racine de la distribution, tel qu il est renvoyé par l appel code:root_dir() dans un nœud, et XXX est le numéro de version. Sur Mac OS X, ce chemin est le suivant : /usr/local/lib/erlang/lib/jinterface-1.4.2/priv/otperlang.jar Voici comment indiquer ce chemin au compilateur : javac -classpath ".:/usr/local/lib/erlang/lib/jinterface-1.4.2/priv/otperlang. jar" NoeudServeur.java 3. Le test de Turing a été créé par le mathématicien pionnier de l informatique Alan Turing ( ) pour tester l intelligence d une machine. L idée, traduite en technologie moderne, est que le testeur discute sans les voir avec deux "interlocuteurs" en ligne une personne et une machine : s il ne peut pas reconnaître formellement qui est l humain et qui est la machine, la machine est considérée comme faisant preuve d intelligence.

8 368 Programmer en Erlang et à la machine virtuelle Java : java -classpath ".:/usr/local/lib/erlang/lib/jinterface-1.4.2/priv/otperlang. jar" NoeudServeur Pour aller plus loin JInterface a bien d autres possibilités que celles que nous venons de voir : Les méthodes link et unlink d OtpMbox permettent, respectivement, de se lier et de se libérer d une boîte aux lettres Java ou d un processus Erlang. Notre exemple suppose que les connexions entre les nœuds sont créées automatiquement. Vous pouvez également utiliser la méthode ping sur un nœud afin de tester si un nœud distant existe : en ce cas, la connexion est automatique. Vous pouvez envoyer des données quelconques entre les nœuds en passant par des données binaires, qui seront gérées par la classe OtpErlangBinary. La classe OtpConnection fournit un mécanisme de haut niveau pour les RPC, exactement comme le fait le module rpc pour Erlang. Les méthodes d OtpConnection permettent également de tracer l exécution. Toutes ces fonctionnalités sont décrites en détail avec les autres dans la documentation en ligne. Nœuds C La bibliothèque C erl_interface permet de construire des termes binaires Erlang encodés en C, d y accéder et de les manipuler. Elle fournit également des fonctions pour gérer l allocation mémoire, accéder aux noms globaux et signaler les erreurs : erl_marshal, erl_eterm, erl_format et erl_malloc permettent de gérer le format des termes Erlang, notamment la gestion mémoire. Ces fonctions autorisent également la conversion des termes Erlang en structures C et réciproquement. erl_connect et ei_connect permettent de se connecter à Erlang via un nœud Erlang distribué. erl_error affiche les messages d erreur. erl_global donne accès aux noms globaux. registry permet de stocker et de sauvegarder des paires clé-valeur. On retrouve ainsi une partie des fonctionnalités des tables ETS, et ces paires peuvent être sauvegardées et restaurées avec une table Mnesia sur un nœud Erlang lié.

9 Chapitre 16 Lier Erlang avec d autres langages de programmation 369 En outre, le format de terme externe d Erlang est une représentation d un terme Erlang sous forme d une suite d octets, c est-à-dire un binaire. Les BIF term_to_binary/1 et binary_to_term/1 permettent de passer de l un à l autre. Nous étudierons ce format plus en détail dans la section "Programmes ports", plus loin dans ce chapitre. Nous reprendrons ici l exemple de serveur de factorielles que nous venons d étudier en Java, mais en l écrivant en C en nous appuyant sur l exemple fourni dans le "Interoperability Tutorial for Erlang" : 1 /* facto.c */ 2 3 #include <stdio.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 8 #include "erl_interface.h" 9 #include "ei.h" #define BUFSIZE int main(int argc, char **argv) { 14 int fd; /* descripteur de fichier du nœud Erlang */ int loop = 1; /* Indicateur de boucle */ 17 int recu; /* Résultat de receive */ 18 unsigned char buf[bufsize] /* Tampon pour message entrant */ 19 ErlMessage emsg; /* Message entrant */ ETERM p_de, p_param, p_res; /* Repr. des termes Erlang */ 22 int facto(int y); /* Initialisation de erl_interface (une fois seulement) */ 25 erl_init(null, 0); /* Initialisation du mécanisme de connexion */ 28 if (erl_connect_init(1, "moncookie", 0) == -1) 29 erl_err_quit("erl_connect_init"); /* Connexion à un nœud Erlang */ 32 if ((fd = < 0) 33 erl_err_quit("erl_connect"); while (loop) { 36 /* Message reçu */ 37 recu = erl_receive_msg(fd, buf, BUFSIZE, &emsg); if (recu == ERL_TICK) { 40 /* ignore */ 41 } else if (recu == ERL_ERROR) { 42 loop = 0; 43 } else { 44 if (msg.type == ERL_REG_SEND) {

10 370 Programmer en Erlang 45 /* Extraction des champs du message */ 46 p_de = erl_element(1, emsg.msg); 47 p_param = erl_element(2, emsg.msg); /* Appel de facto() et renvoi du résultat */ 50 p_res = erl_format("{ok, ~i}",facto(erl_int_value(p_param))); 51 erl_send(fd, p_de, p_res); /* Libération de la mémoire */ 54 erl_free_term(emsg.from); erl_free_term(emsg.msg); 55 erl_free_term(p_de); erl_free_term(p_param); 56 erl_free_term(p_res); 57 } } } int facto(int y) { 60 if (y < 0) 61 return 1; 62 else 63 return y * facto(y - 1); 64 } La forme générale du code C ressemble à celle du nœud Java précédent, sauf que le code C utilise plus d opérations de bas niveau : inclusion des fichiers en-têtes de C (lignes 3 à 6) et de l interface Erlang (lignes 8 et 9) ; allocation de mémoire pour le tampon d entrée (lignes 11 et 18) ; libération de la mémoire allouée aux termes Erlang (lignes 53 à 56). Les lignes 24 à 33 mettent en place le nœud et le connectent à un nœud Erlang : erl_init(null, 0) initialise la bibliothèque erl_interface et ne doit être appelée qu une fois par programme. erl_connect_init(1, "moncookie", 0) initialise le mécanisme de connexion, en fixant notamment le numéro du nœud (1, ici) et le cookie utilisé. fd = se connecte au nœud Erlang et renvoie un descripteur de fichier pour la connexion. Les lignes 35 à 57 forment une boucle sans fin qui lit un message (ligne 37) grâce à la ligne suivante : recu = erl_receive_msg(fd, buf, BUFSIZE, &emsg); Cette instruction recevra un message dans le tampon buf et le décodera pour obtenir un terme Erlang, emsg. Les messages ERL_TICK qui vérifient qu un nœud est vivant sont ignorés (ligne 40) et la boucle se termine lorsqu elle reçoit un message ERL_ERROR (ligne 42). Le reste de la boucle effectue le traitement suivant :

11 Chapitre 16 Lier Erlang avec d autres langages de programmation 371 Extraction de l identifiant de l expéditeur du message, p_de, et de son contenu, p_ param (lignes 46 et 47). Conversion de p_param en entier C et passage de celui-ci en paramètre à la fonction facto(), puis renvoi du terme Erlang {ok, facto(...(p_param))} au processus p_de (ligne 51). L appel erl_format se sert d une chaîne de format pour construire des termes Erlang lisibles. Pour construire le même terme manuellement, vous p ourriez utiliser les instructions suivantes : tab[0] = erl_mk_atom("ok"); tab[1] = erl_mk_integer(facto(erl_int_value(p_param))); p_res = erl_mk_tuple(tab, 2); Enfin, libération de la mémoire utilisée par les termes Erlang (lignes 54 à 56). Pour compiler ce programme C, indiquez les emplacements des fichiers erl_ interface.h, liberl_interface.a et libei.a et précisez que vous utilisez ces bibliothèques : gcc -o facto -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include \ -L/usr/ local/lib/erlang/lib/erl_interface-3.5.9/lib facto.c -lerl_interface -lei Dans la commande ci-dessus, les chemins mènent à la dernière version d erl_interface sur votre système. L exécutable produit s appellera facto et se trouvera dans le répertoire courant. Voici maintenant le code Erlang pour se connecter au nœud C. En général, le nom du nœud C est cn, où N est le numéro d identification du nœud. Ici, nous utilisons donc : -module(facto). -export([call/1]). call(x) -> {any, {self(), X}, receive {ok, Result} -> Result end. Son utilisation dans le shell Erlang donne le résultat suivant : % erl -sname "truc" -setcookie "moncookie"... L'exécutable C devrait être appelé... c(facto). {ok,facto} facto:call(7) facto:call(0). 1 Ici, le nœud C agit comme un client : le nœud Erlang doit donc être lancé d abord pour qu il s exécute déjà lorsque le nœud C tentera de s y connecter.

12 372 Programmer en Erlang Pour aller plus loin Le nœud C que nous venons de décrire s exécute comme un client : il peut se connecter à des nœuds Erlang. Il peut également s exécuter en mode serveur il faut alors que le programme crée d abord une socket écoutant sur un port particulier et qu il la publie à l aide d epmd. Il pourra ensuite accepter les demandes de connexion provenant de nœuds Erlang. La bibliothèque erl_interface offre de nombreuses autres possibilités, comme le pattern matching sur les messages entrants, un système de base de registres pour stocker des paires clé-valeur et un schéma de nommage global. Toutes ces fonctionnalités, ainsi que la programmation des nœuds en mode serveur, sont décrites dans l "Interoperability Tutorial" et le guide de l utilisateur de la bibliothèque erl_interface. Erlang à partir du shell Unix : erl_call La commande Unix erl_call fait partie des "trésors cachés d OTP". Elle a été créée à partir d erl_interface pour permettre de communiquer à partir du shell Unix avec un nœud Erlang distribué. Elle permet également de compiler et d évaluer du code Erlang à partir de la ligne de commande. Son aptitude à lire sur stdin est mise à profit par d autres scripts ceux de CGI, notamment. L ensemble complet des paramètres et options de cette commande est décrit dans sa page de manuel ou résumé en appelant erl_call sans aucun paramètre ou option. Les seules options obligatoires sont -n, -name ou -sname car elles permettent de préciser le nom (ou le nom court) du nœud appelé. Elles sont souvent accompagnées de l option -s, qui lance le nœud s il ne s exécute pas déjà. L option -a est l équivalent de apply/3 et ses paramètres sont au même format, tandis que -e évalue tout ce qui est fourni sur l entrée standard (jusqu à Ctrl+D). Voici un exemple d utilisation d erl_call : % erl_call -s -a 'erlang date' -n machin {2010, 6, 12} % erl_call -s -e -n machin X=3, Y=4, X+Y. Ctrl-D {ok, 7} % erl_call -a 'erlang halt' -n machin %

Initiation au HPC - Programmation concurrente

Initiation au HPC - Programmation concurrente Initiation au HPC - Programmation concurrente Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 12 octobre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Programmation

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE Question 1 : Un paquet ou trame comprend : A - uniquement des données utilisateur B - un en-tête et des données C - des unités de transmission de taille fixe

Plus en détail

Java Avancé - Cours 2

Java Avancé - Cours 2 Java avancé - cours 2 1/8 Java Avancé - Cours 2 Plan 1 Communication entre objets 1 1.1 Motivation....................................................... 1 1.2 Relations entre le panier et le rayon.........................................

Plus en détail

Communication entre processus avec des tuyaux Fils Java. Partie A La communication entre processus avec tuyaux

Communication entre processus avec des tuyaux Fils Java. Partie A La communication entre processus avec tuyaux Systèmes d exploitation CSI3531 Labo 2 Communication entre processus avec des tuyaux Fils Java Partie A La communication entre processus avec tuyaux Objectif : Explorer le IPC avec les tuyaux UNIX/Linux

Plus en détail

Comprendre et programmer le protocole HTTP

Comprendre et programmer le protocole HTTP Comprendre et programmer le protocole HTTP Ces quatre lettres vous sont forcément familières, c est peut être la suite de lettres la plus utilisée au monde. Chaque jour en tapant http:// dans votre navigateur

Plus en détail

Systèmes répartis : les Remote Procedure Calls p.1/25

Systèmes répartis : les Remote Procedure Calls p.1/25 Systèmes répartis : les Remote Procedure Calls Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis : les Remote Procedure Calls p.1/25 Les Remote Procedure Calls

Plus en détail

Systèmes d exploitation II Chapitre 2 : Gestion des processus. www.achrafothman.net

Systèmes d exploitation II Chapitre 2 : Gestion des processus. www.achrafothman.net Systèmes d exploitation II Chapitre 2 : Gestion des processus www.achrafothman.net 1 Processus Concept de Processus Ordonnancement de Processus Opérations sur les Processus Processus Coopératifs Communication

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

Plus en détail

Introduction. Licence MASS L3 Inf f3

Introduction. Licence MASS L3 Inf f3 Le modèle client serveur Introduction Licence MASS L3 Inf f3 Encapsulation : rappel Données Données Application En-tête En-tête Transport UDP Données TCP Données Paquet UDP Segment TCP En-tête IP Données

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Familiarisation avec Eclipse / Netbeans

Familiarisation avec Eclipse / Netbeans Institut Galilée LEE Année 011-01 Master T.P. 0 Familiarisation avec Eclipse / Netbeans Lien important contenant le pdf du cours et du TP, et ensuite des sources : http://www-lipn.univ-paris13.fr/~fouquere/mpls

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Asynchronous Mailing System. Jérôme Clet-Ortega François Broquedis Dave Tapesar Stéphanie Moreaud 12 janvier 2007

Asynchronous Mailing System. Jérôme Clet-Ortega François Broquedis Dave Tapesar Stéphanie Moreaud 12 janvier 2007 Asynchronous Mailing System Jérôme Clet-Ortega François Broquedis Dave Tapesar Stéphanie Moreaud 12 janvier 2007 1 2 Objectifs Asynchronous Mailing System (AMS) doit permettre de rédiger des mails sur

Plus en détail

Interface des sockets

Interface des sockets Interface des sockets IUT Bordeaux I 08/12/2008 Interface des Sockets 1 A quoi servent les sockets? Applications client/serveur Transfert de fichiers, Connexion à distance, Courrier électronique, Groupe

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

Interfaçage de programmation. c Olivier Caron

Interfaçage de programmation. c Olivier Caron Interfaçage de programmation 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. L aspect

Plus en détail

Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java

Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java (application avec Java RMI) Éric Leclercq Département IEM / Laboratoire LE2i Décembre 2010 émail : Eric.Leclercq@u-bourgogne.fr

Plus en détail

Environnement algorithmique et conventions

Environnement algorithmique et conventions 1 Environnement algorithmique et conventions Un algorithme est un maillon de la chaîne de développement d une application. Il est le lien indispensable entre l analyse et le développement final. Ce chapitre

Plus en détail

Cours 2 : Comment construire un programme?

Cours 2 : Comment construire un programme? 1/64 Introduction à la programmation Cours 2 : Comment construire un programme? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/64 Le cours d aujourd hui 1. Striptease

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Sujet d examen 1. Pratique du C. Novembre 2009

Sujet d examen 1. Pratique du C. Novembre 2009 Durée 1 h 30 Documents autorisés Sujet d examen 1 Pratique du C Novembre 2009 Introduction Écrivez lisiblement et n hésitez pas à commenter votre code en langage C. Vous ne pouvez utiliser que les fonctions

Plus en détail

CORBA avec OpenORB. Samir Torki et Patrice Torguet

CORBA avec OpenORB. Samir Torki et Patrice Torguet CORBA avec OpenORB Samir Torki et Patrice Torguet 1 Présentation de CORBA CORBA (Common Object Request Broker Architecture) est un standard décrivant une architecture pour la mise en place d objets distribués.

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Système d exploitation

Système d exploitation Chapitre 2 Système d exploitation 2.1 Définition et rôle Un ordinateur serait bien difficile à utiliser sans interface entre le matériel et l utilisateur. Une machine peut exécuter des programmes, mais

Plus en détail

Java - TP3. Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet. Année 2008-2009

Java - TP3. Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet. Année 2008-2009 Java - TP3 Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet Année 2008-2009 Le but de ce TD est d'écrire une application client/serveur de type msn : 1. Des clients se connectent à un serveur 2. Un

Plus en détail

Architecture applicative de l application Web

Architecture applicative de l application Web Architecture applicative de l application Web Principes d organisation de l application PHP Gsb-AppliFrais Les principes d'organisation de l'application s'inspirent des travaux réalisés autour du contexte

Plus en détail

Informatique III: Programmation en C++ Introduction. Examens. Chargé de cours François Fleuret francois.fleuret@epfl.ch

Informatique III: Programmation en C++ Introduction. Examens. Chargé de cours François Fleuret francois.fleuret@epfl.ch Informatique III: Programmation en C++ Lundi 24 Octobre 2005 Chargé de cours François Fleuret francois.fleuret@epfl.ch Assistant Mathieu Salzmann mathieu.salzmann@epfl.ch Assistants étudiants Ali Al-Shabibi

Plus en détail

public class StaticExample { private static int compteur; public static double pi = 3.14159; } utilisation de la notation. respect des modificateurs

public class StaticExample { private static int compteur; public static double pi = 3.14159; } utilisation de la notation. respect des modificateurs static static : usage Le rôle essentiel d un moule est de permettre la création d objets. mais un moule a également des caractéristiques Il en est de même pour une classe. Usage : La déclaration des attributs

Plus en détail

Objectif du cours. Bases de la programmation. Plan de cette partie

Objectif du cours. Bases de la programmation. Plan de cette partie Objectif du cours Bases de la programmation Université de Nice - Sophia Antipolis Richard Grin Version 1.2.5 24/9/11 http://deptinfo.unice.fr/~grin Introduction à la programmation orientée objet pour pouvoir

Plus en détail

Programmation Socket en Java

Programmation Socket en Java Programmation Socket en Java Cours sockets Université Paul Sabatier Plan Un bon réflexe Les adresses IP en Java Sockets en mode flot La classe Socket La classe ServerSocket Communication via les Sockets

Plus en détail

420KEL Petite révision v. 1,65. Petite révision

420KEL Petite révision v. 1,65. Petite révision Petite révision Quelques petits exercices pour vous rafraîchir la mémoire et vous remettre en forme. Dans les exercices pour lesquels on vous demande de programmer, cherchez à produire un résultat à la

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Langage fonctionnel et Récursivité

Langage fonctionnel et Récursivité Langage fonctionnel et Récursivité Programmation Fonctionnelle Master 2 I2L apprentissage Sébastien Verel verel@lisic.univ-littoral.fr http://www-lisic.univ-littoral.fr/~verel Université du Littoral Côte

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Les références et la mémoire

Les références et la mémoire Chapitre 3 Les références et la mémoire 3.1 Introduction En Java, pour déclarer une variable, il faut donner son nom, précédé du type qu on souhaite lui attribuer. Ces types peuvent être des types primitifs

Plus en détail

Projet 2A STI : Supervision et audit de la sécurité système dans un réseau

Projet 2A STI : Supervision et audit de la sécurité système dans un réseau Projet 2A STI : Supervision et audit de la sécurité système dans un réseau Jeremy Briffaut,??? 8 septembre 2014 1 Objectifs Ce projet vous permettra de mettre en pratique vos connaissances acquises dans

Plus en détail

Cours Visual Basic URCA

Cours Visual Basic URCA Cours Visual Basic URCA Sommaire Introduction à la programmation VBA et VB Syntaxe de base, variables Opérateurs de base, boucles Introduction à la programmation Qu est-ce que la programmation? Séquences

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Atelier Le gestionnaire de fichier

Atelier Le gestionnaire de fichier Chapitre 12 Atelier Le gestionnaire de fichier I Présentation Nautilus est un gestionnaire de fichiers pour l environnement de bureau Gnome. Il offre toutes les fonctions de gestion de fichier en local

Plus en détail

TP N o 2 - Utilisateurs et droits

TP N o 2 - Utilisateurs et droits IUT de Villetaneuse E. Viennet GTR 2ème année Introduction au Système UNIX 22/09/03 TP N o 2 - Utilisateurs et droits Vous rédigerez un compte rendu, sur lequel vous indiquerez la réponse à chaque question,

Plus en détail

Création d un catalogue en ligne

Création d un catalogue en ligne 5 Création d un catalogue en ligne Au sommaire de ce chapitre Fonctionnement théorique Définition de jeux d enregistrements Insertion de contenu dynamique Aperçu des données Finalisation de la page de

Plus en détail

Introduction à la programmation en Java. Java sans Bluej. Ligne de commande entrées/sorties fichiers. Où en sommes-nous? Hello, world!

Introduction à la programmation en Java. Java sans Bluej. Ligne de commande entrées/sorties fichiers. Où en sommes-nous? Hello, world! Introduction à la programmation en Java Frédéric MALLET Jean-Paul ROY U.F.R. Sciences de Nice Licence Math-Info 2006-2007 Module L1I1 12-1 Où en sommes-nous? Nous savons rédiger le texte d une classe d

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java HLIN406 - Janvier 2015 Le Java Development Kit offre un ensemble d outils de développement d applications Java. Pour utiliser ces outils, JDK ne propose pas d interface utilisateur, on doit donc écrire

Plus en détail

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP Chapitre 9 Dans ce chapitre nous abordons le mécanisme RMI (Remote Method Invocation) permettant le développe ment des systèmes répartis. Nous expliquerons comment les classes d un serveur peuvent être

Plus en détail

Logiciels de Base. 2ème partie: Logiciels de base. Cours 1ère année informatique, semestre 1. Najib Tounsi

Logiciels de Base. 2ème partie: Logiciels de base. Cours 1ère année informatique, semestre 1. Najib Tounsi Logiciels de Base 2ème partie: Logiciels de base Cours 1ère année informatique, semestre 1. Najib Tounsi Lien permanent: http://www.emi.ac.ma/~ntounsi/cours/logbase/logicielsdebase-2.html 1. Les produits

Plus en détail

Chapitre 3 : Pointeurs et références

Chapitre 3 : Pointeurs et références p. 1/18 Chapitre 3 : Pointeurs et références Notion de pointeur L adresse d une variable est une valeur. On peut donc la stocker dans une variable. Un pointeur est une variable qui contient l adresse d

Plus en détail

Chapitre I Langages de programmation et langage C

Chapitre I Langages de programmation et langage C Chapitre I Langages de programmation et langage C un chapitre où l on situe le langage C dans la très nombreuse famille des langages de programmation et où l on écrit son premier programme dans ce langage.

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE

EPREUVE OPTIONNELLE d INFORMATIQUE EPREUVE OPTIONNELLE d INFORMATIQUE A) QCM Les réponses au QCM doivent être portées directement sur la feuille de sujet de QCM. Ne pas omettre de faire figurer votre numéro de candidat sur cette feuille

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

1.1 Remote Procedure Call (RPC)

1.1 Remote Procedure Call (RPC) 1.1 Remote Procedure Call (RPC) Le modèle Client-Serveur est un modèle simple à utiliser pour la structuration des systèmes répartis. Mais ce modèle s appuie sur des communications de type entrée/sortie

Plus en détail

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com RPC Remote Procedure Call Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com Objectifs Le rôle de RPC comme middleware Positionner RPC dans le modèle OSI Développement d application

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation (Operating Systems) Introduction SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/2 Qu est-ce qu un SE? Ensemble de logiciels

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Utiliser Java sans BlueJ

Utiliser Java sans BlueJ Conception objet en Java avec BlueJ une approche interactive Utiliser Java sans BlueJ Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Conception objet en Java avec BlueJ une approche

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Tutoriel de création et d utilisation d une bibliothèque dynamique (dll)

Tutoriel de création et d utilisation d une bibliothèque dynamique (dll) Tutoriel de création et d utilisation d une bibliothèque dynamique (dll) Cette procédure démontre comment on crée une bibliothèque dynamique (Dynamic Link Library ou DLL) contenant des classes utiles pour

Plus en détail

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2014-2015 (1ere session) durée 3h Tous documents et calculatrices autorisés. Répondez aux questions sur une copie séparée Le sujet comporte 8 pages

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

JAVA. Illustration d UML et Introduction à la programmation «objet» Juillet 2004 Thierry Leydier Virtualité Réelle thierry.leydier@gmail.

JAVA. Illustration d UML et Introduction à la programmation «objet» Juillet 2004 Thierry Leydier Virtualité Réelle thierry.leydier@gmail. JAVA Illustration d UML et Introduction à la programmation «objet» Juillet 2004 Thierry Leydier Virtualité Réelle thierry.leydier@gmail.com Historique JAVA est issu d'un projet de recherche chez SUN (fin

Plus en détail

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27 Gérard Swinnen Apprendre à programmer avec Python 3 Avec 60 pages d exercices corrigés! Objet Multithreading Bases de données Événements Programmation web Programmation réseau Unicode Impression PDF Python

Plus en détail

I - Introduction à la compilation et à l interprétation

I - Introduction à la compilation et à l interprétation I - Introduction à la compilation et à l interprétation Étienne M. Gagnon et Jean Privat 2009 2013 UQAM Les langages de programmation permettent aux programmeurs d écrire leurs programmes avec une notation

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr 1 Plan Principes généraux Modèle

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation Chapitre 2 Langage C 2.1 Le langage C, un langage non interprété Le C est un langage de programmation comme il en existe beaucoup d autres (C++, Fortran, Python, Matlab, IDL, ADA...). Il existe deux grandes

Plus en détail

TP1 - Introduction au langage C

TP1 - Introduction au langage C ENS Lyon L-Info PROJ1 2014-2015 TP1 - Introduction au langage C Sujet à terminer pour le dimanche 20 à 2h59, sous forme d une archive.zip contenant votre code source, par email à aurelien.cavelan@ens-lyon.fr.

Plus en détail

PPOOGL. Florent de Dinechin. Java pour les nuls

PPOOGL. Florent de Dinechin. Java pour les nuls PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

Plus en détail

Résolution d exercices avec Visual Studio

Résolution d exercices avec Visual Studio Résolution d exercices avec Visual Studio Document rédigé par David Taralla 3 e Bachelier en Sciences Informatiques david.taralla@student.ulg.ac.be Dernière version : 7 novembre 2011 Préambule Ce petit

Plus en détail

Objets distribués et Appel de Méthodes à Distance 2009-2010

Objets distribués et Appel de Méthodes à Distance 2009-2010 Objets distribués et Appel de Méthodes à Distance 2009-2010 1 Objectif : construire une application où différents modules peuvent être situés sur des machines différentes, en utilisant un modèle à objets

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

Rapport Travaux Pratiques Réseaux (Ethernet)

Rapport Travaux Pratiques Réseaux (Ethernet) Rapport Travaux Pratiques Réseaux (Ethernet) Quentin Tonneau - Adrien Lardenois Table des matières 1 Introduction 2 1.1 Écouter le réseau....................................... 2 1.2 Envoyer un message.....................................

Plus en détail

TP Projet Informatique : Persistance en Php et prise en main GIT / Atlassian

TP Projet Informatique : Persistance en Php et prise en main GIT / Atlassian TP Projet Informatique : Persistance en Php et prise en main GIT / Atlassian Objectif : faire un site pour gérer des articles par catégorie. Chaque catégorie a un nom, chaque catégorie est constitué d

Plus en détail

IN104. Programmation orientée objet Introduction aux objets

IN104. Programmation orientée objet Introduction aux objets IN104 Programmation orientée objet Introduction aux objets Séance de Travaux Dirigés du 24 septembre 2009 B. Monsuez, F. Védrine Exercice 1 Notre compteur en C++ Nous étudions dans cet exercice l exemple

Plus en détail

LA GESTION DE FICHIERS

LA GESTION DE FICHIERS CHAPITRE 6 : LA GESTION DE FICHIERS Objectifs spécifiques Connaître la notion de fichier, ses caractéristiques Connaître la notion de répertoires et partitions Connaître les différentes stratégies d allocation

Plus en détail

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé Template pour les mails Version 1.0 du 13/04/2010 Etat : Validé SUIVI DES MODIFICATIONS Version Rédaction Description Vérification Date 1.0 A. Lesuffleur création du document 13/04/10 Document validé dans

Plus en détail

Communications et synchronisations. Système L3, 2014-2015 1/21

Communications et synchronisations. Système L3, 2014-2015 1/21 Communications et synchronisations Système L3, 2014-2015 1/21 Le problème des philosophes (Dijkstra 1965) Cinq philosophes sont assis autour d une table ronde Chaque philosophe a devant lui un plat de

Plus en détail

Systèmes d'exploitation

Systèmes d'exploitation Université de Nice-Sophia Antipolis Examen L2 Info 20092010 Systèmes d'exploitation Nom : Prénom : Durée : 2h Nombre d'intercalaires : Note : NB : Vos réponses aux questions doivent être brèves et synthétiques.

Plus en détail

INVENTAIRE INFORMATISE D'UN PARC INFORMATIQUE EN RESEAU. Client UNIX

INVENTAIRE INFORMATISE D'UN PARC INFORMATIQUE EN RESEAU. Client UNIX INVENTAIRE INFORMATISE D'UN PARC INFORMATIQUE EN RESEAU Client UNIX Session 2006 2007 Lycee de formation: Lycee Jean Lurcat Page1/17 SOMMAIRE 1. Presentation du projet 2. Description 3. Analyse UML 1.

Plus en détail

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE

ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE LOG2410 Conception logicielle Solutionnaire examen final Automne 2008 Documentation : Aucune Calculatrice : Aucune Date : 13 décembre 2008

Plus en détail

Programmation avancée en C

Programmation avancée en C Département Informatique Nom : Prénom : Année scolaire : 2007 2008 Date : 23 juin 2008 Module INF446 Session de juin Programmation avancée en C Contrôle de connaissance 1 de 45 minutes ÅERCI de répondre

Plus en détail