Cyclone (язык программирования)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Cyclone
Cyclone logo.jpg
Семантика процедурный
Класс языка язык программирования
Тип исполнения компилируемый
Появился в 2001
Автор AT&T в сотрудничестве с рядом университетов
Система типов строгая, статическая
Испытал влияние C, ML
Сайт cyclone.thelanguage.org

Cyclone (читается «Си-клон» или «Циклон») — исследовательский язык программирования, созданный Дэном Гроссманом, Тревором Джимом, и Грегом Моррисеттом в Корнеллском Университете как доработка классического языка Си с целью повышения надёжности и безопасности программирования, с сохранением низкоуровневых возможностей и применимости языка в областях, традиционных для Си (системное программирование, программирование микроконтроллеров).

Цель и история проекта[править | править код]

Основная цель разработки — сделать программы на Си более защищённым от ошибок и уязвимостей, таких, как печально известное переполнение буфера, при минимальной потере эффективности и с сохранением преемственности. Идея заключается в том, чтобы взять средства эффективной защиты у языков высокого уровня и внедрить их в язык более низкого уровня.

Основы разработки были заложены Дэном Гроссманом, Тревором Джимом, и Грегом Моррисеттом в Корнеллском Университете при проектировании и реализации языка ассемблера со строгой типизацией TAL[1] (Typed Assembly Language).

Версия компилятора 1.0 вышла 8 мая 2006. Распространяется на условияx GNU GPL версии 2.0. В настоящий момент проект официально закрыт с формулировкой «достигшего исследовательских целей». Некоторые идеи проекта используются в языке программирования Rust.

Обзор языка[править | править код]

Cyclone отличают от Си прежде всего более строгая типизация, и, при необходимости, введение runtime проверок, например, за соблюдением границ массива. Значительно расширена и формализована работа с указателями, тем не менее привычные си-программистам приёмы арифметики указателей продолжают работать. В язык добавлено множество удобных особенностей из C++, C99 и GCC. Введён новый тип данных @tagged union — аналог c-union, сохраняющий информацию о том, данные какого типа он хранит в данный момент.

Самые большие нововведения связаны с заимствованием идей по работе с типами данных из языка ML. Это гибкая система статической типизации, облегчающая описание различных рекурсивных структур (списков, деревьев и т. п.) и позволяющих использовать полиморфизм и обобщённое программирование. Программист может полностью контролировать процесс согласования типов. В Cyclone поддерживается вывод типов.

Новый язык очень близок к C, что позволяет с минимальными усилиями переносить на него написанные на C приложения. На сегодняшний день создателям Cyclone удалось разработать простой веб-сервер, который, по их словам, совершенно невосприимчив к обычным ошибкам и уязвимостям.

См. также[править | править код]

Примечания[править | править код]

Источники[править | править код]

Ссылки[править | править код]