Smalltalk : ESUG 2017

Direction Maribor, Slovénie pour la 25ème semaine de l’ESUG (European Smalltalk User Group).

Introduction

Smalltalk est un langage objet, réflexif et dynamiquement typé, la réflexion étant sa capacité à être lisible/modifiable à chaud. Par exemple un débogueur peut s’ouvrir lors d’une exception non gérée où le code et les données peuvent être changées, avant de reprendre l’exécution. Pour cela un environnement de développement complètement graphique est intégré, mais il peut être retiré en production.

Cincom qui fournit une implémentation de Smalltalk, VisualWorks, nous a rappelé cette semaine que cet IDE est principalement écrit en Smalltalk. L’IDE faisant partie du code modifiable à chaud, il est donc très personnalisable.

Smalltalk est très apprécié par ses utilisateurs, qui connaissent ses avantages, mais d’autres trouvent une raison de ne pas l’utiliser. Toutefois des projets illustrés dans les conférences montrent des efforts pour promouvoir Smalltalk, le rendre plus accessible et attirant. Par exemple, le support de Git dans Pharo (une implémentation open-source de Smalltalk), le support des écrans rétina (PPP élevés), les performances améliorées dans Cincom Smalltalk : meilleure intégration de bibliothèques de bas niveau, support optimal de HTTP2, …

Une ouverture qui dans certains cas peut déranger les puristes : « Un lien vers des librairies externes ? Pourquoi ne pas tout développer en Smalltalk ? »

On les comprend lorsque l’IDE plante – ce qui n’arrive normalement jamais – parce qu’une fonction en C a été modifiée entre telle et telle version de telle DLL et que tout le monde n’a pas la même version sur son PC, sans parler des différents systèmes d’exploitation…

Etant en mission Smalltalk depuis plus d’un an chez un client, j’ai eu l’occasion de découvrir VisualWorks et ses usages en entreprise. Cette semaine à l’ESUG me permet de découvrir diverses facettes et usages de Smalltalk et de l’ingénierie logicielle en général.

Les conférences

Approachable software, Tudor Gîrba

Bienvenue à l’ESUG ! On commence avec le sujet de comment rendre le développement logiciel plus approchable par l’utilisation des bons outils, des bons processus de décision et par de la discipline dans les différentes couches logicielles.

Installation de Pharo et comment faire tourner Pharo dans la VM de GemStone

James Foster nous présente une introduction à GemStone et comment y inclure un Minimal-Pharo (avec environ 1400 classes).

gt4gemstone

Présentation d’un outil basé sur Glamorous Toolkit qui permet entre autres de développer à distance sur une image GemStone.

Pharo Quality Engine: The Last Strokes, Yuriy Tymchuk

Renraku est livré dans Pharo 6, un moteur de qualité de code, pour améliorer davantage les contrôles de qualité pendant ou après le développement, par exemple avec des corrections automatiques de code, des détections d’erreurs, …

Marcus Denker, Feedback Loops in practice

Pour construire une cathédrale, il faut d’abord construire les toilettes !

De nombreuses idées et exemples techniques et non-techniques sur l’évolution par le feedback et la façon d’améliorer les choses, sur le prototypage, les échafaudages, la perfection, l’issue-tracking, les challenges, l’incapabilité apprise, la gestion de la rétrocompatibilité, les structures de feedback, comment se faciliter la vie…

Accepter l’imperfection, impliquer la communauté, accepter le chaos, ne pas en faire trop trop vite, se rendre compte qu’un petit changement peut avoir d’énormes conséquences…

Les nouvautés dans Pharo 6, Marcus Denker, Pavel Krivanek, Esteban Lorenzano

Amélioration du support 64-bit, gestion de code source avec Epicea et Iceberg (pour Git, Github), bootstrapping d’images…

Utiliser Moose en codant

Comment les bibliothèques et outils de visualisation peuvent aider pendant le développement.

Pharo consortium: Getting pro to deliver more, Clément Béra & Estaban Lorenzano

Un consortium avec le but de soutenir Pharo, structurer la communauté, impliqué les entreprises et les individus.

Mardi, Cincom Smalltalk Roadmap 2017, Arden Thomas, Product Manager

Présentation de la roadmap de Cincom pour VisualWorks et ObjectStudio. Cincom prévoit par exemple d’améliorer la librairie commune aux deux, voire les joindre en un logiciel.

HTTP2 in Cincom Smalltalk SiouX Server, Jerry Kott, OSCP

Une présentation de l’histoire d’HTTP et à quel point HTTP2 est/sera plus performant, plus particulièrement lors de l’utilisation de la nouvelle couche SiouX Server intégrée à VisualWorks.

Les gains sont impressionnants et les options d’optimisation nombreuses.

When Smalltalk images get large, Dale Henrichs

Dale nous explique qu’on peut garder le confort de Smalltalk et continuer à développer dans Pharo en déployant dans GemStone/S pour des images jusqu’à plus de 1.5 To.

AppeX and JavaScript Support Enhancements in Cincom Smalltalk, Vladimir K. Degen

Un framework web léger et flexible qui permet d’utiliser les technologies courantes du web au sein de VisualWorks et de les lier à Smalltalk.

Moose reloaded

Une conférence sur Moose, une plateforme d’analyse de données, et FAMIX, un métamodèle pour Moose. On entends parler des Traits dans Pharo, qui sont utilisés dans FAMIX afin d’étendre les fonctionnalités d’une ou plusieurs classes.

Calypso a new modular code browser for Pharo

Abstract: Calypso is a new modular code browser for Pharo  It implements system and method browsers based on new navigation model which is optimised for remote development. This talk will demonstrate current functionality of Calypso.

Calypso underhood, Denis Kudriashov

Calypso remplace Nautilos comme browser système dans une image Pharo avec des features simplifiées et avancées : lazy fast tables, sélection multiple partout, mémoire de sélection et auto-sélection intelligente, onglets extensibles, éditeur de classe séparé, architecture pour plugins et navigation à distance.

Mercredi, GemStone company and business update, and roadmap, Dan Ware and Norm Green

On voit ce qu’il est possible de faire avec GemStone, comme des traitements massifs en temps réel sur des données en mémoire, avec des exemples d’utilisation par des clients. Une présentation de l’histoire de GemStone et les plans pour le future.

VA Smalltalk Product Update and Roadmap

Une présentation de l’état d’évolution de VA Smalltalk, dont le support 64-bit en détail, ainsi que les plans pour le future.

A Taste for Pharo 70, key challenges and first achievements, S. Ducasse, Clément Béra (Pharo Consortium)

La roadmap pour Pharo 70 : le support de classes non définies, un parser de classes, une nouvelle syntaxe de définition de classe, le support de modules (type de namespace?), Iceberg et Cargo, un nouveau gestionnaire de packages. On ajoute à cela beaucoup de nettoyage, car ajouter et remplacer des outils ne suffit pas.

Security Enhancements in Cincom® VisualWorks® 8.3, Jerry Kott

Communication sur l’importance de la cybersécurité en 2017, l’avancée sur le challenge d’avoir des outils sécurisés par leur design et les nouveaux moyens de cryptographie dans VisualWorks.

PharoThings: a live programming IoT-platform, Denis Kudriashow

PharoThings apporte la programmation immersive live dans le monde de l’internet des objets, avec en démonstration le contrôle d’un Raspberry Pi. Le développement se fait à distance mais modifie une image dans le raspberry Pi. Une IHM en smalltalk permet de voir et modifier l’état de DEL attachées au Raspberry Pi.

The moldable editor

Présentation d’un éditeur dans Pharo qui peut travailler avec les objets au runtime. Le développeur peut attacher de multiples vues graphiques personnalisées utilisant ces objets. Elles peuvent être imbriquées à côté du code, permettant un nouveau niveau de feedback et vitalité. De plus, les images sont vectorielles.

Ephemerons: The Strong Path to Finalization, Martin McClure, GemTalk SYSTEMS

Un fort chemin vers la finalisation d’objets. Beaucoup d’applications ont des traitements à effectuer avant le passage du ramasse-miettes sur des objets. Les Ephemerons sont une nouvelle construction moins comprise que les classiques conteneurs de références faibles.

Jeudi, Pharo optimizing JIT Internals, Clément Béra, Pharo consortium engineer, Inria

Une présentation sur les mécaniques complexes d’optimisation de la VM Smalltalk dans Pharo. L’intérêt est de maintenir la lisibilité du code tout en améliorant la performance lors de l’exécution et surtout l’exécution répétitive.

Playfulness for software professionals, Alena Kottova, University of Victoria, BC, Canada

Alena ayant participé à une compétition de bataille de serpents avec son mari un ingénieur de Cincom nous montre un algorithme ‘Medusa’, implémenté dans VisualWorks utilisant SiouX et AppeX. L’idée d’une telle compétition est de donner envie d’apprendre et faire de l’algorithmique en Smalltalk ainsi que de le comparer aux autres langages de programmation. Mon avis est que Smalltalk est bon compétiteur par la productivité qu’il permet mais qu’un langage nativement compilé permettrait des stratégies utilisant la force brute.

Cargo package manager, Christophe Demarey

Un nouveau gestionnaire de packages pour Pharo qui semble inspiré par NPM.

Vendredi, Dimensional Analysis

Présentation d’une application utilisée dans le domaine du pétrole et du fonctionnement de son système d’unités et de formules. L’application permet par exemple de déduire l’unité d’un résultat basé sur sa formule et les unités des variables en entrée. Il est possible d’utiliser des unités personnalisées, des transformations (pourcentage, conversion de température, …), ainsi que des booléens ou du texte.

Enhancing ENVY/Developer for Modern Programming Environments, Seth Berman, CEO, Instantiations, Inc.

VA Smalltalk utilise ENVY comme gestionnaire de code source, mais il n’a pas évolué depuis longtemps car les changements sont très risqués. De plus, organiser et tester le code est un challenge. Pour Seth l’objectif est de pouvoir y brancher des API (git, SQL), offrir une sécurité TLS pour le serveur et fournir un meilleur support à distance ou sans fil.

Understanding the Pharo Dev Process

Une démonstration du processus de développement dans Pharo, où on peut suivre le présentateur pour programmer dans une image Pharo.

Metamodeling of Custom Pharo Images, Pavel Krivanek

Présentation d’une nouvelle implémentation de Ring, un métamodèle Smalltalk, pourquoi il fallait le faire, les bases de l’architecture et comment l’utiliser. Suite à ça une démonstration d’utilisation de modèles Ring pour bootstrapper une petite image Pharo personnalisée et orientée pour une tâche particulière.

 

En conclusion,

La semaine était riche de l’expérience des nombreuses personnes présentes et des sujets variés qui fournissent une vision étendue de Smalltalk et du métier d’ingénieur logiciel. Les différentes solutions logicielles Smalltalk répondent particulièrement bien au besoin des individus, équipes et entreprises de rester maîtres de leur système que ce soit pour son développement, sa maintenance ou son amélioration sur le long terme. Elles permettent également beaucoup de flexibilité, y compris pour les IHM.