Lt304888.ru

Туристические услуги

BETA

25-09-2023

BETA
Класс языка:

объектно-ориентированное программирование

Появился в:

1992

Автор(ы):

Кристен Нюгорд, Ole Lehrmann Madsen, Birger Møller-Pedersen и Bent Bruun Kristensen

Типизация данных:

строгая, статическая

Основные реализации:

Mjølner, Beta.Net, BETA.Java

Диалекты:

gbeta

Испытал влияние:

Simula, Algol-68


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

Содержание

История

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

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

В 1988 создатели языка BETA основали компаниею Mjølner Informatics Ltd., которая выпустила в 1992 коммерческую, кроссплатформенную RAD-среду программирования на языке BETA Mjølner (в настоящее время распространяется как freeware). GUI фреймвок Mjølner называется Lidskjalv и построен поверх библиотеки виджетов Motif (может также использовать LessTif). Интересный факт, что одними из первых коммерческую лицензию на Mjølner 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 #) #)

Литература

  • Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard Object-Oriented Programming in the BETA Programming Language. — Addison-Wesley, Reprinted by Mjølner Informatics with permission from Addison-Wesley, 1993. — 350 с. — ISBN 0-201-62430-3

Примечания

  1. ↑ Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen. The When, Why and Why Not of the BETA Programming Language, HOPL III
  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., Møller-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 и ситемы Mjølner

Внешние ссылки

  • The BETA Language Homepage
  • gbeta Generalized BETA


BETA.

© 2020–2023 lt304888.ru, Россия, Волжский, ул. Больничная 49, +7 (8443) 85-29-01