Cyclone (язык программирования)
Cyclone | |
---|---|
Семантика | процедурный |
Класс языка | язык программирования |
Тип исполнения | компилируемый |
Появился в | 2001 |
Автор | AT&T в сотрудничестве с рядом университетов |
Разработчик | AT&T |
Система типов | строгая, статическая |
Испытал влияние | C, ML |
Повлиял на | Rust (язык программирования) |
Сайт | cyclone.thelanguage.org |
Cyclone (читается «Си-клон» или «Циклон») — исследовательский язык программирования, созданный Дэном Гроссманом, Тревором Джимом, и Грегом Моррисеттом в Корнеллском Университете как доработка классического языка Си с целью повышения надёжности и безопасности программирования, с сохранением низкоуровневых возможностей и применимости языка в областях, традиционных для Си (системное программирование, программирование микроконтроллеров).
Цель и история проекта
Основная цель разработки — сделать программы на Си более защищённым от ошибок и уязвимостей, таких, как печально известное переполнение буфера, при минимальной потере эффективности и с сохранением преемственности. Идея заключается в том, чтобы взять средства эффективной защиты у языков высокого уровня и внедрить их в язык более низкого уровня.
Основы разработки были заложены Дэном Гроссманом, Тревором Джимом, и Грегом Моррисеттом в Корнеллском Университете при проектировании и реализации языка ассемблера со строгой типизацией TAL[1] (Typed Assembly Language).
Версия компилятора 1.0 вышла 8 мая 2006. Она работает в 32-разрядном POSIX-окружении: Linux, Cygwin/Windows, MacOS и BSD. Распространяется на условияx GNU GPL версии 2.0. В настоящий момент проект официально закрыт с формулировкой «исследовательские цели достигнуты». Некоторые идеи проекта используются в языке программирования Rust.
Обзор языка
Cyclone отличают от Си прежде всего более строгая типизация, и, при необходимости, введение runtime проверок, например, за соблюдением границ массива. Значительно расширена и формализована работа с указателями, тем не менее привычные Cи-программистам приёмы арифметики указателей продолжают работать. В язык добавлено множество удобных особенностей из C++, C99 и GCC. Введён новый тип данных @tagged union — аналог c-union, сохраняющий информацию о том, данные какого типа он хранит в данный момент.
Самые большие нововведения связаны с заимствованием идей по работе с типами данных из языка ML. Это гибкая система статической типизации с поддержкой вывод типов, облегчающая описание различных рекурсивных структур (списков, деревьев и т. п.) и позволяющих использовать полиморфизм и обобщённое программирование. Программист может полностью контролировать процесс согласования типов.
Новый язык очень близок к C, что позволяет с минимальными усилиями переносить на него написанные на C приложения. В частности создатели Cyclone разработали простой веб-сервер, который, по их словам, совершенно невосприимчив к обычным ошибкам и уязвимостям.
См. также
Примечания
- ↑ Typed Assembly Language . Дата обращения: 15 мая 2007. Архивировано 2 июня 2007 года.
Источники
- Cyclone User Manual
- Cyclone: a Type-safe Dialect of C by Dan Grossman, Michael Hicks, Trevor Jim, and Greg Morrisett — published January 2005
- Cyclone: A Safe Dialect of C Страничка AT&T посвящённая Cyclone
- Александр Дорожкин (2002-10-02). "Слово и дело. Новый язык программирования позволит избежать уязвимостей в системах защиты программных продуктов". Компьютерра. Архивировано 4 марта 2006. Дата обращения: 30 марта 2012.
- M Edwards (2001-11-19). "New Cyclone Programming Language: Bugs be Gone!". Windows IT Pro. Дата обращения: 15 апреля 2012. (недоступная ссылка)
Ссылки
- cyclone.thelanguage.org — Официальный сайт.
- www.eecs.harvard.edu/~greg/cyclone/old_cyclone.html — старая версия официального сайта.
- Проект Cyclone-Language на сайте GitHub