BETA (programmeringsspråk)
Paradigm | Objektorienterad |
---|---|
Designad av | Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen , Kristen Nygaard |
Hemsida | |
Influerad av | |
Simula |
BETA är ett rent objektorienterat språk med ursprung inom "Skandinaviska skolan" i objektorientering där det första objektorienterade språket Simula utvecklades. Bland dess anmärkningsvärda funktioner introducerade den kapslade klasser och förenade klasser med procedurer i så kallade mönster.
Projektet är inaktivt från och med oktober 2020.
Funktioner
Teknisk översikt
Ur ett tekniskt perspektiv ger BETA flera unika funktioner. Klasser och procedurer är förenade till ett koncept, ett mönster. Klasser definieras också som egenskaper/attribut för objekt. Detta innebär att en klass inte kan instansieras utan ett explicit objektkontext. En konsekvens av detta är att BETA stöder kapslade klasser . Klasser kan definieras virtuellt, ungefär som virtuella metoder kan vara i de flesta objektorienterade programmeringsspråk. Virtuella enheter (som metoder och klasser) skrivs aldrig över; istället är de omdefinierade eller specialiserade.
BETA stödjer det objektorienterade perspektivet på programmering och har omfattande möjligheter för procedur- och funktionsprogrammering. Den har kraftfulla abstraktionsmekanismer för att stödja identifiering av objekt, klassificering och sammansättning. BETA är ett statiskt skrivet språk som Simula, Eiffel och C++ , där de flesta typkontroller görs vid kompilering. BETA syftar till att uppnå en optimal balans mellan typkontroll av kompileringstid och typkontroll av körtid.
Mönster
Ett stort och säreget drag i språket är begreppet mönster. I ett annat programmeringsspråk, som C++ , skulle man ha flera klasser och procedurer. BETA uttrycker båda dessa koncept med hjälp av mönster.
Till exempel skulle en enkel klass i C++ ha formen
klasspunkt { int x , y ; _ };
I BETA kan samma klass representeras av mönstret
punkt : ( # x , y : @ heltal # )
Det vill säga, en klass som kallas punkt kommer att ha två fält, x och y , av typen heltal . Symbolerna (# och #) introducerar mönster. Kolon används för att deklarera mönster och variabler. @ -tecknet före heltalstypen i fältdefinitionerna anger att dessa är heltalsfält, och däremot inte referenser, arrayer eller andra mönster .
Som en annan jämförelse kan en procedur i C++ ha formen
int max ( int x , int y ) { if ( x >= y ) { return x ; } else { return y ; } }
I BETA skulle en sådan funktion kunna skrivas med hjälp av ett mönster
max : ( # x , y , z : @ heltal enter ( x , y ) do ( om x >= y // Sant då x -> z annars y -> z if ) avsluta z # )
X , y och z är lokala variabler . Nyckelordet enter anger inmatningsparametrarna till mönstret, medan nyckelordet exit anger resultatet av funktionen. Mellan de två, gör nyckelordet prefix för sekvensen av operationer som ska göras. Det villkorliga blocket avgränsas av (if and if) , det vill säga nyckelordet if blir en del av den inledande och avslutande parentesen. Sanningen kontrolleras genom // True inom ett if-block. Slutligen tilldelar tilldelningsoperatorn -> värdet på dess vänstra sida till variabeln på dess högra sida.
Hej världen!
Detta utdrag skriver ut standardraden "Hello world!" :
(# gör 'Hello world!'->PutLine #)
Vidare läsning
- Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard: Object-Oriented Programming in the BETA Programming Language, [ 2]
- Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen: The When, Why and Why Not of the BETA Programming Language, ACM History of Programming Languages III, Conference, San Diego 2007, [3 ]
externa länkar
- Officiell hemsida
- gbeta Generaliserad BETA