• [^] # Re: Rust

    Posté par . En réponse à la dépêche De tout, de rien, des bookmarks, du bla bla #42. Évalué à 6.

    Les goroutines n'ont rien de nouveau dans le sens où elles étaient déjà présentes sous des noms un peu différents dans toute la famille de langages de Rob Pike basé sur le formalisme CSP de Hoare (en gros, avec des canaux; cf. ici pour un historique). Newsqueak (qui a été développé en gros entre 1985 et 1990) avait un mot clé begin qui faisait comme go aujourd'hui, et ces fonctionnalités ont été repris par les langages Alef puis Limbo utilisés sur les systèmes basés sur Plan9. Le fait que ces langages aient bénéficié de moins de publicité que Go ne fait pas des goroutines une idée nouvelle : c'est quelque chose de bien connu des concepteurs de Go qui ont repris dans ce nouveau langage une idée qui marche bien. C'est bien ce mode "best-of" dont je parle, et je ne critique pas forcément, c'est utile d'avoir des langages qui consolident les acquis des développements précédents.

    Pour les traitements de la concurrence, j'apprécie personnellement beaucoup ce qui se fait dans le langage Oz/Mozart sorti en 1991, où le mécanisme de communication entre fils concurrents est une unification à la Prolog. Je trouve aussi intéressant ce qui se faisait sur le Join calculus (1995-2000), où on utilise une communication par canaux avec des conditions de réception sur plusieurs canaux simultanés (si machin, truc et bidule ont reçu des données et que l'entrée de bidule est de la forme chose), qui est une primitive expressive et assez intéressante.