szó jelentését keresi. A DICTIOUS-ban nem csak a
szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
szót egyes és többes számban mondani. Minden, amit a
szóról tudni kell, itt található. A
szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
Eiffel (tsz. Eiffels)
- (informatika) Az Eiffel egy magas szintű, objektum-orientált programozási nyelv, amelyet Bertrand Meyer francia számítógép-tudós fejlesztett ki az 1980-as évek közepén. A nyelv elsődleges célja az volt, hogy lehetővé tegye nagy méretű, megbízható és újrafelhasználható szoftverek írását. Az Eiffel nyelv legismertebb jellemzője a Design by Contract (Szerződés alapú tervezés) filozófia, amely az automatikus hibakeresést, megbízhatóságot és dokumentálhatóságot támogatja.
Történeti háttér
- Kifejlesztő: Bertrand Meyer
- Kiadás éve: 1986 (első verzió)
- Fejlesztő cég: ISE (Interactive Software Engineering), később Eiffel Software
- Cél: megbízható, karbantartható, skálázható és újrafelhasználható szoftverek létrehozása
Az Eiffel nyelvet eredetileg a kereskedelmi szoftverfejlesztés számára tervezték, különösen olyan környezetekben, ahol magas minőségi követelmények vannak (például pénzügyi rendszerek, repülőgép vezérlő rendszerek, orvosi szoftverek).
Alapelvek
Az Eiffel fejlesztését számos filozófiai elv vezette:
1. Design by Contract (DbC)
Az Eiffel egyik leginnovatívabb és legismertebb jellemzője. A programozó a függvényekhez és osztályokhoz szerződéseket rendel:
- Preconditions (Előfeltételek): mikor hívható meg egy metódus
- Postconditions (Utófeltételek): milyen állapotban lesz a rendszer a metódus végrehajtása után
- Invariants (Invariánsok): az osztály érvényes állapotát leíró feltételek, melyek minden metódus hívás után teljesülnek
Ennek eredményeként a hibák korán detektálhatók, a kód önmagát dokumentálja, és a szoftver robosztusabb lesz.
2. Egységesség
Az Eiffel célja, hogy a nyelv egységes és koherens legyen. Például az összes vezérlési szerkezet (if, loop, etc.) hasonló szintaxist követ.
3. Magas absztrakciós szint
Az Eiffel támogatja a magas fokú abstrakciót, például generikus osztályokat, öröklést és polimorfizmust.
4. Újrafelhasználhatóság
A nyelv tervezése során nagy hangsúlyt kapott az újrafelhasználható komponensek támogatása.
Nyelvi jellemzők
Objektum-orientált
Az Eiffel teljes mértékben objektum-orientált:
- Osztályok és objektumok központi szerepet játszanak
- Támogatja az öröklést (egyszeres és többszörös)
- Támogatja a polimorfizmust
- Encapsulation: adatok és metódusok elrejtése
- Late Binding: futásidejű kötés
Statikus típusosság
Az Eiffel szigorúan típusos nyelv, ami segít elkerülni a típushibákat fordítási időben.
Generikus típusok
Az Eiffelben lehetőség van generikus osztályok definiálására (mint a C++ template-jei vagy Java generics-ei):
class STACK
feature
put (x: G)
-- Add `x` to the stack.
do
-- implementation
end
item: G
-- Return top item of stack.
do
-- implementation
end
end
Többszörös öröklés
Az Eiffel támogatja a többszörös öröklést, és ezt konzisztens módon kezeli a “rename” és “select” kulcsszavak segítségével az öröklési konfliktusok feloldásához.
Egységes szintaxis
Az Eiffel szintaxisa tiszta és olvasható:
if balance < 0 then
print ("Overdraft")
else
print ("Balance is positive")
end
Egységes “everything is an object” modell
- A vezérlési szerkezetek is “komoly” nyelvi elemek
- Például a ciklusok így nézhetők ki:
from i := 1 until i > 10 loop
print (i)
i := i + 1
end
Design by Contract példa
deposit (amount: INTEGER)
require
amount_positive: amount > 0
do
balance := balance + amount
ensure
balance_increased: balance >= old balance
end
Itt:
- require: előfeltétel — az amount pozitív kell legyen
- ensure: utófeltétel — a balance növekszik
- old balance: a metódus hívása előtti balance érték
Futtatási modell
Az Eiffel forráskódot általában nem közvetlenül értelmezik, hanem:
- Fordítják C-re, majd onnan a natív gépi kódra
- Léteznek Eiffel->.NET és Eiffel->JVM fordítók is
Ez a stratégia hatékony végrehajtást tesz lehetővé, miközben megőrzi a magas szintű absztrakciókat.
Fejlesztőeszközök
- EiffelStudio: hivatalos integrált fejlesztői környezet (IDE) az Eiffel Software-től
- Támogatja:
- forráskód szerkesztést
- fordítást
- hibakeresést
- Design by Contract vizualizációt
- automatikus tesztgenerálást
- dokumentáció generálást
Példák a felhasználásra
Bár az Eiffel nem annyira elterjedt, mint a C++, Java vagy Python, kritikus alkalmazásokban használják:
- Pénzügyi rendszerek (bankok, tőzsdék)
- Repülésirányítási rendszerek
- Orvosi berendezések vezérlőszoftverei
- Magas biztonságot igénylő alkalmazások
Előnyök
- Kiemelkedő megbízhatóság a Design by Contract révén
- Tiszta, olvasható szintaxis
- Erős típusosság
- Újrafelhasználható kódbázis
- Automatikus dokumentáció
- Többszörös öröklés biztonságosan kezelve
- Erős szoftvertervezési támogatás
Hátrányok
- Kis ipari elterjedtség (főleg niche alkalmazásokban használják)
- Kevesebb közösségi támogatás és harmadik féltől származó könyvtár
- Kisebb munkaerőpiaci kereslet (pl. Java, Python, C++ mellett)
Összefoglalás
Az Eiffel egy különleges helyet foglal el a programozási nyelvek között. Célzottan a nagy megbízhatóságú, hosszú élettartamú rendszerek építésére fejlesztették. Fő innovációja a Design by Contract filozófia, amely formálissá teszi a szoftver komponensek közötti szerződéseket, így növelve a szoftverek minőségét és karbantarthatóságát.
Bár az Eiffel nem tömegnyelv, bizonyos szűk területeken (például beágyazott rendszerekben, kritikus szoftvereknél) versenyképes alternatíva. Emellett oktatási célra is remek eszköz, hiszen tiszta módon demonstrálja az objektum-orientált programozás alapelveit.