Jump to content

Сатер

Сатер
Парадигма объектно-ориентированный , функциональный
Разработано Стив Омохундро
Разработчик Калифорнийский университет, Беркли , Университет Вайкато , проект GNU
Впервые появился 1990
Стабильная версия
1.2.3 [1] / 7 июля 2007 г .; 17 лет назад ( 7 июля 2007 )
Дисциплина набора текста статический , сильный
Веб-сайт www .gnu .org /программное обеспечение /сатер /
Основные реализации
ИКСИ Сатер, GNU Сатер
Под влиянием
Эйфель , CLU , Common Lisp , Схема
Под влиянием
Прохладный

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

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

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

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

Исходная реализация Беркли (последняя стабильная версия 1.1 была выпущена в 1995 году, больше не поддерживается). [2] ) был принят Фондом свободного программного обеспечения и стал GNU Sather. Последняя стабильная версия GNU (1.2.3) была выпущена в июле 2007 года. [3] и программное обеспечение в настоящее время не поддерживается. Было еще несколько вариантов: Sather-K от Университета Карлсруэ ; [4] [5] Сатер-В из Университета Вайкато [6] (реализация Sather версии 1.3); Порт ICSI Sather 1.1 Питера Ноллса на ОС RISC ; [7] и Сатер, [8] [9] параллельная версия ICSI Sather, предназначенная для многопроцессорных архитектур с неоднородным доступом к памяти , но предоставляющая программисту модель общей памяти.

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

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

Привет, мир

[ редактировать ]
 class HELLO_WORLD is
  main is 
   #OUT+"Hello World\n"; 
  end; 
 end;

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

  • Имена классов пишутся ЗАГЛАВНЫМИ БУКВАМИ; это не просто соглашение, оно обеспечивается компилятором.
  • Метод под названием main является точкой входа для выполнения. Он может принадлежать к любому классу, но если он отличается от MAIN, он должен быть указан как опция компилятора.
  • # — это символ конструктора: он вызывает create метод класса, имя которого следует за оператором. В этом примере он используется для создания экземпляра OUT class, который является классом стандартного вывода .
  • The + Оператор был перегружен классом для добавления строки, переданной в качестве аргумента, в поток.
  • Такие операторы, как + являются синтаксическим сахаром для вызовов методов с традиционными именами: a + b означает a.plus(b). Обычные арифметические соглашения о приоритете используются для определения порядка вызова методов в сложных формулах.

Пример итераторов

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

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

 class MAIN is
   main is
     loop
      i := 1.upto!(10);
      #OUT + i + "\n";
     end;
   end;
 end;

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

  upto!(once m:INT):SAME is
    i: INT := self; -- initialise i to the value of self, 
                    -- that is the integer of which this method is called
    loop
      if i>m then 
        quit;  -- leave the loop when i goes beyond m
      end;
      yield i; -- else use i as return value and stay in the loop
      i := i + 1; -- and increment
    end;
  end;

Информация о типе переменных обозначается постфиксным синтаксисом. variable:CLASS. Тип часто можно вывести, и поэтому информация о типизации не является обязательной, как в anInteger::=1. SAME — это псевдокласс, ссылающийся на текущий класс.

  1. ^ https://directory.fsf.org/wiki/sather . {{cite web}}: Отсутствует или пусто |title= ( помощь )
  2. ^ «Планы на будущее ICSI Sather» . Архивировано из оригинала 05 февраля 2012 г. Проверено 2 марта 2012 г.
  3. ^ «Загрузки GNU Sather» . Архивировано из оригинала 5 апреля 2012 г. Проверено 2 марта 2012 г.
  4. ^ Страница проекта Sather-K (архив 2001 г.)
  5. ^ «Загрузка Sather-K 0.9, версия 1994 года» . Архивировано из оригинала 29 апреля 2024 г. Проверено 2 марта 2012 г.
  6. ^ Страница проекта Sather-W 1.3 (архивная ссылка за 2002 год)
  7. ^ Порт Питера Ноллса больше не доступен в Интернете.
  8. ^ "описание pSather" . Архивировано из оригинала 05 февраля 2012 г. Проверено 2 марта 2012 г.
  9. ^ "загрузка pSather" . Архивировано из оригинала 6 июля 2017 г. Проверено 11 октября 2021 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d22e606fd2c8ebf9fea4dba02d89f187__1714342200
URL1:https://arc.ask3.ru/arc/aa/d2/87/d22e606fd2c8ebf9fea4dba02d89f187.html
Заголовок, (Title) документа по адресу, URL1:
Sather - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)