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.
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.