Avec ou sans Mozilla, le projet Rust cherche à rassurer sur son avenir

Mathieu Fouquet |

Les licenciements de Mozilla continuent de faire des remous : dans un billet de blog daté du 18 août, le projet Rust a tenté de prendre de court les rumeurs de sa mort prématurée. Il faut dire que ce langage de programmation réputé pour sa sécurité mémoire et sa robustesse (et utilisé par des sociétés telles que Dropbox, Yelp ou même Apple) entretient des liens étroits avec la fondation américaine : son développement a démarré en 2010 chez Mozilla Research, et nombreux sont les ingénieurs de Mozilla qui ont apporté leur pierre à l’édifice. De quoi s’inquiéter en effet des dommages collatéraux de la restructuration de Mozilla… (lire : Le plan de licenciement de Mozilla pourrait menacer son avenir)

L’équipe derrière le projet Rust se veut au contraire rassurante, et prend une distance judicieuse vis-à-vis de son géniteur :

Malgré le profond impact personnel [des licenciements chez Mozilla], le projet Rust dans son ensemble est très résistant à de tels événements. Nous avons des dirigeants et des contributeurs provenant de milieux et d’employeurs variés, et cette diversité est une force majeure. De plus, il est faux de dire que tous les employés de Mozilla qui ont dirigé le projet Rust l’ont fait en raison de leur travail. En réalité, beaucoup d’employés ont piloté le projet Rust sur leur temps personnel, cela ne faisait pas partie de leur emploi.

Par ailleurs, le projet Rust souligne qu’il opère indépendamment de la fondation Mozilla depuis 2015 (et la sortie de Rust 1.0) et qu’il bénéficie déjà de certains soutiens pour son infrastructure (dont Microsoft, Google ou Github). Ce n’est pas tout, puisque l’équipe derrière le langage de programmation en a aussi profité pour annoncer la création d’une fondation Rust d’ici la fin de l’année, afin d’acquérir une indépendance financière totale. Le message est clair : les développeurs vont graisser les engrenages, et la machine du projet ne va pas rouiller.

Tags
avatar pocketjpaul | 

« ce langage de programmation réputé pour sa sécurité et sa robustesse »

——

Attention avec cette fausse traduction qui se répercute constamment sur tout le web français.

La « sécurité » dont il est question ici est une sécurité mémoire. En gros contrairement à C ou C++, Rust ne permet pas de lire ou écrire « sans le faire exprès » dans de la mémoire n’étant pas allouée au programme exécuté (segfault dans le jargon).

Ce genre de problèmes peut certes poser des soucis de sécurité ou de stabilité mais n’est pas une caractéristique avantageuse du langage dans l’absolu : n’importe quel langage à Garbage Collector comme le sont l’immense majorité des langages utilisés aujourd’hui ne permet pas de faire un segfault.

Là où Rust fait très fort, c’est que ce genre de sécurité a été implémentée pour la première fois à même le compilateur, sans que le binaire final n’embarque un runtime et un garbage collector. Autrement dit, contrairement à C ou C++, il est impossible de compiler du code qui comportera des bugs de segmentation mémoire. Le tout en gardant les avantages de vitesse et de rapidité d’un programme écrit en C.

En conséquence de ça, le compilateur est extrêmement strict et les débuts d’un programmeur même expérimenté sur ce langage sont très difficiles parce qu’il faut réapprendre à penser avec les contraintes de la mémoire physique.

On dit souvent que la courbe d’apprentissage du Rust a la forme d’un énorme mur. C’est vrai, mais le mur est sympa et les autres gens qui montent le mur sont aussi très sympa. Et ceux qui sont arrivés en haut sont unanimes : il y a un superbe toboggan de l’autre côté.

avatar DamienLT | 

@pocketjpaul

Merci pour les précisons, c’est super intéressant. Ça serait top que MacG fasse un article avec les principaux langages de programmation utilisés.

avatar jackhal | 

Ça serait beaucoup trop long.

Tu peux voir la liste des plus utilisés ici : https://www.developpez.com/actu/185087/Quels-sont-les-langages-de-programmation-les-plus-utilises-par-les-developpeurs-Une-analyse-des-evenements-publics-sur-GitHub/

Ou bien regarder la progression de la popularité des langages : https://www.youtube.com/watch?v=Og847HVwRSI

Et les retrouver ici : https://fr.wikipedia.org/wiki/Liste_de_langages_de_programmation

Mais à vrai dire, le seul langage intéressant c'est Hodor, et il n'est pas dans la liste Wikipedia :-(
http://www.hodor-lang.org

avatar YetOneOtherGit | 

@jackhal

Statistiques à prendre toujours avec des pincettes;-)

avatar YetOneOtherGit | 

@jackhal

"Mais à vrai dire, le seul langage intéressant c'est Hodor, et il n'est pas dans la liste Wikipedia :-("

Restons classique:

https://en.wikipedia.org/wiki/Brainfuck

Et un petit inventaire de ces sommets d’humour geek canal historique:

https://en.wikipedia.org/wiki/Esoteric_programming_language

avatar DamienLT | 

@jackhal

Merci pour la réponse 😊

avatar YetOneOtherGit | 

@DamienLT

Si tu n’as pas de pb avec l’anglais cette conf de Mark Rendle à la DevCon 2016 est une très bonne introduction à l’histoire des langages de programmation

https://youtu.be/Tr9E_vzKRVo

avatar DamienLT | 

@YetOneOtherGit

Merci beaucoup 🙏🏼😊

avatar occam | 

@pocketjpaul

👍👍👍

avatar Mathieu Fouquet | 

@pocketjpaul

Effectivement ma phrase était un peu vague à ce niveau, c’est corrigé :)

avatar macinoe | 

Et ça rassure aussi concernant le fait qu'il y aura toujours besoin de programmeurs qualifiés ayant de bonnes connaissances matérielles et que la mode d'utiliser des armées d'ouvriers developpeurs sur des languages comme Java n'était que le fantasme de certains commerciaux.

avatar YetOneOtherGit | 

@macinoe

"que la mode d'utiliser des armées d'ouvriers developpeurs sur des languages comme Java n'était que le fantasme de certains commerciaux."

Nope ce n’est nullement un fantasme mais une réalité.

Une très grande part du code produit actuellement l’est par des dev hors sol ayant une très faible maîtrise des fondamentaux.

L’explosion du Web à créer une telle asymétrie entre le besoin de ressources et la capacité à bien les former.

Et ce n’est en rien qu’une question de langage de programmation mais de connaissances des fondamentaux.

Tu n’as pas idée des horreurs sur lesquels sont bâties nombre de solutions web 🤢

avatar macinoe | 

Je ne le sais que trop bien. D'où mon souhait de ne pas voir ce mode de fonctionnement se généraliser partout.
Et je vois l'émergence de langage comme Rust, un bon signe qui tend à montrer que l'évolution vers des langages ayant de plus en plus de couches d'abstraction et nécessitant de moins en moins de compétence n'est pas inexorable.

avatar YetOneOtherGit | 

@macinoe

"ayant de plus en plus de couches d'abstraction et nécessitant de moins en moins de compétence n'est pas inexorable."

Je ne te rejoins pas sur l’opposition entre niveau d’abstraction et besoin de compétences, bien au contraire.

Maîtriser l’abstraction demande une compréhension du sous-jacent et un effort intellectuel conséquent.

En ne prenant que le paradigme objet il est en général très mal utilisé encore aujourd’hui car il demande de conséquent efforts intellectuelle pour être compris et maîtrisé.

L’enjeu n’est pas de rester à bas niveau et de refuser la montée en abstraction, ce serait absolument bloquant quant à l’ambition des projets, mais au contraire de monter en abstraction de façon éclairée.

Au passage, les progrès potentiels qu’offre Rust sur les enjeux de gestion et d’accès mémoire sont le fruit d’une abstraction justement, ce n’est en rien une transposition des mécanismes de bas niveau directement dans le langage.

Et Rust permet heureusement la montée en abstraction.

La montée en abstraction est une nécessité depuis les début de l’informatique et elle n’est pas le pb.

Croire qu’on est meilleur programmeur parce qu’on est à bas niveau est un fantasme: le nombre d’horreurs qui viennent de la gestion direct de la mémoire et de son accès par exemple en C est justement la source de bien des bug et bien des failles.

Un langage moderne se définit d’ailleurs bien plus dans sa philosophie par ce qu’il t’interdit de faire que par ce qu’il te permet de faire.

avatar YetOneOtherGit | 

@macinoe

Pour résumer:
- Il y a des horreurs produites en C
- Il y a des merveilles produites en OCaml

Le pb principal est rarement le langage de programmation mais la qualité de celui qui le met en œuvre.

Il y a même des choses de qualité produite en JS c’est dire 😂😂😂

Bref la posture de “je fais du bas niveau, je fais ce que je veux sans contraintes, je fais mumuse avec les pointeurs ... je suis un bon moi” est un fantasme 😁

Je suis bien plus impressionné par quelqu’un qui maîtrise vraiment le paradigme objet et les design pattern que par bien des taquineurs d’octets qui se croient brillant parce qu’ils croient parler à l’oreille des machines 😀

L’enjeu n’est pas une opposition bas niveau / haut niveau mais bricoleur / professionnelle vraiment bien formé 😎

avatar francoismarty | 

@macinoe

Quel est ton problème avec Java ?

avatar macinoe | 

Ayant été biberonné au C et pour ce qui est de la POO, au Smalltalk, j'ai accueilli l'arrivée de Java avec assez peu d'enthousiasme.
Mais bon c'est encore une fois la preuve que ce ne sont pas forcement les solution élégantes et bien conçues qui finissent par dominer.

avatar francoismarty | 

@macinoe

Tu as donc un avis biaisé depuis le départ. Tu as le droit de ne pas aimer, mais il y a quand même en sacré beau boulot de fait autour de Java, entre sa machine virtuelle, sa bibliothèque de base, ses API serveur et toutes les bibliothèques annexes de qualité.

avatar YetOneOtherGit | 

@francoismarty

"mais il y a quand même en sacré beau boulot de fait autour de Java,"

C’est incontestablement un des faits majeurs des dernières décennies qui a posé bien des enjeux du secteur.

Sans trop caricaturer on peut considérer qu’il y a un avant et un après Java.

avatar YetOneOtherGit | 

@macinoe

"Mais bon c'est encore une fois la preuve que ce ne sont pas forcement les solution élégantes et bien conçues qui finissent par dominer."

C’est une lapalissades mais tu peux ici nous éclairer par ce que tu sous-entend ?

Que sont pour toi les solutions élégantes qui n’ont pas dominée ?
Que sont pour toi les solutions inélégantes qui dominent ?

avatar macinoe | 

J'imagine que tu considères aussi la domination de windows à partir des années 90 de la même manière ?

avatar YetOneOtherGit | 

@macinoe

Je ne vois pas de réponse à mon propos ici.

Cette domination confirme la lapalissades qu’est le constat que la réussite commerciale et l’élégance technique sont absolument séparées. (Une des choses avec lesquels tu as en général beaucoup de mal pour réfléchir sur un business)

Je cherchais simplement à connaître les langages que tu classes dans chaque catégorie.

PS : J’espère quand même que tu ne mets pas Java sur le même plan que le Windows des années 90 ?

avatar YetOneOtherGit | 

@macinoe

"au Smalltalk"

Nous sommes relativement peu nombreux à avoir découvert le paradigme objet via Smalltalk, tu l’as utilisé sur quelle plateforme et avec quelle implémentation ?

avatar macinoe | 

Sun Sparc sous Solaris.

avatar YetOneOtherGit | 

@macinoe

"sous Solaris."

Ok donc plutôt relativement tardivement et au moment où les perspectives de Smalltalk étaient clairement assez bouchée, C++ ayant en grande partie gagnée la bataille de la transition vers l’objet à ce moment.

C’était dans un cadre académique ou professionnel à ce moment là ?

avatar YetOneOtherGit | 

@pocketjpaul

Rust est effectivement une des initiative les plus intéressante de ces dernières années.

L’idée de changer la sémantiques de l’affectation en en faisant un mécanisme se transfert de propriété et non de copie change profondément les mécanisme de gestion mémoire.

Et la relative difficulté d’apprentissage repose sur le fait de devoir changer des habitudes profondément encrées sur la sémantique de l’affectation avant tout.

Un langage dont j’encourage la découverte ne serait-ce que pour les plaisir intellectuelle qu’il procure.

avatar YetOneOtherGit | 

Que Rust devienne indépendant de Mozilla serait pour moi plutôt une bonne nouvelle pour son avenir 👍

CONNEXION UTILISATEUR