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

429

    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. Aivosyöpää sairastava Olga Temonen TV:ssä - Viimeinen Perjantai-keskusteluohjelma ulos

      Näyttelijä-yrittäjä Olga Temonen sairastaa neljännen asteen glioomaa eli aivosyöpää, jota ei ole mahdollista leikata. Hä
      Maailman menoa
      79
      2793
    2. Pelotelkaa niin paljon kuin sielu sietää.

      Mutta ei mene perille asti. Miksi Venäjä hyökkäisi Suomeen? No, tottahan se tietenkin on jos Suomi joka ei ole edes soda
      Maailman menoa
      293
      1610
    3. Mikä saa ihmisen tekemään tällaista?

      Onko se huomatuksi tulemisen tarve tosiaan niin iso tarve, että nuoruuttaan ja tietämättömyyttään pilataan loppuelämä?
      Sinkut
      246
      1517
    4. Minkä merkkisellä

      Autolla kaivattusi ajaa? Mies jota kaipaan ajaa Mersulla.
      Ikävä
      87
      1361
    5. IL - VARUSMIEHIÄ lähetetään jatkossa NATO-tehtäviin ulkomaille!

      Suomen puolustuksen uudet linjaukset: Varusmiehiä suunnitellaan Nato-tehtäviin Puolustusministeri Antti Häkkänen esittel
      Maailman menoa
      401
      1329
    6. Nyt kun Pride on ohi 3.0

      Edelliset kaksi ketjua tuli täyteen. Pidetään siis edelleen tämä asia esillä. Raamattu opettaa johdonmukaisesti, että
      Luterilaisuus
      396
      1273
    7. Esko Eerikäinen tatuoi kasvoihinsa rakkaan nimen - Kärkäs kommentti "Ritvasta" lävähti somessa

      Ohhoh! Esko Eerikäinen on ottanut uuden tatuoinnin. Kyseessä ei ole mikä tahansa kuva minne tahansa, vaan Eerikäisen tat
      Suomalaiset julkkikset
      38
      1017
    8. Kiitos nainen

      Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik
      Tunteet
      2
      969
    9. Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?

      Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun
      Maailman menoa
      329
      854
    10. Miksi Purra-graffiti ei nyt olekkaan naisvihaa?

      "Pohtikaapa reaktiota, jos vastaava graffiti olisi tehty Sanna Marinista", kysyy Tere Sammallahti. Helsingin Suvilahden
      Maailman menoa
      254
      822
    Aihe