Miten NULL voi olla epäselvä asia?

nolliajaykkösiä

http://keskustelu.suomi24.fi/t/9837242/mika-on-null-onko-se-0

Mitä nykään opetetaan, jos joku voi sanoa että "kaikkissa mahdollisissa lukualueissa, joissa nollan paikka voi olla missä tahansa".

Eikö 0 ja NULL ole aina samassa paikassa.
0 lukuna on -1:n ja 1:n välissä.
NULL arvona tarkoittaa ettei sillä ole tällä hetkellä tietotyypin mukaista arvoa. Se kyllä tarkoittaa "ettei ole määritetty arvoa", mutta jotta sen voisi tunnistaa, pitää NULL:lla olla tarkka arvoa eli 0.

24

354

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • c__c

      NULL on 0 C -kielessä. C:ssä se on yleensä ((void *)0). Sekavuus johtuu huonoista kääntäjistä.

    • tämä_sekavuus

      Ongelma koodina:
      int a;
      int *ptr_a = &a;
      jne...
      Nyt jos koodissa lukee jossain kohdassa:
      ptr_a = 0;
      herää epäilys, että tarkoitettiinkin:
      *ptr_a = 0;
      vai tarkoitettiinko sittenkin:
      ptr_a = NULL;

      Kääntäjä ei tuossa pysty auttamaan, jos se ei pysty erottamanaa kummasta tapauksesta on kysymys vaan bugi sujahtaa tuossa hyvin helposti ohjelmaan.

      • fdsfljdlskfj

        Lintteri varoittaa tuosta, asetuksista riippuen heittää herjan ja hylkää buildin.


    • Panteraitp

      Null on suurin virhe mitä on ikinä tapahtunut koodaus maailmassa. Se on luultavasti aiheuttanut miljardien euron vahingot. Null on eri asia riippuen mitä kieltä käytät. Null aiheuttaa niin suurta päänvaivaa että se olisi ollut parempi jättää kokonaan pois.

      • kerni

        Pitäisiköhän sanoa, että huonot/tietämättömät ohjelmoijat ovat aiheuttaneet nuo miljardivahingot, jos sellaisia on ollut olemassa.
        Sitten perusteet ja käsitteet kuntoon: Olet varmaan nähnyt erilaisissa tuotteissa viivakoodeja? Viivakoodien taustallahan on jokin numerosarja. Tuollaisten numerosarjojen suunnittelu on koodausta. Ohjelmointi on ohjelmointia.


    • gfassafs

      "NULL arvona tarkoittaa ettei sillä ole tällä hetkellä tietotyypin mukaista arvoa."

      Ehkä. Riippuu kielestä. Jossain tuo kunnia on suotu esim. undefined:lle. Yleensä null tarkoittaa ennemminkin sitä että muuttujaa ei ole olemassa, eikä sitä että sillä ei ole arvoa. Jossain nämä sitten ovat sotkettu toisiinsa.

      • vaatii_nollausta

        Olen tavannut järjestelmän, jossa undefined-arvo oli -1 pointterissa ja NIL koodissa tarkoitti, että em. muistipaikka on käytettävissä uudelle tiedolle.. ensin luotiin siis null-pointteri ja sitten se etsittiin, jotta siihen voitiin ripustaa jotain ja noi -1:t voitiin sitten jossain välissä siivota pois.. sanomattakin selvää, että tietorakenne ei ihan heti auennut, varsinkin, kun datatyyppi oli -2:een asti täysi..


    • Nimenomaan sen takia null voi olla epäselvä asia että se on monesti sama kuin 0. Varsinkin jos muuttujan tyyppi on joku numero, niin on hankalaa tietää onko sen arvo 0 vai onko sitä lainkaan.

      • kaikkeakuuleekin

        Mitä ihmettä? Null ja 0 (nolla) sama asia? Koitetaan jotakin yksinkertaisempaa esimerkkiä, jospa sitten asia avautuisi.
        Ajattele CD-soitinta (niitäkin vielä on, jos et tiedä mikä on, käy kirpparilla). Jos "pesässä" on tyhjä CD, niin on mielestäsi sama kuin siellä ei ole CD:tä ollenkaan?


    • Joo CD soittimen tapauksessa näin onkin, mutta puhuin tietotyypistä, jolla esitetään numeroita esim. interger

      • null_on_null_ei_0

        Sen kokonaisluvun (integer) tilanteessa null-arvo ei tarkoita sitä, että sen arvo olisi 0 vaan että sillä ei ole arvoa.
        Ajattele seuraavaa: Jostakin havainnosta, joita on vaikkapa 5 kappaletta pitää laskea esim. keskiarvo. Kun on kaksi havaintoa (kolme siis vielä puuttuu), voidaanko laskea viiden havainnon keskiarvo? No ei voida. Jos nyt sitten joku käsittää niin, että tulevat havainnot ovat arvoltaan 0, niin sittenhän jo voikin laskea. Onko tulos oikea ja luotettava jne? Ei ole. Asiasta, jolla ei ole kaikkia arvoja olemassa, ei voida laskea keskiarvoa.


      • Tyhjä_Bitti

        Mielestäni juuri näin kuin esität!
        NULL tarkoittaa TYHJÄÄ, siis ei mitään arvoa (ei numeerista arvoa).


      • devnull0
        Tyhjä_Bitti kirjoitti:

        Mielestäni juuri näin kuin esität!
        NULL tarkoittaa TYHJÄÄ, siis ei mitään arvoa (ei numeerista arvoa).

        "NULL tarkoittaa TYHJÄÄ"

        Ei.

        Se tarkoittaa, että kaikki bitit ovat nollia.


    • Joo Null tarkoittaa tyhjää, mutta monissa toteutuksissa sitä ei voida todella erottaa nollasta, koska ne esitetään samalla tavalla muistissa.

      • Ja tästä yleensä johtuu se että Null tuottaa bugeja


      • dsfdfadfsasa

        Esimerkkejä tuollaisesta toteutuksesta?


      • EiTaidaTulla
        dsfdfadfsasa kirjoitti:

        Esimerkkejä tuollaisesta toteutuksesta?

        Minäkin kyllä haluaisin sen esimerkin nähdä.


    • Esimerkiksi C:sä voi tehä näin:
      "
      if (pointer == 0)
      "
      tai
      "
      int mynull = 0;

      if (pointer == mynull)
      "
      Tämän sijaan
      "
      if(pointer == NULL)
      "

      • Ja nyt jos menet jossain päin koodia räpläämään ton mynullin kanssa, niin ollaan kusessa.


      • Jep. Kuten aiemmin jo kerrottiinkin, esimerkkisi on huonoa koodia ja vika on koodarissa, ei NULL:ssa.


    • Tietysti "nykyaikaisissa" kielissä Null on voitu toteuttaa ns. "Discriminated unions" avulla. (Mitä sitten onkaan suomeksi...)

    • nullikka

      NULL osoittaa muistiosoitteeseen 0000:0000, mutta 0 on muuttujaan asetettu lukuarvo.

    • Kyllä joillakin on 0 ja NULL pahasti sekaisin.
      NULL on pelkkä sopimus, jonka todellinen "arvo" voi vaihdella eri alustoilla, ja näin se kannattaakin ottaa. Toisin sanoen NULL tarkoittaa "tyhjän osoittamista", jonka kääntäjät ymmärtää.

      Esim. lause:

      int null_val = NULL;

      on järjetön ja helvetin huonoa koodia. Tosin esim. (void*) kastaus kyllä vähintään herjaa tuosta sijoituksesta ja normitapauksessa ei mee ees läpi. Ja kyllä, "nykyaikaisten kielten" kuten java ja C# objektiviittaukset ovat sisäisesti myös osoittimia sillä erollla, että osoittimen semantiikka ym. "osoitinhelvetti" on hoidettu tausalla eikä koodarin tarvi enää miettiä sitä.

      Toki voi lähteä "syvällisemmin" leikkimään NULL - sijoituksilla ja katsoa kuinka paljon vahinkoa saa aikaan.

    • System.Nullable

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Purra hyökkää nyt suomalaisen duunarin kimppuun teettämällä mamuilla palkatonta työtä

      Niinpä niin. Persut duunaripuolue, HAH. Joko alkaa kovapäisinkin persu älyämään, että persut ovat Suomen kansan vastain
      Maailman menoa
      365
      12317
    2. Purra ehdottaa vaan Tanskan mallia, joka on erittäin hyvä malli

      Purra ehdotti helmikuussa Suomeen Tanskan mallia, jossa maahanmuuttajilta vaaditaan työntekoa sosiaalitukien saamiseksi.
      Maailman menoa
      255
      5387
    3. Kokoomusnuoret: Sosiaalitukien työvelvoitteen tulisi koskea kaikkia

      Riikka Purra on esittänyt, että maahanmuuttajilta tulisi edellyttää palkatonta työtä sosiaalitukien vastineeksi. Kokoom
      Maailman menoa
      212
      3918
    4. Purra vaatii: Työvelvoite maahanmuuttajille ja kantasuomalaisille pitkäaikaistyöttömille

      Jos Perussuomalaiset ja Kokoomus ovat seuraavan hallituksen kaksi johtavaa puoluetta, on suomalaisille pitkäaikaistyöttö
      Perussuomalaiset
      196
      2588
    5. Jyrki Linnankivi, Jyrki 69 - Goottirokkarista kirkonmieheksi Lappiin!

      Jyrki Linnankivi eli Jyrki 69 on The 69 Eyes -rockyhtyeen vokalisti. Lauluhommien lisäksi hän sanoittaa, säveltää ja sov
      Työ ja opiskelu
      15
      1972
    6. Onnea Maria ja Vilma Amazing Race -voitosta!

      Maria Guzenina ja Vilma Vähämaa voittivat Amazing Race Suomi -kisan. Voiton hetkellä Guzenina paljasti, miksi valitsi Vi
      Tv-sarjat
      19
      1824
    7. Mikä on mielestäsi paras miestyyppi?

      Esimerkit kärjistettyinä: a) perustavallinen/tasainen b) himourheilija c) varakas, turvallinen elättäjä d) puolikrimina
      Ikävä
      167
      880
    8. Martina Aitolehti

      Instagramissa pomppas esille Martinan kumipallot. Ihan säikähin. Ja tää on Martina-ketju!
      Kotimaiset julkkisjuorut
      271
      842
    9. No kolahtaako kukaan

      Samalla tavalla kuin mä? Harmi kun et uskaltanut kohdata. Ehkä me löydetään jotkut muut jotka voi olla konkreettisempiak
      Ikävä
      74
      762
    10. Rippituoli

      Kerro joku synkkä tai outo salaisuus, joka liittyy ikävääsi kaivattuasi kohtaan. Tee tunnustus anonyyminä. Se helpottaa
      Ikävä
      59
      716
    Aihe