Statikus gépelés, hogyan és miért

Statikus gépelés, hogyan és miért

Míg az előnyök statikus gépelési nyilvánvaló, jó beszélni őket.

előnyök

Az okok a használatát statikus gépelni objektum technológiát, mi szerepel az elején az előadás. A megbízhatóság, a könnyebb érthetőség és a hatékonyság.

Megbízhatóság miatt a detektálási hibák, amelyek egyébként megnyilvánulhat csak a munka során, és csak bizonyos esetekben. Az első szabály, arra kényszerítve állapítsa lényege, as, sőt, és funkciók be a program szövegének redundancia, amely lehetővé teszi a fordító, a másik két szabály, ellentmondás van a megfogant és a valós alkalmazás szervezetek, alkatrészek és kifejezéseket.

A korai felismerés a hibák is fontos, mert minél tovább halogatják az kereső, annál nagyobb a költségek növekedése a korrekció. Ez a tulajdonság az intuitív minden professzionális programozók, mennyiségileg megerősíteni a széles körben ismert művek Boehm (Boehm). Függése a költségek pontos időt találni a hiba látható a grafikonon, megépíteni szerint számos nagy ipari projektek és kísérleteket végeztünk kisebb lett volna a projekt:

Ábra. 17.1. Összehasonlító költségei hibák kijavítása ([Boehm 1981] közzétett engedéllyel)

Olvashatóság és a könnyebb érthetőség (olvashatóság) megvannak az előnyei. Az összes példa ebben a könyvben, mint a megjelenése egy egység biztosítja az olvasó információt kinevezését. Olvashatóság nagyon fontos szakaszában karbantartás.

Statikus gépelés, hogyan és miért

típusú világosnak kell lennie, nem csak az autó, hanem olvassa el a szöveget az ember. |

Érvek az dinamikus gépelés

Mindezek ellenére, a dinamikus gépelés nem veszíti el a szurkolók, különösen a Smalltalk-programozók. Ezek az érvek elsősorban a realizmus, ami a fent tárgyalt. Ők arról, hogy a statikus gépelési túl korlátozva őket, ami nem teszi lehetővé számukra, hogy szabadon kifejtsék kreatív ötletek, néha hívja őt „erényöv”.

Ezzel az érvvel tudunk megegyezni, de csak statikusan típusos nyelvek, amelyek nem támogatják a lehetőségek száma. Érdemes megjegyezni, hogy az összes kapcsolódó fogalmakat a koncepció típusú, és bevezette az előző előadások van szükség - az elutasítás sem őket tele van komoly korlátai, és azok bevezetése, éppen ellenkezőleg, felhatalmazza a tetteinket rugalmasság, és átadjuk magunkat a lehetőséget, hogy teljes mértékben élvezheti a praktikus statikus gépelés.

Gépelés: összetevői siker

Milyen mechanizmusok reális statikus gépelési? Mindegyikük lépett a korábbi előadások, és ezért is csak röviden felidézni őket. Együttes tőzsdei mutatja a következetesség és erejét egyesület.

A típus rendszer teljes egészében az a koncepció osztályban. Az osztályok még az ilyen alaptípus, mint egész. és ezért nem kell külön szabályok írják előre definiált típusok. (Ez a mi jelölés eltér a „hibrid” nyelv, mint Object Pascal, Java és C ++, ahol a rendszer a régi típusú nyelvek kombinált objektum technológiát, osztály-alapú.)

Telepített típusú nekünk nagyobb rugalmasságot, amely lehetővé teszi a fajta, amelynek értékeit képviselik tárgyak, valamint a típusok, amelyeknek értéke linkeket.

A végső döntést hozzanak létre egy rugalmas típusú rendszer tartozik az öröklési és a kapcsolódó átjárhatóság koncepciója. Így úrrá a fő korlátja

Statikus gépelés, hogyan és miért

klasszikus gépelt nyelv, például, Pascal, Ada, amely a kezelő x: = y igényel típusú x és y hasonlóak voltak. Ez a szabály túl szigorú: azt megtiltja a szervezetek, amelyek jelzik tárgyak kapcsolódó típusok (

SAVINGS_ACCOUNT és CHECKING_ACCOUNT). Ha öröklik, szükségünk van egy kompatibilis típus a fajta x y. például X rendelkezik típusú számla. y - SAVINGS_ACCOUNT. és a második osztály - utódja a korábbi.

A gyakorlatban egy statikusan típusos nyelv igényeinek támogatja a többszörös öröklés. Ismert alapvető díjak statikus gépelési, hogy nem ad lehetőséget arra, hogy értelmezze a különböző tárgyakat. Így a dokumentum objektum (dokumentum) lehet továbbítani a hálózaton keresztül, és ezért szükség van az összetevő jelenlétét típusához kapcsolódó ÜZENET (üzenet). De ez a kritika csak akkor érvényes, nyelv korlátozott egyetlen örökséget.

Ábra. 17.2. Többszörös öröklés sokoldalúság szükséges, például, hogy leírja egy rugalmas, de biztonságos

Bizonyos esetekben, ha szeretné korlátozni a sokoldalúság. amely lehetővé teszi a használatát műveletek, amelyek csak egységei általános típus. Ha generikus osztály SORTABLE_LIST támogatja válogatás megköveteli, hogy a gazdálkodó egység típus G. ahol G - generikus paraméter rendelkezésre állás összehasonlítást. Ezt úgy érjük el, kapcsoljuk a G-osztályú meghatározó generikus korlátozás, - összehasonlíthatók:

osztály SORTABLE_LIST [G -> ÖSSZEHASONLÍTHATÓ].

Bármilyen tényleges generikus paraméter egy leszármazottja SORTABLE_LIST osztály összehasonlíthatók. amelynek szükséges komponenst.

Tovább kötelező mechanizmus - kísérlet feladat - megszervezni a hozzáférést a tárgyak, a típusú szoftver, amely nem szabályozza. Ha y - egy adatbázis-objektum vagy tárgy nyert a hálózaton keresztül, a kezelő x = y hozzárendeli az x értéke y ?. ha y van egy kompatibilis típusú, vagy ha ez nem, hogy az x értékét Érvénytelen.

Jóváhagyása. csatlakoztatott részeként az ötlet Design by Contract, az osztályok és alkatrészeik formájában előfeltételek, utófeltételek és az osztály állandók, lehetőséget biztosít, hogy leírja a szemantikai korlátozások, amelyek nem tartoznak a specifikáció típusát. Nyelven, mint a Pascal és Ada, vannak típusú alhálózatok, amely korlátozza az értéke a természetben, például, tartomány 10-20, de használja őket, akkor nem lesz képes biztosítani, hogy az i értéke negatív, mindig kétszer meghaladó j. Ahhoz, hogy a támogatás az invariáns osztályok célja, hogy pontosan tükrözi a korlátozásokat, nem számít, mennyire bonyolult lehetnek.

Statikus gépelés, hogyan és miért

A szoftverrendszerek fejlesztésére valóban szükség van egy másik ingatlan rejlő legtöbb fejlesztési környezetben - gyors, növekvő (gyors inkrementális) újrafordítás. Amikor írsz, vagy módosítsa a rendszer, szeretnék a lehető leghamarabb, hogy a változtatások hatását. Statikus gépelés, meg kell adni a fordító időt kettős ellenőrzés típusát. Hagyományos összeállítása rutinokat kell ismételten fordítását a teljes rendszer (és összeszerelés), és ez a folyamat lehet fájdalmasan lassú, különösen átmenet nagy rendszerek. Ez a jelenség az érv értelmezése rendszerek, mint például a korai Lisp környezet vagy a Smalltalk, indítsa el a rendszert alig vagy egyáltalán nem feldolgozás elvégzése nélkül típusellenőrzés. ez az érv elfelejtve már. Egy jó modern fordítóprogram határozza meg, hogy a kód változott a legutóbbi összeállítása, és feldolgozza csak a változásokat talált.

„Ne pipsqueak gépelt”?

Célunk - a szigorú, statikus gépelni. Ezért el kell kerülni annak kiskapukat mi „a szabályok szerint játszik”, legalábbis, csak azért, hogy azonosítani őket, ha vannak ilyenek.

A leggyakoribb kiskaput statikusan típusos nyelv jelenléte az átalakulás, a változó típusát egység. A C és származékai nyelv az úgynevezett „típusú átalakítás” vagy öntvény (cast). Felvétel (OTHER_TYPE) x azt jelzi, hogy az x értéke által érzékelt a fordító, mint amelyek típusú OTHER_TYPE. bizonyos korlátozások alá a lehetséges típusokat.

Az ilyen megállapodások megkerülni a korlátozásokat típusú ellenőrzés. Hoz elterjedt a C programozási nyelven, aktiváló ANSI C nyelvjárás még C ++ vet, bár kevésbé gyakori, egy ismerős, és talán egy szükséges dolog.

Tartsa be a szabályokat a statikus gépelési nem olyan egyszerű, ha bármikor úgy lehet megkerülni azáltal.

Továbbá feltételezzük, hogy a típust a rendszer szigorú, és nem teszi lehetővé a szereposztás.

| Lehet, hogy észrevette, hogy a kísérlet rendelni - szerves része a reális típusú rendszer - mint egy kísértet. Van azonban egy lényeges különbség: a kisérlet arra, hogy megvizsgálja, hogy az aktuális típus megegyezik a meghatározott típusú - biztonságos, és néha szükség van. |

Typing és kötelező

Bár, mint olvasó ezt a könyvet, akkor biztosan megkülönböztetni statikus gépelési statikus kötődést. vannak emberek, akik szeretnek alá nem erő. Részben ez lehet

hatása miatt a Smalltalk nyelv védelmében dinamikus megközelítése mind a kihívások és kialakítására képes rossz ötlet, bár ugyanaz a megoldás. (Mi vagyunk a könyvben azzal érvelnek, hogy hozzon létre egy megbízható és rugalmas programok ötvözik kívánatos statikus gépelési és dinamikus kötés).

Például a gépelési és kötelező foglalkozik a szemantika alapján ingatlan szerkezetek x.f (arg). de válaszolni két kérdésre:

Typing és kötelező

* A kérdés, hogy a gépelést. amikor tudnunk kell, hogy pontosan mi lesz látható végrehajtása során a megfelelő művelet f. alkalmazandó objektum csatlakozik a lényege x (Arg paraméter)?

* A kérdés az kötődést. amikor tudnunk kell, hogy mi váltja ki ezt a műveletet

Gépelési megválaszolja a kérdést a jelenlétét legalább egy műveletet, a kötődés felelős választotta a jobb oldalon.

Ennek része a cél megközelítés:

* Probléma a gépelési kapcsolódik polimorfizmus. mivel x futásidejű jelölheti tárgyak a különböző típusú, biztosnak kell lennünk abban, hogy a művelet, ami f. rendelkezésre minden ilyen esetben;

Mindkét problémát meg lehet oldani mind dinamikusan és statikusan. Meglévő verzió által nyújtott mind a négy megoldásokat.

* A számos nem-tárgy nyelv, mondjuk, Pascal, Ada, rájött, mint a statikus gépelési és statikus kötődést. Minden egység csak egyféle definiált objektumok statikusan. Ez biztosítja a megbízhatóság a megoldás, amelynek költsége a rugalmassága.

* Smalltalk és más objektum-orientált nyelvek közé segítségével dinamikus összekapcsolását és dinamikus gépelési. Ebben az esetben előnyös, ha a rugalmasság rovására a megbízhatóság a nyelvet.

* Egyes nem tárgy nyelv támogatja a dinamikus és statikus gépelési kötődést. Közülük - a szerelvény nyelv és számos programozási nyelv (scripting nyelvek).

* Ötletek statikus és dinamikus gépelési kötődést végre a jelölési javaslatot ebben a könyvben.

Megjegyzés eredetiség C ++ nyelven, amely támogatja a statikus gépelés, bár nem szigorúan véve a leadott statikus kötődés (alapértelmezett)

Az ok a választott statikus és dinamikus gépelési kötelező nyilvánvaló. Az első kérdés: „Mikor fogunk tudni a létezéséről a komponensek?” - javasolja egy statikus választ: „Minél előbb, annál jobb”, ami azt jelenti, hogy a fordítás során. A második kérdés: „Mi haszna van az alkatrészek?” magában dinamikus válasz, „az egyik, hogy szükség van” - megfelel a dinamikus típusú objektum határozza meg futás közben. Ez az egyetlen elfogadható megoldás, ha a statikus és dinamikus kötési ad különböző eredményeket.

Az alábbi példa segít tisztázni az öröklési hierarchia ezeket a fogalmakat:

Statikus gépelés, hogyan és miért

Ábra. 17.3. Típusú repülőgép Tekintsük a kihívás:

Az a kérdés, gépelés, ha meggyőződött arról, hogy nem lesz lower_landing_gear komponenst ( „futómű”) alkalmazandó objektum (COPTER nem lesz egyáltalán) az a kérdés, a kötés: melyik több lehetséges változat közül lehet választani.

Dinamikus tipizálás Smalltalk-style megkövetelik, hogy várjon egy hívást, és abban az időben a végrehajtás lekérdezi a rendelkezésre álló kívánt alkatrész. Ez a viselkedés lehetséges prototípusok és kísérleti fejlesztés, de elfogadhatatlan, hogy az ipari rendszerek - a repülési idő végén kérdezni, van egy ház.

Kapcsolódó cikkek