Меню

Главная
Случайная статья
Настройки
BETA
Материал из https://ru.wikipedia.org

BETA — чисто объектно-ориентированный язык «скандинавской школы», начатой первым в мире объектно-ориентированным языком Simula. Поддерживает также процедурный и функциональный методологии программирования. BETA, подобно Симуле, Эйфелю и C++ — это строго типизированный язык преимущественно статической типизацией (проверкой типов на стадии компиляции). Язык BETA имеет ряд уникальных особенностей.

Содержание

История

Кристен Нюгор (один из авторов Симулы) Ole Lehrmann Madsen, Birger Mller-Pedersen и Bent Bruun Kristensen начали в 1975—1976 гг. работу над новым объектно-ориентированным языком в рамках The Joint Language Project (проекта сочленённого языка). Работа над новым языком велась на факультете информатики (англ. Computer Science Department), Орхуского университета (DAIMI). Как и в случае с Симулой этот проект был ориентирован на имитационное моделирование. По словам авторов языка,[1] изначально этот проект планировалось закончить за год-два. Фундаментом для разработки было спроектированное (но так и не реализованное) проблемно-ориентированное расширение языка Simula под названием Delta, новый язык было решено назвать Gamma.

В ноябре 1976, по причине отсутствия прогресса в работе на проектом, было решено разделить его на 6 подпроектов, одним из которых и стал язык Beta — он планировался как достаточно низкоуровневый «язык реализации» для языка Gamma. Однако, в процессе работы над языком в 1978—1979 гг. было решено не ограничиваться языком реализации, и он вырос в полноценный язык — наследник Симулы, предназначенный как для имитационного моделирования, так и являющийся универсальным языком общего назначения. При этом новый язык должен был стать заметно эффективней в реализации, чем Симула. В 1981 г. был готов «Обзор языка программирования BETA»[2], послуживший основой для первой реализации языка, которая была готова в 1983.[3]

В 1988 создатели языка BETA основали компанию Mjlner Informatics Ltd., которая выпустила в 1992 коммерческую, кроссплатформенную RAD-среду программирования на языке BETA Mjlner (в настоящее время распространяется как freeware). GUI фреймвок Mjlner называется Lidskjalv и построен поверх библиотеки виджетов Motif (может также использовать LessTif). Интересный факт, что одними из первых коммерческую лицензию на Mjlner system приобрели Джеймс Гослинг и Билл Джой.[1]

Основы синтаксиса

Для объявления статических переменных используются конструкции вроде:
i: @integer;
r: @real;



Динамических:
i: ^integerObject


Присваивание в BETA обозначается как значение -> переменная, допустимы множественные присваивания.
2 -> i         (* присвоить значение 2 переменой i *)
i -> j         (* присвоить значение i переменой j *)
i*j -> k       (* присвоить значение i*j переменой k *)
(i,j) -> (x,y) (* присвоить значение i переменой x и
                *           значение j переменой y
                *)


Управляющие конструкции в терминах языка BETA называются императивами. Их там всего две, if (может имеет несколько ветвей then, выполняя роль операторов типа switch или selectcase) и for (имеющий множество вариаций). Их синтаксис слегка напоминает синтаксис подобных конструкций в Algol 68.
(if x
// 17 then …
// 33 then …
// y+3 then …
else …
if);

(if (x>0) and (y<0)
// True then …
// False then …
if)
(if true
// (x<0) and (y=0) then …
// (x=0) and (y=0) then …
// x>=0 then …
if)


Механизмы абстракции

В BETA имеются мощные механизмы абстракции для поддержки идентификации, классификации и композиции объектов. Классы, процедуры, функции, сопрограммы, процессы, исключения — все они объединены в единую концепцию шаблонов. С этой концепцией связаны понятия подшаблонов, виртуальных шаблонов и шаблонных переменных. Классы, подклассы и виртуальные процедуры (методы) имеются в большинстве объектно-ориентированных языков, некоторые языки включают процедурные переменные. Но в BETA возможно наследование, «виртуализация» и определение переменных для шаблонов любых типов: классов, процедур, сопрограмм и т. д. Кроме того для шаблонов языка BETA имеются механизмы обобщённого программирования. Объекты языка BETA, как и объекты Симулы — это активные объекты, они, подобно сопрограммам, позволяют квазипараллельное выполнение.

Имеется возможность объявлять объекты, не относящиеся к какому то шаблону (то есть являющимся единственным экземпляром своего класса, см. шаблон проектирования синглтон).

Объекты и шаблоны объектов могут быть определены как композиция других объектов и шаблонов. Имеются три способа такой композиции:
  • Включение всего объекта в объект композицию.
  • Включение в объект ссылки на другой объект.
  • Объект или шаблон может включать вложенный, локальный шаблон (см. внутренний класс).


Пример объявления
Employee:
  (# name: @ Text;
    birthday: @ Date;
    dept: ^ Department;
    totalHours: @ Integer;
    RegisterWork:
      (#  noOfHours: @ Integer
      enter noOfHours
      do noOfHours + totalhours -> totalHours
      #);
    ComputeSalary:<
      (#  salary: @ integer
      do inner
      exit salary
      #);
  #);
Worker: Employee
  (#  seniority: @ integer;
      ComputeSalary::< 
        (#do noOfHours*80+seniority*4 -> salary; 0 -> totalHours #)
  #);
Salesman: Employee
  (#  noOfSoldUnits: @ integer;
    ComputeSalary::< 
      (#do noOfHours*80+noOfSoldUnits*6 -> salary;
        0 -> noOfSoldUnits -> totalHours
      #)
  #)
 
mary: @ Worker
theForeman: ^ Worker

mary[] -> theForeman[]

&Worker[] -> theForeman[]

president: @ Employee(#ComputeSalary::< (#do BIG -> salary #) #)


Литература

Примечания
  1. 1 2 Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Mller-Pedersen. The When, Why and Why Not of the BETA Programming Language (недоступная ссылка), HOPL III Архивная копия от 7 июля 2011 на Wayback Machine
  2. Kristensen, B. B., Madsen, O. L., Mшller-Pedersen, B., and Nygaard, K.: A Survey of the BETA Programming Language, Norwegian Computing Center, Oslo, Report No 698, 1981.
  3. Kristensen, B. B., Madsen, O. L., Mller-Pedersen, B., and Nygaard, K.: Abstraction Mechanisms in the BETA Programming Language, Tenth ACM Symposium on Principles of Programming Languages, Austin, Texas, 1983.
  4. В сети доступны две главы с обзором языка BETA и системы Mjlner


Ссылки
Downgrade Counter