BETA
BETA — это чисто объектно-ориентированный язык «скандинавской школы», начатой первым в мире объектно-ориентированным языком Simula. Поддерживает также процедурный и функциональный методологии программирования. BETA, подобно Симуле, Эйфелю и C++ — это строго типизированный язык преимущественно статической типизацией (проверкой типов на стадии компиляции). Язык BETA имеет ряд уникальных особенностей.
BETA | |
---|---|
Класс языка | объектно-ориентированное программирование |
Появился в | 1992 |
Автор | Кристен Нюгор, Ole Lehrmann Madsen, Birger Møller-Pedersen и Bent Bruun Kristensen |
Разработчик | Нюгорд, Кристен |
Система типов | строгая, статическая |
Основные реализации | Mjølner, Beta.Net, BETA.Java |
Диалекты | gbeta |
Испытал влияние | Simula, Algol-68 |
Сайт |
daimi.au.dk/~beta cs.au.dk/~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 или select … case) и 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.
- J. Lindskov Knudsen, M. Lofgren, O. Lehrmann Madsen. B. Magnusson (Eds.). Object-Oriented Environments - The Mjølner Approach. — Prentice Hall, 1993. — 600 с. — ISBN 0-13-009291-6. (недоступная ссылка)[4]
- Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen. The When, Why and Why Not of the BETA Programming Language, HOPL III Архивная копия от 7 июля 2011 на Wayback Machine
- BETA Language Introduction Архивная копия от 23 января 2011 на Wayback Machine
Примечания
- Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen. The When, Why and Why Not of the BETA Programming Language (недоступная ссылка), HOPL III Архивная копия от 7 июля 2011 на Wayback Machine
- 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.
- 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.
- В сети доступны две главы с обзором языка BETA и системы Mjølner
Ссылки
- The BETA Language Homepage
- gbeta Generalized BETA