Cyclone
Cyclone jest niskopoziomowym językiem programowania, którego korzenie sięgają języka C. Został tak zaprojektowany, by uniknąć głównych wad swojego pierwowzoru.
Wskaźniki w Cyclone dzielą się na cztery grupy:
- zwykłe wskaźniki (takie jak w C) – ograniczona możliwości rzutowania, jest zabroniona arytmetyka wskaźników; Cyclone przy dereferencji wskaźnika (np.
rekord→pole
) sprawdza czy wskaźnik ma wartość NULL. - fat pointers ("grube" wskaźniki) – wskaźnik jest samoopisujący: zawiera zarówno adres obszaru pamięci, jak również rozmiar tego obszaru; arytmetyka wskaźników jest dowolna, bowiem łatwo wykryć próby dostępu do pamięci spoza przydzielonego zakresu;
- not-NULL pointers (niepuste wskazania) – Cyclone gwarantuje że taki wskaźnik nigdy nie będzie miał wartości NULL.
- wskaźniki na łańcuch znaków zakończony zerem.
W Cyclone wprowadzono regiony pamięci, które mogą być statyczne lub dynamiczne (tworzone w trakcie działania programu). Z regionem pamięci powiązane są wskaźniki, tak że jeśli region jest niszczony (np. został stworzony w funkcji, która już została zakończona) to wszystkie wskaźniki – a ogólnie: obiekty stworzone w jego zakresie – automatycznie stają się nieważne.
Dodatkowe cechy tego języka to: wyjątki znane z C++, ułatwienia w tworzeniu tablic (automatyczna alokacja pamięci, inicjalizacja wyrażeniami), abstrakcyjne typy danych, krotki, funkcje polimorficzne, pattern matching.