BETA

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
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 #) #)

Литература[править | править исходный текст]

Примечания[править | править исходный текст]

  1. 1 2 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

Внешние ссылки[править | править исходный текст]