Paradigmes et langages non classiques INF355



Documents pareils
Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Évaluation et implémentation des langages

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Panorama des solutions analytiques existantes

Éléments de programmation et introduction à Java

Devenez un véritable développeur web en 3 mois!

Burckel Thomas. Formation. Compétences

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

Mise en œuvre des serveurs d application

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Paul FLYE SAINTE MARIE

Formateur.NET expérimenté Forte expertise dans la conception et le développement d applications.net, associée à une grande pédagogie

PostgreSQL, le cœur d un système critique

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

L'automatisation open source pour SI complexes

Formation : Langues : Types d Intervention et Secteurs d Activité :

Environnements et Outils de Développement Cours 1 Introduction

Introduction aux Bases de Données Relationnelles Conclusion - 1

Entraînement au concours ACM-ICPC

Bases de données cours 1

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

MEAD : temps réel et tolérance aux pannes pour CORBA

Machines virtuelles Cours 1 : Introduction

Chapitre 2 : Abstraction et Virtualisation

Informatique & Systèmes de Communication. Stages de 12 à 16 semaines aux Etats-Unis

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Outils de développement collaboratif

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Option GSI Génie et Systèmes Informatiques

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

Outils logiciels pour la combinaison de vérification fonctionnelle et d évaluation de performances au sein de CADP

Diffuser un contenu sur Internet : notions de base... 13

Environnements de développement (intégrés)

Systèmes de fichiers répartis

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Semestre 1. Objectifs Approfondissement de l environnement Java et de son interface de programmation d applications : réseaux, et processus.

Architectures web/bases de données

Fournir un accès rapide à nos données : agréger au préalable nos données permet de faire nos requêtes beaucoup plus rapidement

Cours de Génie Logiciel

Présentations personnelles. filière IL

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Expert technique J2EE

CATALOGUE DES FORMATIONS LANGUES

Catalogue des Formations Techniques

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

Systèmes en réseau : Linux 1ère partie : Introduction

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

BES WEBDEVELOPER ACTIVITÉ RÔLE

Stage Ingénieur en développement logiciel/modélisation 3D

Microsoft Dynamics CRM : Optimiser la relation client. Être opérationnel sur les différents modules proposés par Microsoft Dynamics CRM 4.0.

Implémentation libre de Liberty Alliance. Frédéric Péters

Qu est-ce que ArcGIS?

Hébergement de site web Damien Nouvel

Vérifier la qualité de vos applications logicielle de manière continue

Mercredi 15 Janvier 2014

Programmation sous QT

Chapitre 1 Qu est-ce qu une expression régulière?

CAHIER DES CHARGES D IMPLANTATION

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Installation et configuration de base de l active Directory

Intégration de systèmes

Eric Bertrand 08/11/06 Maître de conférence 1

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

Traduction des Langages : Le Compilateur Micro Java

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Programmation de services en téléphonie sur IP

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Etude de l utilisation de l intégration continue en entreprise

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Quatrième partie IV. Test. Test 15 février / 71

Logiciel HP StorageWorks Enterprise Virtual Array (EVA) Fiche technique

Chaîne opératoire de réalisation d une base de données. ANF «Comment concevoir une base de données» (29-30/01/2015)

Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire

Vulgarisation Java EE Java EE, c est quoi?

Générer du code à partir d une description de haut niveau

Planifier la migration des applications d entreprise dans le nuage

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Le collège d informatique

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

Administrateur de Parc PC

Intégration de l interface graphique de Ptidej dans Eclipse

Catalogue Formations Jalios

10. Base de données et Web. OlivierCuré

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Chef de projet H/F. Vous avez au minimum 3 ans d expérience en pilotage de projet de préférence dans le monde du PLM et de management d équipe.

Introduction à Eclipse

Transcription:

Paradigmes et langages non classiques INF355 Samuel TARDIEU <sam@rfc1149.net> 12 mai 2014

Exposé du problème Tout le monde connaît les langages classiques : Java C PHP Python Ces langages sont très similaires. La plupart des programmeurs et des entreprises en utilisent le plus petit dénominateur commun. (Q) Pourquoi les concepts et langages plus avancés ne percolent-ils pas dans les formations informatiques classiques? (R1) Parce que les entreprises hésitent à les adopter de peur de ne pas trouver d ingénieurs formés. (R2) Parce que les enseignants n y forment pas les ingénieurs, de peur que cela soit du temps perdu. 3/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Pourquoi ce cours? Il est utile d être polyglotte. Les abstractions sont modelées par le langage. La plupart des paradigmes offerts par un langage peuvent être facilement utilisés dans d autres langages. La simplicité est souvent la clé du succès : la majorité des abstractions étudiées s expriment très simplement. L informatique est belle, il faut la faire connaître. 4/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Les langages Les langages de l occurrence 2014, seront : Haskell langage fonctionnel, fortement et statiquement typé, non objet, mettant l accent sur l absence d effets de bord (pureté) et l évaluation paresseuse. Scala langage fonctionnel, fortement et statiquement typé, objet avec héritage multiple, interopérable avec Java, promouvant la programmation parallèle et réactive. Factor langage concaténatif, à pile, fortement et dynamiquement typé, supportant de nombreux modèles de programmation objet, privilégiant la compacité et l expressivité. Tous ces langages disposent d une interface interactive. 5/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Qu allons-nous voir (1/2)? Les types de données algébriques (Haskell, Scala) Les catamorphismes, anamorphismes, hylomorphismes (Haskell, Scala) Les typeclasses (Haskell) Les tests unitaires auto-générés (Haskell, Scala) Les traits et la linéarisation de types (Scala) Le typage par prédicats et mixins (Factor) Les types dynamiques La covariance et la contravariance (Scala) Les langages spécifiques aux domaines (Scala, Factor) La programmation point-free (Haskell) 6/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Qu allons-nous voir (2/2)? Les fonctions partielles et leur combinaison (Haskell) Les fonctions en tant qu objet de premier ordre et les fermetures transitives (Scala, Factor) La factorisation de code (Factor) La programmation concaténative à pile et les combinateurs (Factor) La programmation par agents asynchrones (Scala) La programmation réactive (Scala) La programmation monadique (Haskell) Les environnements par image (Factor) L évaluation lors de la compilation (Scala, Factor) L évaluation paresseuse (Haskell) Les continuations (Factor) 7/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Que ne verrons-nous pas? Les langages jouets (Intercal, Brainfuck, Befunge, Whitespace). Les langages de tableau (APL ou J) : ceux-ci peuvent néanmoins être utilisés en projet. Les langages moins évolués ou proches (Forth est remplacé utilement par Factor, Lisp et Clojure par Scheme). 8/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Organisation et charge de travail Les cours sont interactifs et vous êtes invités à reproduire et étendre ce qui est fait. La présence aux cours est fortement conseillée. La présence aux cours suffit pour peu que le cours soit relu. Les exercices (TD assistés) alternent avec les cours. Une partie des heures sera consacrée à un projet personnel (ou à deux), qui devra faire intervenir des concepts ou langages non classiques (vus en cours ou non). 9/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Exemple de projets passés (1/2) Un multi-user dunjeon (MUD) réparti extensible écrit en Erlang avec des agents autonomes. Un traducteur Scheme vers Javascript, écrit en Scheme et exécuté en Javascript. Un serveur IRC réparti tolérant aux pannes en Erlang. Résolution de problèmes ACM en Haskell. Pilotage d un bras mécanique à travers un langage dédié en Factor. Implémentation d une bibliothèque de gestions du parallélisme basée sur les continuations en Factor. Un analyseur et réducteur de complexité au sens de Kolmogorov en Factor. 10/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Exemple de projets passés (2/2) Une bibliothèque d algorithmie génétique en Scala. Un visualisateur de carte Minecraft en Scala. Un vote de Condorcet implémenté en OPA. Videolift pour gérer les vidéos de Rezel en Scala avec le framework Lift. Un typetracker pour la théorie des types dépendants en Haskell. Un typeur pour les expressions Haskell complexes. 11/12 Département INFRES INF355 Samuel Tardieu Mai 2014

Et maintenant? Installez tous GHC, une implémentation de Haskell libre et gratuite, disponible pour GNU/Linux, Microsoft Windows et OS/X. Crééz chacun un dépôt Git auquel je dois avoir accès (bitbucket.org vous offre des dépôts privés si vous vous inscrivez avec votre adresse telecom-paristech.fr, mon compte chez eux est samueltardieu), puis envoyez moi un mail avec l adresse de votre dépôt (en mettant INF355 dans le sujet). 12/12 Département INFRES INF355 Samuel Tardieu Mai 2014