Sather

редактировать

Для людей с фамилией см. Sather (фамилия).

Sather
Paradigm объектно-ориентированный, функциональный
Разработано Стивом Омохундро
Разработчик Калифорнийский университет, Беркли, Университет Вайкато, Проект GNU
Впервые появился1990
Печатная дисциплина статический, сильный
Веб-сайтwww.gnu.org / software / sather /
Major реализации
ICSI Sather, GNU Sather
под влиянием
Eiffel, CLU, Common Lisp, Scheme
под влиянием
Холодный

S ather - это объектно-ориентированный язык программирования. Он возник примерно в 1990 году в Международном институте компьютерных наук (ICSI) при Калифорнийском университете в Беркли, разработан международной группой под руководством Стива Омохундро. Он поддерживает сборку мусора и обобщенные типы по подтипам.

Первоначально он был основан на Eiffel, но разошелся и теперь включает несколько функциональное программирование функций.

Название навеяно Эйфелем; Башня Сатера - узнаваемая достопримечательность Беркли, названная в честь Джейн Кром Сатер, вдовы Педера Сатера, пожертвовавшей крупные суммы на фонд университета..

Сатер также черпает вдохновение из других языков программирования и парадигм: итераторы, дизайн по контракту, абстрактные классы, множественное наследование, анонимные функции, перегрузка операторов, контравариантная система типов.

Первоначальная реализация Беркли (последняя стабильная версия 1.1 была выпущена в 1995 г., больше не поддерживается) была принята Фондом свободного программного обеспечения, поэтому стала GNU Sather. Последняя стабильная версия GNU (1.2.3) была выпущена в июле 2007 года, и в настоящее время программное обеспечение не поддерживается. Было еще несколько вариантов: Sather-K из Университета Карлсруэ ; Sather-W из Университета Вайкато (реализация Sather версии 1.3); Перенос Питером Науллом ICSI Sather 1.1 на RISC OS ; и pSather, параллельная версия ICSI Sather, адресующая неоднородный доступ к памяти многопроцессорных архитектур, но представляющая программисту модель совместно используемой памяти.

Прежний компилятор ICSI Sather (теперь GNU Sather) реализован как компилятор для C, т. Е. Компилятор не выводит объект или машина, но берет исходный код Sather и генерирует исходный код C как промежуточный язык. Оптимизация оставлена ​​на усмотрение компилятора C.

Компилятор GNU Sather, написанный на самом Sather, имеет двойную лицензию под GNU GPL LGPL.

Содержание
  • 1 Hello World
  • 2 Пример итераторов
  • 3 Ссылки
  • 4 Внешние ссылки
Hello World
1 класс HELLO_WORLD равен 2 main is 3 # OUT + "Hello World \ n"; 4 конец; 5 конец;

Несколько замечаний:

  • Имена классов ВСЕ ЗАГЛАВНЫМИ; это не только соглашение, но и обеспечивается компилятором.
  • Метод с именем mainявляется точкой входа для выполнения. Он может принадлежать к любому классу, но если он отличается от MAIN, он должен быть указан как параметр компилятора.
  • #- это символ конструктора, вызывающий метод createсоответствующего класс; здесь он используется для создания экземпляра класса OUT, который на самом деле является стандартным выводом.
  • Оператор +был перегружен здесь для обозначения добавления потока.
  • Такие операторы, как +, являются синтаксическим сахаром для вызовов методов с обычными именами: a + bозначает a.plus (b). Для определения порядка вызова методов в сложных формулах используются обычные соглашения о приоритете арифметики.
  • Компоновка программы допускает предварительные и последующие условия (здесь не показаны), демонстрирующие происхождение Сатера Эйфеля.
Пример of итераторов
1 класс MAIN is 2 main is 3 loop 4 i: = 1.upto! (10); 5 # ВЫХОД + я + "\ п"; 6 конец; 7 конец; 8 конец;

Эта программа печатает числа от 1 до 10.

Конструкция loop... endявляется предпочтительным средством определения циклов (хотя whileи повторяют- , пока не станут доступны). Внутри конструкции можно использовать один или несколько итераторов. Имена итераторов всегда заканчиваются восклицательным знаком (это соглашение обеспечивается компилятором). upto!- это метод целочисленного класса INT, принимающий один аргумент once, что означает, что его значение не будет изменяться по мере того, как итератор уступает. до!может быть реализовано в классе INTследующим образом:

до! (Один раз m: INT): SAME is i: INT: = self; - инициализировать i значением self, - то есть целым числом, от которого этот метод называется loop, если i>m, затем выйти; - выйти из цикла, когда i выйдет за m конец; yield i; - иначе используйте i как возвращаемое значение и оставайтесь в цикле i: = i + 1; - конец приращения; конец;

Информация о типе переменных обозначается постфиксным синтаксисом переменная: КЛАСС. Тип часто можно вывести, и поэтому информация о типе необязательна, как в anInteger :: = 1. SAME- вспомогательный псевдокласс, относящийся к текущему классу.

Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-07 03:26:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте