Table des matières:
- Cyclone
- C ++, propriété et alias
- Rouille
- M # de Midori
- Poney
- CĂ´ne
- Résumé
En 2001, Jim Trevor (AT&T Research) et Greg Morrisett (Cornell) ont lancé un projet commun pour développer un dialecte sûr du langage de programmation C - comme suivi de travaux antérieurs sur Typed Assembler . Après cinq ans de travail acharné et plusieurs articles scientifiques publiés , l'équipe (comprenant Dan Grossman, Michael Hicks, Nick Swami et d' autres ) a publié Cyclone 1.0 . Et puis les développeurs sont passés à autre chose.
Peu de gens ont entendu parler de Cyclone, et presque personne ne l'a utilisé. Et pourtant, lorsque vous jetez la bonne pierre dans un étang préparé, l'eau continue de diverger en rond pendant longtemps. Le cyclone était une grosse pierre bien finie; et les pulsations de son esprit, ainsi que les innovations qui ont été mises en évidence en lui pour la première fois, continuent de se répandre de manière non triviale.
Avant de raconter cette histoire, un avertissement: l'innovation et l'influence sont un processus social complexe. Rien de nouveau ne surgit dans le vide. Des milliers de personnes jettent chaque année de nouvelles pierres intéressantes dans l'étang, sous l'influence de celles déjà lancées. Mais aucun article ne peut couvrir entièrement toutes ces ondulations chaotiques.
, : , ("") . , . . , .
Cyclone
20- ( "-" ++). CPU, , . , , — , , .
Cyclone , C, , , , , . : , , .
, , : , , use-after-free, , double free, printf, , , , goto , union'.
( ) C ML, Haskell, , :
- . C - struct, union - . , Cyclone , . Cyclone , .
- . Cyclone () . , , () . Cyclone , , . , - .
- . Cyclone 1990- . ML Kit ( ), (GC) , (). Aiken C. Cyclone , - . , , : ( ), , GC ( Boehm), , (unique) .
- / . Cyclone 1980- , , . , ( ), , GC . , . , ( ) - , Cyclone .
- . " " , . (, int @x) . , - , , , .
- . Cyclone "" (char ?), . , . -.
- . , , , . , . , .
- . , ( ) , . Cyclone , , .
Cyclone (, ), , . "" . , , thread-local .
, C. , C. , C Cyclone, , , .
C++,
, Cyclone C++. C++ , 1990 : ( , ) — (RAII). RAII, , , . RAII , new.
- delete, 1997 auto_ptr, "" . , , RAII . , auto_ptr - [1]: . .
, auto_ptr , . 2002 , Bell Labs, " C++". : , . unique_ptr, auto_ptr 2005 (TR1) , , C++11. shared_ptr, , 1990- .
, 2006 , Cyclone, C++ : () . Cyclone, , ( GC) .
, Cyclone , . , , (Smith and Walker, 2000, Typed Assembly Language), Objective C, (.) (Reynolds, O'Hearn, Pym, 2000-2002). : " Cyclone , , ".
"" Cyclone C++. get() ++ . ++ , , , , , , .
Cyclone , . C++, Cyclone , . ( ) . , Cyclone .
Rust
2006 , , Cyclone , ( Mozilla) Rust . , , 1.0 2015 .
Rust, Cyclone . Rust — , , Cyclone.
Rust Cyclone, C++ SML/OCaml . , , , .
Rust , Cyclone, . , :
- Rust C/C++, .
- , ML-. (, Option, Result "" , Rc Mutex).
- Borrowed References , , (, &mut), , , . , Cyclone `r ( ) Rust '.
- . , Rust , , Cyclone. C++, (Box) (Rc) . Rust GC , Cyclone , .
- unsafe. Rust , , , , . .
, Rust , . , , .
, () . . , , , . , . ( Cyclone) , .
. Ada, restrict C, C++, Fortran, Java, , (-) .
, — . . 1992 Clean - . , ATS, Alms Mezzo, -. Rust , .
, , , , (, Mutex) , Cell.
Midori M#
Midori — / , 2007 2014 . Singularity, , , ++ .
, , C# M#. C#, async/await, M#. , Cyclone ( Rust') ; M# ( ).
Cyclone Rust, Midori M# : C++ const, , , , , , , , , C++, D, Go Rust. Midori Cyclone. , Cyclone, /, Midori. , "", Cyclone, Singularity. , Singularity/Midori, ( Cyclone) Microsoft' Checked C, Cyclone.
Midori " ", Cyclone Rust. , ( ), union' . , , , , (.. , ).
M# . M# ( ): , , . , , ( ) -. , isolated, — : .
() . , () . , . , , .
, () , . ? , . , (writable), . , , , . , " ", , .
M# , . — " ", - , . , , - ( ) , .
M# (), "" . ( ) , . , , , . , , immutable isolated , - ( ).
, , M# . ( ) , . , Midori .
Pony
2014-5 - Pony. , - Erlang. , .
Pony , : , , , , , . M#, Pony . Pony , , , . .
Cone
, , , Cone.
Rust Pony . , , , . , Rust () Pony , , .
, Cyclone Rust and Pony. , . , Cyclone .
, Cone , Cyclone, , , . , , GC, , . , Cyclone, 15 , 1 . , , , .
1990 " !", — : " , , ". . , , , .
, , , , , , ( ) . D (.. ). Nim (.., .177), Google/IBM, Cyclone.
, . , Cyclone, , .
Je suis reconnaissant à Greg Morriset, Graydon Hoare, Michael Hicks, Colin Gordon et Dan Grossman pour leurs précieux commentaires sur une version antérieure de cet article, qui m'a ouvert les yeux sur le nombre de personnes qui ont contribué aux idées fondamentales qui ont conduit à ces langues.
A propos de l'auteur
Jonathan Goodwin - Évangéliste Web 3D. L'auteur des langages de programmation Cone et Acorn.
[1] C ++ n'était pas le premier. Cinq ans plus tôt (1992), Linear Lisp a démontré l'utilisation de la logique linéaire comme solution de récupération de place.