Created
August 22, 2015 20:34
-
-
Save H2CO3/585cd9815cc88350dd4d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'reggelt! | |
gyors language design kérdés null pointerekkel kapcsolatban: | |
iOS miatt sokáig Objective-C-ben dolgoztam, és megszoktam (nagyon kényelmes), hogy a null objektumon | |
való metódushívás nem száll el (segfault/NullPointerException), hanem a visszatérési típus nulla értékét | |
(pl. int-nél 0, pointernél null, stb.) adja vissza. | |
nem nagyon futottam még bele olyan hibába, ahol ez a viselkedés bugot okozott volna, | |
sőt, az esetek többségében kifejezetten kívánatos. | |
Viszont sok okos programozó és nyelvtervező szerint ez a viselkedés káros és veszélyes, | |
és még rosszabb, mintha hibával crashelne a program. Szerintük helyette legyen egy "opcionális" típus | |
(Optional, Maybe, stb. neveken szokott futni), ami fordítási időben kötelezővé teszi, hogy explicite | |
gondoskodj a null és nem null eset kezeléséről is. A legtöbb funkcionális illetve újkeletű nyelv | |
(Haskell, Swift, Rust, stb.) pontosan ezt teszi. | |
Ez elméletben nagyon szép és kívánatos, a gondom csak annyi vele, hogy ez szerintem egy igazi | |
pain in the ass (de mondom, én hozzászoktam az Objective-C-hez). Anno olvastam egy jó tanácsot, | |
miszerint "ha nyelvet tervezel, akkor magadnak tervezd", mert akkor lesz hasznos, használható és | |
kényelmes, nem pedig akkor, ha pusztán elméleti megfontolások alapján mész. | |
Mindezeket figyelembe véve egyelőre nem tudtam eldönteni, hogy majdan Shift-C-ben hogy működjenek | |
a pointerek: úgy, mint Objective-C-ben (null pointeren metódushívás 0-t ad vissza), vagy úgy, mint | |
funkcionális nyelvekben (nincs null pointer, hanem van egy Optional típus, aminek az alaptípusa lehet pointer). | |
Megjegyzem, hogy Optional típus amúgy is lesz a nyelvben, mert nem akarom az optional koncepciót | |
a pointerekre korlátozni (tehát lehessen pl. optional int-et, string-et, struct-ot, stb. is létrehozni). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment