Miben jobb egy erősen/statikusan típusos nyelv, mint egy gyengén/dinamikusan típusos?
Azért általánosan nem jelenthető ki, de igen, egy nyelv minél típusosabb, potenciálisan annál gyorsabb lehet a vele készült program, mivel egy-egy konkrét adattípusra könnyebb optimalizálni a kódot.
Emellett programozástechnikailag is nagyobb fegyelmet vár el, ezzel pedig elősegíti a szemantikai hibák mérséklését.
Cserébe viszont könnyebben vét az ember szintaktikai hibát, bizonyos feladatok (pl. ahol több adattípus is szóba jöhet) megvalósításamacerásabb (bár ez azért ritka), illetőleg nehezebb egy ilyen nyelvbe beletanulni.
"Gondolom nem csak a típushibák elkerülése a cél, hanem például az előbbi nyelveken írt programok gyorsabbak is."
A sebesség nem tipusosság, hanem tipusbiztosság kérdése.
A mai nyelveknél, főleg az amúgy is lassú script-nyelveknél vált divattá a gyenge típusosság, mivel kevesebb erőforrást igényelnek a határozott, erős típusosságnál.
Egy biztos: a gyenge típusosságnak előnye nincs.
Balázs, ezt nem kellett volna.
Egy merő hülyeség az amit írsz.
A void is baromság és a variant is.
Akkor kérlek erősítsd meg valami példával, ahol kitetszik, hogy neked van igazad.
Mert szerintem pl. a void egy szükségmegoldás a variant meg a hülyék fegyvere, amely nem ritkán visszafelé sül el.
A gyenge típusosság meg egy erős hibaforrás. Ráadásul futásidejű hiba forrása.
Az erősen típusos, tipusbiztos nyelveknél viszont egy tipushibás kód el sem juthat a futásig.
"Mert szerintem pl. a void egy szükségmegoldás..."
Pont ezt mondom én is. Szükségmegoldás egy olyan problémára, ami gyengén típusos nyelvekben elő sem fordul.
"A gyenge típusosság meg egy erős hibaforrás. Ráadásul futásidejű hiba forrása."
Mert a típuskorlátok megkerülésére írt boilerkódokban nem lehet hiba, igaz? Egy sima explicit castolással is csinálhatsz orbitális bugot.
A dinamikusan típusos nyelvek elég világos és többnyire intuitív szabályok végzik az implicit castolást. Nyilván lehet benne hibázni, de miben nem lehet? Ez olyan, mintha azt mondnád, hogy a precedencia szabályokban is lehet hibázni, ezért ne használjunk operátorokat.
Egyébként ha biztosra akarsz menni, akkor írd ki az explicit castolást, és akkor nem fogsz belefutni abba, hogy te másként gondoltad, mint a fordító. Vagy ahol lehet, használj type hintinget.
" Egy sima explicit castolással is csinálhatsz orbitális bugot."
De ott legalább tudod, hogy te vagy a hülye. Vagy tudja más, egy review esetén.
Viszont amikor a hibalehetőség ott sompolyog a kódban és csak az alkalomra vár, ami lehet, hogy jövő nyáron érkezik el ...
Mint pl.az ariané rakéta esetében.
De nem sompolyog ott a lehetőség, ez nem igaz. Nem véletlenszerűen castolódnak erre-arra a típusra a változók.
Az Ariané 5 bugját egy sima túlcsordulás okozta, annak a világon semmi köze a dinamikus típusokhoz. Bármelyik nyelven el lehet követni egy ilyet, sőt, a statikusan típusos nyelvek egyik állatorvosi lovaként sokszor felhozott Java még csak nem is dob kivételt overflow esetén.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!