Loogisuus kielissä

Basicia on moitittu epäloogiseksi. Mitä se tarkoittaa?

Tässä Javan ja Basicin tavat tunnistaa, onko olion arvo 'null'.

if (object == null)
if object Is Null

Javalla testaus tehdään samoin kuin varsinaisen sisällön testaus. Basicilla käytetään varattua sanaa "Is Null".

Kumpi sitten on loogista?
8594
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

Logiikan päättelysääntöihin voit tutustua esim. täällä:

http://www.helsinki.fi/hum/fil/tietfil/Luento04.htm

Nyt aletaan soveltaa opittua antamiisi esimerkkeihin eli: molemmissa kieleissä ehtoja testataan lauseella joka noudattaa muotoa

jos (ehto) niin (tee näin);

mistä voidaan johtaa päättelyketju: jos haluan testata ehtoa, kirjoitan lauseen joka testaa ehtoa - minkä esimerkki 1 (java) tekeekin. Tämä on deduktiivisesti pätevää logiikkaa.

if (object == null)

toisessa esimerkissä taas logiikka menee näin: jos haluan testata ehtoa,kirjoitan lauseen joka testaa ehtoa tai sitten kirjoitan jotain muuta (tässä ei ole merkitsevää se, montako muuta mahdollisuutta saman asian tekemiseen on, vaan se että niitä löytyy yksikin). Tällainen päätelmä on induktiivinen.

if object Is Null

Kokonaan toinen asia on sitten se, miten järkevää on alkaa jäynätä kahden kielen enemmän tai vähemmän loogisuudesta yhden ainoan eritavalla toteutetun asian perusteella. Itse en pidä tätä kovin nerokkaana lähestymistapana asiaan.

Ja loppuun vielä lainaus alussa linkatulta sivulta:

"Hegeliltä on peräisin väite, että yritys kehottaa jotain henkilöä opettelemaan logiikkaa on yhtä hyödytön kuin yritys kehottaa veden varaan joutunutta opettelemaan uimaan. Jos henkilö osaa jo ajatella oikein, niin hän ei enää tarvitse logiikan opetusta. Jos hän ei tätä osaa, niin logiikan opettaminen ei voi häntä auttaa."

Äänestä

Lähes kaikkien ohjelmointi kielten rakenne peruskomentojen osalta on samankaltainen, kielen logiikka eroaa vasta laajemmassa yhteydessä, joten tuo vertailu on turha.

Äänestä

"is" käyttö tuo enemmän mieleen delphin is-operaattorin jota käytetään tarkistamaan onko olio jonkun luokan ilmentymä

Äänestä
  • Delhissä tosiaan on is -operaattori, esim. näin:

    {} function PalautaObjekti:TObject;
    {} begin
    {} Result := Form1.memo1.Lines;
    {} end;
    {}
    {} var
    {} O : TObject;
    {}
    {} begin
    {} O := PalautaObjekti;
    {} if O is TStrings then O.Add('haloo !');
    {} end;

    tilanteeseen sopii kuitenkin paremmin SQL:n is -käsite !


    // Qry1 on tyyppiä TQuery tai vastaava

    {} var
    {} cc : Integer;
    {}
    {} begin
    {} cc := 0;
    {} Qry1.Active := False;
    {}
    {} Qry1.SQL.Clear;
    {} Qry1.SQL.Add('select * from asiakkaat where sukunimi is null');
    {}
    {} Qry1.Active := True;
    {} while NOT Qry1.EOF do begin
    {} //
    {} memo1.Lines.Add( Qry1.FieldByName('asiakasnro').AsString);
    {} inc(cc);
    {} Qry1.Next;
    {} end;
    {} //
    {} memo1.Lines.Add( 'tietokannassa on ' IntToStr(cc) ' haamuasiakasta, joiden sukunimikentässä on NULL -arvo.' );
    {} end;

    Äänestä

Valitettavasti ohjelmointi ei ole logiikkaa tai matematiikkaa, vaan siinä pitää myös toimia rajallisten tietojenkäsittelyresurssien puitteissa. Siksi ei voida määrittää yhtä (loogista?) tapaa testata yhtäsuuruuttaa. Niitä on ainakin kolme, mitä usein tarvitaan.

identiteetti: kaksi tietotyypin arvoa ovat "yhtäsuurte", jos ne ovat samassa paikassa muistia

sama esitys: kaksi tietotyypin arvoa ovat "yhtäsuuret", jos niillä on sama esitys

sama toiminto: kaksi eri tietotyypin arvoa ovat "yhtäsuuret", jos ne toimivat samalla tavalla

Esimerkki viimeisestä on vaikkapa kokonaisluku 3 ja liukuluku 3.0 . Vaikka ne ovat eri tavalla esitettyinä muistissa, voisi toivoa, että niillä laskeminen antaisi vastaavat tulokset silloin, kun se on mielekästä.

Kahdesta edellisestä on hyvä muistaa mm. se, että sama merkkijono voi olla useassa paikassa muistia. Eri paikoilla on merkitystä, jos yhtä merkkijonoa muutetaan. Muutos ei silloin näy toisessa.

Ohjelmointi vaatii oman logiikkansa. Taitaa muuten olla, että jos joku väittää kieltä X epäloogiseksi, hän haluaa vain sanoa, ettei joko osaa sitä tai ei pidä siitä. Merkityksetön valitus kannattaa jättää omaan arvoonsa.

Ilmeisesti Prolog olisi looginen kieli, koska sen nimikin tulee sanoista "logiikalla ohjelmointi". Jostain syystä se ei vain ole erityisen suosittu monella ohjelmointialalla.

Äänestä
  • On lisättävä että kielen ns. "epäloogisuus" on joskus todellinen etu.

    Japanissa numeroilla on erilaisia esitystapoja riippuen siitä minkä määrää ilmaistaan. Se on joissakin tilanteissa varmasti edullista. Samoin sanojen suvut esim saksassa.

    Äänestä

  • winbasic kirjoitti:

    On lisättävä että kielen ns. "epäloogisuus" on joskus todellinen etu.

    Japanissa numeroilla on erilaisia esitystapoja riippuen siitä minkä määrää ilmaistaan. Se on joissakin tilanteissa varmasti edullista. Samoin sanojen suvut esim saksassa.

    >> On lisättävä että kielen ns. "epäloogisuus" on joskus todellinen etu.

    Ja tämä "joskus" on milloin ?

    >> Japanissa numeroilla on erilaisia esitystapoja riippuen siitä minkä määrää ilmaistaan. Se on joissakin tilanteissa varmasti edullista.

    Ja nämä edulliset tilanteet ovat mitä ? Tuntematta japanin kieltä pätkääkään rohkene mysyä millä lailla on "edullista" että vaikkapa kaksi kenkää on "tsuppadui" ja kaksi sandaalia on "heppadei". Söpöä se voi jonkun mielestä olla, ehkä eettistäkin, mutta edullista ?

    >> Samoin sanojen suvut esim saksassa.

    Tästäkin voidaan olla hiukan eri mieltä.. onko kalakukko maskuliini vai feminiini ? Onko kastelukannu neutri ?

    Mielenkiintoiseksi tämän käänteen tekee se että ensin aloit jängätä siitä onko basic epäloogisempi kuin joku muu kieli ja kun esitettiin vihje että voihan se ollakin, aloitkin perustella miksi epäloogisuus sinänsä voikin (ehkä) olla hyvä juttu josta on (jotain, mitä) hyötyä.

    Onnistuit kahdessa peräkkäisessä viestissä kääntämään kelkkasi aikalailla täysin. Tämä on juuri sitä kyvyttömyyttä loogiseen ajatteluun jota Hegel tarkoitti sitaatissaan puhuessaan niistä "joita ei voi auttaa".

    Äänestä

  • ja vai niin kirjoitti:

    >> On lisättävä että kielen ns. "epäloogisuus" on joskus todellinen etu.

    Ja tämä "joskus" on milloin ?

    >> Japanissa numeroilla on erilaisia esitystapoja riippuen siitä minkä määrää ilmaistaan. Se on joissakin tilanteissa varmasti edullista.

    Ja nämä edulliset tilanteet ovat mitä ? Tuntematta japanin kieltä pätkääkään rohkene mysyä millä lailla on "edullista" että vaikkapa kaksi kenkää on "tsuppadui" ja kaksi sandaalia on "heppadei". Söpöä se voi jonkun mielestä olla, ehkä eettistäkin, mutta edullista ?

    >> Samoin sanojen suvut esim saksassa.

    Tästäkin voidaan olla hiukan eri mieltä.. onko kalakukko maskuliini vai feminiini ? Onko kastelukannu neutri ?

    Mielenkiintoiseksi tämän käänteen tekee se että ensin aloit jängätä siitä onko basic epäloogisempi kuin joku muu kieli ja kun esitettiin vihje että voihan se ollakin, aloitkin perustella miksi epäloogisuus sinänsä voikin (ehkä) olla hyvä juttu josta on (jotain, mitä) hyötyä.

    Onnistuit kahdessa peräkkäisessä viestissä kääntämään kelkkasi aikalailla täysin. Tämä on juuri sitä kyvyttömyyttä loogiseen ajatteluun jota Hegel tarkoitti sitaatissaan puhuessaan niistä "joita ei voi auttaa".

    noo... kun nyt sanotaan "tsuppadui kenkää", niin siinä on tarkisteavain mukana. Tämä on tavallista kielissä, jos et tiennyt.

    "Mielenkiintoiseksi tämän käänteen tekee se että ensin aloit jängätä siitä onko basic epäloogisempi kuin joku muu kieli ja kun esitettiin vihje että voihan se ollakin, aloitkin perustella miksi epäloogisuus sinänsä voikin (ehkä) olla hyvä juttu josta on (jotain, mitä) hyötyä. "

    joko ymmärsit. loogisuus on suhteellista.

    Äänestä

Kommentoi aloitusta


winbasic kirjoitti:

Basicia on moitittu epäloogiseksi. Mitä se tarkoittaa?

Tässä Javan ja Basicin tavat tunnistaa, onko olion arvo 'null'.

if (object == null)
if object Is Null

Javalla testaus tehdään samoin kuin varsinaisen sisällön testaus. Basicilla käytetään varattua sanaa "Is Null".

Kumpi sitten on loogista?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu