Imperatiivisen paradigman suosion syy

KN$

Mitkä seikat johtivat siihen että imperatiivista ohjelmointiparadigmaa käytetään enemmän kuin funktionaalista. Ihmettelen asiaa siksi, että usein kuulee sanottavan, jotta funktionaalinen lähestymistapa olisi parempi. Sitä pidetään selkeämpänä, ja se on käsittääkseni menetelmä jolla ohjelmat olisi aina pitänyt tehdä.

Olisiko syynä se että tietokoneet eivät ratkaise ongelmia niin rationaalisesti kuin luullaan. Ohjelmat ovat jonkinmoisia taiteellisia virityksiä - enemmän kuin yleensä pidetään. Ne käsittelevät tietoa soluautomaattina, eli mössönä.

19

412

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ,..

      >>Olisiko syynä se että tietokoneet eivät ratkaise ongelmia niin rationaalisesti kuin luullaan.

      • Järkee-Vai-Ei

        "Olisi järjettömyyden huippu hoitaa esimerkiksi järjestelmäohjelmointi käyttäen funktionaalista ohjelmointiparadigmaa."

        "The operating systems were written in Lisp Machine Lisp, InterLisp (Xerox) and later partly in Common Lisp."
        http://en.wikipedia.org/wiki/Lisp_machine

        No, Lisp ei puhdas fuktionaalinen kieli, vaan multiparadigmaa, mutta kyllä noissa Lisp-koneissa varmaankin käytettiin paljon funktionaalista tapaa.


      • ,..
        Järkee-Vai-Ei kirjoitti:

        "Olisi järjettömyyden huippu hoitaa esimerkiksi järjestelmäohjelmointi käyttäen funktionaalista ohjelmointiparadigmaa."

        "The operating systems were written in Lisp Machine Lisp, InterLisp (Xerox) and later partly in Common Lisp."
        http://en.wikipedia.org/wiki/Lisp_machine

        No, Lisp ei puhdas fuktionaalinen kieli, vaan multiparadigmaa, mutta kyllä noissa Lisp-koneissa varmaankin käytettiin paljon funktionaalista tapaa.

        Niin aivan. Vain "käyttöjärjestelmä" olikin koodattu Lispillä. Sen voisi tehdä nykyäänkin sillä edellytyksellä, että ohjelmointikieli luo odotetut opcodet mutta prosessi voi hyvin nopeasti kompastua omiin nilkkoihinsa koska Lispin ideologia on kaukana järjestelmäohjelmoinnista ja vie usein ohjelmoijaa perässään. Lisp machine on tällainen mainio esimerkki huonosta esimerkistä.

        Ja jos luit itse tarkaan tuolta sivulta, niin tietokoneen prosessori toimi joka tapauksessa imperatiivisen mallin mukaan mikä on itsestään selvää. 0 bitti = sähkö ei kulje, 1 bitti = sähkö kulkee. Mikäli et ymmärtänyt niin ota selvää.


      • KN$
        ,.. kirjoitti:

        Niin aivan. Vain "käyttöjärjestelmä" olikin koodattu Lispillä. Sen voisi tehdä nykyäänkin sillä edellytyksellä, että ohjelmointikieli luo odotetut opcodet mutta prosessi voi hyvin nopeasti kompastua omiin nilkkoihinsa koska Lispin ideologia on kaukana järjestelmäohjelmoinnista ja vie usein ohjelmoijaa perässään. Lisp machine on tällainen mainio esimerkki huonosta esimerkistä.

        Ja jos luit itse tarkaan tuolta sivulta, niin tietokoneen prosessori toimi joka tapauksessa imperatiivisen mallin mukaan mikä on itsestään selvää. 0 bitti = sähkö ei kulje, 1 bitti = sähkö kulkee. Mikäli et ymmärtänyt niin ota selvää.

        "Ja jos luit itse tarkaan tuolta sivulta, niin tietokoneen prosessori toimi joka tapauksessa imperatiivisen mallin mukaan mikä on itsestään selvää."

        Ei siellä lue mitään tuollaista. Mutta kun tiedetään että syöttö ja tulostuskin ovat vaikeaa toteuttaa funktionaalisesti, niin miksi edes rakentaa täysin funktionaalista konetta...?


      • ,..
        KN$ kirjoitti:

        "Ja jos luit itse tarkaan tuolta sivulta, niin tietokoneen prosessori toimi joka tapauksessa imperatiivisen mallin mukaan mikä on itsestään selvää."

        Ei siellä lue mitään tuollaista. Mutta kun tiedetään että syöttö ja tulostuskin ovat vaikeaa toteuttaa funktionaalisesti, niin miksi edes rakentaa täysin funktionaalista konetta...?

        >>Ei siellä lue mitään tuollaista.>Mutta kun tiedetään että syöttö ja tulostuskin ovat vaikeaa toteuttaa funktionaalisesti, niin miksi edes rakentaa täysin funktionaalista konetta...?


      • KN$
        ,.. kirjoitti:

        >>Ei siellä lue mitään tuollaista.>Mutta kun tiedetään että syöttö ja tulostuskin ovat vaikeaa toteuttaa funktionaalisesti, niin miksi edes rakentaa täysin funktionaalista konetta...?

        "Laitetaso ei tunne kuin imperatiivisen ohjelmointiparadigma"

        http://en.wikipedia.org/wiki/Lisp_machine
        The processor did not run Lisp directly, but was a stack machine with instructions optimized for compiled Lisp. The early Lisp Machines used microcode to provide the instruction set. For several operations type checking and dispatching was done in hardware at runtime. There was for example only a single addition operation that could be used with various numeric types (integer, float, rational and complex numbers). The result was a very compact compiled representation of Lisp code.

        Et voi sanoa ettei laitteistotaso tunne funktionaalista paradigmaa. Sillä ettei se aja lispiä "suoraan", ei ole mitään merkitystä. Ei tämä ole niin mustavalkoista.

        1980-luvulla, jolloin Lisp Machine rakennettiin, oltiin mielestäni jo orientoiduttu imperatiivisten suorittimien valmistamiseen. Kysymys paradigman suosiosta ei ole niin helppo kuin luulet.


      • Järkee-Vai-Ei
        ,.. kirjoitti:

        >>Ei siellä lue mitään tuollaista.>Mutta kun tiedetään että syöttö ja tulostuskin ovat vaikeaa toteuttaa funktionaalisesti, niin miksi edes rakentaa täysin funktionaalista konetta...?

        "Laitetaso ei tunne kuin imperatiivisen ohjelmointiparadigman"

        "The hardware implementation of **almost** all computers is imperative"
        http://en.wikipedia.org/wiki/Imperative_programming

        "joten on sama käytätkö imperatiivista ohjelmointiparadigmaa vai funktionaalista;"

        Jos koodaan (puhtaalla) funktionaalisella kielellä, niin eipä paskaakaan kiinnosta muuttuuko se imperatiiviseksi prosessoritasolla. Koodarille koko roska näkyy täysin funktionaalisena.

        "Joko tuli selväksi miksi imperatiivinen ohjelmointiparadigma on suositumpi? "

        Onhan se selvää koska prossut ovat lähes aina imperatiivisia ja sitä kautta myös kieliin on valunut imperatiivinen tapa, mutta mitään pakottavaa syytä siihen ei ollut. (Paitsi kai suorituskyky) Eli ei tämä aivan itsestään selvää ole.

        Mutta mitäpä noilla syillä on väliä - tulevaisuus voi olla funktionaalisten voittokulkua tai ainakin lisääntyvää käyttöä, kun jopa radikaalin innovatiivinen Microsoft on kehittänyt erään funktionaalisen kielen (F#).


    • ölkjasdöf

      funktionaalisessa ohjelmoinnissa ei käytetä muuttujia. Ei ole for- tai while-looppeja tai if-lauseita ilman elseä. Jos haluat vaikka laskea listassa olevien numeroiden summan, sanot että: summa on listan ensimmäinen alkio loppulistan alkioiden summa, ja jos lista on tyhjä, summa on 0. Funktiot ottavat argumentteja ja palauttavat jotain, ja ohjelmassa data virtaa funktiosta seuraavaan. Imperatiivisessa ohjelmoinnissa rakennetaan konetta jolla on jokin tila, ja sitä tilaa sitten ropataan tilanteeseen sopivaksi (näinhän tietokone toimii). Funktioiden paluuarvot eivät välttämättä enää riipu niiden argumenteista, vaan myös ohjelman tilasta. En osaa sanoa miksi, mutta ehkä tällainen lähestyminen sopii joihinkin asioihin paremmin :)

    • KN$

      "Funktioiden paluuarvot eivät välttämättä enää riipu niiden argumenteista, vaan myös ohjelman tilasta."

      Tuo on aika oleellinen ero, koska se tarkoittaa sitä, ettei funktio voi koskaan 'oppia' mitään. Tarkastellaan vaikka häviötöntä pakkausohjelmaa, jonka on teoriassa opittava sääntöjä pakkaamastaan datasta. Ohjelman sisäiseen tilaan kertyy tietoja siitä, millaista pakattava data on. Yksittäinen olio voi pakata tietoa merkki kerrallaan, tallentaen esim. toistuvia merkkisarjoja jäsenmuuttujiinsa. Funktiolle on vähintäänkin syötettävä koko pakattava materiaali kerralla. Siispä funktiolla ei ole 'aikaa'.

      http://akvama-ajattelua.blogspot.com/2010/02/lisaa-aixista.html

      • dx

        Ei ole totta. Funktionaalinen ohjelmointi (vrt. myy-rekursiiviset funktiot) on täysin yhtä ilmaisuvoimaista kuin proseduraalinen (vrt. Turingin kone). Ajattelet nyt vaan naivin proseduraalisesti.


      • dx
        dx kirjoitti:

        Ei ole totta. Funktionaalinen ohjelmointi (vrt. myy-rekursiiviset funktiot) on täysin yhtä ilmaisuvoimaista kuin proseduraalinen (vrt. Turingin kone). Ajattelet nyt vaan naivin proseduraalisesti.

        En huomannut tuota linkkiä kuin vasta nyt - mutta siis jotenkin nyt tuntuu, että KN$:lla on perus tietojenkäsittelyteoria hakusessa, jos ei ihan äkkiä hahmota kuinka AIXI:kin on toteutettavissa ihan yhtä hyvin funktionaalisenakin kuin tilallisena toteutuksena. Taisi mennä malli ja implementaatio sekaisin.


      • KN$
        dx kirjoitti:

        En huomannut tuota linkkiä kuin vasta nyt - mutta siis jotenkin nyt tuntuu, että KN$:lla on perus tietojenkäsittelyteoria hakusessa, jos ei ihan äkkiä hahmota kuinka AIXI:kin on toteutettavissa ihan yhtä hyvin funktionaalisenakin kuin tilallisena toteutuksena. Taisi mennä malli ja implementaatio sekaisin.

        "AIXI:kin on toteutettavissa ihan yhtä hyvin funktionaalisenakin kuin tilallisena toteutuksena"

        Agentilla on sisäinen tila, joten tilallinen paradigma sopii kuvaamaan sitä heti paremmin. Tietenkin saat mennä perse edellä puuhun ja pyrkiä välttämään tilallista paradigmaa, vaikka älykkyyden ensimmäinen lähtökohta on tilakone.

        Mutta kaikki on suhteellista ja älykkyys varmasti tarvitsee tilakoneen lisäksi hieman funktionaalista rakennetta, jotta liialliselta sivuvaikutukselta (psykooseilta) vältytään.


    • Virke Pitkä

      Mielestäni tärkein syy Imperatiivisen ohjelmointiparadigman suosioon on se yksinkertainen tosiseikka että lähestulkoon kaikki maailman tietokoneet ymmärtävät vain tuolla ohjelmointiparadigmalla tuotettua koodia, ts. konekielellä pystyy ohjelmoimaan kaikkien ohjelmointiparadigmojen mukaisesti ja muut korkeamman tason kielet ovat vain keinotekoisesti rajoitettu sallimaan vain tietynlainen ohjelmointi ihmisen rajoittuneiden mentaalisten kykyjen vuoksi.

      • KN$

        "lähestulkoon kaikki maailman tietokoneet ymmärtävät vain tuolla ohjelmointiparadigmalla tuotettua koodia"

        Kyllä, mutta miksi laitteisto olisi määräävässä asemassa? Jos haluttaisiin koodata funktionaalisilla kiellä, niitä varten voitaisiin tehdä tietokone, jossa on vaikka useita suorittimia, joka sopii funktionaalisille kielille paremmin.


      • PePe,
        KN$ kirjoitti:

        "lähestulkoon kaikki maailman tietokoneet ymmärtävät vain tuolla ohjelmointiparadigmalla tuotettua koodia"

        Kyllä, mutta miksi laitteisto olisi määräävässä asemassa? Jos haluttaisiin koodata funktionaalisilla kiellä, niitä varten voitaisiin tehdä tietokone, jossa on vaikka useita suorittimia, joka sopii funktionaalisille kielille paremmin.

        >>Jos haluttaisiin koodata funktionaalisilla kiellä, niitä varten voitaisiin tehdä tietokone, jossa on vaikka useita suorittimia, joka sopii funktionaalisille kielille paremmin.


      • KN$
        PePe, kirjoitti:

        >>Jos haluttaisiin koodata funktionaalisilla kiellä, niitä varten voitaisiin tehdä tietokone, jossa on vaikka useita suorittimia, joka sopii funktionaalisille kielille paremmin.

        "pitää olla Lisp masiinoitakin"

        Onhan niitä ollut...

        http://fi.wikipedia.org/wiki/Lisp-kone


      • ,..

      • ölkjasdöf

        "lähestulkoon kaikki maailman tietokoneet ymmärtävät vain tuolla ohjelmointiparadigmalla tuotettua koodia"

        Käännettynä: Suurimmalle osalle eri prosessoreita ei ole saatavissa yhtäkään funktionaalisen kielen kääntäjää.

        "korkeamman tason kielet ovat vain keinotekoisesti rajoitettu sallimaan vain tietynlainen ohjelmointi ihmisen rajoittuneiden mentaalisten kykyjen vuoksi. "

        Käännettynä: Kaikki muu kuin hexaeditorilla ohjelmointi on keksitty helpottamaan ohjelmoijan elämää.

        Senhän takia ohjelmointikieliä on, ettei ihminen ajattele kuten tietokone. Eikä tarvitsekaan. Mites se hokema meni... "Oikea työkalu oikeaan tarkoitukseen."

        Tämä taas on täyttä puppua: "ts. konekielellä pystyy ohjelmoimaan kaikkien ohjelmointiparadigmojen mukaisesti" .. Luultavasti et ole edes koskenut yhteenkään funktionaaliseen kieleen. Ei sillä, että itsekään olisin aiheessa kokenut ;) Mutta tarpeeksi kuitenkin, että puppugeneraattoritunnistin toimii.


      • Virke Pitkä
        ölkjasdöf kirjoitti:

        "lähestulkoon kaikki maailman tietokoneet ymmärtävät vain tuolla ohjelmointiparadigmalla tuotettua koodia"

        Käännettynä: Suurimmalle osalle eri prosessoreita ei ole saatavissa yhtäkään funktionaalisen kielen kääntäjää.

        "korkeamman tason kielet ovat vain keinotekoisesti rajoitettu sallimaan vain tietynlainen ohjelmointi ihmisen rajoittuneiden mentaalisten kykyjen vuoksi. "

        Käännettynä: Kaikki muu kuin hexaeditorilla ohjelmointi on keksitty helpottamaan ohjelmoijan elämää.

        Senhän takia ohjelmointikieliä on, ettei ihminen ajattele kuten tietokone. Eikä tarvitsekaan. Mites se hokema meni... "Oikea työkalu oikeaan tarkoitukseen."

        Tämä taas on täyttä puppua: "ts. konekielellä pystyy ohjelmoimaan kaikkien ohjelmointiparadigmojen mukaisesti" .. Luultavasti et ole edes koskenut yhteenkään funktionaaliseen kieleen. Ei sillä, että itsekään olisin aiheessa kokenut ;) Mutta tarpeeksi kuitenkin, että puppugeneraattoritunnistin toimii.

        "Tämä taas on täyttä puppua: "ts. konekielellä pystyy ohjelmoimaan kaikkien ohjelmointiparadigmojen mukaisesti" .. Luultavasti et ole edes koskenut yhteenkään funktionaaliseen kieleen. Ei sillä, että itsekään olisin aiheessa kokenut ;) Mutta tarpeeksi kuitenkin, että puppugeneraattoritunnistin toimii."

        Arvelit oikein, minulla ei ole lainkaan kokemusta funktionaalisista kielistä. Sotkin ohjelmointiparadigmat prosessorin fyysiseen toimintaan josta syntyi tuo ajatusvirhe että konekielellä voisi ohjelmoida funktionaalisen paradigman mukaan. Näinhän ei toki ole.


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

    Luetuimmat keskustelut

    1. Ensitreffit Jenni laukoo viinilasin ääressä suorat sanat Jyrkin aikeista: "Mä sanoin, että älä"

      Voi ei… Mitä luulet: kestääkö Jennin ja Jyrkin avioliitto vai päättyykö eroon? Lue lisää: https://www.suomi24.fi/viihde
      Ensitreffit alttarilla
      26
      2778
    2. Ymmärrän paremmin kuin koskaan

      Roikut kädessäni ja vedät puoleesi. Näen kuitenkin tämän kaiken lävitse ja kaikkien takia minun on tehtävä tämä. Päästän
      Tunteet
      29
      2312
    3. 148
      2264
    4. Hullu liikenteessä?

      Mikä hullu pyörii kylillä jos jahti päällä? Näitä tosin kyllä riittää tällä kylällä.
      Kiuruvesi
      53
      2190
    5. Niina Lahtinen uudessa elämäntilanteessa - Kotiolot ovat muuttuneet merkittävästi: "Nyt on...!"

      Niina, tanssejasi on riemukasta seurata, iso kiitos! Lue Niinan haastattelu: https://www.suomi24.fi/viihde/niina-lahti
      Suomalaiset julkkikset
      21
      1802
    6. Kun Venäjä on tasannut tilit Ukrainan kanssa, onko Suomi seuraava?

      Mitä mieltä olette, onko Suomi seuraava, jonka kanssa Venäjä tasaa tilit? Ja voisiko sitä mitenkään estää? Esimerkiks
      NATO
      389
      1662
    7. Ano Turtiainen saa syytteet kansankiihoituksesta

      Syytteitä on kolme ja niissä on kyse kirjoituksista, jotka hän on kansanedustaja-aikanaan julkaissut Twitter-tilillään
      Maailman menoa
      98
      1597
    8. Pyhäinpäivän aamua

      Oikein hyvää huomenta ja rauhallista päivää. ❄️😊🥱☕❤️
      Ikävä
      298
      1485
    9. Varokaa! Lunta voi sataa kohta!

      Vakava säävaroitus Lumisadevaroitus Satakunta, Uusimaa, Etelä-Karjala, Keski-Suomi, Etelä-Savo, Etelä-Pohjanmaa, Pohjanm
      Maailman menoa
      13
      1419
    10. Kunta ostaa kivitipun

      Kunnanjohtajan tuleva uusi ostokohde
      Lappajärvi
      133
      1418
    Aihe