Adat típus - egy

Vissza az 1960-as R. Hindley (Roger Hindley) vizsgáltuk tipizálás a kombinatorikus logika. Ő aggályos terület volt beírni a nyelv alapján a lambda-kalkulus elmélet. Később, az 1960-as években. Ugyanez tudós tanulmányozta polimorf típusú rendszer. Később, 1970-ben. Robin Milner javasolta, hogy a gyakorlati megvalósítása a kiterjesztett rendszere polimorf gépelési funkcionális programozási nyelv ML.







meghatározás

Típus (osztály) - viszonylag stabil és független halmaza elemek lehet elosztani összes figyelembe vett set (domain). [1]

A polimorf típus - bemutató egy sor típus egyetlen típus.

Matematikailag típusát lehet meghatározni két módja van:

  1. A készlet minden tartozó értékek írja.
  2. Állítmány funkció, amely meghatározza egy objektum tartozó ilyen típusú

Annak szükségességét, hogy adattípusok

Az adattípusok különbözik, mivel az alsó szint a rendszerben. Például még a különböző típusú assembly x86 „egész” és „valós szám.” Ez annak a ténynek köszönhető, hogy a számok vannak rendelve különböző tartják a használt memória mennyiségét a különböző nyilvántartások a mikroprocesszor, valamint olyan ügyletekhez velük vannak különböző szerelési útmutató és a különböző mikroprocesszoros mag.

adattípus fogalma megjelent magas szintű programozási nyelv, mint a természetes tükrözi az a tény, hogy a feldolgozott adatokat a program egy sor különböző lehetséges értékek a számítógépben tárolt memória különböző módokon, elfoglalják különböző mennyiségű memória és dolgozza fel egy másik processzor utasítás.

gyakorlati alkalmazása

Jellemzően a fajta programozási nyelvek nem mindig szigorúan megfelelnek a hasonló matematikai típusok. Például írja „egész szám” a legtöbb programozási nyelv, hogy nem lehet egy matematikai típusú „egész szám”, mint a matematika a meghatározott típusú nem korlátozódik sem felülről vagy alulról, és a korlátozásokat a programozási nyelvek. Általános szabály, hogy a nyelvek és rendszerek, van egy csomó integer típusú, eltérő megengedett értéktartomány (határozza meg a kötet által elfoglalt memória). Érdemes megjegyezni, hogy a legtöbb implementáció nyelvek és rendszerek kilóg az egész típusú (túlcsordulás) nem eredményez kivételes helyzetben.

Modern programozási nyelven (köztük assembly) egyaránt támogatja a módját, hogy adja meg a típusát (lásd. Definíció). Például a C ++ enum típus egy olyan példa, hogy milyen típusú munkát egy értékrend. Az osztály definíciója (ha figyelembe vesszük az osztály adattípusként) valójában a meghatározása, hogy milyen típusú állítmány esetleges ellenőrzését az állítmány egy fordítási idejű (típusellenőrzés) és futtatási (polimorfizmus nagyon szorosan kapcsolódik a polimorf típus). Mert alaptípus ilyen predikátumok meghatározott alkotók nyelv kezdetben.

Nyelvek nincs típus

Elméletileg nem lehet a nyelvet, amelyen nincsenek típusok (beleértve a polimorf). Ez abból következik, hogy minden nyelv alapja a Turing-gép, vagy lambda-kalkulus. És valóban, a másik esetben meg kell működtetni legalább egy típusú adatok - tárolt a szalagot (Turing-gép), vagy továbbítani, és visszatért a funkciót (lambda-kalkulus). Az alábbiakban felsoroljuk a módszer programozási nyelvek adatok meghatározások:

1) nyelvek a polimorf adattípust. Egyes nyelvek esetén nem kötődnek változókat. állandó. formális paraméterek és visszatérési értékek funkciók bizonyos típusú támogató egyetlen polimorf típusú adatokat. A tiszta formában, ilyen nyelv nem található, de hasonló példákat - MS Visual Basic - típusú variáns, Prologue. Lisp - listákat. Ezeken a nyelveken a változó az értéke bármilyen típusú függvény paraméterek átadhatók értékek bármilyen típusú, és visszatér a funkció is lehet bármilyen típusú érték. Összehasonlítás típusú változók és paraméterek ezekre alkalmazandó végrehajtott műveletek közvetlenül elvégzése során ezeket a műveleteket. Például, a kifejezés a + b. Úgy értelmezhető, mint az összeadás számokat, ha a és b számértéket szövegösszefűzés, ha a és b van szöveges adatok és érvénytelen (hibás) működés, ha a A és B típusú értékek összeférhetetlenek. Ez az eljárás az úgynevezett „dinamikus gépelés” (megfelel a koncepció polimorfizmus OOP. Polimorf típusa a típus elmélet). Nyelvek, amelyek csak a dinamikus gépelés néha „típus nélküli”. Ez a név nem lehet felfogni, mint a jele, hogy nincs fogalma fajta nyelv - adattípusok még mindig ott vannak.







2) nyelvek implicit típusok. Úgy tűnik, BASIC egy példa nélkül bármilyen nyelvet. Azonban ez szigorúan tipizirovany nyelv: string típusú (hozzáadott $ jel) tömbök (add []), és a numerikus típusok (nem hozzáadott) benne különböző.

3) Nyelvi típusú a felhasználó által megadott. Szintén jól ismert nyelven, amelyen a adattípusok meg automatikusan, és nem a felhasználó által beállított. Minden változó paraméter funkciót tulajdonított konkrét adatok típusát. Ebben az esetben minden lehetőségét kifejezése annak végrehajtását, és a típus a kapott értékeket lehet meghatározni elvégzése nélkül a program. Ez a megközelítés az úgynevezett „statikusan típusos”. Ugyanakkor kezelésére vonatkozó szabályokat változókat, kifejezéseket és paramétereket különböző típusú lehet egy nagyon szigorú (C ++), és nagyon liberális (C). Például a klasszikus C nyelv szinte minden adattípusok kompatibilis - ezek együttesen is használható bármilyen kifejezést, rendeljen értéket a változó egyik típusának egy másik változó szinte nincs korlátozás. Az ilyen műveletek, a fordító generál kódot, amely lehetővé teszi az átalakítás típusát és logikai helyességét egy ilyen átalakulás marad a programozó lelkiismerete. Ezeket a nyelveket nevezzük „gyengén típusos nyelv.” Ellentétes őket - a „erősen típusos nyelv”, mint például Ada. A velük, minden egyes művelet igényli operandus szigorúan meghatározott típusokat. Nincs automatikus típusátalakítások nem támogatott - ők is teljesíthető csak kifejezetten a megfelelő funkciók és műveletek. Erős gépelési teszi a programozást nehezebb, de eredményez egy programot, amely egy nehezen sokkal kevesebb hiba.

támogatja több modell meghatározások, a gyakorlatban, programozási nyelvek egyszerre.

alaptípusokat

Minden programozási nyelvet támogat, egy vagy több beépített adattípusok (alaptípus) (lásd. A besorolás a típusú adatok), továbbá kifejlesztett programozási nyelv a programozó leírni saját adattípusok egyesítésével vagy a meglévők bővítéséhez.

Kihasználja az adattípusok

  • Megbízhatóságát. Adatok típusai elleni három típusú hibákat:
  1. Hibás feladat. Hagyja változó nyilvánították numerikus típusú. Ezután próbálja meg, hogy ez a karakter, vagy valamilyen más érték esetén a statikus gépelési eredményez a fordító hibát, és nem indul el egy ilyen programot. Abban az esetben, dinamikus gépelési programkód végrehajtása előtt a potenciálisan veszélyes tevékenységek összehasonlítja az adattípusok és változó értékek, valamint a hibát. Mindez elkerülhető hiba, és a „bukása” a program.
  2. Hibás működés. Elkerüli a kísérletek kifejezéseket használ a típus «Helló világ» + 1. Mivel mint már említettük, az összes változó a memóriában tárolódnak, készlet bit, ennek hiányában az ilyen típusú művelet volt megvalósítható (és tud adni az eredménye az ilyen «ello worldǼ»). Típusokkal (lásd. A „típusú ellenőrzés”), az ilyen hibák vannak vágva újra fordításkor.
  3. Hibás paraméterátadási. Ha a funkció „sine” elvárja, hogy meg fogja kapni a numerikus argumentum, majd át paraméterként «Helló világ» karaktersor kiszámíthatatlan következményekkel járhat. Szabályozásával típusú hibák, mint például levágta fordításkor.
  • Szabványosítás. Hála megállapodások típusok által támogatott legtöbb programozási rendszereket, olyan helyzetben, amikor a programozók gyorsan változtatni eszközök és programok nem igényelnek nagy változásokat az átviteli forrás egy másik környezetbe. Sajnos, a szabványosítás az egyetemes adattípusok, még mindig sok fejleszteni.

Osztályozása típusú adatok [2], [3]

Az adatok típusai a következők:

És gépíró rendszer

A folyamat ellenőrzése és fektetése típusú korlátozásokat - ellenőrzési típusok. Ez végezhető fordításkor (statikus vizsgálat) vagy futásidejű (állapotvizsgálat).

  • Statikus gépelés - típusellenőrzés végezzük fordításkor.
  • Dinamikus tipizálás - gépelés történik futásidőben.

típusú ellenőrzés is szigorú és gyenge.

  • Erős gépelés - kompatibilitási típusok automatikusan ellenőrzi a fordító:
    • Alanyeset tipizálás (angol nominative típusú rendszerben.) - kompatibilitás kifejezetten meg kell jelölni (örökölték) annak meghatározása, hogy milyen típusú.
    • Strukturális tipizálás (angol szerkezeti típusú rendszerben.) - Kompatibilitás határozza meg a szerkezet a típusú (típusú elemek, amely a beépített integrál típus).
  • Gyenge gépelés - típus kompatibilitás nem ellenőrzi a fordító. A nyelv egy gyenge gépelt általánosan használt megközelítés az úgynevezett „kacsa gépelés” - ha somestimost meghatározni és végrehajtani egy közös adathozzáférési interfész típusát.

jegyzetek




Kapcsolódó cikkek