X
Langages informatiques
Alain Clapaud / lundi 26 novembre 2018 / Thèmes: Développement, Dossier

Langages informatiques

Quoi de neuf ? Connaissez-vous Julia ?

Chaque année, une flopée de nouveaux langages informatiques est proposée par les chercheurs et les éditeurs de logiciels. Chacun d’eux vise à être plus simple, plus efficace, plus élégant que les langages actuels, mais bien peu séduisent les développeurs. 2018 n’échappera pas à la règle.

Les chiffres de GitHub Archive and GHTorrent compilés par Ben Frederickson montrent l’érosion des JavaScript, Java et C en termes d’utilisateurs actifs par mois (MAU) alors que la communauté Python semble désormais stabilisée.

À la fin de l’été, le MIT annonçait la release 1.0 de Julia, un nouveau langage sur lequel les chercheurs travaillent depuis 2009. Avec plus de 700 contributeurs, 1 900 packages enregistrés et déjà 2 millions de téléchargements, ce langage démarre avec une communauté plutôt dynamique. Julia est un langage dédié aux data sciences sur une niche déjà occupée par le langage R, MatLab et surtout Python, un langage créé il y a une trentaine d’années mais qui bénéficie d’une popularité sans failles auprès de millions de développeurs.

Aujourd’hui, les développeurs sont habitués aux annonces de nouveaux langages tous plus révolutionnaires et meilleurs les uns que les autres et beaucoup de ces langages peinent à assembler des communautés de développeurs réellement significatives. Pierre Murasso, co-fondateur de C17 Engineering explique : « Très peu de langages parviennent à émerger et être adoptés de manière massive et pérenne. Il faut avoir des raisons légitimes de passer sur un nouveau langage sachant que l’aspect legacy pèse beaucoup. Les entreprises doivent maintenir les codes existants et donc veulent le pérenniser en embauchant des développeurs maîtrisant ces langages parfois assez anciens. En parallèle, pour pouvoir s’imposer, un langage doit pouvoir s’appuyer sur une communauté énorme. »

xxx

Le dernier classement de popularité des langages de Tiobe le montre, les vieux langages ont la vie dure : Java, C/ C++, Python trustent les premières places devant… Visual Basic. En tête de classement, les langages des années 90 côtoient le langage C, dont la première version remonte aux années 70 !

L’étude de Ben Frederickson montre que les Go, TypeScript, Kotlin et Rust sont les langages qui connaissent la plus forte progression ces derniers mois. La taille des communautés pratiquant le langage Go et TypeScript se rapprochant désormais de celle pratiquant les C et C#, sachant toutefois que cette étude exclut mécaniquement tous les projets qui ne sont pas hébergés sur GitHub.

Nouveaux usages, nouveaux langages

Certains nouveaux usages rebattent les cartes. C’est le cas du Big Data qui a suscité de multiples initiatives, dont ce Julia du MIT, mais qui a aussi remis en course le langage R, dont l’origine remonte à 1993. Pour créer ce langage, des chercheurs ont repris les travaux d’un certain John Chambers, alors qu’il travaillait dans les laboratoires Bell sur l’analyse des données entre 1975 et 1976. Depuis, le langage R s’est imposé dans le Big Data grâce à une forte communauté universitaire et un nombre de packages statistiques assez unique. Pourtant, le R n’est pas exempt de tout défaut, comme l’explique Didier Verna, enseignant-chercheur au laboratoire de recherche et développement de l’Epita : « Du point de vue langage, il est difficile de faire pire que R, un ovni basé sur Lisp extrêmement mal conçu et peu performant. C’est une aberration que R ait gagné autant de notoriété auprès des statisticiens, et cela peut s’expliquer d’une part parce que beaucoup d’entre eux ne sont pas à la base des informaticiens, donc peu sensibles aux aspects de conception et de génie logiciel. » Pour le traitement des données, Microsoft a proposé le F#, un langage fonctionnel bien adapté à la manipulation de données qui pourrait se placer entre les C# et R. Ce langage de développeur peine à s’imposer dans les communautés Data Science en dépit d’atouts indéniables comme sa simplicité, comparé à Haskell, ou encore son intégration à l’écosystème Microsoft. « Le F# est intéressant d’un point de vue syntaxique, mais n’offre pas une rupture assez importante pour rallier à lui une communauté suffisante pour en faire une référence », estime Pierre Murasso.

Les développeurs ont à leur disposition de nombreux langages de programmation fonctionnelle plus ou moins directement inspirés du langage Lisp, tels que les Haskell, Scala, Erlang, OCml ou encore F#, plus particulièrement destiné à la communauté Microsoft.

Les « vieux » résistent

De facto, lorsqu’on regarde les chiffres d’activité de GitHub, sur les 337 langages de programmation représentés, le JavaScript génère la plus grosse activité, avec 2,3 millions de pull-request, devant les Python (1 million), Java, Ruby, PHP et C++. Ben Frederickson s’est livré à une analyse des données d’activité publiées sur GitHub Archive et GHTorrent et en termes de nombre d’utilisateurs actifs par mois, JavaScript, Python et Java dominent les débats, devant les C++, C et PHP. Néanmoins, sur la durée, la domination du JavaScript s’érode depuis 2013/14, de même que celle de Java depuis 2015/2016. Seul le Python conserve une dynamique de croissance parmi ces « grands langages », sachant que les PHP, Ruby, Objectif-C et CoffeeScript connaissent des fortes baisses en proportion du nombre d’utilisateurs de GitHub. La hausse presque exponentielle du nombre d’utilisateurs de GitHub relativise ces baisses d’intérêt car en valeur absolue, le PHP plafonne à son zénith et les baisses subies par les Ruby et Objectif-C les ramènent à leur niveau de 2015.

Côté mobile, le langage Objectif-C a passé le relais au Swift chez les développeurs iOS tandis que le CoffeeScript cède sous la pression du TypeScript. Ce phénomène de passation de pouvoir est d’ailleurs en train d’avoir lieu sur le langage R. La star de la grande vague du Big Data des années 2012 à 2016 est en train de voir les Data Scientists se ruer sur Jupyter Notebook, un outil de calcul qui supporte une quarantaine de langages mais lui-même issu de la communauté Python. Dans les chiffres traités par Ben Frederickson, ce sont les données relatives aux plus grosses croissances enregistrées qui sont les plus intéressantes. TypeScript connaît une croissance fulgurante depuis la fin 2015, de même que Go, le langage mis au point par Google en 2009 pour ses besoins internes. Si les experts ont immédiatement souligné la simplicité du langage, cette simplification s’est faite au prix de la suppression de concepts importants de la programmation objet tels que l’héritage et les génériques qui sont passés à la trappe. Ses concepteurs ont pensé le Go pour l’automatisation des tâches et multitâche et la programmation concurrente sont ses points forts. Autre langage qui mérite le détour, le Kotlin connaît une grosse vague d’adoption depuis 2018, lorsque Google a annoncé son support  sur la plate-forme Android. Pour Laurent Daverio, chercheur à l’école des Mines ParisTech, « le Kotlin est soudainement devenu très populaire chez les développeurs Android, l’an dernier. Car on se rend compte que c’est un “ Scala lite ”, développé par une société de St-Petersbourg qui veut mettre en opposition le monde réel et les “ savants cosinus ” déconnectés des besoins des développeurs. » Si le Kotlin a attiré à lui bon nombre de développeurs, reste aux librairies et framework à gagner en qualité afin de faire de Kotlin un langage de référence pour les applications mettant en œuvre la JVM.

Un succès d’estime pour Rust, un langage orienté sécurité

Un autre langage qui connaît une croissance significative, bien que plus modeste, le Rust. Ce langage est une création de la fondation Mozilla dont la vocation initiale était d’être plus sûre que le C/C++. L’objectif final de ce langage de bas niveau était bien de remplacer le C++. Rust 1.0, première version stable du langage a été publié en 2015 et c’est en 2016 que le langage a suscité le plus d’échanges, en lien avec la faille de sécurité DNS affectant la librairie glibc de Linux. Robert O’Callahan développeur chez Mozilla a lancé l’idée qu’il était temps de redévelopper tous les logiciels critiques développés en C/C++ en Rust. Un billet qui a beaucoup suscité de discussions à l’époque et mais est bien évidemment resté lettre morte dans les faits tant il serait coûteux de redévelopper l’existant C/C++. La communauté Rust continue néanmoins de croître, parviendra-t-elle à atteindre une masse critique pour en faire le langage sécurisé de référence ? Bien difficile de l’affirmer.

Si une entreprise jeune comme Criteo a su évoluer, passant du .NET au Java pour s’intéresser finalement aux langages fonctionnels et au Scada, pour finalement créer un improbable mix de Java et Scale baptisé ScaVa, les entreprises plus traditionnelles cherchent généralement à capitaliser au maximum sur le ou les quelques langages que leurs équipes maîtrisent déjà. Les développeurs eux-mêmes restent attachés à leur langage de prédilection, même si celui-ci accuse le poids des ans. « Personnellement je suis resté au Python, et je n’ai rien trouvé de mieux pour l’instant », reconnaît Laurent Daverio. « J’ai toujours été très impressionné par les essais de Paul Graham, qui place le Lisp au sommet de la hiérarchie des langages. À ce point de ma carrière, à 51 ans, si je devais apprendre un langage pour détrôner le Python dans le développement web, autant viser haut et choisir un langage de la famille Lisp. »

Dernier rejeton de la riche famille Lisp, Racket, un langage à suivre pour de nombreux experts.

Démos bluffantes et effets de mode

Peu d’entreprises comme Netflix peuvent se payer le luxe de laisser à leurs développeurs le soin de choisir le langage qu’ils jugent le mieux adapté à leur projet. Pourtant, beaucoup de langages créés par des chercheurs présentent d’évidentes qualités techniques et les démonstrations sont souvent bluffantes. Pourtant, leur adoption peine à dépasser certaines niches. L’exemple d’OCaml, le langage créé par l’Inria est parlant. Créé par les chercheurs français en 1996, ce langage de programmation fonctionnelle a connu quelques succès. Il a notamment été utilisé pour développer Astrée, l’analyseur de code qui a été utilisé sur les logiciels de commande de vol des Airbus A340 et A380, développé en Caml et le langage a donné naissance à Reason, une nouvelle syntaxe de OCaml qui est aujourd’hui utilisée dans la nouvelle version web de Facebook Messenger. Autre descendant d’OCaml, Ocsigen, un framework dédié au développement web notamment utilisé sur le site Be Sport.

Le fossé entre les langages appréciés des chercheurs – où Lisp et ses nombreux dérivés font figure de modèle incontournable – et les langages réellement exploités par les développeurs en entreprises semble bien difficile à combler. On se souvient il y a quelques années de l’effervescence des développeurs autour de Clojure, un langage compilé inspiré de Lisp et pouvant s’exécuter sur une JVM, ce qui a particulièrement trouvé écho dans la communauté Java. Le soufflé semble être un peu retombé sur ce langage qui présentait d’incontestables atouts, notamment dans le développement d’applications multitâches. Aujourd’hui, c’est Racket qui fait beaucoup parler de lui. Anciennement nommé PLT Scheme, ce descendant du langage Scheme – lui-même issu de la lignée Lisp – avait initialement une vocation pédagogique et, de fait, il rassemble à peu près tout ce qui se fait de bien autour des langages aujourd’hui.

Parviendra-t-il à sortir du cercle des labos de recherche et des hobbyistes pour séduire les entreprises ? La balle est dans le camp des développeurs... et de leurs DSI.


Julia, un langage très intéressant pour le calcul scientifique à haute performance

Didier Verna, enseignant-chercheur en informatique au laboratoire recherche et développement de l’Epita (LRDE)

« Julia est une tentative de repartir plus ou moins de zéro pour concevoir un langage à haute performance en vue d’applications scientifiques, notamment pour les statistiques, qui cherche à récupérer les communautés Python et R. Bien que cela ne soit pas forcément très visible, le noyau de Julia est un petit Scheme, ce qui pour moi – en tant que « Lisper » – est déjà un point de départ attractif. Je pense que Julia est effectivement un langage performant et peut, de ce point de vue, conquérir les utilisateurs du Python ou du langage R. Le langage Julia bénéficie d’une base de bibliothèques « prêt-àporter » déjà importante et il réussit à mélanger les paradigmes statiques et dynamiques. Le typage dynamique est bon pour des tas de choses, mais pouvoir aussi typer statiquement quand on a besoin de très hautes performances est également important. Le système de typage optionnel de Julia permet un tel mélange, et le support des types paramétriques lui confère une grande expressivité

D’une manière générale, j’apprécie de voir l’influence de Lisp dans Julia. Ce langage est homoiconique, ce qui lui confère une capacité de réflexivité et de méta-programmation importante. Toutes les fonctions du langage sont polymorphes (multi-méthodes), ce qui pousse le concept plus loin qu’en Lisp. Le Julia dispose également de co-routines dont je regrette l’absence en Lisp. Cependant, il y a aussi des choses qui me semblent moins reluisantes. Les règles de scoping laissent beaucoup à désirer, Julia est très verbeux syntaxiquement et il lui manque une couche objet complète – sans parler d’un protocole méta-objet – et j’aurais aimé avoir un système de gestion des exceptions plus évolué. Je conclurai en disant que c’est un langage très intéressant pour le calcul scientifique à haute performance. »

8157

x
Rechercher dans les dossiers

Actuellement à la Une...
Après Oodrive en janvier, c’est au tour de Outscale d’obtenir la précieuse qualification SecNumCloud, délivrée par l’Anssi. Outre la reconnaissance des engagements de la filiale de Dassault Systèmes en matière de sécurité, ce « visa de sécurité » est surtout un argument dont Outscale pourra se targuer auprès de ses clients.

Big Blue est réputée pour ses avancées technologiques développées dans ses laboratoires. IBM Research a encore frappé avec un nouvel algorithme capable de synthétiser les réseaux de neurones profonds.

Le Cloud pour les grandes entreprises de Dell Technologies se rénove pour apporter une meilleure gestion du stockage et une meilleure visibilité sur les coûts.

Compuware vient de rendre publique une étude réalisée pour son compte par Vanson Bourne auprès de 400 responsables informatiques dans le monde. Le principal résultat est que seulement 7 % des entreprises ont automatisé leurs tests d’applications sur mainframe.

Pour beaucoup d’applications, un faible temps de latence reste un critère essentiel. Aussi le Cloud Amazon va multiplier ses implantations de petits datacentres au plus près de ses clients.

Sous la contrainte de la norme DSP2, le secteur bancaire est contraint d’évoluer vers des opérations plus ouvertes vers l’extérieur en suivant un concept relativement nouveau, l’Open Banking. HSBC s’appuie sur la plate-forme de Mulesoft pour créer de nouveaux services et mieux servir ses 38 millions de clients.

Si financièrement le temps n’est pas au beau fixe pour l’équipementier, il tente de rassurer à l’occasion de son évènement londonien, et mise sur l’intelligence artificielle, avec Mist sur la partie WLAN, pour renouer avec la croissance.

C’est une première : un outil développé dans le cadre du « Data Transfer Project » va être mis à disposition du public pour transférer des fichiers personnels entre deux grandes plates-formes, directement, sans téléchargement intermédiaire. Une pratique qui devrait se généraliser rapidement.

GitHub a sorti une nouvelle version en bêta de son service Actions. Publié pour la première fois en 2018, il est voué à l’organisation de workflows en liaison avec des événements. Sa principale nouveauté est le support de l’intégration et du déploiement en continu (CI/CD). La version finalisée était attendue pour la mi-novembre 2019. Article paru dans L'Informaticien n°181.

L’emblématique constructeur de voitures de sport certifie ses véhicules à la revente avec la blockchain de Salesforce. Celle-ci avait déjà servi à certifier une Lamborghini Aventador S comme une œuvre d’art.

Toutes les News
LIVRES BLANCS
Les entreprises et les organismes publics se focalisent aujourd’hui sur la transformation numérique. En conséquence, les DevOps et l’agilité sont au premier plan des discussions autour des stratégies informatiques. Pour offrir ces deux avantages, les entreprises travaillent de plus en plus avec les fournisseurs de services de cloud public et développent désormais des clouds sur site à partir d’une infrastructure qui répond à trois exigences de base:
1. Agilité sans friction des ressources physiques
2. Systèmes de contrôle optimisant l'utilisation des ressources physiques et offrant un retour sur investissement maximal
3. Intégration des divers composants de l'infrastructure pour un provisionnement et une gestion des ressources automatisés.


Pour fonctionner, votre entreprise doit pouvoir compter sur une solution de sauvegarde efficace, essentielle dans un monde marqué par une croissance exponentielle des données. Vous devez à la fois accélérer vos sauvegardes et pouvoir y accéder plus rapidement pour satisfaire les exigences actuelles de continuité d’activité, disponibilité, protection des données et conformité réglementaire. Dans cette ère de croissance effrénée, les cibles sur bande hors site et autres approches traditionnelles sont simplement dépassées.


L’Intelligence Artificielle promet de révolutionner la perception de la cybersécurité au coeur des entreprises, mais pas uniquement. Ce changement de paradigme engage, en effet, une redéfinition complète des règles du jeu pour les DSI et les RSSI, ainsi que l’ensemble des acteurs de la sécurité.


Lorsque l'on déploie des postes de travail, ils ont généralement tous la même configuration matérielle et logicielle (avec certaines spécificités selon les services). Mais on ne peut pas toujours tout prévoir et il arrive par exemple que de nouveaux programmes doivent être installés ou n’aient pas été prévus. L’accumulation de logiciels « lourds » est susceptible de provoquer des lenteurs significatives sur un PC allant jusqu’à l’extinction nette de l’application. Ce livre blanc explique comment optimiser les performances au travers de 5 conseils rapides à mettre en place.


Ce guide est conçu pour aider les entreprises à évaluer les solutions de sécurité des terminaux. Il peut être utilisé par les membres de l'équipe de réponse aux incidents et des opérations de sécurité travaillant avec des outils de sécurité des points finaux sur une base quotidienne. Il peut également être utilisé par les responsables informatiques, les professionnels de la sécurité, les responsables de la conformité et d’autres personnes pour évaluer leurs performances. les capacités de l’entreprise en matière de cybersécurité, identifier les lacunes dans la sécurité des terminaux et sélectionner les bons produits pour combler ces lacunes.


Tous les Livres Blancs