Sather - Sather
Для людей с фамилией см. Sather (фамилия).
Парадигма | объектно-ориентированный, функциональный |
---|---|
Разработано | Стив Омохундро |
Разработчик | Калифорнийский университет в Беркли, Университет Вайкато, Проект GNU |
Впервые появился | 1990 |
Стабильный выпуск | 1.2.3[1] / 7 июля 2007 г. |
Печатная дисциплина | статический, сильный |
Интернет сайт | www |
Основной реализации | |
ICSI Sather, GNU Sather | |
Под влиянием | |
Эйфель, CLU, Common Lisp, Схема | |
Под влиянием | |
Круто |
Sather является объектно-ориентированный язык программирования. Он возник примерно в 1990 году в Международном институте компьютерных наук (ICSI) в Калифорнийский университет в Беркли, разработанная международной командой во главе с Стив Омохундро. Он поддерживает вывоз мусора и дженерики к подтипы.
Первоначально он был основан на Эйфель, но он разошелся и теперь включает несколько функциональное программирование Особенности.
Название навеяно Эйфелем; то Sather Tower узнаваемая достопримечательность Беркли, названная в честь Джейн Кром Сатер, вдова Педер Сатер, которые пожертвовали крупные суммы на создание университета.
Сатер также черпает вдохновение из других языков программирования и парадигм: итераторы, дизайн по контракту, абстрактные классы, множественное наследование, анонимные функции, перегрузка оператора, контравариантный система типов.
Оригинальная реализация Беркли (последняя стабильная версия 1.1 была выпущена в 1995 г., больше не поддерживается[2]) был принят Фонд свободного программного обеспечения поэтому становится GNU Sather. Последняя стабильная версия GNU (1.2.3) была выпущена в июле 2007 г.[3] и программное обеспечение в настоящее время не поддерживается. Было еще несколько вариантов: Sather-K от Университет Карлсруэ;[4][5] Sather-W из Университет Вайкато[6] (реализация Sather версии 1.3); Порт ICSI Sather 1.1 Питером Науллом на ОС RISC;[7] и pSather,[8][9] параллельная версия адресации ICSI Sather неравномерный доступ к памяти многопроцессорные архитектуры, но представляющие программисту модель разделяемой памяти.
Прежний компилятор ICSI Sather (теперь GNU Sather) реализован как компилятор для C, т.е. компилятор не выводит объект или же машина код, но берет Сатер исходный код и генерирует исходный код C как промежуточный язык. Оптимизация оставлена на усмотрение компилятора C.
Компилятор GNU Sather, написанный на самом Sather, является двойная лицензия под GNU GPL & LGPL.
Привет, мир
1 учебный класс ПРИВЕТ, МИР является2 главный является 3 #ИЗ+"Привет, мир"; 4 конец; 5 конец;
Несколько замечаний:
- Имена классов ВСЕ ЗАГЛАВНЫМИ; это не только соглашение, но и выполняется компилятором.
- Метод под названием
главный
это точка входа в исполнение. Он может принадлежать к любому классу, но если он отличается отГЛАВНЫЙ
, он должен быть указан как параметр компилятора. #
символ конструктора, вызывающий методСоздайте
соответствующего класса; здесь он используется для создания экземпляраИЗ
class, который на самом деле является стандартным выводом.- В
+
здесь был перегружен оператор, обозначающий добавление потока. - Операторы, такие как
+
находятся синтаксический сахар для вызовов методов с условными именами:а + б
означаетa.plus (б)
. Для определения порядка вызова методов в сложных формулах используются обычные соглашения о приоритете арифметики. - Компоновка программы допускает предварительные и последующие условия (здесь не показаны), показывающие происхождение Сатера Эйфеля.
Пример итераторов
1 учебный класс ГЛАВНЫЙ является2 главный является3 петля4 я := 1.вплоть до!(10);5 #ИЗ + я + "";6 конец;7 конец;8 конец;
Эта программа печатает числа от 1 до 10.
В петля
... конец
конструкция является предпочтительным средством определения циклов (хотя пока
и повторение
-до того как
также доступны). Внутри конструкции можно использовать один или несколько итераторов. Имена итераторов всегда заканчиваются восклицательным знаком (это соглашение соблюдается компилятором). вплоть до!
это метод целочисленного класса INT
принимая один однажды
аргумент, что означает, что его значение не изменится по мере того, как итератор уступит. вплоть до!
может быть реализовано в INT
класс вроде этого:
вплоть до!(однажды м:INT):ОДНО И ТОЖЕ является я: INT := себя; - инициализировать i значением self, - это целое число, от которого вызывается этот метод петля если я>м тогда покидать; - выйти из цикла, когда я выхожу за пределы m конец; урожай я; - иначе используйте i как возвращаемое значение и оставайтесь в цикле я := я + 1; - и увеличивать конец; конец;
Информация о типе переменных обозначается постфиксным синтаксисом. переменная: КЛАСС
. Тип часто можно вывести, поэтому вводимая информация является необязательной, как в anInteger :: = 1
. ОДНО И ТОЖЕ
это удобный псевдокласс, относящийся к текущему классу.
Рекомендации
- ^ https://directory.fsf.org/wiki/sather.
- ^ Планы на будущее ICSI Sather
- ^ Загрузки GNU Sather
- ^ Страница проекта Sather-K (архив 2001 г.)
- ^ Sather-K 0.9 скачать, версия с 1994 года
- ^ Страница проекта Sather-W 1.3 (заархивированная ссылка с 2002 года)
- ^ Порт Питера Наулла больше не доступен в Интернете.
- ^ pSather описание
- ^ pSather скачать