„Lazán típusos” változatai közötti eltérés

Innen: Programozás Wiki
Ugrás a navigációhozUgrás a kereséshez
(Új oldal, tartalma: „Egy programozási nyelvet akkor tekintünk lazán típusosnak, ha benne a változók tartalmának és a kifejezések eredményének [[típusbújtatás|átértelmez…”)
 
 
9. sor: 9. sor:
 
A laza típusosság előnye, hogy az ellenőrzött típusátalakítások mellett - vagy azok helyett - lehetővé teszi a tárolt és feldolgozott adatok típusának mindössze átértelmezését (is), amely pusztán azt befolyásolja, hogy a program a továbbiakban miként fogja értelmezni és feldolgozni a már egyszer letárolt és előállt adatokat - de azokon tényleges feldolgozást és ellenőrzést nem jelent. Ennek köszönhetően a laza típusátalakításokkal dolgozó programok gyorsabban futhatnak.
 
A laza típusosság előnye, hogy az ellenőrzött típusátalakítások mellett - vagy azok helyett - lehetővé teszi a tárolt és feldolgozott adatok típusának mindössze átértelmezését (is), amely pusztán azt befolyásolja, hogy a program a továbbiakban miként fogja értelmezni és feldolgozni a már egyszer letárolt és előállt adatokat - de azokon tényleges feldolgozást és ellenőrzést nem jelent. Ennek köszönhetően a laza típusátalakításokkal dolgozó programok gyorsabban futhatnak.
  
Ugyanakkor az ellenőrzések kiiktatása azt a veszélyt rejti magában, hogy az egymással nem felülről kompatibilis típusok közötti ill. irányban történő átalakítások hibás adatértelmezést vagy adatvesztést okoznak. (Pl. egy 16-bites előjeles egész egy bájttá történő átértelmezése adatok elvesztését és sérülését okozza, ha a 16-bites előjeles negatív vagy 255-nél nagyobb számot tárolt, és egy bájtokból álló vektor zérusterminált sztringgé alakítása során is adatok veszhetnek el, ha a bájtok között szerepel ASCII 0 karakter, vagy az utolsó bájt maga nem ilyen karakter.)
+
Ugyanakkor az ellenőrzések kiiktatása azt a veszélyt rejti magában, hogy az egymással nem felülről kompatibilis típusok között ill. nem kölcsönösen egyértelmű leképezést jelentő irányban történő átalakítások hibás adatértelmezést vagy adatvesztést okoznak. (Pl. egy 16-bites előjeles egész egy bájttá történő átértelmezése adatok elvesztését és sérülését okozza, ha a 16-bites előjeles negatív vagy 255-nél nagyobb számot tárolt. Hasonló módon egy bájtokból álló vektor zérusterminált sztringgé alakítása során is adatok veszhetnek el, ha a vektorban tárolt bájtok között szerepelt ASCII 0 karakter, vagy az utolsó bájt maga nem ilyen karakter volt benne.)
  
 
Lazán típusos nyelvek például a [[C]] és a [[Pascal]] nyelv egyes bővítései is.
 
Lazán típusos nyelvek például a [[C]] és a [[Pascal]] nyelv egyes bővítései is.

A lap jelenlegi, 2012. május 23., 00:10-kori változata

Egy programozási nyelvet akkor tekintünk lazán típusosnak, ha benne a változók tartalmának és a kifejezések eredményének átértelmezése csak igen lazán korlátozott.

A lazán típusos nyelvek jellemzően megengednek minden - vagy legalábbis sok - típusátértelmezést addig, amíg az alábbi feltételek közül legalább egy teljesül:

  • a forrás és a céltípus tárolásához szükséges memóriaterület mérete megegyezik (pl. egy 4 darab bájtból álló vektor átértelmezhetó egy 4 bájton tárolt egésszé)
  • a forrás és a céltípus azonos típusosztályba tartozik (pl. egy előjeles egész átértelmezhető előjel nélküli egésszé, egy 16-bites szó átértelmezhető byte-tá, tetszőleges mutató átértelmezhető más típusú vagy típus nélküli mutatóvá, és objektumreferenciák átértelmezhetők más objektumokra mutató referenciákká, mutatókká)
  • a forrás és a céltípus adatábrázolási módja hasonló (pl. egy bájtokból álló vektor jellemzően átértelmezhető karakterfüzérré)


A laza típusosság előnye, hogy az ellenőrzött típusátalakítások mellett - vagy azok helyett - lehetővé teszi a tárolt és feldolgozott adatok típusának mindössze átértelmezését (is), amely pusztán azt befolyásolja, hogy a program a továbbiakban miként fogja értelmezni és feldolgozni a már egyszer letárolt és előállt adatokat - de azokon tényleges feldolgozást és ellenőrzést nem jelent. Ennek köszönhetően a laza típusátalakításokkal dolgozó programok gyorsabban futhatnak.

Ugyanakkor az ellenőrzések kiiktatása azt a veszélyt rejti magában, hogy az egymással nem felülről kompatibilis típusok között ill. nem kölcsönösen egyértelmű leképezést jelentő irányban történő átalakítások hibás adatértelmezést vagy adatvesztést okoznak. (Pl. egy 16-bites előjeles egész egy bájttá történő átértelmezése adatok elvesztését és sérülését okozza, ha a 16-bites előjeles negatív vagy 255-nél nagyobb számot tárolt. Hasonló módon egy bájtokból álló vektor zérusterminált sztringgé alakítása során is adatok veszhetnek el, ha a vektorban tárolt bájtok között szerepelt ASCII 0 karakter, vagy az utolsó bájt maga nem ilyen karakter volt benne.)

Lazán típusos nyelvek például a C és a Pascal nyelv egyes bővítései is.