Kezdőoldal » Számítástechnika » Programozás » A dinamikusan/statikusan...

A dinamikusan/statikusan típusos ugyanaz mint az erősen/gyengén típusos?

Figyelt kérdés
Egy programozási nyelv esetén.

2020. júl. 29. 17:15
 1/4 anonim ***** válasza:
65%

Nagyjából igen, de definíció szerint vannak apró eltérések.

Az erősen típusos nyelv az azt jelenti, hogy fordítási időben ismert a típusa. A statikus meg azt, hogy nem változik, állandó a típusa. A különbség akkor jelentkezik, amikor például külső helyről érkezik egy olyan adat, amit a tartalma alapján lehet csak típussá konvertálni (de ilyen az például, hogy C-ben és CPP-ben a malloc void-ot ad vissza, és azt is nekünk kell átkonvertálni). Ezek nem statikusak, mert Cast-olunk, azonban erősen típusosak, mert fordítási időben tudjuk, hogy mivé kell castolni, azaz mi a típusa.

Tehát nem ugyanaz a két fogalom, de nagyon erősen összefügg, és jellemző esetekben összetartoznak.

2020. júl. 29. 18:23
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Porkoláb Zoltán tanár úr válasza:


Statikusan típusos: fordítási időben eldől mindek mi a típusa.

Erősen típusos: az adott típussal csak bizonyos műveleteket lehet

elvégezni.


A Python például dinamikus és erősen típusos.


if: a > b

z = 1

else:

z = "Hello"


x = y / z



Nem tudjuk előre (fordítási időben), hogy z milyen típusúlesz, de ha pl.

string akkor nem szabad osztani vele.


Azért ne teljesen a reinterpret_cast-ra gondoljál.

Velem SQL-ben például már előfordult, hogy egy karaktertömb mezővel

(string) osztottam, és ha az a string egy számot ábrázolt, akkor műkösött,

ha meg nem, akkor futási idejű hibát okozott.

2020. aug. 17. 20:18
 3/4 A kérdező kommentje:

Gera Zoltán tanár úr válasza:


A statikus esetben fordítási időben kell kiderülnie a típusnak. Az

erősen típusos ugyanakkor csak annyit jelent, hogy szigorúbb a típusrendszer,

mint a gyengénél hivatalosan. Ugyanakkor valóban, az erősnél az szokott lenni,

hogy nem lehet változtatni a típust menet közben.


Az öröklődés érdekes kérdés. Azért nem töri a statikus és erős típusosságot,

mert "minden rovar bogár, de nem minden bogár rovar". Statikus időben a

biztosat (rovar) feltételezi a rendszer és ennek megfelelően engedi a

műveleteket. Lehet, hogy menet közben esetleg az a rovar bogár is, de erre a

fordító nem számíthat és ennek megfelelően viselkedik. Szóval épp ezért nem

töri meg a fenti elveket.


Egyébként öröklődésnél virtual függvénnyel előfordulhat, hogy a leszármazott

műveleteit használjuk menet közben. De ha a leszármazott egyben az ős típussal

is rendelkezik, akkor nem töri meg az ős típus szemantikáját az, hogy egy

adott művelet felül lett definiálva, ezzel ki lett terjesztve.

2020. aug. 17. 20:20
 4/4 A kérdező kommentje:

mallocrol es a void*-rol

[link]

2020. aug. 17. 21:18

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!