Archives de catégorie : Langages

Jean-François Perrot : « Un objet pédagogique : la verticale multilingue » (20/04/2017)

Orateur

Jean-François Perrot (LIP6)

Titre

Un objet pédagogique : la verticale multilingue

Résumé

Il s’agit de traiter un même programme en plusieurs langages de niveaux différents (du genre Python, C, assembleur MIPS), en prêtant attention aux changements de perspective induits par ces transitions.

On présentera une réalisation de cette idée pour le programme du calcul itératif de la suite de Fibonacci sans limitation de la taille du résultat, en Python, C et MIPS. (Évidemment, le point essentiel est l’exigence de valeurs illimitées, rendue « naturelle » par Python.)

Outre l’augmentation spectaculaire de la taille du code, on voit apparaître des problèmes imprévus de divers ordres, comme une particularité de l’addition fib(n-1)+fib(n), ou du nombre de zéros qui apparaissent au début d’un quotient. Loin d’être un simple exercice de réécriture, l’expérience devient un projet logiciel complet, avec plusieurs tours de spirale, où Python joue un rôle précieux de boîte à outils pour la modélisation, où l’écriture en C a sa propre problématique, et où la réalisation en assembleur MIPS exige une démarche d’une rigueur de fer.

On discutera des vertus pédagogiques attendues de ce dispositif.

Informations

20 avril 2017, 14h-15h30.

LIP6, salle 24-25/405.

Documents

Yann Régis-Gianas : CallCC, un coup d’état sur le contrôle (23/03/2016)

Orateur

Yann Régis-Gianas

Titre

CallCC, un coup d’état sur le contrôle

Résumé

Lorsque Dijkstra publie son article « Go To Statement Considered Harmful », une fronde de programmeurs – dont Knuth – s’est élevée contre les restrictions d’expressivité proposées par l’informaticien néerlandais : en effet, la structuration du flot de contrôle par les seules procédures et boucles while interdisait certains idiomes de programmation fort utiles et répandus.

Cependant, les motivations de Dijkstra étaient légitimes : puisque l’on ne peut pas prédire les prédécesseurs d’un point de contrôle en présence du « goto », on ne peut pas raisonner localement sur les instructions d’un programme et cela interdit toute ambition de passage à l’échelle de la preuve de programme.

Seulement, l’expressivité du « goto » peut être retrouvée à l’aide d’opérateurs de contrôle inventés par Peter Landin plusieurs années auparavant : en présence de ces opérateurs, les points de contrôle deviennent des objets de première classe appelés continuations. En tant qu’objet du calcul, les points de contrôle du programme sont alors l’affaire du programmeur. Grâce à l’abstraction de type, il peut alors choisir de légiférer comme bon lui semble pour spécifier leur bon usage.

Informations

Mercredi 23 mars 2016, 14h-15h30.

LIP6, salle 24-24/405.

Documents

Nicolas George : La négociation de formats multimédia (17/02/2016)

Orateur

Nicolas George

Titre

La négociation de format dans libavfilter

Résumé

FFmpeg est un projet de logiciel libre dédié au décodage, à l’encodage et à la manipulation en général de données multimédia ; libavfilter est le composant de FFmpeg consacré à la modification du contenu des flux audio et vidéo, qu’il s’agisse de transformations élémentaires comme changer la résolution ou la fréquence ou d’opérations complexes faisant intervenir plusieurs flux de nature différente.

Afin d’assurer les meilleures performances, libavfilter doit sélectionner des formats pour les différents flux compatibles avec les filtres utilisés tout en évitant autant que possible les coûteuses conversions inutiles.

Dans cet exposé, nous examinerons le mécanisme employé pour choisir les formats. Il est optimisé pour gérer le plus simplement les cas les plus courants mais a été étendu progressivement quand de nouveaux besoins se sont fait sentir. Le résultat est assez typique de la manière dont FFmpeg progresse.

FFmpeg is a libre software project dedicated to decoding, encoding and general manipulation of multimedia data; libavfilter is the FFmpeg component dedicated to changing the contents of the audio and video streams, whether it is for simple transformations such as changing the resolution of frequency or for complex operations involving several streams of various nature.

In order to ensure best performance, libavfilter needs to select formats for all the streams that are compatible with the involved filters while avoiding as much a possible expensive useless conversions.

In this presentation, we will study the mechanism used to select the formats. It is optimised to handle in the simplest way the most common cases but was progressively extended when new needs have arisen. The result is quite typical of the way FFmpeg evolves.

Informations

Mercredi 17 février 2016, 14h-15h30.

LIP6, salle 24-24/405.

Enregistrement et documents

Christine Proust et Baptiste Mélès : La calculatrice mésopotamienne MesoCalc (20/01/2016)

Orateurs

Christine Proust (CNRS, SPHERE, Université Paris-Diderot) et Baptiste Mélès (CNRS, Archives Henri-Poincaré, Université de Lorraine)

Titre

MesoCalc, la calculatrice mésopotamienne en JavaScript

Résumé

La calculatrice MesoCalc, créée en 2013, permet de pratiquer en toute simplicité l’arithmétique paléo-balylonienne : elle intègre la notation sexagésimale positionnelle, le calcul flottant et les principales opérations arithmétiques historiquement attestées. La calculatrice est destinée aussi bien aux assyriologues,aux historiens des mathématiques, qu’aux simples curieux. Disponible en ligne sur la page http://baptiste.meles.free.fr/site/mesocalc.html, ce logiciel est libre et gratuit.

D’abord, nous exposerons les bases des mathématiques mésopotamiennes grâce à des exercices scolaires qui servaient précisément à les enseigner à de jeunes scribes dans l’antiquité. Ensuite, nous ouvrirons le capot de MesoCalc. En décrivant comment ces notions ont été traduites dans le langage de programmation JavaScript, nous montrerons que les calculs sont effectués dans MesoCalc de manière aussi proche que possible du calcul sexagésimal, un peu par coquetterie — on plaidera officiellement le souci de probité historique — mais aussi pour de très prosaïques raisons techniques. L’arithmétique de JavaScript n’est exacte que jusqu’à 2 puissance 53, limite que les scribes mésopotamiens transgressaient allègrement ; il a donc fallu ruser avec le langage et réécrire toute son arithmétique élémentaire pour lui permettre d’atteindre ce qui nativement transcende ses facultés.

Accessible à tous, l’exposé ne présuppose aucune connaissance préalable des mathématiques mésopotamiennes ou de la programmation informatique.

Informations

Mercredi 20 janvier 2016, 14h-15h30.

LIP6, salle 24-24/405.

Julian Rohrhuber : Lecture errante. The close reading of sound algorithms leads astray – through the history of understanding, technology of sensibility, and matters of thought (13/01/2016)

Speaker

Julian Rohrhuber ( Institut für Musik und Medien, Robert-Schumann Hochschule Düsseldorf)

Title

Lecture errante. The close reading of sound algorithms leads astray – through the history of understanding, technology of sensibility, and matters of thought

Abstract

In this session, we will embark on a close reading of the source code of the programming language SuperCollider. With its inspirations coming from languages beyond the mainstream, and with its domain specificity, it is a good entry point for the reconsideration of the nature of functions, objects, and formalisms. Staying true to the principles of interactive and literate programming, reading code will thereby necessarily imply its writing, its operation, and listening to its sonic extensions. Thereby, we will broach some history and consequences of the concepts involved.

Informations

Mercredi 13 janvier 2016, 14h-15h30.

LIP6, salle 24-25/405.

Gérard Berry : Le langage Esterel (18/06/2015)

Orateur

Gérard BERRY (Collège de France)

Titre

Programmer en Esterel

Résumé

Esterel v5, créé en 1983 et développé jusqu’à 2001 à l’Ecole des mines de Paris et à l’Inria Sophia-Antipolis, est un langage parallèle synchrone spécifiquement conçu pour la programmation des systèmes réactifs événementiels : contrôle de processus en temps-réel, protocoles de communication, robotique, IHM, etc. Il a été industrialisé et utilisé dans de nombreuses applications dans des contextes académiques et industriels. Je montrerai d’abord ses idées principales et deux exemples de programmes simples.En 1999 a commencé en collaboration avec Intel Strategic Cad Lab de Portland le développement d’Esterel v7, un langage beaucoup plus riche destiné à la conception et la vérification des circuits électroniques mono- ou multi-horloges. Esterel v7 a été industrialisé par Esterel Technologies de 2001 à 2009. Il a été utilisé d’abord en recherche industrielle, puis en production réelle sur des circuits complexes. Couplé dans l’environnement Esterel Studio à un environnement mixte textuel / graphique, à un débogueur sophistiqué et à l’outil de vérification formelle Prover SL de Prover Technologies, il a permis de développer et vérifier rapidement des circuits sophistiqués, en particulier chez  Texas Instruments, NXP (ex Philips) et ST Microelectronics. Il a fait l’objet d’un processus de standardisation industrielle, malheureusement avorté prématurément avec son développement à cause de la crise de 2008 qui a bouleversé l’industrie électronique. Esterel v7 n’est malheureusement plus disponible, ayant été mis au congélateur par Synopsys, son nouveau propriétaire. Mais ses idées originales méritent d’être exposées et re-développées, et je montrerai son style de programmation à travers une présentation générale et une version réduite d’un filtre vidéo développé chez NXP.

Documents

Informations

Jeudi 18 juin, 14h-16h.

LIP6, salle 25-26/105.

Maarten Bullynck : Explorer MULTICS (21/05/2015)

Orateur

Maarten BULLYNCK (SPHERE, Paris 8)

Titre

Explorer les codes et textes de MULTICS

Résumé

Multics est (avec l’OS/360 d’IBM) l’un des grands projets de développement de systèmes d’exploitation dans les années 1960. Le système Multics fut développé à partir de CTSS (Compatible Time Sharing System), le système d’exploitation en temps partagé du MIT. Aujourd’hui, Multics est surtout connu pour avoir inspiré les programmeurs de Bell Laboratories dans la conception d’Unix.
Le noyau de Multics contient à peu près 54.000 lignes de code, dont la majorité est écrite en PL/1 mais quelques parties essentielles sont écrites en ALM, une sorte de macro-assembleur pour Multics. La lecture du code de Multics présente des difficultés: le code dans son ensemble est trop large et peu « littéraire » dans sa documentation locale ; il est particulièrement indigeste dans ses passages en assembleur. Heureusement, le développement de Multics est plutôt bien documenté par des rapports d’étape et des descriptions techniques. Ces documents éclairent ce qui se passe entre les différentes versions des modules Multics. Nous allons explorer le module de l’ordonnanceur et son évolution à travers le code et les documents techniques.

Documents

Informations

Jeudi 21 mai, 14h-16h.

LIP6, salle 24-25/405.

David Madore : Géométrie hyperbolique en JavaScript (30/04/2015)

Orateur

David MADORE (Télécom ParisTech)

Titre

Un jeu de labyrinthe dans le plan hyperbolique écrit en JavaScript

Résumé

La géométrie hyperbolique (géométrie non-euclidienne à courbure constante négative) peut présenter un attrait particulier pour le développement de jeux informatiques en ce qu’elle rend naturelle la création de mondes intrinsèquement labyrinthiques. Cette possibilité a cependant été peu explorée.

Nous expliquerons brièvement en quoi consiste la géométrie hyperbolique, ce qu’elle a de spécifique, et ce qui peut la rendre intéressante pour des jeux informatiques. Puis, à travers l’exemple d’un jeu de labyrinthe hyperbolique assez simple écrit en JavaScript, nous explorerons quelques uns des problèmes qui se posent pour implémenter en pratique cette géométrie hyperbolique (notamment, comment mettre des coordonnées et comment les rendre « périodiques »). Les spécificités du langage JavaScript pourront également être discutées.

Documents

Informations

Jeudi 30 avril, 14h-16h.

LIP6, salle 25-26/105.

Greg Kroah Hartman : Objects in the Linux kernel (09/04/2015)

Speaker

Greg KROAH HARTMAN (Linux Foundation)

Title

Objects in the Linux kernel: evolution is good

Abstract

This talk will discuss how the Linux kernel driver model came to be, starting out with one idea, which was refined by a group of people over time to encompass all types of devices within the kernel.  This evolution changed Linux to use object oriented programming throughout all drivers, taking small objects and building on them, all using only the C language with almost no runtime overhead.

This model would never have come about except due to the way the Linux kernel is developed, with multiple developer helping each other out, and forcing developers to break their changes up into small individual pieces.  Combined with the fact that all device drivers are within the kernel source tree, this has enabled Linux drivers to be, on average, 1/3 smaller than drivers for other operating systems.
Portions of this model have now been copied by the BSD kernels, including MacOS, validating the basic idea in a cross-codebase manner.

Documents

Practical information

Thursday, April the 9th, 14-16 PM.

LIP6, room 24-25/405.

 

Damiano Mazza : Les virus pour MS-DOS (19/03/2015)

Orateur

Damiano MAZZA (CNRS, LIPN)

Titre

Voyage à travers les virus MS-DOS

Résumé

Entre la fin des années 1980 et la première moitié des années 1990, MS-DOS domine la scène des systèmes d’exploitation pour PC. Sa structure extrêmement simple, voire naïve, vis-à-vis de la gestion de la mémoire, des droits d’accès aux fichiers et des mesures de protection en générale (pratiquement inexistantes) fait de MS-DOS un terrain extraordinairement fertile pour le développement des virus informatiques dans le sens primordial (biologique) du terme : un morceau de code ne constituant pas en soi un programme mais s’appuyant sur d’autres programmes pour s’exécuter et s’auto-répliquer, entraînant éventuellement des effets secondaires néfastes (la grande majorité de ce que l’on appelle « virus » informatiques aujourd’hui en effet ne le sont pas en ce sens).

Dans cet exposé, nous analyserons quelques exemplaires de ces organismes informatiques désormais éteints, en montrant leurs principes de fonctionnement et, pour certains, leur sophistication.

Documents

Informations

Jeudi 19 mars 2015, 14h-16h.

LIP6, salle 25-26/105.

Julia Lawall : Understanding Linux Network Device Driver Code (19/02/2015)

Speaker

Julia LAWALL (Inria/LIP6-Whisper)

Title

Understanding Linux Network Device Driver Code

Abstract

A device driver forms the interface between the operating system and a specific device.  While the operating system, running on a CPU, has a global view of machines resources, the device, due to possible limitations on its capabilities and to security constraints, has a specific and limited view.  This different view of system resources leads to complex communication protocols.  To address performance issues and evolutions in device design, these protocols have furthermore changed over time.  We illustrate these issues in the context of network device drivers via examples, and consider how program manipulation techniques can be used to help in getting a global understanding of the code.

Julia Lawall has been a Senior Researcher at Inria since 2011. Previously she was an Associate Professor at the University of Copenhagen. Her work includes the development of the program matching and transformation tool for C code, Coccinelle.  Coccinelle has been used in the development of around 2000 patches for the Linux kernel.

Documents

Practical information

Thursday, February the 19th.
LIP6, room 24-25/405, 14-16 PM.