...et le programme Damien Hartmann et Julien Vinel représentaient notre partenaire Lenovo/Intel à ce séminaire

Intel et son logo sont des marques de commerce d'Intel Corporation aux Etats-Unis et dans d'autres pays.

Séminaire Jeudi 30 juin 2016, Amphithéâtre Gay-Lussac, Ecole Polytechnique, Palaiseau Le séminaire sera consacré au langage Go et son impact dans l'industrie. Ce nouveau langage de programmation permet d'exploiter les architectures many-cores - avec un effet d'échelle qui lui permet de déployer le même code optimisé, aussi bien sur de l'IoT que sur un supercomputer. Coordination scientifique :

Le langage Go apparu en 2007 sous l'impulsion de Google, apporte des réponses élégantes qui permettent de penser que ce langage est le nouveau langage C adapté aux architectures modernes.

L'architecture many-core est devenue le paradigme dominant en informatique. Sa maitrise repose sur l'expressivité du langage de programmation. l'Internet des objets (IoT) apporte des nouvelles contraintes de puissance, de consommation et de grande variabilité des architectures. A nouveau, le langage de programmation sera le déterminant de la maitrise des architectures.

Introduction par Jean-Michel Batto, INRA Micalis

Thierry Goubier - CEA Un nouveau langage, pourquoi faire ?

Le langage de programmation Go fait partie d'un mouvement de refondation de la programmation, qui a vu apparaître avec lui, des langages comme Rust et Swift. Pour comprendre cette refondation et l'importance de Go, il nous faut le situer dans le paysage des langages de programmation, noter les évolutions significatives qui se sont produites au cours des dernières décennies, et la réponse qu'apporte Go.

Nous regarderons aussi l'importance de l'interaction qui existe entre le programmeur et le langage.

Cette présentation tentera de vous donner cette vue d'ensemble, et un regard plus appuyé sur l'intérêt et le potentiel qu'apportent les spécificités de Go.

Thierry Goubier, CEA





Rémy Mathieu – Sentryo Golang dans un produit de cybersécurité des réseaux industriels

Golang est un langage qui s’installe très rapidement dans l’écosystème des solutions aussi bien amatrices que professionnelles. Langage compilé multi-plateformes dont la syntaxe se rapproche pour certains du C, Golang est accompagné d’une bibliothèque standard le permettant de remplir très rapidement et très efficacement de nombreux use-cases.

Aujourd’hui, la liste des projets importants dans lequel on peut le retrouver est déjà longue malgré le jeune âge du langage : des webservices au messaging (nsq de Bitly), en passant par les containers et le déploiement (Docker), les bases de données distribuées (Etcd) ou encore par exemple le “service discovery” (Consul).

Mais quel pourrait être sa place dans un projet de Cybersécurité ? Sentryo, startup fondée en Juin 2014, protège des réseaux industriels sensibles avec la solution ICS CyberVision dans laquelle de nombreuses parties sont réalisées en Go. Nous verrons au long de la présentation sous forme de retour d’expérience les gains et facilités apportés par Golang.

Rémy Mathieu, Sentryo





Sébastien Binet – CNRS/IN2P3 Go en Physique des Particules & Cosmologie: traitement de données, alertes et programmation parallèle

Go est un langage de programmation relativement récent, créé pour la programmation concurrente.

Dans cette présentation, nous verrons comment ce langage, écrit à l’origine pour les serveurs de Google, est bien adapté aux applications scientifiques.

Dans un premier temps, le contexte des applications scientifiques telles que déployées au CERN sera rapidement exposé.

Les applications de physique des particules sont généralement des programmes de calcul intensif, écrits en C++/Python de plusieurs millions de lignes et centaines de bibliothèques partagées (.so/dlls).

Nous verrons comment le compilateur, l'écosystème de Go ainsi que son “tooling”, bien qu'encore relativement jeunes, permettent de résoudre rapidement et efficacement la plupart des problématiques relatives aux cycles de développement lents et pénibles, aux installations et déploiements - problèmes récurrents avec des programmes C++ de cette taille

Dans un deuxième temps, nous verrons comment Go peut être efficacement utilisé dans le cadre d'équipes plus petites n'ayant pas autant de ressources (tant matérielles qu'humaines) qu'une collaboration de physique des particules telles qu'elles peuvent exister au CERN.

Cela sera réalise au travers de l'étude de trois applications: - une simulation de physique (évolution de la composition d'une supernovae), remplaçant une analyse basée sur Excel, - une application contrôlant un jeu d'actuateurs via le protocole Modbus et présentant a l'utilisateur une interface web permettant d'afficher températures, positions, RPMs et - autres graphiques; cette application a remplace un framework Java, - une application réalisant l'acquisition (et le “monitoring”) de données d'un détecteur a application médicale.

Ce programme Go remplace un exécutable écrit avec pthread&C++03.

Sébastien Binet, CNRS





Jean-François Bustarret – Go, LoRa, Go, ou comment Go accompagne la révolution IoT chez Bouygues Telecom

Monter une plateforme dans un domaine aussi nouveau que l'internet des objets nécessite de savoir concilier un certain nombre de contraintes : le besoin d'adaptabilité lié à des besoins utilisateurs et des modèles économiques encore mal définis et donc changeants, des contraintes économiques fortes et en parallèle, la nécessité de disposer de plateformes fiables et capables de traiter le trafic généré par des millions d'objets.

Cette présentation nous donnera l'occasion de voir pourquoi Go est un choix intéressant pour répondre à ces problématiques.

Jean-François Bustarret, Objenious





Valentin Deleplace – FREMN Corp Éléments de serveurs web

Exécutable sans dépendances, ce qui simplifie les déploiements

Exemple de Fork/Join pour exécuter plusieurs tâches en parallèle

Exemple d'utilisation d'une Closure

Exemple d'entrée/sortie de JSON

Exemple de middleware de type func(http.ResponseWriter, *http.Request)

Pourquoi certains design patterns OOP ne sont pas très courants en Go

Exemple d'utilisation du Race Detector dans un serveur (mais pas AppEngine)

Exemple d'utilisation de l'outil Pprof pour trouver les goulots d'étranglement CPU

L'outil Go-fuzz pour éprouver la robustesse du programme

Quelques chiffres sur la consommation mémoire d'un serveur simple, comparaison avec Java

Considérations sur les struct, l'embedding et les interfaces. Que faut-il préférer ?

Peut-on survivre sans les Génériques ?

Avantages et inconvénients du package html/template

Valentin Deleplace, FREMN











Henri Lepic - Digikong Analyse de données de microcontrôleurs

Au vue de l'évolution du marché sur l'IoT, nous sommes face à de nouvelles problématiques tel que la récupération d'un grand volume de données généré par une myriade d'objets connectés, des moyens de communication hétérogènes, la gestion des mises à jours des objets. Face à ces problématiques certains langages offrent de très bon temps de réponse d'autres permettent une bonne versatilité quand à l'ajout de nouvelles fonctionnalités; Go est un langage offrant sous plusieurs aspects des bons équilibres entre performances et évolutions. Je vous ferais un retour d'expérience entre les phases de maquettage et de pré-industrialisation sur un projet dans le secteur de la santé et de la sécurité.

Henri Lepic, Digikong





Frédéric Menez - Scalera.io Les apports de l'écosystème Go pour les challenges de l'ingénierie d'architectures cloud microservices

Le développement logiciel monolithique a encore de beaux jours devant lui dans certaines industries comme l'embarqué ou le jeu vidéo. Cependant, en matière d'applications internet et logiciels cloud, les qualités de ceux-ci, telles que la résilience et l'échelonnabilité, sont fournies par des propriétés et fonctionnalités spécifiques, atypiques des architectures monolithiques, à savoir : des composants distribués fonctionnant en grappe, des communications asynchrones, des données accessibles en réseau, des traitements concurrents, des logiques de cohérence différée, du déploiement, de la configuration et de la mobilisation de ressources automatiques.

La conception et la maintenance de ces prérequis fonctionnels peut-être complexe et nécessite un outillage cohérent, fluide, et flexible. Nous passerons en revue les composants et systèmes open source Go (bibliothèques, monitoring, télémétrie) qui ont été initiés ces dernières années en vue de faciliter la conception d'applications cloud microservices.

Frédéric Menez, Scalera





Louiza Hanis – INRA Micalis Le langage Go dans le calcul HPC Big Data

Après une présentation rapide de la métagénomique quantitative et des problèmes liés au développement de codes spécifiques HPC, nous verrons qu'un projet de développement spécifique écrit en Go présente l'avantage d'une maintenabilité et d'un développement rapide. L'outil développé est destiné à traiter des données de type Big Data et propose une visualisation avec Cayley.

Louiza Hanis, INRA Micalis



