Tutoriel : Le typage : présentation thématique et historique\nLe typage : présentation thématique et historique\nTout est nombre, pour l'ordinateur\nDes types pour plus de sûreté\nLe typage, c'est sémantique\nLangages dynamiques, langages statiques\nFormalisons tout ça\nInférence : quand le système se débrouille tout seul\nUn nouveau point de vue : le type comme interface\nLes types sont universels\nCe tutoriel est un peu particulier, car il n'est pas destiné à vous enseigner une technique particulière, ou un langage de programmation particulier.\nIl s'agit d'un tuto sur le typage, un concept utile et très répandu dans l'ensemble des langages de programmation. Je compte expliquer les raisons qui ont motivé son apparition, ses principes fondamentaux, ses différentes formes et pourquoi pas, vers la fin, quelques fonctionnalités avancées.\nNe vous attendez donc pas à ressortir de la lecture (ou pas) de ce tuto avec de nouvelles connaissances concrètes, à mettre en oeuvre pour l'écriture d'applications. Attendez-vous à réfléchir sur un sujet souvent présenté comme allant de soi, qui concerne la pratique de la programmation en général, et, dans le meilleur des cas, qui vous aura permis de comprendre un peu mieux votre propre pratique de la programmation.\nLes exemples seront pris dans des langages très divers (que vous n'aurez probablement pour la plupart jamais vus, mais c'est rigolo de découvrir de nouvelles choses, non ? :p ), et j'ai un faible pour l'aspect historique des choses, même si la progression que suit le tuto est plus centrée sur la logique que sur la chronologie.\nLes ordinateurs manipulent des nombres. Ils stockent des nombres en mémoire, font transiter des nombres par leurs circuits, et envoient des informations aux autres ordinateurs sous forme de nombres. C'est l'ère du numérique.\nLa programmation, c'est (entre autres) le fait de dialoguer avec l'ordinateur, afin de lui faire faire les opérations que l'on veut : on décide ce qu'on veut, on le traduit dans un langage compréhensible pour l'ordinateur, et il l'exécute (programmer, c'est donc essentiellement traduire de la pensée en code).\nComme c'est un ordinateur, il ne manipule que des nombres, et ces opérations se transforment donc forcément, à un moment ou un autre, en opérations sur des nombres. Quand on veut faire faire à l'ordinateur des additions, multiplications ou autres opérations mathématiques (il fait ça très bien :) ), ce n'est pas surprenant de savoir qu'il manipule des nombres. Mais quand on clique sur un bouton, qu'on choisit une couleur dans un logiciel de dessin ou qu'on écrit du texte dans un éditeur, est-ce que l'on conçoit clairement de quelle manière il va interpréter la chose en tant que nombre ? Non. Ce n'est d'ailleurs pas possible, parce que la manière dont est effectuée la traduction dépend de beaucoup de choses, que ce soit au niveau logiciel (encodage, format utilisé...) ou matériel (processeur, mémoire, etc.).\nQuand tout est nombre pour le langage de programmation...\nLes langages de bas niveau actuels, ainsi que les premiers langages de programmation sont très proches de la machine sur laquelle ils s'exécutent : les objets qu'ils manipulent sont, eux aussi, des nombres.\nEn Assembleur par exemple, la majorité des instructions consiste à modifier de manière arithmétique (en additionnant, multipliant, ou effectuant d'autres opérations de ce genre) le contenu des cases mémoire de l'ordinateur. Un exemple encore plus frappant est le Brainfuck, un langage dont les seules opérations (à part l'entrée-sortie) permettent soit de changer de case mémoire, soit de changer la valeur de la case actuelle (et de boucler tant que la case ne contient pas 0). Pour les curieux, voici une multiplication en Brainfuck :\nTout est nombre, pour l'ordinateur Le typage, c'est sémantique\nCes langages conviennent très bien quand il s'agit de manipuler des nombres (ils ont au départ été conçus pour des applications scientifiques), mais assez vite des problèmes se posent.\nMettons que vous ayez écrit une opération qui transforme une chaîne de caractères (une suite de nombres en mémoire) dans la même suite, mais où tous les caractères majuscules sont remplacés par leurs équivalents minuscules. Cela suppose de bien connaître la convention de conversion nombre <-> caractère de votre langage, mais ce n'est sans doute pas un problème pour vous.\nImaginez maintenant que vous appliquiez par erreur cette opération non pas sur une phrase, mais sur la liste des âges des membres de votre site. L'ordinateur n'y verra que du feu : il traduira cette liste en une liste assez ressemblante, mais dans laquelle, par exemple, toutes les personnes âgées de 65 à 90 ans se seront vues vieillies de 32 ans ! Heureusement que les visiteurs de votre site sont plutôt jeunes...\nCette erreur est assez courante, et même si elle peut être évitée en faisant attention, elle peut être gênante. Imaginez qu'au lieu de la liste des âges des membres, vous ayez mis la liste de vos mots de passe, voire la liste des clés de contrôle du réacteur nucléaire ( :pirate: ) !\nCette erreur est aisément repérable : un humain, si on lui demande de transformer en lettres majuscules une liste d'âges, va comprendre immédiatement qu'il y a quelque chose qui cloche. Pourquoi l'ordinateur ne pourrait-il pas faire pareil ?\nC'est ce que se sont demandés très vite les ingénieurs concevant les ordinateurs et les langages de programmation, et ils ont vite décidé de mettre en place une gestion simple de ce genre d'erreur dans ces langages.\nL'idée intuitive est qu'une lettre et un âge, ce "n'est pas la même chose". Comme vous l'a peut-être dit un jour votre professeur de physique, "on ne peut pas ajouter des patates et des carottes". On a donc introduit une sorte de classification des objets que manipule le langage : à chaque valeur du langage, on associe une étiquette qui dit "c'est une lettre", "c'est un âge" (ou "c'est un nombre"), "c'est une liste de lettres suivie par deux nombres entiers, puis un nombre à virgule", etc.\nCette étiquette s'appelle le type : le type d'une valeur est tout simplement le groupe d'objets auxquels il appartient.\nEnsuite, on précise quand on déclare une variable à quel type elle appartient, et, quand on définit une opération (par exemple, la mise en minuscules), on précise (dans le code source du programme) sur quel type de données elle a le droit d'agir.\nAlors, il suffit de mettre en place, pendant que l'ordinateur lit le texte de votre programme en prévision de son exécution, une étape très simple qui vérifie que chaque opération est bien utilisée sur les variables du type qui convient, et sinon de rapporter l'erreur au programmeur.\nDes types pour plus de sûreté Langages dynamiques, langages statiques\nLa réaction des informaticiens face aux erreurs de ce genre (que l'on appelle depuis les erreurs de typage) est naturelle. Si vous aviez été ingénieur chez IBM dans les années 50, vous auriez sûrement réagi pareil. :p\nCe qui est intéressant, c'est que la démarche du typage s'inscrit dans une direction plus générale, que l'on peut observer en de nombreux endroits de l'histoire des langages de programmation : on a apporté du sens au langage.\nQuand vous concevez votre programme de mise en minuscules, vous savez très bien quel type de variables vous allez manipuler. L'ordinateur, lui, ne le savait pas. En introduisant le typage, on a permis au programmeur de rajouter des informations (dans le code source), pour en quelque sorte augmenter les connaissances de l'ordinateur au sujet du programme. Plus l'ordinateur est au courant, mieux il peut vérifier que ces informations sont cohérentes, et vous avertir si cela n'est pas le cas.\nLe fait de modéliser le sens des objets manipulés par un programme est généralement appelé de la sémantique.\nLa plupart des langages informatiques que vous connaissez se sont préoccupés de sémantique (de la manière dont les programmes qu'on pouvait écrire reflétaient bien la signification des actions voulues par le programmeur). Le C (créé pour être portable, et donc avoir des instructions reflétant mieux (qu'en assembleur) le sens des fonctions désirées, en faisant abstraction de l'architecture matérielle de l'ordinateur) et le XHTML (dont une des grandes avancées a été de mettre l'accent sur les balises décrivant la structure des pages web - et donc leur sens -, au lieu de leur présentation) en sont de bons exemples.\nCela ajoute effectivement du sens au programme\nRegardez le code de la fonction qui met en minuscule un caractère majuscule, en C :\nreturn (c - 'A' + 'a');\nelse return c;\nSi la lettre est comprise entre 'A' et 'Z', on la décale dans les minuscules (ce n'est pas grave si vous ne comprenez pas pourquoi ça marche, et d'ailleurs ça ne marchera pas forcément, car cela repose sur des fonctionnalités qui dépendent de l'environnement), sinon on la renvoie inchangée.\nSi un informaticien lit ce code, il comprendra immédiatement ce que fait cette fonction. Mais un des intérêts du typage repose dans le fait qu'en pratique, on n'est pas obligé de lire tout le code !\nEn effet, il est possible en C d'insérer avant le code d'une fonction un prototype, qui la déclare à l'avance, et qui est souvent placé dans les fichiers de header (.h) :\nchar tolower(char )\nCe qui est surprenant, c'est que cette ligne suffit pour comprendre ce que fait la fonction tolower ! Évidemment, cela suppose de connaître l'anglais, mais une fois que vous voyez le type (la fonction prend un char et renvoie un char), la signification est claire (de toute façon, en 1950, les ingénieurs d'IBM parlaient tous anglais :D ).\nAinsi, le typage a effectivement apporté du sens dans le code : on peut se contenter de lire le prototype d'une fonction pour la comprendre ; c'est un gros gain de temps par rapport à l'époque où il fallait chercher le code source de la fonction dans tout le programme (bon, la documentation ça existe, mais les vrais hommes (et femmes !) chez IBM lisaient plutôt le code source, évidemment).\n... mais ce n'est pas si nouveau !\nSi vous avez déjà fait de la physique, vous avez sûrement remarqué l'importance qu'attachent les physiciens aux unités des valeurs qu'ils manipulent : pas question d'ajouter des mètres et des kilogrammes ! Cette restriction, cette classification des valeurs a de nombreux avantages : entre autres, elle permet d'obtenir très vite des informations sur une grandeur (c'est une distance, c'est une température...), et elle réduit les risques de faire des erreurs de calcul : il est très simple de vérifier qu'une formule est bien typée (on dit qu'elle est "homogène"), et si ce n'est pas le cas on sait tout de suite que la formule est fausse !\nC'est un peu comme cela qu'on utilise en général les types en informatique.\nLe typage, c'est sémantique Formalisons tout ça\nLa description que j'ai faite du processus de vérification du typage est plus que simpliste. En fait, il existe grosso-modo deux manières répandues de procéder : le typage statique, et le typage dynamique.\nLa différence réside dans le moment où la vérification est effectuée : au moment où les opérations sont effectuées, ou plutôt une fois pour toutes, avant de lancer le programme ?\nUn langage typé dynamiquement : Python\nLe principe du typage dynamique, c'est de typer au besoin, pendant l'exécution du programme : on fait ce que demande le programme, et on vérifie à chaque opération que le type correspond bien (ce qui peut se faire assez rapidement si le système des types est simple).\nC'est le typage le plus utilisé par les langages de script.\nVoici un exemple en Python :\nreturn (1 + "essai")\nOn a défini une fonction qui prend un booléen en argument, et renvoie (1 + 2) s'il est vrai, et (1 + "essai") s'il est faux. Il y a une erreur de typage (on ne peut pas ajouter un entier et un mot !) mais l'interpréteur n'a pas protesté. On essaie ensuite d'utiliser la fonction :\nessai(True) renvoie un résultat correct, et seul essai(False) renvoie une erreur. Cela veut dire que tant qu'on n'est pas entré dans la branche "else" du if, aucune vérification de typage n'a été faite sur son contenu : on a véritablement un typage dynamique.\nCe typage est très simple à comprendre et à mettre en oeuvre. Cependant, un de ses désavantages apparents ici est le fait que pour être sûr que les types du programme sont corrects, il faut tester tous les "embranchements" du code. Ici, il faut faire deux tests, mais pour peu que vous ayez plusieurs if et des conditions un peu compliquées, tester l'ensemble du code devient vite long et difficile (même s'il existe des outils pour tenter d'automatiser le processus).\nAvec un typage statique, comme vous allez le voir, toutes les erreurs seront relevées avant l'exécution du code.\nUn langage typé statiquement : C\nUn langage est typé statiquement si, avant de s'exécuter, votre code source passe par une phase de vérification des types. Si le langage est compilé, cette phase est souvent comprise dans le compilateur, mais il existe aussi des langages interprétés (ou des implémentations interprétées de langages, plus exactement) qui ont un typage statique.\nL'exemple que j'ai choisi est le C. Ce langage n'a pas un système de types très évolué (il n'empêche pas beaucoup de choses), mais cela reste un typage statique, et il a inspiré les typages des langages qui l'ont suivi (le C++, principalement). De plus, indépendamment des contraintes de typage imposées par le langage, les compilateurs ont développé des techniques de recherche d'erreurs probables (si le code est valide, mais assez bizarre pour être une erreur dans la plupart des cas), qui donnent lieu à des avertissements, et peuvent donc être considérées comme une sécurité supplémentaire au niveau du typage.\nUn exemple de problème de typage en C est la comparaison d'un entier de type "unsigned int" (un type qui ne peut contenir que des entiers positifs) et "int" (ou "signed int"), qui peut représenter des nombres négatifs.\nconst unsigned int i = 23;\nconst int j = -5;\nif (i < j) printf("i < j\_n");\nelse printf("i > j\_n");\nSi vous compilez ce code, vous verrez peut-être (si vous avez les warning activés) un message équivalent à celui-ci :\ntest.c:8: warning: comparison between signed and unsigned\nLe compilateur a repéré l'erreur de type, mais il compile le programme quand même. Si vous l'exécutez, vous verrez qu'il dit que i est plus petit que j !\n23 < -5, ça ne ferait pas plaisir à votre prof de maths, mais c'est normal si l'on connaît les règles de conversion utilisées pour passer d'un int à un unsigned int.\nL'avantage du typage statique, c'est qu'il nous prévient de l'erreur avant l'exécution. De plus, il vérifie tout le code, même celui qui se trouve dans des branches de "if".\nLe typage statique présente aussi un avantage non négligeable du point de vue des performances : une fois que le test de typage a été effectué, le programme est supposé valide, et le compilateur peut alors se débarrasser des informations de typage qu'il a accumulées. À l'inverse, les typages dynamiques imposent de conserver pendant toute l'exécution les informations sur le type de chaque variable, et de faire des tests tout au long du programme, ce qui a un impact sur les performances.\nDans le monde du typage, rien n'est tout blanc ni tout noir. Tout est dans la nuance : il existe un grand nombre de manières différentes de typer, et tous les langages font ça un peu différemment, avec plus ou moins de contraintes. Ainsi, même les langages que l'on désigne couramment comme "non typés" (comme Lisp) ont généralement une certaine forme (très réduite) de typage.\nDe même, aucun langage à ma connaissance n'est complètement rigoureux au niveau du typage. Par exemple, l'opération de division / peut s'effectuer sur des entiers, et provoque une erreur quand le deuxième argument est nul (division par zéro). Dans un langage complètement typé (au sens mathématique du terme), il faudrait définir un type "entier non nul" qui serait celui du deuxième argument de la division, et il faudra convertir, et n'autoriser que des variables de ce type (ou faire une conversion implicite).\nLe typage se mesure donc en degrés, en niveaux, et assez approximativement. Les langages les plus typés actuellement sont désignés comme pratiquant un typage fort, alors qu'on parle pour les autres (par exemple pour le C ou le PHP) de typage faible. Ces notions sont indépendantes de l'aspect statique ou dynamique du typage : les pythonneux considèrent qu'ils ont un typage dynamique fort.\nLa différence entre le typage fort et le typage faible n'est pas très claire, car il n'y a pas de consensus à ce sujet : la définition dépend des gens, et si vous discutez de typage fort avec quelqu'un, demandez-lui celle qu'il utilise avant de provoquer des malentendus. Une définition possible du typage faible est la suivante : les langages faiblement typés sont les langages qui n'attachent pas une grande importance au typage. Par exemple, si vous faites une erreur de typage en PHP, dans la plupart des cas il utilisera un comportement par défaut (ignorer la variable qui pose problème, ou la convertir automatiquement vers un autre type, etc.), qui ne sera pas forcément celui que vous vouliez, mais il ne vous préviendra pas qu'il y a une incohérence, à moins que vous ne l'ayez configuré en mode ultra-paranoïaque.\nLangages dynamiques, langages statiques Inférence : quand le système se débrouille tout seul\nQuand les premiers langages de programmation se sont mis au typage (bien que certain langages, comme Lisp, soient restés non typés, ou très peu typés, pendant très longtemps), chaque créateur de langage a mis au point sa propre recette.\nPendant quelques temps, le typage est resté une idée très concrète (on choisit un certain nombre de "groupes" dans lesquels se répartissent les variables), sans bénéficier d'une formalisation : on ne s'est globalement pas intéressé à ses aspects théoriques.\nC'est vers les années 70, donc pendant ce qu'on appelle habituellement la deuxième génération des langages de programmation (la période qui a aussi vu naître, entre autres, le C et les langages objets), qu'ont commencé à se répandre des modèles formalisés de système de types de certains langages de programmation.\nLe langage ML\nAinsi apparaît en 1973 le langage ML, dont le système de type est un précurseur d'absolument tous les systèmes de typage statique formalisés existant actuellement. Il existait déjà quelques systèmes formels de typage auparavant, mais ils n'étaient pas assez avancés pour avoir l'influence de celui de ML.\nCe langage a été créé par Robin Milner, pour être utilisé dans le démonstrateur automatique de preuves LCF, qu'il développait à l'époque à l'université d'Edimbourg. Un démonstrateur automatique de preuves est un logiciel qui prend en entrée un théorème mathématique et sa preuve (écrite dans un langage spécialisé), et capable de vérifier mécaniquement (informatiquement, sans intervention humaine) que la preuve est correcte (et correspond bien au théorème).\nComme vous pouvez le constater, on s'est éloigné des ingénieurs d'IBM : la formalisation du typage est apparue du côté de l'informatique théorique, dans un environnement très mathématique. Et ce n'est pas par hasard.\nNos cousins les mathématiciens\nCe n'est pas pour rien que les systèmes de typages évolués sont apparus en informatique sous l'influence des mathématiciens : comme beaucoup de concepts de l'informatique, ils ont en fait été inventés par eux, et ce bien avant l'apparition des premiers ordinateurs !\nIl faut savoir qu'au début du 20e siècle, les mathématiciens ont rencontré une série de problèmes liés à la théorie des ensembles, qui ont montré la faiblesse de ce qu'ils pensaient à l'époque être une formalisation satisfaisante des mathématiques. Un exemple très accessible et très connu de ces difficultés théoriques est le paradoxe découvert par Russel en 1901, et que l'on peut formuler ainsi : "le barbier rase tous ceux qui ne se rasent pas eux-mêmes (et personne d'autre). Le barbier se rase-t-il ?". La question amène à un paradoxe : essayez et vous verrez, quoi que fasse le barbier, on arrive à une contradiction :\nsoit le barbier se rase, ce qui crée une contradiction car il ne doit raser que les personnes qui ne se rasent pas elles-mêmes ;\nsoit le barbier ne se rase pas, et alors il devrait se raser, car il doit raser toutes les personnes qui ne se rasent pas.\nLes mathématiciens ont résolu le problème en inventant des systèmes où le barbier (enfin, l'analogue mathématique du barbier) n'existe pas, c'est-à-dire où on ne peut pas construire des objets qui vérifient des propriétés aussi tordues que ça.\nL'un de ces systèmes est une théorie des types, mise au point par Russel et Whitehead dans les années 1910 ! Elle est extrêmement complexe, et ce n'est donc pas le modèle utilisé de nos jours en mathématiques, mais historiquement c'est une des premières apparitions d'un typage proche de ce que nous connaissons dans la littérature scientifique.\nLe typage a été réutilisé à nouveau dans les années 1940 (donc, encore avant l'informatique) par Church, un logicien qui est à la base du Lambda calcul, le premier langage de programmation (théorique :p ), inventé en 1930 pour résoudre un problème algorithmique d'origine mathématique : "quelles sont les fonctions que l'on peut calculer ?". Le Lambda calcul était initialement non typé, et il s'est très vite avéré que la plupart des termes (ou programmes) que l'on construisait ne terminaient pas, c'est-à-dire avaient un "temps d'exécution" infini. L'introduction du typage a permis l'ajout de contraintes garantissant qu'aucun programme ne boucle à l'infini ; malheureusement, ces contraintes font que certaines fonctions ne peuvent plus être construites par le langage. C'est un point théorique assez technique, et je n'en parlerai plus par la suite , rassurez-vous ^^\nUne préférence pour le typage statique\nCette formalisation a permis la création d'algorithmes puissants permettant de traiter les types d'un programme. Certaines de ces fonctionnalités seront décrites dans les chapitres suivants.\nCette puissance supplémentaire a cependant un coût : elle rend plus complexe la phase de traitement des types. Elle est donc relativement inadaptée au typage dynamique (qui se fait "sur le pouce", à chaque exécution du programme, et a donc besoin d'être relativement léger) ; c'est pourquoi elle a été mise en place quasi-exclusivement pour les langages à typage statique.\nCela peut aussi être relié à l'influence des mathématiciens : ce qu'a apporté la formalisation du typage, c'est la possibilité de prouver qu'un programme est correctement typé. Quand on peut démontrer une partie de la sécurité (dans le sens "absence de bugs") d'un programme, vous pensez qu'on choisit de le faire plutôt avant de le lancer, ou pendant qu'il tourne ?\nLes langages que je présenterai par la suite seront donc majoritairement statiquement typés, car ce sont eux qui ont les systèmes de typage les plus élaborés.\nFormalisons tout ça Polymorphisme paramétrique\nL'inférence des types est une des commodités qu'a apporté la formalisation du système de typage des langages de programmation. Sa version simplifiée a été découverte par Feys et Curry en 1958, mais l'algorithme général, encore utilisé dans les langages modernes à inférence de types, a été découvert par Hindley en 1969, et redécouvert indépendamment par Milner en 1978, qui l'a alors intégré à son langage ML.\nLe principe de l'inférence de type, c'est que l'ordinateur peut, dans la plupart des cas, deviner de quel type sont les valeurs manipulées.\nVoici par exemple le programme périmètre_rectangle, qui calcule le périmètre d'un rectangle dont on donne les deux dimensions, écrit en pseudo-code (un langage qui n'existe pas et qui sert juste à décrire les algorithmes) :\nSoit périmètre_rectangle (longueur, largueur) = 2 * (longueur + largeur)\nComme vous pouvez le voir, le code ne comporte aucune annotation précisant le type des valeurs 'longueur' et 'largeur', et indiquant le type de retour de la fonction. Mais sont-elles bien nécessaires ?\nEn fait, on peut s'en passer : on voit bien que les opérations (multiplier, ajouter) sont des opérations arithmétiques, et on en déduit tout naturellement que cette fonction s'applique à des nombres (le type numérique exact dépend du langage que vous utiliserez pour l'implémentation).\nComme c'était le cas pour les erreurs de typage, l'ordinateur passe pour l'instant à côté d'une information qui nous est accessible : nous pouvons deviner le type attendu de cette fonction. Eh bien l'algorithme de Hindley-Milner permet de faire exactement la même chose : s'il connaît le type des fonctions de base du langage, il peut en déduire le type des fonctions ou des valeurs que vous construisez.\nSi pendant la phase où il infère (devine) les types présents dans le programme, le système de types découvre une contradiction, alors le programme n'est pas correctement typé, et il renvoie une erreur.\nVoici un exemple du code en OCaml (le langage ML que j'utilise) :\nlet périmètre longueur largeur = 2 * (longueur + largeur)\nSi l'on demande à OCaml le type de la fonction "périmètre", il renvoie ceci :\nval périmètre : int -> int -> int\nLa valeur périmètre est de type int -> int -> int, ce qui signifie qu'elle prend deux entiers (les deux premiers) et renvoie un entier (le dernier après la deuxième flèche).\nOn a donc combiné les avantages de sûreté (le compilateur découvre une partie des erreurs du programmeur, qui se manifestent par l'emploi de types contradictoires), de sémantique (on peut demander le type d'une fonction au compilateur, et cela aide pour comprendre sa signification) avec une légèreté fort agréable : plus besoin de rédiger à la main les types les plus évidents (on se doute bien que la fonction "multiplie" ne va pas renvoyer un couple de nombres !).\nEncore une fois, on a pu reporter une partie du travail sur l'ordinateur, et en décharger le pauvre programmeur.\nCette fonctionnalité est longtemps restée confinée dans les langages dérivés du ML (les plus utilisés actuellement étant le SML et le OCaml). Récemment, des langages "mainstream" (c'est-à-dire moins utilisés - parce qu'ils sont moches - par les chercheurs en info, et plus par les ingénieurs informaticiens - idem) ont commencé à intégrer cette fonctionnalité : c'est le cas de Java et C#.\nCependant, la garantie d'une inférence totale de tous les types du programme par le compilateur (sans aide de la part du programmeur) impose des contraintes assez subtiles (et parfois assez restrictives) sur le langage, et n'est possible à ma connaissance que dans les langages ML.\nInférence : quand le système se débrouille tout seul Un nouveau point de vue : le type comme interface\nLe polymorphisme paramétrique, c'est le fait qu'une valeur donnée d'une fonction puisse, sur plusieurs appels différents de la fonction, avoir des types différents.\nL'idée se voit très bien avec l'inférence de type ; mettons que je code la fonction identité (ou 'id'), qui ne fait par définition rien à son argument, puisqu'elle le renvoie à l'identique (on dirait pas mais cette fonction est centrale en maths : si, si) :\nSoit identité x = x\nEn OCaml, cela s'écrit ainsi :\nlet id x = x\nComment le compilateur va-t-il deviner le type de la variable x ? Justement, il ne peut pas trop : les fonctions auxiliaires qui pourraient l'aider (comme + et * dans l'autre programme, qui permettent de comprendre qu'on manipule des nombres) ont disparu !\nOn est donc dans un cas où le compilateur ne "peut pas deviner" le type de la fonction. C'est dans ces cas-là qu'on rencontre le polymorphisme : le compilateur déclare "x est de type quelconque inconnu, que j'appellerai 'a", et il fonctionne avec le type 'a comme s'il s'agissait d'un type qu'il connaît.\nVoici ce que répond le compilateur quand on lui demande le type de notre fonction id :\nIl a donc donné un nom au type inconnu qu'on lui avait présenté.\nL'avantage du polymorphisme va plus loin : en plus d'être inconnu, ce type est quelconque : n'importe quelle valeur du langage pourrait être donnée à la fonction id.\nAinsi, si je donne un entier à id (par exemple 'id 3' renvoie 3), id va rester de type 'a -> 'a (ce n'est pas parce qu'on lui a donné un entier une fois qu'elle devient de type int -> int). On pourra toujours, dans la suite du programme, lui donner une chaîne de caractères, un tableau d'entiers, etc.\nOn a donc ajouté de la richesse à notre système de types : en plus d'avoir des types particuliers, on a aussi des types "généralistes" qui permettent d'être employés sur tous les types.\nVous allez me dire "ça existe aussi en C, on a (void *)". Il y a une différence notoire entre les deux : si vous construisez par exemple une liste chaînée dont le champ de données est de type void* (pour pouvoir y mettre n'importe quoi), quand vous mettez une valeur dedans, elle devient de type void* et perd son information de typage. Il est alors possible de la manipuler comme toutes les autres données de type void*, et à ce niveau-là de faire des erreurs.\nPar exemple, si vous avez une liste chaînée qui contient des strings, et l'autre qui contient des tableaux d'entiers, les données seront forcées de devenir des void* en étant insérées dans la liste, et il sera possible quand vous les extrairez de ces listes (par exemple "donne-moi le premier élément de la liste des tableaux de notes") de les faire passer de void* à un type différent de celui qu'elles avaient à l'origine (par exemple, de mélanger des fonctions s'appliquant à la liste des tableaux d'entiers et à la liste des strings).\nLe polymorphisme paramétrique est plus puissant que cela : le type de données générique est "'a list" (liste d'objets de n'importe quel type), mais si vous construisez une liste d'entiers, elle sera de type "int list". En effet, 'a est une lettre qui désigne le type (inconnu) de la liste ; si, pour une liste particulière, le type que représente 'a est connu, cette liste n'est plus polymorphe, et 'a est remplacé par le véritable nom du type. 'a joue un rôle de "paramètre de types", d'où le nom "polymorphisme paramétrique".\nAinsi, une liste de strings sera de type "string list", une liste de tableaux d'entiers "int array list" (on doit lire "(int array) list"), et vous ne pourrez pas les mélanger entre elles : le typage vous en empêche. Par contre, les fonctions qui prennent en entrée le type "'a list" (par exemple : "quelle est la taille de la liste donnée", car la taille de la liste ne dépend pas du type de ses éléments) pourront s'appliquer aux deux types de listes différents, puisque "int array list" et "string list" sont tous les deux des cas particuliers de "'a list" (où 'a représente respectivement le type int array et le type string).\nLe polymorphisme paramétrique n'est pas forcément évident à comprendre, alors voici deux petits exemples pour la route :\nlet gauche x y = x\nLe type de cette fonction est "'a -> 'b -> 'a". Cela signifie que le premier argument est de type 'a, le deuxième de type 'b, et que la valeur de retour est de type 'a (vu qu'on renvoie le premier argument). Que vient faire le 'b ici ? Il indique que le deuxième argument est de type quelconque, et non nécessairement le même que le premier : pour différencier deux "types inconnus", on leur met un nom de paramètre différent.\nlet choisir test x y = if test then x else y\nLe type de cette fonction est "bool -> 'a -> 'a -> 'a" : elle prend en argument un booléen (représentant une valeur de vérité, true ou false), un argument de type 'a, et un autre argument de type 'a, et renvoie soit le deuxième, soit le troisième argument, selon la valeur du booléen.\nPourquoi les deux arguments sont-ils du même type 'a ? Parce que la valeur "choisir" ne peut avoir qu'un seul type de retour. Si le troisième argument était de type 'b, le type de retour de la fonction devrait être "soit 'a, soit 'b", ce qui n'est pas possible. Par inférence, le compilateur a donc conclu que les deux arguments étaient nécessairement du même type.\nPolymorphisme paramétrique Les types sont universels\nLe travail sur le polymorphisme paramétrique permet un nouveau point de vue sur les types. Souvenez-vous, la raison initiale à l'introduction des types polymorphiques était l'existence d'une valeur qu'on "ne sait pas inférer".\nLe point de vue est donc le suivant : le programmeur code son programme, manipule les valeurs comme il le souhaite, et après, le compilateur se débrouille pour trouver le type des variables comme il le peut. Quand il ne sait pas, il met un type polymorphe.\nCe point de vue n'est pas tout à fait exact, en tout cas il n'est pas suffisant, car il ne prend pas en compte les avantages du type polymorphique : en permettant la manipulation des données sans se soucier de leur type, mais en conservant la sûreté du typage, le polymorphisme permet d'introduire un degré d'abstraction et de généricité (de générique) supplémentaire. Le programmeur se trouve alors dans une autre position : il s'apprête à créer une fonction dont il souhaite qu'elle soit polymorphe, et choisit donc de restreindre les manipulations qu'il effectue dessus pour que (selon le premier point de vue) le compilateur "ne sache pas" donner un type particulier à la fonction.\nOn a ici changé de sens : ce ne sont plus les manipulations du programmeur qui imposent un type à la fonction, c'est le type que le programmeur désire qui le restreint dans les manipulations auxquelles il est autorisé : les types dirigent la manière dont on traite les valeurs.\nReprenons l'exemple "let id x = x". Vous avez remarqué qu'on "ne fait rien" à cette valeur x : on ne la manipule pas du tout. Et c'est pour cela qu'on a un type polymorphe. Si on l'avait discrètement additionnée, affichée ou copiée dans un tableau, on aurait fait une manipulation permettant au compilateur de déterminer son type concret, et le polymorphisme aurait disparu.\nUne valeur est donc polymorphe dans un contexte où on ne la "manipule" pas trop. Pas trop, cela veut dire qu'on ne la touche pas (comme ici), ou qu'on ne lui applique que des fonctions polymorphes.\nPar exemple, la fonction "let id2 x = id x" manipule la valeur x, puisqu'elle lui applique la fonction "id". Mais comme cette dernière est polymorphe (ne manipule pas trop x), la fonction id2 conserve le polymorphisme elle aussi. Rassurez-vous, il existe des fonctions polymorphes un peu plus utiles que id :p (mais on les rencontre sur les objets plus évolués, comme les listes ou les tableaux).\nAvec ce nouveau point de vue, on peut voir le type comme l'interface selon laquelle on manipule une valeur (on peut voir une interface comme la liste des fonctions qui sont autorisées) : si on applique la fonction ( + ) (l'addition), on utilise une interface d'entier, donc le type des deux arguments (a + b) est un entier. Si l'on applique la fonction "taille_liste", on utilise l'interface d'une 'a list, donc la fonction est une 'a list (et si, dans le reste de la fonction, on demande un élément et qu'on le manipule comme un entier, alors la liste sera une int list). Si on ne la manipule pas, on n'utilise aucune interface (donc, toutes les interfaces conviennent), donc on obtient un type polymorphe.\nCe nouveau point de vue est un peu compliqué, et il ne recèle pas plus de vérité que l'idée simple des types : il n'y en a pas un qui est juste, et l'autre, faux : ce sont deux manières d'envisager la chose ; selon la situation, il peut être utile pour raisonner sur les types de choisir l'un ou l'autre des points de vue, comme je le montrerai à la fin de cette partie.\nOn peut remarquer que le choix d'interface est assez limité : soit on en choisit une, et on a un type déterminé, soit on n'en choisit aucune et la valeur est de type polymorphe ; si on en choisit deux, on essaie d'utiliser la valeur avec des fonctions de deux types différents, et on a une erreur.\nCe concept d'interface a été repris et enrichi dans les langages objets, mais, pour la plupart, ils ne bénéficient pas d'un système de typage formalisé, ce qui réduit beaucoup leur intérêt d'un point de vue théorique (en ce qui concerne le typage). Des langages fonctionnels modernes, c'est-à-dire développés dans les années 90 (quelques variantes de Ocaml et SML, et Haskell) ont poussé l'idée dans un contexte formel, et cela a donné des résultats assez riches, mais qui sortent du cadre de ce tutoriel.\nUn reproche que l'on entend souvent dans la bouche des programmeurs au sujet des langages non typés (ou plutôt peu typés, ou faiblement typés) est "votre langage a la contrainte additionnelle du typage, donc il est moins puissant". Rassurez-vous, ils se trompent ; et le nouveau point de vue permet de le comprendre.\nIl faut savoir que les langages au système de typage riche ont développé des fonctionnalités qui permettent de construire des types complexes à partir des types simples fournis initialement par le langage : un peu à la manière (mais en beaucoup mieux :p ) des struct et des enum du C (mais je n'en parlerai pas dans ce tutoriel).\nJ'ai dit plus haut qu'il n'était pas possible de mélanger des manipulations issues de deux types différents. Il est cependant possible (avec la construction ressemblant à enum) de construire un troisième type, qui contient soit un objet du premier type, soit un objet du deuxième, et donc de choisir selon le cas la manipulation à effectuer.\nVoici un exemple qui pourrait (à première vue seulement) mettre en difficulté un programmeur d'un langage typé : les listes d'un langage typé imposent que tous les éléments de la liste soient du même type. Si vous mettez par exemple un entier dans une liste, tous les autres éléments doivent obligatoirement être des entiers, faute de quoi vous aurez une erreur de typage.\nImaginez maintenant un programmeur dans un langage non typé qui a une liste de nombres, un nom (par exemple "liste de notes"), qui doit coder une fonction qui affiche le nom de la liste, puis son contenu, et qui a envie de produire du code laid. Il peut décider de mettre le nom de la liste en première position de la liste : ainsi, il ne donne que la liste à la fonction, qui récupère le premier élément (c'est le nom), le traite spécialement, et affiche normalement tous les éléments du reste de la liste.\nComme dans un langage typé, on ne peut mélanger des éléments de types différents dans une liste, cette solution n'est pas praticable. La première solution, la plus simple, consiste à fournir à la fonction d'affichage, au lieu d'une liste qui mélange tout, un couple (nom, liste), qui contient d'une part le nom, et d'autre part la liste des nombres. Cette solution convient tout à fait, mais le programmeur du langage non typé risque de vous dire que ce n'est pas le même algorithme, puisque lui n'envoie qu'une liste, et que vous avez triché parce qu'il n'existe pas de manière de créer des couples dans son langage à lui. On va donc produire une autre solution, moins élégante, mais qui reprend exactement le principe de son algorithme.\nQuand il a mis le nom en premier élément de la liste, est-ce que cela veut dire qu'il a traité tous les éléments de la même manière ? Non, il ne peut pas, puisque le premier élément est une string, alors que les suivants sont des nombres : s'il avait essayé des fonctions d'affichage de nombres sur la string, ou d'affichage de string sur les nombres, il n'aurait pas eu le bon résultat. Le traitement qu'il effectue aux éléments de sa liste est un choix : si c'est le premier élément, l'afficher comme une string, si c'est un autre élément, l'afficher comme un nombre.\nPour reproduire son comportement, il nous suffit donc de créer un type qui représente ce choix :\ntype élément = Premier of string | Autre of nombre\nC'est la syntaxe de déclaration des types ressemblant à enum, en ML. Le '|' représente le choix : une valeur de type élément est soit Premier s, où s est une string, soit Autre n, où n est un entier. Maintenant, quand on a un nom et une liste de nombres, on crée une liste de type élément (par exemple : de "notes" et la liste [1; 2; 3], on crée la liste [Premier "notes"; Autre 1; Autre 2; Autre 3], qui a bien tous les éléments du même type). Ensuite, on le donne à une fonction d'affichage. Pour l'exemple, voici le code d'une telle fonction :\nlet présente liste =\nlet affiche_élément = function\n| Premier titre -> printf "titre : %s\_n" titre\n| Autre n -> printf "%d\_t" n\nin List.iter affiche_élément liste\n(La fonction List.iter est une fonction prédéfinie du langage, qui applique une fonction à tous les éléments d'une liste.)\nOn a donc résolu le problème du programmeur sceptique, et de la même façon laide que lui, en stockant tout dans la liste.\nVoyons maintenant le cas général : ils pensent qu'il existe des programmes qui ne peuvent pas être écrits dans un langage typé, mais qui seraient possibles dans le même langage, non typé. Il ne suffit pas de montrer que tous les codes qu'ils présentent sont traduisibles dans un langage typé (comme je viens de le faire pour l'exemple), mais il faut maintenant leur montrer qu'un tel code n'existe pas. C'est ce que je vais essayer (de manière très peu formelle) de faire.\nImaginez un programme de la sorte, écrit dans une variante non typée du langage : tout ce qu'il fait, c'est manipuler des valeurs. On peut donc pour chaque valeur regarder l'ensemble des manipulations (ou fonctions) qui lui sont appliquées : cela nous donne son interface. Et cette interface, aussi alambiquée soit-elle, peut être traduite (à l'aide des méthodes de constructions de nouveaux types) en un type de données.\nAinsi, n'importe quel programme écrit dans le langage non typé peut se traduire en un programme dans le langage typé, et le point de vue "type comme interface" le montre très clairement.\nJ'espère que cette petite ( :-° ) dissertation sur le typage vous a intéressés.\nC'est un sujet très large, très riche, mais trop souvent négligé des programmeurs qui, par manque d'information, de temps ou d'intérêt, ne se sont pas aventurés du côté des langages portés sur les développements théoriques de l'informatique.\nLa culture, c'est important, autant en informatique qu'ailleurs. Des connaissances historiques de base, ainsi qu'une vague idée de ce qui se fait dans les langages moins connus ne pourront qu'améliorer la manière dont vous concevez la programmation.


Accueil > Programmes > International Program BBA/MBA > Le cycle Master\nLe MBA International est conçu pour apporter une perspective internationale.\nD’une durée de 1 an et se déroulant à Paris, l’enseignement repose sur un large éventail de disciplines qui permettent d’acquérir des compétences en gestion et une compréhension approfondie du marché mondial.\nLes participants travaillent sur des études de cas dans le but de relier la théorie au fonctionnement des entreprises modernes ; un accent particulier est mis sur les préoccupations éthiques.\nCe programme est dispensé entièrement en anglais, par une équipe enseignante qui possède les meilleures références internationales en matière d’enseignement et de commerce.\nSous la forme d’une série de séminaires bimestriels – du jeudi au samedi, ce format permet aux étudiants de profiter d’un horaire de fin de semaine pour soit continuer à travailler, soit se lancer dans un nouveau domaine et entreprendre un stage, soit se consacrer pleinement aux enseignements, devoirs et apprentissages exigés par les séminaires.\nTous les étudiants du MBA ont la possibilité de passer une session d’été dans une institution partenaire de confiance de l’ISG, la St. John’s University à New York.


Paola PFENNINGER et Guirec GUICQUEL, urbanistes < Rencontres avec des Huninguois[es] < Journal municipal Passerelle[s] < S'informer < Découvrir Huningue\nPaola PFENNINGER et Guirec GUICQUEL, urbanistes : prendre des risques !\njuin 2017 / par Jean-Louis Mossière\nOsez, osons ! Les techniciens de l'IBA se veulent exigeants pour l'aménagement d'un territoire cohérent sur nos trois pays.\nIls sont jeunes tous les deux, la trentaine, elle, Bavaroise, lui, Breton ; elle, spécialisée dans le " Vivre ensemble ", lui, sur la thématique " Paysages " mais leurs pensées ont fait confluence pour améliorer notre cadre de vie. Ils ont des exigences. Et ils mettent la barre assez haut pour n'être pas toujours bien compris ou suivis par nos décideurs. Mais ils ne désarment jamais. Et ils ont raison. Car s'ils se préoccupent de la qualité de notre environnement à tous, l'avenir sur les trois pays leur appartient.\nPaola PFENNINGER et Guirec GUICQUEL sont tous deux chefs de projet à l'IBA, une initiative et filiale de l'Eurodistrict trinational de Bâle) que l'on se plaît à traduire par " Imaginer et Bâtir l'Avenir ". Oui mais alors, un avenir qui jouerait allègrement à saute-moutons sur les trois pays du coude du Rhin pour offrir un espace cohérent sur un territoire jusque-là encore par trop fragmenté par les frontières territoriales, politiques et culturelles.\nAinsi Paola PFENNINGER (études d'architecture à Berlin et un master d'urbaniste à Paris) insiste sur le fait de « ne pas oublier le voisin » et donne l'exemple de « Dreiland et de son groupe de travail où l'on a initié le souci d'échanges. » Et Guirec GUICQUEL (ingénieur en horticulture et aménagement du paysage après des études à Angers et Munich) de préciser : « ne pas penser sectoriel, bien mixer les usages, tout bien intégrer. »\nTous les deux sont appelés à donner leurs conseils pour parfaire des projets communaux qui ambitionnent le label IBA. Convaincre les décideurs de revoir parfois en partie leur conception ? Pas toujours évident !\nPaola : « il faut être passionné, avoir la foi, être convaincu de pouvoir améliorer les choses. Et il faut oser prendre des risques, essayer de nouvelles choses, donner aux gens les moyens d'agir en leur offrant des occasions d'expérimentations. »\nGuirec : « …sortir de sa zone de confort. Et peut-être qu'on peut apparaître, oui, parfois comme des utopistes. »\nEt donc, comme dit, pas toujours facile d'être suivis.\nGuirec : « il faut comprendre aussi que l'on vient dans les communes avec des critères qui obligent à remonter en qualité dans les projets ; on rajoute par conséquent du travail. »\nPaola : « nous intervenons souvent quand le projet est déjà bien avancé. Ce serait plus judicieux dans sa phase de démarrage. L'idéal serait que la population soit aussi associée au projet. Que des réunions publiques soient organisées en amont. C'est clair que cela fait un surplus de travail et de coût. »\n« Cette gravière délaissée à Saint-Louis »\nSur Huningue aussi ils ont leur regard, ce mouchoir de poche précieux où nos élus s'appliquent à « cultiver » chaque parcelle tel un jardin « à la japonaise ». Guirec : « C'est vrai, il y a une grosse pression démographique, beaucoup de logements… Un cœur à préserver… Mais Huningue a encore du potentiel. Comme il y en aussi en périphérie. Par exemple, cette gravière délaissée à Saint-Louis. Faut en prendre acte et se dire : qu'est-ce qu'on fait ? Je verrais bien l'ouvrir, y aménager un circuit pour en faire découvrir sa richesse. Et notre Breton de s'enthousiasmer, de parler de " réparation à long terme " et de " la conception là d'un nouveau réservoir nature ".\nOn veut bien le croire. Le vert, c'est aussi la couleur de l'espérance. Et notre spécialiste " Paysage " a de la pratique. « J'ai toujours travaillé sur des sites dégradés. Et c'est intéressant d'œuvrer sur une telle ossature de quartier vert. »\n« Mutualiser les espaces »\nPaola : « à Huningue, il y a des efforts de mise en valeur mais je pense que l'on pourrait aller plus loin, mutualiser les espaces… Par exemple, avec un aménagement adapté, un parking de supermarché pourrait devenir un espace de promenade lors des heures de fermeture, une cour d'école une aire de jeux… Il faut aussi sensibiliser les habitants aux problèmes de l'environnement : organiser une semaine sans voiture, planter systématiquement des arbres dans les rues afin d'amener de la fraîcheur en été et lutter contre la pollution. »\nGuirec : « je pense aux jardins, notamment et à la liaison entre la Passerelle et la place Abbatucci, qui est à améliorer avec une ouverture sur deux axes, d’une part la rue de France, d’autre part la voie verte le long de la berge. »\nPaola : « il faut veiller à soigner la mixité travail-habitat, se soucier aussi , par exemple, des besoins piétons cyclistes en élargissant les trottoirs, créant des pistes cyclables continues, sécurisées et agréables. Donner la priorité aux plus vulnérables… »\nEt dans ce domaine, notre Bavaroise et notre Breton jouent un peu les cobayes.\nDomiciliés l’un et l’autre à Saint-Louis, ils ont choisi le vélo pour leurs déplacements. De quoi déjà apprécier au guidon les pistes à travailler pour des liaisons entre Huningue et Saint-Louis.\nEt un coup de pédale pour le " Vivre ensemble " et un coup de pédale pour le " Paysage ", et un coup de pédale pour…


Jolie fratrie // Léandre, Louis, Éloi, Camille & Pio - Jolis Prénoms\nJolie fratrie // Léandre, Louis, Éloi, Camille & Pio\nChoisir un prénom n’est pas souvent chose aisée, alors imaginez devoir en trouver cinq, tous masculins qui plus est ! C’est ce qui est arrivé à Elsa, la maman de cinq beaux garçons prénommés Léandre, Louis, Éloi, Camille et Pio. De jolis prénoms aux sonorités bien distinctes, choisis à l’instinct mais qui s’accordent pourtant à la perfection ! Elsa nous raconte l’histoire des prénoms de sa jolie fratrie : d’où est venue l’inspiration, l’importance ou non de l’harmonie entre les prénoms, l’accueil par l’entourage… Un récit tendre et spontané qui se savoure comme une gourmandise !\n« C’est si difficile de choisir un prénom… quelle responsabilité ! Trouver un prénom qui plaise aux deux parents, harmonieux avec le reste de la fratrie (et le nom de famille )… tout en ayant conscience que notre enfant va vivre avec toute sa vie ! Faut-il laisser parler son coeur ? Etre fantaisiste ou raisonnable ? Un peu les deux ? Leur prénom leur plaira-t-il en grandissant ? Quel casse-tête !!!\nQue ce soit pour Léandre, Louis, Eloi, Camille ou Pio, nous avons toujours écouté cette petite intuition qui nous disait que c’était CE prénom-là qu’il fallait pour notre bébé… Je pense qu’un choix du coeur ne peut jamais être un mauvais choix ! »\n« Mon mari et moi étions assez jeunes quand Léandre est né. C’était le premier bébé dans nos familles respectives et parmi nos amis ; aussi je crois que nous recherchions un prénom vraiment original (la spontanéité de la jeunesse aidant !!!). Nous aurions eu une fille, nous l’aurions appelée Anne-Sibel (j’adore toujours autant ce prénom). Nos choix se sont portés dans un premier temps sur Roméo et Léandre, et puis au fil des jours, le prénom Léandre nous a totalement apprivoisés. J’aimais son côté un peu rétro mais chic, poétique et tendre à la fois, la référence à Molière aussi.\nJe crois qu’à sa naissance, l’annonce de son prénom que nous avions tenu secret (ce qui n’a pas été le cas des autres, les grands frères étant bavards…) a eu l’effet du bombe ! Tout le monde le trouvait un peu bizarre ! Mon père l’a appelé Alexandre pendant 3 semaines… (je vous rassure, aujourd’hui il l’a bien intégré). »\n« Enceinte de Louis, un peu naïve, j’étais persuadée que ce serait une fille ! J’avais plein d’idées de prénoms en tête : Blanche , Prudence…\nEt puis surprise… un second garçon ! C’est marrant, mais le jour où j’ai appris que nous attendions un autre garçon, j’ai su que je n’aurai pas de filles ! Cette fois-ci, j’avais envie d’un prénom un peu moins original, pour équilibrer la fratrie. Nous avions Auguste et Louis en tête et puis en fait, j’avais très envie d’avoir un « Louis ». Pour moi le prénom Louis c’est la douceur et la gentillesse incarnée. On retrouvait le côté poétique et tendre de Léandre, les deux prénoms sonnaient bien ensemble, allez… adjugé, vendu… »\n« Enceinte d’Éloi, j’étais sûre d’attendre un garçon. La tâche commençait à être plus délicate : il me fallait un prénom qui aille bien avec celui des grands frères. J’ai rencontré plusieurs Éloi dans ma jeunesse, je connaissais ce prénom, il ne me laissait pas indifférente mais je ne savais pas si c’était un prénom que j’aimais ou pas… (un peu bizarre, non ?). Lors de mon premier RDV chez la gynécologue, je lis dans la salle d’attente dans un magasine un témoignage bouleversant d’une maman qui avait eu un parcours un peu difficile pour avoir un enfant. Elle venait d’avoir son bébé, c’était un bébé miracle. Il s’appelait Éloi. J’avais un peu oublié ce prénom… Puis il m’est revenu d’un coup ! C’était ce prénom-là, bien sûr ! C’est comme ça que s’appellera mon troisième bébé ! »\n« Pour mon 4ème garçon, inutile de vous dire que la tâche était de plus en plus ardue. Rien ne me plaisait. « Trop banal », « mouais, pas le coup de coeur » « déjà donné… » . J’aimais bien Brieuc et Briac (je suis bretonne) mais ça n’allait pas très bien avec les autres prénoms de la fratrie… Et puis, c’est mon mari qui a proposé Camille. OUI, Camille c’était parfait ! Elégant et doux. Original et classique à la fois. J’avais juste peur que ça fasse un peu trop fille, et que ce soit dur à assumer pour lui mais vous ne devinerez jamais ce que m’a dit la sage-femme le jour de sa naissance : « Camille garçon ? Qu’est-ce qu’on en a à naitre en ce moment ! » Attention les filles ! Les Camille garçons reviennent en force !! »\n« Pio : quel casse-tête! Pour Pio j’avais envie de changement, dans la sonorité surtout. Un prénom qui tranche un peu avec les autres. J’aimais bien Octave mais je ne m’imaginais pas avec un Octave. Marceau? Oui, pourquoi pas, c’était cohérent et harmonieux avec le reste de la fratrie. Et puis j’ai rencontré cette belle famille avec ce petit Pio ! Ça m’a fait « tilt » tout de suite : c’était original, audacieux, pétillant… et faisait référence à un Saint incroyable. J’ai lu plus en détail la vie de Padre Pio que je ne connaissais que de nom. J’étais fascinée par ce personnage qui vivait sa foi avec une telle intensité ! Quand j’ai proposé le prénom à mon mari, il n’ a pas été fan du tout. Et puis, il y a eu le deuxième effet Kiss Cool ! Finalement, le prénom le séduisait. Par acquis de conscience, nous avons fait un vote familial = Pio vs Marceau. Pio l’a emporté haut la main ! Et puis, pour un petit dernier… Pio, c’est parfait, non ? ;-)\nIl ne nous restait plus qu’à assumer ce prénom face au reste du monde (Pio, franchement, où est-ce qu’ils ont été chercher ça ??) A défaut d’avoir encore un brin de spontanéité dû à notre jeunesse, nous avons aujourd’hui l’assurance de la maturité… Quant à mon père (encore lui), s’il a bien retenu son prénom, il le présente à ses amis : » Pio-il-nous-a-fallu-un-certain-temps-d’adaptation » ;) »\nJolie fratrie // Gustave, Suzanne, Lucien & Colette\nCette entrée a été publiée dans jolies fratries le 03/10/2018 par Jolis Prénoms.\n← La jolie histoire d’un prénom // Églantine La jolie histoire d’un prénom // Charline →\nTrouver 5 prénoms de garçons, chapeau!\nEt c’est vrai que Pio sort du lot, mais quand on est le 5ème, il faut réinventer un peu les choses pour ne pas se faire oublier, n’est-ce pas? ;-)\net Bravo pour ces 5 beaux prénoms de garçons!\nAvec mon mari nous attendons un petit garçon pour fin décembre et nous hésitons entre Eloi et Camille. Quels sont vos retours sur ces prénoms?


CESAP : Le guide et la liste complète des formations - Diplomeo\nÀ la recherche du CESAP qui vous fera réussir ?\nTrouvez et intégrez votre CESAP\nTout savoir sur le CESAP !\nVous êtes en école d’art en envisagez d’y rester durant 4 années ? Le certificat d’études supérieures d’arts plastiques (CESAP) est le diplôme que vous pourrez obtenir à la fin de cette quatrième année.\nQu’est-ce qu’un CESAP ?\nLe certificat d’études supérieures d’arts plastiques (CESAP), aussi appelé certificat de fin d’année 4, est un diplôme qui qualifie 4 années d’études dans le domaine de l’art. Il s’adresse aux personnes qui ne souhaitent ou ne peuvent pas aller jusqu’à la cinquième année.\nCe diplôme reconnu a pour but de valider les connaissances et compétences acquises jusqu’à la quatrième année. Pour l’obtenir, il faut valider 60 crédits ECTS (soit 6 unités d’enseignement) dans l’année. Parfois, un stage court s’ajoute à la formation.\nComment intégrer le CESAP ?\nLe CESAP ne peut s’obtenir qu’après quatre années dans une école supérieure d’art comme les Beaux Arts. Toutes les écoles d’art ne proposent pas la validation de ce diplôme.\nCombien coûte un CESAP ?\nCette année de formation est intégrée à un cursus de 4 ou 5 ans. Son prix dépend donc des tarifs pratiqués par l’école où vous suivez votre formation. Une année en école d’art peut varier de 100 (pour les écoles publiques) à 10 000 euros, pour les établissements privés les plus réputés.\nQue faire après la validation du CESAP ?\nUne fois que vous aurez suivi vos quatre années de formation en art et validé les unités d’enseignement du CESAP, vous pourrez intégrer une cinquième année d’études, dans votre école actuelle ou dans une autre formation. Vous pourrez choisir de vous spécialiser lors d’un master 2 ou d’un master spécialisé ou continuer dans une école d’art et valider le diplôme suivant : le DNSEP, diplôme national supérieur d’expression plastique.\nVous pouvez aussi vous lancer sur le marché du travail, ce diplôme confirme vos compétences et vos capacités à exercer dans les métiers de l'art. Pour certains employeurs, le CESAP est suffisant.\nConsultez la liste des 13 CESAP en France\nLes villes où faire votre CESAP


Home > Monde - 04/07/2018 à 07:31 - Belga\nSelon des témoignages de riverains, des jeunes ont jeté des projectiles et des cocktails Molotov vers la police.AFP\nUn jeune homme de 22 ans est décédé mardi soir à Nantes, en France, après qu’un contrôle de police a dégénéré, indiquent plusieurs médias français. Une vague de violences urbaines s’est ensuivie et le secteur du quartier du Breil, au nord-ouest de la ville, fait l’objet d’un important dispositif de sécurité.\nLes forces de l’ordre auraient demandé à un véhicule qu’elles voulaient contrôler de garer sa voiture, affirme Ouest-France sur son site internet. Le conducteur, refusant d’obtempérer, aurait fait une marche arrière brusque, heurtant un agent au genou. Un autre policier a alors tiré sur le véhicule et la voiture a terminé sa course contre une barrière. Le conducteur aurait été touché au cou et est décédé en arrivant à l’hôpital.\n«Le SRPJ de Nantes et l’Inspection générale de la police nationale sont saisis de l’enquête afin de préciser la commission des faits et déterminer dans quelles circonstances le policier a été amené à faire usage de son arme», a précisé à l’AFP le procureur de la République de Nantes Pierre Sennès.\nSelon ce dernier, la situation était mardi soir «très agitée» et «très confuse» dans le quartier du Breil.\nLe jeune tué à Nantes était sous le coup d’un mandat d’arrêt


Double vitrage Feurs - solution avantageuse 👨🔧\nartisan42 - réparation double vitrage Feurs\nArtisan 42 > Double vitrage Feurs\nDouble vitrage Feurs : bien améliorer l’isolation de sa maison\nN’est-ce pas agréable de posséder une fenêtre vitrée qui amène le confort et le caractère chez soi. Les vitres dévoilent en effet les intérieurs et favorisent également la luminosité des pièces les plus sombres. Certains vitrages et volets roulant ont le pouvoir de masquer la vue depuis l’extérieur et d’avoir plus de visibilité de l’extérieur depuis l’intérieur. Cet effet trompe œil ne fait que renforcer son atout. Mais attention, tous les vitrages ne possèdent pas une telle potentialité ni d’autres atouts d’ailleurs. Il convient alors de réaliser un remplacement si vos vitres ont de faibles résistances ou si elles subissent une défaillance. On peut toujours solliciter une intervention urgente sur double vitrage cassé sur Feurs. D’autre part, le vitrage apparait comme une solution contre toute épreuve et résiste en général au choc, enfin, selon le modèle que l’on possède, mais il peut aussi proposer d’autres solutions telles que l’isolation de la maison. Si la chaleur passe dans la plupart du temps par la toiture, le mur et le sol, il faut aussi savoir que les fenêtres participent également à la déperdition thermique. Ainsi, il est utile de tenir compte de ce détail au moment de choisir le vitrage qui lui convient. Tout le monde possède ses propres exigences en la matière, mais parfois, il faut prendre en compte de l’exigence de ses fenêtres, de l’exposition et de la dimension de celles-ci, seul un devis détaillé vous permettra d'y voir plus clair.\nDonc, en matière de vitrage, on peut en citer trois. Le premier concerne un vitrage simple que l’on déconseille en raison de sa faible résistance non seulement au choc, mais aussi aux intrusions. De plus, c’est un mauvais isolant. Néanmoins, sur le côté esthétique, il peut faire l’affaire. Ensuite, on parle du double vitrage, qui est prôné par son pouvoir isolant assez intéressant et par sa résistance assez élevée contre toutes les éventualités. Même un cambrioleur ne parviendra pas à passer par-là pour pouvoir introduire dans la maison. En fin, on évoque aussi le triple vitrage qui comme son nom l’indique, il possède une épaisseur assez importante, ce qui signifie qu’il offre une meilleure isolation thermique vraiment supérieure. Mais il présente l’inconvénient d’être lourd et ne peut être accueilli sur n’importe quelle menuiserie. Alors, que faut-il choisir par conséquent ? À l’évidence, il est préférable d’opter pour un double vitrage. Il améliore le confort thermique, mais aussi acoustique de la fenêtre et bloque ainsi la chaleur durant les périodes hivernales. En revanche, en été, on bénéficiera de plus de fraicheur que de chaleur. En d’autres termes, un double vitrage peut être posé sur tous types de menuiserie et ne vient pas tenir compte de la dimension de la fenêtre. On peut toujours adopter une dimension sur mesure. Par ailleurs, même s’il s’agit d’une solution irréfutable, les incidents peuvent toujours se produire. On doit alors être paré à toutes les éventualités en contactant un spécialiste du dépannage et remplacement double vitrage à Feurs. Certes, les pannes les plus fréquentes sont souvent liées au défaut de l’installation ou à un choc vraiment puissant. Quoi qu’il en soit, on peut toujours résoudre ce problème rapidement en s’y prenant tôt.\nEn général, il existe différents modèles de double vitrage et pour faire le bon choix, une petite évaluation de ses performances s’impose. Dans ce cas, on fait appel au coefficient Uw. Ce dernier consiste à mesurer l’isolation thermique du double vitrage et plus, celui est faible, plus, on profite d’un grand niveau d’isolation. Mais il y en a d’autres mesures que l’on doit prendre en compte notamment le facteur solaire SW. Celui-ci correspond à la quantité d’énergie solaire qui passe à travers la vitre. Plus, les chiffres sont élevés, plus la chaleur du soleil reçu sera importante. En fin, on peut aussi mesurer ses performances grâce à la transmission lumineuse ou TLw. Celle-ci correspond à la capacité de la vitre à diffuser le rayonnement lumineux. Si cette capacité est importante, la quantité lumineuse le sera aussi autant. Il vaut mieux alors s’attarder sur ces paramètres pour éviter de faire un mauvais choix. On peut toujours par ailleurs, compter sur les spécialistes de la mise en sécurité secteur Feurs et la région pour aider à tout comprendre. Par ailleurs, en double vitrage, toujours utile également de connaître les différentes variantes. Et en général, il y en a 4 : le double vitrage classique, le double vitrage à lame d’argon, le modèle à isolation renforcée et le modèle antieffraction. Vous pencherez en faveur de cette dernière par exemple pour repousser les formes d’intrusion ou bien pour la troisième option pour renforcer l’isolation de la fenêtre.\nARTISAN 42 - Nos engagements en vitrerie sur Feurs


Cap Horn : l’épopée des cap-horniers\nVous êtes ici : Accueil > Cap Horn > Histoire > Cap-horniers > L'épopée des cap-horniers\nLes premiers cap-horniers furent les clippers américains et anglais, puis français, comme ceux du Bordelais Antoine-Dominique Bordes, le plus grand armateur de voiliers du monde. Les navires à vapeur, qui les avaient supplantés sur la ligne de l’Atlantique Nord, ne pouvaient poursuivre leur route, faute de parvenir à s’approvisionner en combustible dans les immensités des mers du Sud.\nCes clippers (d’un mot d’argot signifiant : « chose excellente en son genre ») étaient les plus harmonieux bâtiments qui aient jamais navigué : longue étrave acérée, lignes d’eau s’effilant avec une incomparable douceur, toutes voiles dehors sur ses quatre mâts vertigineux, le Thermopyle, tout comme son alter ego le Cutty Sark. « filait sept nœuds alors qu’un matelot pouvait se promener sur le pont une bougie allumée à la main, si équilibré qu’un mousse le tenait facilement à la barre par tous les temps, si puissant qu’il gardait tout dessus jusqu’à plus de treize nœuds ».\nLes prestigieux navires construits en bois furent remplacés vers 1890-1900 par toute une flotte de puissants voiliers à coque d’acier pouvant jauger jusqu’à 4 500 tonneaux. Dans les dix dernières années du XIX" siècle, cinq mille de ces bâtiments battant l’Union Jack, douze cents français, autant d’américains et de suédois, mille allemands et plus de deux mille norvégiens sillonnaient les mers du monde les plus ingrates et les plus lointaines, doublant régulièrement le Horn.\nÀ l’aller, leurs cales étaient emplies de charbon, de minerai de fer, de ciment et, au retour, de guano, de cuivre et de nitrate du Chili, de laines de Nouvelle-Zélande et d’Australie, de riz, de céréales et de bois tropicaux. Ils restaient sans rivaux, notamment du point de vue économique : vers 1900, ils transportaient la tonne pour 80 francs alors que le vapeur demandait près de 200 francs pour la même charge.\nConstruits pour pouvoir profiter des plus forts coups de vent, les quatre-mâts et les cinq-mâts d’acier ne redoutaient pas la tempête. Le mauvais temps faisait leur affaire. Les paquets de mer pouvaient briser à bord et le vent bramer dans le gréement, ils continuaient, couverts d’écume, de s’ouvrir une route à travers des montagnes d’eau imposantes.


CRACOVIE 2019 - Les Routes du Monde\nAccueil / LES ROUTES DU MONDE / Actualités / CRACOVIE 2019\nDu 13 au 15 décembre dernier, nous avons eu l'opportunité de faire un voyage de découverte à Cracovie avec l'association "les Routes du Monde".\nPartis de Roissy-CDG en fin de matinée, nous avons atterri en Milieu d'après-midi à l'aéroport Jean-Paul 2 de Cracovie avant d'être pris en charge par notre guide qui s'est occupée de notre transfert jusqu'à notre hôtel à Cracovie.\nPuis nous sommes partis faire un tour dans la vieille ville de Cracovie illuminée avec la Grande Place du marché avec l'Eglise Notre-Dame et la Halle aux Draps avant de rentrer à l'hôtel pour le dîner.\nLe lendemain matin nous sommes partis visiter un des bâtiments de l'universite Jagiellone, puis la colline royale de Wawel avec son château et la Cathédrale des Sacres avant de visiter le quartier de Kasimierz (quartier de la diaspora juive avant la guerre), puis l'exposition de crèches avant de dîner dans une grand restaurant local.\nLe dimanche matin une partie du groupe a pu visiter les camps d'Auschwitz et de Birkenau, avant de rejoindre l'autre partie du groupe pour déjeuner et visiter la mine de sel de Wielicka avant de repartir vers l'aéroport pour rentrer vers Paris. Séjour dans la lignée des voyage RDM... belle organisation et séjour conviviale, très beau voyage.................


Gagnant d'un cadeau zip ? sur le forum Prizee - 20-11-2012 19:24:58 - jeuxvideo.com\njeuxvideo.com / Prizee / Tous les forums / Forum Prizee /\nTopic Gagnant d'un cadeau zip ?\nSujet : Gagnant d'un cadeau zip ?\n20 novembre 2012 à 19:24:58\nBonsoir cher internautes je voudrais savoir si quelqu1 à gagner un cadeau grâce au zeep ?\nPerso j'ai tenté l'ipod suffle mais j'avais pas assez de zeep et 39 personne été devant moi !!!\n20 novembre 2012 à 20:47:03\nmais comment vous connaissez le nombre de personnes qui ont participé à tel cadeau\n20 novembre 2012 à 21:22:37\nAh bon on peut voir combien de personnes étaient devant nous ? Je regarderais ça demain alors ;)\n20 novembre 2012 à 21:57:25\nOui on peut savoir combien de personne ont misé plus de zeep que nous. A la fin du temps imparti sur le cadeau que vous avez sélectionné vous recevez un message sur votre compte prizee en disant pour mon cas " 48 joueurs disposaient d'un plus grand nombre de Zeep que vous " . voila\n20 novembre 2012 à 22:05:42\nEst-il possible de nous dire comment savoir le nombre de personne ayant plus de zeeps que nous sur notre demande de cadeaux ?\n20 novembre 2012 à 22:08:34\nmerci pour l'info. J'ai les boules sur mon message prizze, une seule personne était devant moi...arnaque ou pas arnaque ?\n21 novembre 2012 à 00:18:11\nJ'ai gagné un Home cinéma hier et demain peut-être un iPad 3\n21 novembre 2012 à 13:36:27\nTu à combien de ZEEP pour tenter d'obtenir l'iPad3 ?\nAujourd'hui j'ai gagné la XBOX 360 Kinect nike + ! Cool !\nJuste un conseil, ne sélectionné pas un cadeau trop petit par rapport au nombre de ZEEP que vous avez cumulé car Prizee vous remet votre compteur à zéro peu importe le cadeau choisi et le nombre réel de zeep dont vous aviez besoin pour être premier...\n21 novembre 2012 à 13:55:14\nHahahaha je suis dégoûter ! "13 joueurs disposaient d'un plus grand nombre de Zeep que vous."\nComme quoi...@k-nice : Je pense pas, ta juste eux pas de chance tu a combien de Zeep ?\n21 novembre 2012 à 14:18:54\nHa ha, j'ai gagné la house d'ordinateur moi. :p\n21 novembre 2012 à 17:09:47\nHa Bravo Miss.\nPeut être que les zeep sont mieux que les objectifs finalement ?\n21 novembre 2012 à 19:41:36\nnan parce que y'a plein gens qui ont bcp de zeep et de bubz donc faut rechargé et tt je pense que c plus couteut que les objectif\n21 novembre 2012 à 19:44:33\nvous avez eux cmb de zeep pour gagner vos cadeau ?\n21 novembre 2012 à 20:05:57\nPour ta Xbox t'as eu besoin de combien de zeep ?\n21 novembre 2012 à 21:46:40\nPour info j'avais + de 4000 zeeps pour le pack XBOX, je pense que j'aurais pu obtenir un + gros cadeau, cependant c'est dans les premiers jours de cette nouvelle règle de jeux que les compteurs de zeep des joueurs sont au plus bas. Il faut saisir l'opportunité et assuré ces arrières...pour le premier tirage avec le même nombre de zeep j'ai perdu avec une seule personne devant moi pour le MacbookAir, ok sa fait rêver mais en une journée combien de zeeps supplémentaire viennent ce gréffer aux compteurs de la multitude de gros joueurs ?!...il ne faut pas vraiment voir prizee comme un jeux mais plutôt comme une boutique au prix défiant toutes concurrences avec -50% minimum. Bonne chance à vous tous..\n21 novembre 2012 à 21:55:28\ncomment ta deja eu 4000 zeeps ?\n21 novembre 2012 à 22:02:19\nTu achète des jetons et tu joue non stop pendant des heures, mais maintenant c'est mort les plus gros joueurs ont déjà des compteurs bien au delà des 4000...comme j'ai pu le mentionner il faut voir prizee comme une boutique à prix cassé, au final j'ai eu mon pack xbox 360 kinect nike + pour 150 euros au lieu de 300 euros. C'est un achat que je souhaitait faire depuis un moment mais trop chère, du coup à ce prix là je fonce.\n21 novembre 2012 à 22:27:53\nUne montre grise avec 50 Zeep\n21 novembre 2012 à 22:30:59\nk-nice Voir le profil de k-nice\nPosté le 21 novembre 2012 à 22:02:19 Avertir un administrateur\nMais t'es con, avec tout ce que t'as payé comme recharge, ta Xbox t'aurais pu l'acheter en magasin pour moins cher\n21 novembre 2012 à 22:46:39\nJ'ai dépensé exactement 150 euros de jetons. Donne moi l'adresse du magasin qui la vend à ce prix et j'en rachète une autre de suite...tu croit sérieusement que je vais sélectionner un cadeau moins cher que ma mise ? C'est toi le con dans l'histoire qui jacte en croyant encore au père noël. Après c'est juste un conseil qui ma permis de l'avoir à moitié prix mais c'est sur qu'avec un peu de patiente je pouvais probablement avoir un cadeau plus cher...


formation d'un dépôt blanc\nLocalisation : Cély en Bière\nle Sam 28 Fév 2009 - 10:26\nMa grande fille :##21: possède un aquarium de 15l et un poisson rouge nommé Ecail depuis Noël après divers problèmes solutionnés en partie grâce au forum elle se croyait sortie de l'eau :##06:HIHIHIHIH!!!! mais récemment elle a observé la formation d'un dépôt blanc sur le filtre, les ventouses et le tuyau de l'aérateur.:##19: Pouvez-vous lui si celui-ci est normal et dans le cas contraire l'aider à en venir à bout.\nBonne journée et merci d'avance :##15:\nRe: formation d'un dépôt blanc\nle Sam 28 Fév 2009 - 11:27\nC'est pas du calcaire?\nMême si c'est pas le sujet, mais sache qu'un 15l, c'est beaucoup trop petit pour un poissons rouge. Ce sont des poissons qui deviennent grand et qui peuvent vivrent longtemps. Il leur faut minimum 50l avec bulleur et grosse filtration.


etiquette champagne mariage avec photo : Etiquette à champagne mariage avec photo lot de 12 étiquettes (article)\nArticles sélectionnés pour le thème : etiquette champagne mariage avec photo\nÉtiquette bouteille et boisson adhésive pro - Labelletiquette\nVin blanc, vin rouge, vin rosé, vin pétillant ou encore Champagne, autant de boissons prestigieuses qui font de la France un pays historique et reconnu dans le domaine viticole. Nous savons que l'étiquetage est capital car il doit refléter la noblesse du vin et du savoir-faire, c'est pourquoi labelletiquette.fr vous accompagne dans la production de vos étiquettes bouteilles en rouleaux de grande qualité.\nC'est également l'occasion de produire une étiquette de vin spéciale pour une occasion : mariage, anniversaire, avec une photo, pour Noël. Toutes vos cuvées particulières peuvent avoir leur étiquette dédiées.\nNous pensons que votre...\nSite : https://labelletiquette.fr\nThèmes liés : etiquette bouteille mariage / etiquette champagne personnalisee mariage gratuite / etiquette champagne mariage gratuit / etiquette champagne mariage avec photo / photo anniversaire de mariage


Place de l'IT Fournisseur, supply chain, BI : QAD continue d'enrichir son ERP industriel dans le cloud - Place de l'IT\nPosted By PR Paradigm On 25 octobre 2021 @ 15 h 11 min In News IT\nUne supply chain optimisée, plus d’automatisation en sourcing, une interface améliorée… des innovations qui profitent à l’ERP de QAD ERP, mais aussi aux autres progiciels de l’éditeur.\nUne interface revisitée, plus ergonomique, plus efficace\nL’éditeur californien QAD vient d’annoncer une série d’améliorations pour son progiciel éponyme dans le cloud, QAD Adaptive ERP. La nouvelle monture de cet ERP SaaS “orienté industrie” profite des récentes acquisitions de l’éditeur, notamment celle d’Allocation Network, éditeur de solutions pour l’approvisionnement stratégique et la gestion des fournisseurs. Baptisée QAD Supplier Relationship Management, cette nouvelle offre propose aux fabricants et à leurs fournisseurs un point d’entrée unique pour faciliter la communication en temps réel, améliorer les processus de chaîne d’approvisionnement (supply chain) et réduire les risques liés aux approvisionnements entrants.\nLa solution améliore également la gestion de la qualité des fournisseurs, la gestion des contrats et les performances liées à chaque fournisseur.\nLa QAD Enterprise Platform regroupe le Foundation Services, socle des fonctions utilisées par les application et les éventuelles extensions\nAutre innovation majeure de cette version, l’arrivée de QAD Sourcing qui ajoute des fonctionnalités pour automatiser davantage le processus “source to contract”. Cela permet notamment aux acheteurs de mieux s’approvisionner en matériaux directs et de gagner un temps précieux lors de l’achat de produits et services de faible valeur ou hautement standardisés qui ne nécessitent pas de communications détaillées avec les fournisseurs. Elle prédit les coûts du produit final avec une plus grande précision et améliore la gestion de la conformité des contrats, entre autres.\nD’autres fonctionnalités et améliorations viennent par ailleurs renforcer la solution QAD Adaptive ERP. Ainsi, Adaptive UX améliore l’interface et l’expérience utilisateur fournie par QAD. La solution repose sur une technologie de BI (Business Intelligence) intégrée qui permet à l’utilisateur de consulter les modifications et les mises à jour récentes pour une expérience personnalisée. La solution QAD Enterprise Platform intègre quant à elle de nouvelles options ainsi que des fonctions de développement “low code/no code” pour faciliter la mise à niveau et l’enrichissement des solutions ERP et ainsi maximiser le retour sur investissement (ROI).\nAnton Chilton, CEO chez QAD\nLes applications connexes ne sont pas oubliées\nOutre son ERP, QAD annonce également une fournée de fonctionnalités pour d’autres solutions connexes de son portefeuille QAD Adaptive Applications. Ainsi, QAD DynaSys DSCP, la solution de gestion de la supply chain de bout en bout, introduit la planification des promotions pour les fabricants de biens de consommation afin d’échanger électroniquement des données promotionnelles avec les détaillants et de gérer le cycle de vie complet d’une promotion, du concept à l’exécution.\nLa solution de gestion de commerce international, QAD Precision Global Trade and Transportation Execution intègre une nouvelle fonctionnalité pour les zones de commerce extérieur, permettant aux fabricants et aux distributeurs de les établir, de les gérer (y compris les opérations d’entreposage sous douane) et de réduire les coûts d’importation en d’améliorer la vitesse de la chaîne logistique.\n«Alors que la dernière version de QAD Adaptive ERP ajouter des fonctionnalités majeures sur l’ensemble de notre proposition de valeur, nous nous réjouissons d’annoncer l’ajout de\nQAD Sourcing et de QAD Supplier Relationship Management (SRM) à notre gestion intégrée des fournisseurs,» a déclaré Anton Chilton, CEO de QAD. «Ces deux nouvelles solutions aideront nos clients à communiquer de manière efficace et transparente avec leurs fournisseurs, en automatisant et en diffusant en continu les informations sur les performances et les risques des fournisseurs tout au long de leur cycle de vie.»\nURL to article: https://placedelit.com/fournisseur-supply-chain-bi-qad-continue-denrichir-son-erp-industriel-dans-le-cloud/


Depuis plusieurs mois, les agents municipaux de Bagnolet déversent des déchets sur un terrain vague situé en pleine ville, limitrophe de Montreuil. Une décharge, sauvage et totalement illégale. Et les premières victimes sont les riverains qui subissent de fortes nuisances.\nPublié le 04/09/2019 à 12h01 • Mis à jour le 11/06/2020 à 20h56\nLa décharge de Bagnolet vue d'un immeuble situé du côté de Montreuil. • © France 3 Paris - Île-de-France\nAu bout de la rue Jean Lolive, juste en face d'un immeuble de Montreuil s'accumule sur un terrain vague des déchets en tous genres, cela depuis une dizaine d'années.\n"Au début, c'était des sacs poubelles. Après, cela a commencé à devenir des montagnes d'ordures. Par la suite, c'était carrément des camions qui venaient déposer des sacs", raconte Fatma, une habitante de Montreuil dont l'appartement jouxte la décharge.\nÀ Bagnolet, même les agents municipaux déversent les déchets dans une décharge sauvage • ©France 3 Paris Île-de-France\n"Depuis des années, on signe des pétitions"\nLe terrain appartient à la mairie voisine, celle de Bagnolet, qui assure l'avoir clôturé à maintes reprises. Des particuliers, et surtout des entreprises viennent y déposer illégalement des déchets sous le nez des riverains.\n"Parfois, même les chats ont peur des rats. C'est vraiment inadmissible. Depuis des années, on signe des pétitions mais on n'a pas forcément de résultats", poursuite cette riveraine.\nMais depuis plusieurs mois, à défaut de nettoyage, les habitants voient des employés municipaux venir eux-mêmes y jeter ces sacs jaunes. Ils proviennent de la mairie de Bagnolet, dont le camion benne est en panne. C'est la solution provisoire qui a été trouvée en attendant de le réparer.\nUn appel d'offre pour le nettoyage enfin lancé\nBagnolet, la troisième ville la plus endettée de France ne parvient pas à régler ce problème. À notre arrivée, les équipes municipales s'empressent de refermer aussitôt les grilles du terrain.\n"On a été clairement défaillant sur le sujet. La situation était purement provisoire et a duré trop longtemps. Si je lance un marché pour nettoyer le terrain, cela va coûter très cher à la collectivité. Je ne fais pas cela avec plaisir", tente d'expliquer Tony Di Martino, maire (PS) de la commune.\nLe maire assure que les sacs jaunes seront bientôt transférés à la déchèterie. Quant au reste, il a lancé un appel d'offre pour s'occuper du nettoyage du terrain.\ncopier le lien https://france3-regions.francetvinfo.fr/paris-ile-de-france/seine-saint-denis/seine-saint-denis-bagnolet-meme-agents-municipaux-deversent-dechets-decharge-sauvage-1717771.html\ndéchets ménagers environnement société pollution\nAccueil > Paris Ile-de-France > Seine-Saint-Denis > Seine-Saint-Denis – À Bagnolet, même les agents municipaux déversent les déchets dans une décharge sauvage


Blog de miss-asuka-222 - Blog de miss-asuka-222 - Skyrock.com\nBienvenue ! Sur mon blog tout le monde ! j'espère que vous aimerez mon blog ^^\n 17 | 185 |\n# Posté le vendredi 04 septembre 2009 15:57\nModifié le mercredi 01 septembre 2010 10:06\nIls sont stylé n'est-ce pas? Dîtes de ce que vous en pensez!!!\n# Posté le vendredi 04 septembre 2009 16:01\nla team 7 version akasuki\nIl est pas mal en Akatsuki !\nModifié le mardi 13 avril 2010 10:21\nil est trop beau avec son dos musqulé !\n# Posté le lundi 07 septembre 2009 14:04\nModifié le mardi 13 avril 2010 12:16\nElle est tellement jolie ^^\n# Posté le lundi 07 septembre 2009 14:05\nModifié le mardi 13 avril 2010 12:21\nça c est moi en version manga !!\nAnni : 15 février\nSingne astro : verseau\nCaractère : un peu timide , s ' énerve facilement .\nCe qu'elle aime : Sasuke , ses amis .\nCe qu'elle pas aime : ceux qui aime pas sasuke\nelle vient de konoha dans le pays du feu sa meilleur amie c'est Yura .\n# Posté le jeudi 10 septembre 2009 13:25\nModifié le mercredi 29 juin 2011 13:16\nça c est yura\nNom : Inasaku\nPrénom : Yura\nAnni : le 24 mars\nCaractère : extravertie et folle furieuse\nElle aime : Naruto\nElle aime pas : les machos\nElle est la meilleur amie de Asuka et a un petit faible pour Naruto.\nModifié le mercredi 01 septembre 2010 10:09\nça c est Yuro\nPrénom : Yuro\nCaractère : calme et réfléchis il doit toujours réparé les conneries de sa soeur Yura ils sont jumeaux\nIl aime : Asuka mais il n'ose pas le lui dire\nIl aime pas : les gens qui aime pas Asuka\nIl est ami avec naruto et sasuke\nModifié le mercredi 01 septembre 2010 10:10\nLa copine de mon frère\nNom : Akimato\nAnni: le 31 octobre\ncaractère : toute les qualité un peu folle comme mon frère c pou ça qu il l aime.\nce qu elle aime : mon frère , moi ( elle est trop chou ta soeur . je l'ai entendu le dire a mon frère)\nce qu elle aime pas : les ramen trop cuite ( elle les faits super bien) et les sushis pas frais (elle les fait aussi super bien )\nça c est mon grand frère Ginei\nAnni:le 24 juillet\nsinge astro : lion\ncaractère : frimeur , cherche les ennui , aime s amusé avec ses amis , protecteur en vers ceux qui lui sont cher.\nil aime sa petite amie et sa soeur\nil aime pas les gens qui cherche a embêter sa sa copine ou sa soeur\nil habite avec sa soeur et sa copine\n# Posté le lundi 14 septembre 2009 11:47\nModifié le mercredi 01 septembre 2010 10:11


Exhibitor Category : Papier & carton\nInstallée au cœur de l’Europe, entre Lyon et Genève, Etna-Pack s’est construit une place à part dans le monde du packaging de luxe. Fabricant d’emballages haut de gamme depuis 87 ans, nous sommes à votre service pour vos développements : coffrets, boîtes, étuis, boîtages transparents\nSpécialisé dans le domaine du packaging, nous utilisons le carton et le papier pour donner vie à tous vos projets d’emballage dans le secteur du Luxe et de la Pharmacie. MMP Premium, 50 ans d’expérience de production d’étuis au service de la parfumerie, de la cosmétique, du maquillage et des spiritueux. MMP Packetis, 50 ans …\nMMP premium Lire la suite »\nProducteur français de papier de soie (qualité MF) depuis 1840. Etiques et responsables, les Papeteries de Montségur sont labellisées FSC, EPV et respectent la directive Européenne REACH. Forts de cette longue expérience, une très large gamme de couleurs de papier teintés dans la masse a vu le jour. L’usine comprend en son sein un atelier …\nMONTSEGUR (PAPETERIES DE) Lire la suite »\nForte de ses 150 ans d’existence et de savoir-faire, Papeterie de Mandeure, fabricant français, propose une collection créative et innovante de papiers et cartes, de 100g/m² à 600g/m² adaptés aux exigences du packaging de luxe. Sur notre stand, nous vous invitons à découvrir : FOODPACK® – Ecologique et innovant, support apte au contact alimentaire direct, …\nPapeterie De Mandeure Lire la suite »\nDepuis 1946, la société Seaman Paper est devenue le premier fournisseur mondial d’emballages légers et de papiers d’emballage décoratifs. Nous avons une véritable passion pour le papier et toutes les solutions durables proposées par le papier. Avec une fabrication et une distribution aux États-Unis, en Europe et en Asie, Seaman Paper est en mesure de …\nSeaman Paper Asia Co. Ltd. Lire la suite »


Phyoe Phyoe Aung : recevoir des lettres est une réelle source d'inspiration - Amnesty International France\nEn 2016 Phyoe Phyoe Aung et de nombreux étudiants retrouvaient la liberté au Myanmar. © N.R.\nEtudiante syndicaliste au Myanmar, emprisonnée pour avoir manifesté, libérée grâce à vous. Découvrez l'histoire de Phyoe Phyoe.\nAgée de 27 ans, Phyoe Phyoe Aung est Secrétaire générale de la Fédération des syndicats étudiants birmans. Ce mouvement national a contesté la loi nationale sur l’éducation votée en septembre 2014. Il dénonçait en particulier le contrôle du gouvernement sur les universités, l’absence de reconnaissance des langues minoritaires et l’absence de reconnaissance des syndicats d’étudiants et d’enseignants.\nAprès l’échec des négociations avec les autorités birmanes, une grande marche vers la capitale a été organisée en mars 2015. Lors de cette marche, les manifestants, bloqués par la police, sont restés huit jours sur place avant d’être violemment dispersés. Phyoe Phyoe et une centaine d’étudiants ont été arrêtés et inculpés pour des motifs multiples : "rassemblement illégal", "participation à un attroupement illégal sachant qu’il a été dispersé", "émeute", "blessure volontaire pour détourner un fonctionnaire de son devoir", "incitation à commettre des infractions contre l’État ou contre la tranquillité publique". Ils risquaient jusqu’à 9 ans de prison. Emprisonnée uniquement pour avoir manifesté pacifiquement, Phyoe Phyoe Aung est une prisonnière d’opinion.\n394 000 lettres, courriels et tweets pour demander sa libération\nLors de sa campagne des 10 jours pour signer en décembre 2015, notre organisation a lancé un appel mondial à mobilisation en faveur de Phyoe Phyoe. Des milliers de sympathisants ont interpellé les autorités birmanes pour leur demander la libération immédiate et inconditionnelle, et l’abandon de l’ensemble des poursuites à l’encontre de Phyoe Phyoe, de tous les manifestants pacifiques et de tous les dissidents détenus uniquement pour avoir exprimé leur opinion politique et participé à des activités pacifiques.\nCe sont ainsi plus de 394 000 lettres, courriels et tweets qui ont été écrits en sa faveur. Une pétition d’Amnesty International France à l’intention des autorités birmanes a recueilli plus de 50 000 signatures.\nEn avril 2016, Phyoe Phyoe Aung a été libérée et les charges retenues contre elle et contre de nombreux autres étudiants ayant participé aux manifestations en mars 2015 ont été abandonnées. Le nouveau gouvernement du Myanmar a annoncé qu'il allait prendre des mesures pour libérer tous les prisonniers d’opinion dès que possible, et mettre fin aux arrestations et détentions pour motifs politiques. Un grand nombre a de fait été libéré depuis. Mais il reste encore beaucoup à faire, nous continuons de mener campagne pour la libération de tous et pour que les autorités birmanes garantissent la liberté d’expression de tous.\nNotre combat pour les prisonniers d'opinion\nNous agissons pour les personnes victimes de violations de droits humains pour le simple fait d’avoir usé pacifiquement de leur liberté d’expression, d’association et de rassemblement en :\nExigeant des autorités la libération des prisonniers d’opinion,\nCherchant à faire abroger ou modifier les lois qui restreignent abusivement les libertés d’expression, d’association et de réunion pacifique,\nOrganisant des actions de solidarité avec les prisonniers d’opinion, afin de soutenir leur moral et de rendre visibles leurs combats.\nBrave* Liberté d'expressionPrisonnier d’opinionMyanmar


Nokia Lumia 535 pièce neuve identique constructeur\n> Navigation Marque/modèle>Nokia>Nokia Lumia 535\nNokia Lumia 535 Il y a 12 produits.\nPièces détachées pour réparer mon Nokia Lumia 535.\nLe Nokia Lumia 535 est un Smartphone d’entrée de gamme doté de deux emplacements pour carte SIM. Installé sous Windows Phone 8.1, ce modèle est équipé d’un processeur quad core Qualcomm Snapdragon 200 cadencé à la vitesse de 1,2 GHz soutenu par 1 Go de mémoire vive et 4 Go de capacité de stockage interne. Le Lumia 535 dispose d’un écran IPS de 5 pouces avec une définition de 960 x 540 pixels (220ppp) et une protection Gorilla Glass 3. Côté multimédia, ce Smartphone Windows Phone embarque un appareil photo principal de 5 Mégapixels avec autofocus et flash LED capable de saisir des vidéos en 480p.\nIl serait dommage de jeter un Smartphone pour une simple vitre fissurée alors qu’il est assez simple de le remettre à neuf. Le site piece-mobile.com vous offre la possibilité de commander la pièce que vous souhaitez remplacer sur votre Smartphone au meilleur prix. Sur cette liste vous trouverez toutes les pièces détachées pour Nokia Lumia 535 comme par exemples des vitres tactiles pour Nokia Lumia 535, des écrans LCD pour Nokia Lumia 535, des batteries pour Nokia Lumia 535, des coques arrière pour Nokia Lumia 535, des haut-parleurs pour Nokia Lumia 535, des caméras arrière pour Nokia Lumia 535, des lecteurs cartes SIM pour Nokia Lumia 535, des câbles d’alimentation pour Nokia Lumia 535, des connecteurs de charge pour Nokia Lumia 535… Pour les possesseurs d’un Nokia Lumia 535, nos techniciens mettent à votre disposition des guides de réparation qui vous expliqueront comment réparer vous-même votre Nokia Lumia 535.\nEcran vitre tactile noir pour Nokia Lumia 535 version 2S\nEcran vitre tactile noir pour Nokia Lumia 535 version 2S.\nEcran vitre tactile et LCD assemblés noir pour Nokia Lumia 535 Version 2S\nEcran vitre tactile et LCD assemblés noir pour Nokia Lumia 535 version 2S.\nMicro pour Nokia Lumia 535\nMicro pour Nokia Lumia 535.\nCable coaxial antenne pour Nokia Lumia 535\nCable coaxial antenne pour Nokia Lumia 535.


Sony Xperia Z - Page 99 - Sony - Forum Planète-Smartphones\nle 3 janvier 2013 dans Sony\nMoi aussi quelques lags ponctuels... Mais ça reste ponctuel\n-Philippe- 100 posts\nalex971 96 posts\nDavidsic 82 posts\nAucun ralentissement sur mon Xperia ZL. Juste les sons de verrouillage qui sont un peu faible....\nAprès coup j'ai fait un léger ménage dans mes applis,un reboot et ça a l'air d'être rentré dans l'ordre.\nEnvoyé depuis mon ASUS Transformer Pad TF700T en utilisant Tapatalk 4 Beta\nMise à jour disponible via PC Companion pour le Z (Version Nue Fr) => 10.3.1.A.0.244 (Jelly Bean 4.2.2)\n10.3.1.A.0.244 firmware update is simply a patch update of android 4.2.2.\nEfficient RAM management.\nSource : http://www.xperiaguide.com/2013/07/30/download-xperia-z-c6602-10-3-1-a-0-244-firmware-update-ftf-file/\nModifié le 1 août 2013 par Jeals93\nMerci de l'info pour la maj, vais tester cela.\nL'appli walkman s'est mise à jour aussi, à voire...\nAyant eu plusieurs téléphones sony, je compte en acheter un à nouveau chez eux. Pour le moment je pense réélement me pencher pour le Xperia Z, mais voilà, j'ai vu différents forum qui parle de quelques (gros) problème: Fissure de l'écran, batterie qui surchauffe, batterie qui se décharge extrêment vite...\nDonc voilà ma question: Est ce que l'Xperia vaut-il réélement le coup? En sachant que je n'ai pas envie de mettre 600euro (oui je sais il y à moyen de le trouver moin chère) pour que ensuite il ai les différents bug cité audessus. Je compte l'acheter pour le long terme. Donc ne pas le changer dans 1 an.\nJ'espère que vous pourrez me conseiller, et m'aider dans ce brouillard qui est les forums =)\nMerci d'avance pour vos réponses, elles sont toutes bonne à prendre =)\nEdit Caro : bonjour et bienvenue sur le forum. Je combine ton post au topic sur le Xperia Z.\nEdit Speedybrains: Ok nickel, merci, et désolé de ne pas l'avoir mis au bon endroit =)\nModifié le 11 septembre 2013 par speedybrains\nBon pour l'écran qui se fissure jamais vu ça sans un choc et j'ai pas mal de Z autour de moi ... et moi même j'en ai possédé donc c'est une pure connerie pour être poli...La batterie qui chauffe oui ça chauffe mais pas plus qu'un autre sauf que le verre étant plus conducteur on a l'impression que ça chauffe beaucoup plus...\nQuand a la décharge de la batterie et bien cela dépend fortement de ce que tu fait avec ton smartphone et si tu as un bon réseau chez toi et comme dit souvent l'autonomie reste un critère qui reste propre a l'utilisation de chacun mais il est comme la plupart des smartphone actuelle tu tiens la journée tranquille sauf avec une utilisation intensive\nMerci beaucoup pour ta réponse, j'attendais rééllement une réponse comme la tienne pour pouvoir l'acheter =)\nBonjour et bienvenue à toi Speedybrains,\nLa seule chose que je peux dire sur le Xperia Z pour en avoir vu un il y a quelques semaines, c'est que vu de face son écran est vraiment très beau, mais par contre les angles de vision sont réellement moins bons que ceux de mon Xperia P. Je considère ce dernier comme un smartphone Android "lambda", dans la moyenne quoi.\nLuminosité au max sur les 2 smartphones.\nXperia Z à droite. Désolé pour le flou, les photos ont été prises dans une voiture...\nXperia Z à gauche, pour pas qu'on dise que ça vient de l'ombre de l'un ou de l'autre et qu'il y a tricherie.\nA moins qu'un tel écart vienne de la protection d'écran posée sur l'écran du Z ? Mais ça me semble bizarre qu'une simple protection puisse faire ça.\nOk merci, je l'ai finalement acheté =)\nAprès une semaine, je ne vois rien de mauvais sur ce téléphone =)\nLa batterie chauffe (ex: en jouant), mais rien d'extraordinaire (j'ai fais la comparaison avec un ami qui à un Samsung S3 et le S3 chauffe plus que le Z)\nNiveau autonomie de la batterie, même remarque, la batterie tiens 2-3 jours, en fonction de ce que je fais avec.\nPour le moment (et je ne vois pas pourquoi cela changerais) je suis entièrement satisfait de ce smartphone =)\nMerci de ton avis en tout cas =)\nUn nouvelle mise à jour va bientôt être déployée.\nSur son compte twitter, Sony indique que le firmware dont le numéro du build est 10.3.1.A.2.67 va résoudre certains problèmes connus jusque là sur ses les Xperia Z, ZL, ZR et Tablet Z.\nParmi les améliorations, il y a entre autres les corrections des bugs, l’amélioration globale de la performance, le calibrage de l’écran, la réactivité de la caméra ainsi que l’optimisation de l’autonomie de la batterie.\nModifié le 20 septembre 2013 par Jeals93\nLocalisation :Manage, Belgique\nOpérateur :Proximus / Belgacom\nMobile(s) :Sony XPeria Z\nDepuis la mise à jour d'aujourd'hui, le son de la musique est quasi inaudible.\nJ'ai vérifié tout les paramètres et le son et au maximum.\nProgramme utilisé pour écouter la musique : Walkamn et Music Unlimited.\nPar contre, la musique de ma sonnerie fonctionne parfaitement, haut et fort.\nJe peut dire que je n'avait pas ce souci auparavant ..... ce dont j'en déduis un petit souci ...\nEuh quel modèle?\nDéjà on pourra plus t'aider et je pourrais mettre dans la bonne section\nAu cas ou regarde quand même tes paramètres dans les réglages au niveau du son\nMon modèle se trouve dans l'encart ......\nSinon, je le répète : Marque Sony, Modèle XPeria Z\nJ'a déjà vérifié dans les paramètres .....\nHa oui pas faux je pense jamais a regarder dans le profil