Apie gyvąsias ir kompiuterines kalbas

Šitą straipsnį aš jau kokius 5 metus noriu parašyti, o gal ir dar seniau. Ir neparašau, net nepradedu – tema tokia plati ir gili, kad ją normaliai norint užkabinti, reikia parašyti knygą, o gal netgi ir kelias. O mintis gi paprasta: kuo gyvosios kalbos skiriasi nuo kompiuterinių? Ką vienos gali, o kitos negali?

Leopardo šuolis

Visas šitas vaizdas - tai kažkokio kompiuterinio žaidimo momentas. Visas jis sukurtas tiesiog teksto. Programos teksto, kuris, giliau pažvelgus, nelabai tesiskiria nuo įprastų tekstų. Ir dangus, ir medžiai, ir žmonės, ir leopardas - tai tiktai sakiniai, kurie užrašyti. Visa semantika pakankamai detalizuota, kad galų gale sukuriamas dinamiškas vaizdas, kuris dar ir sąveikauja su žaidėju. Bet savo esme - tai visvien paprasčiausias tekstas.

Esu rašęs apie kai kuriuos niuansus, bet tenai jau gyvųjų ir kompiuterinių kalbų tiesioginio santykio problematika kabinama. O įdomesnis yra kitas reikalas: ar galima, pvz., grynai formalia programavimo kalba parašyti kokį nors grožinės literatūros kūrinį? Ir vat čia jau susiduriame su tuo įdomumu, katrą nujausdamos, kalbainiškos lervos visad ima cypti, esą kompiuterinės kalbos yra negyvos ir joms kažkokie kiti kriterijai taikomi, negu gyvoms, o gyvosios kalbos esą negali būti taip vertinamos, analizuojamos ir taip toliau, todėl jomis jokio kūrinio gražaus neparašysi.

Apie antimatematinius kalbainių cypčiojimus aš jau parašiau. Apie kriterijus irgi jau esu rašęs: gyvosios kalbos pilnai tenkina visus kompiuterinių (kitaip tariant, Tiuringo mašiną realizuojančių) programavimo kalbų kriterijus. Klausimas tik tas, kokias dar savybes tos gyvosios kalbos turi, kad jos gali dar daugiau? Ir ar tikrai jos gali dar daugiau?

Gatvelė su žuvimis

Dar kažkoksai žaidimas. Pasimetusi kalbaininė žmogysta žvalgosi į žuvis ir galvoja, kur pakliuvo. Ogi į dekonstrukciją pakliuvo. Čia jums toksai klausimas: jei dvi kalbos viena kitą bandytų dekonstruoti, kuri laimėtų - ta, kuri turi kategorišką ir nykų taisyklių rinkinį, ar ta, kuri nevaldomai polimorfiška? Atsakymas, sakyčiau aiškus. Todėl kalbainiai visada pralaimi.

Čia daug spėlionių išties – tai ir pilnavertis visos kalbos polimorfizmas – savigeneracija, autointerpretacija. Tai ir įdomesnė savybė – vienos kalbos momentinis interpretavimas, kaip kelių (žr. dar Wittgenstein statybininkus), kartu priimant kelis skirtingus pranešimus. Multikontekstualumas ir daugybiškumas. Bet ir šitie pavardinti bruožai – tai gal ir tų pačių įprastų programavimo kalbų gali būti realizuojami. Tuose bruožuose daugiau rezultatas, o ne realizacijos pagrindai.

Dinozauras tiranozauras T-Rex

Čia ne aš žiūrau į kalbainius, kurie į mano blogą žiūri. Čia tik kompiuterinis konstruktas, kuris ruošiasi prie savęs žiūrovo prišokti ir jį praryti. Tai irgi gabaliukas teksto, pats plėšantis visokius nesusipratusius tipažus gabalais.

Gal ir dar kažkokių bruožų yra – juos sunku pastebėti, nebent pradėtume analizuoti eksceptus, o tai yra labai keblus reikalas. Bet… Bet esmę jūs jau visvien pagavote: paveikslėliuose jinai. Taip, tos esą nykios ir nesuprantamos mašininės kalbos kuria ištisus pasaulius, kurie gyvesni už bet kokį romaną. Ištisus pasaulius, kuriuose kuriami net ir tam tikri mąstančių padarų ekvivalentai. Tai tiesiog kalbos. Primityvios kalbos. Daugybė visokių tekstų, šimtai tūkstančių ir milijonai teksto eilučių.

Ponai kalbainiai, pabandykite bent kažkaip įsivaizduoti gyvąja kalba parašytą tekstą, kuris sukuria dirbtinę realybę taip, kaip sukuria kompiuterine kalba parašyti tekstai. Pabandykite jį parašyti. Ir staiga suprasite, kad neaišku, kur tas skirtumas. Nežinia, kuo gyvosios kalbos skiriasi nuo kompiuterinių.

Rokiškis Rabinovičius rašo jūsų džiaugsmui

Aš esu jūsų numylėtas ir garbinamas žiurkėnas. Mano pagrindinis blogas - Rokiškis Rabinovičius. Galite mane susirasti ir ant kokio Google Plus, kur aš irgi esu Rokiškis Rabinovičius+.

59 thoughts on “Apie gyvąsias ir kompiuterines kalbas

  1. Alvidon

    Ar tikrai yra pakankamas/suprantamas pagrindas kalbėti apie kalbą ? Kitaip sakant ar mes suvokiam kas yra kalba, ar mes teisingai suvokiam, ar mes visi vienodai suvokiam ? Kad RR tikrai kitaip traktuoja terminą „kalba“ nei kalbainiai -- akivaizdu, bet vėlgi: kalbainiams tai vargu ar akivaizdu.
    Pvz.: kai pradėjau skaitinėt RR rašinėlius kalbų tematika mani supurtė teiginys, jog mastymas vyksta kalba, bet toliau beskaitant paaiškėjo, kad tai tik kalbos apibrėžimo reikalas. Jei kalba nelaikysim vien tik vokalinius irba klaviatūrinius reiškinius -- tada ir mastyt kalba galima, kodėl gi ne, mano kalba, kaip noriu taip vadinu 😉

    Reply
    1. Rokiškis Post author

      Čia, ponas Alvidon, tamsta gerai pastebit: kalbainių požiūriu, kalba yra kažkokia neaiški ir bestruktūrė bybienė iš kažkokių žodžių, kurie nedalyvauja mąstymo procese, o tik atlieka neaiškią savaiminę funkciją, kurios ir apibrėžt nesigauna, nes vienintelis apibrėžimas pagal juos -- tai pagal adresuojamas reikšmes (katrų, beje, jie netgi neskiria nuo prasmių, o vos tik jiems kyla kokios nors abejonės, žodžius ima kišt į kabutes).

      Tai labai konverguoja su bihevioristine mąstymo teorija, pagal Skinner ir Pavlov tiesiog -- kad kalba tesanti palaidas refleksų rinkinys. Galimai kalbainiams taip ir yra. Tai visai derinasi su tuo nerišliu kalbainišku supratimu.

      Reply
  2. mantas

    pirma, video žaidimų labai mažą dalį sudaro programinio kodo tekstas. Sakau kaip programavimo profesionalas. Gal buvo kitaip kokiais gūdžiais 1982 metais, bet šiuolaikinio video žaidimo 99% -- tai elektroniniai resursai: muzika, garsai, tekstūros, trimačiai modeliai, judesių medžiai, lygių žemėlapiai ir t.t. ir t.t.. Netgi žaidimo varikliukai perkami kaip atskiras sukompiliuotas programinis paketas, o žaidimo logika (kiek neleidžia CAD’as) sudaro nykstamai mažą megabaitų dalį. Čia bendru atveju, be abejo.

    Antra, Turingo mašina yra itin primityvi instrukcijų aibė. Šešios instrukcijos, ir tiek. Tam net kalbos kaipo tokios nereikia.

    Trečia, gyvoji (žmonių) kalba prieš programavimo kalbą -- tai kaip vandenynas prieš šuns balutę.

    Reziumuojam: iš eilinio kalbainių užsipuolimo gavosi eilinis šnipštas.

    Reply
    1. Tomas

      Na, kaip programavimo profesionalas, tai kažkaip va taip ir prašovei 🙂 Turėtum žinot, kad be to likusio 1 proc. tai nebūtų žaidimas, o tik tos tavo išvardintos dalys. Kitaip tariant, kalba vistiek yra pagrindinė priemonė, nors pagalbinių kiekiu gali būti ir daugiau!

      Reply
      1. mantas

        pasiskaityk Rokiškio tekstą:

        „Visas šitas vaizdas -- tai kažkokio kompiuterinio žaidimo momentas. Visas jis sukurtas tiesiog teksto. Programos teksto, kuris, giliau pažvelgus, nelabai tesiskiria nuo įprastų tekstų.“

        Taigi, „visas“ ir „1%“ yra labai skirtingi dalykai. Prasišovė rokiškis, ne aš.

        Reply
        1. Rokiškis Post author

          Ponas Mantai, dabar tamstai aš parašiau žemiau komentarą. Nes tamsta net nesuvokiate, kiek smarkiai tamsta nesuvokiate to, apie ką tamsta kalbate.

          Reply
    2. Rokiškis Post author

      Ponas Mantai, tamsta, kaip profesionalas, dabar pasakykite man, kokią funkciją kalboje atlieka bibliotekos, apie kurias kalbate? Vat tada pakalbėsime apie tai, kur ten ne kalba ir koks tamsta profesionalas, kai galvojate, kad išorinės funkcijos ir resursai nėra kalbos naudojami elementai. Aš jau nekalbu apie tamstos minimus varikliukus ir t.t., kurie ir patys kalbomis parašyti, ir patys neretai kalbas realizuoja.

      Antra, tamstai reiktų pasiaiškinti, kas tas yra Universali Tiuringo Mašina, kodėl ji yra toksai esminis konceptas, į kurį visos programavimo kalbos susiveda ir kokiu būdu ten kalbos esą nereikia. Aš tamstai garantuoju, kad tamsta taip nustebsite, kad paskui frustruosite kelias savaites, pats savo gebėjimu nusišnekėti netikėdamas.

      BTW, dabar jau po šitų pirmų dviejų tamstos pasakymų, aš tamstą pavadinsiu lameriu ir tamsta to paneigti nesugebėsite, ir tą aš tamstai garantuoju tiek smarkiai, kad kai tamsta suprasite kaip smarkiai tamsta čia dabar nusišnekėjote, tai tyliai kūkčiosite kamputyje, skleisdamas garsus, panašius į tuos, kokius tamstos minimais 1982 metais skleisdavo kelis šimtus bodų teištraukiantys modemai.

      Dėl to, ką kaip trečią parašėte -- tai indiferentiškas tamstos žodžių kratinys, kuris nenuostabus prieš tai buvusių dviejų nusišnekėjimų kontekste. Taigi, net ir komentuot čia nereikia nieko.

      Reziumuojant, ponas Mantai, tamstai nereikėjo čia imti ir kliedėti savim patenkintu tonu. Nes dabar ilgas kelias tamstai. Nes tamsta padarėte klaidą.

      Duodu tamstai pasirinkimą dabar: eikit ieškotis programavimo teorijos pagrindų (nes tamsta gi profesionalas) arba eikit naxui.

      Kita vertus, sakyčiau, kad tamsta pailiustravote kitą reikalą: programavimo kalbos, kaip ir gyvosios kalbos, jų vartotojams ilgainiui darosi nesuvokiamos. Jie ima jomis naudotis, nebandydami suprasti, kaip jos veikia -- jiems pakanka, kad jos veikia ir viskas.

      Ir čia yra gražu -- matome, kad vėlgi skirtumo negalim pasakyt net ir pagal vartojimą. Nes kaip kad dauguma gyvosios kalbos vartotojų ją vartoja, nesuvokdami, kaip ji veikia, taip ir tokie profesionalai jau vartoja programavimo kalbas.

      Tai tikrai iliustratyvu.

      Reply
      1. mantas

        Rokiški, jei jau nori matuotis pas ką ilgesnis, galim be streso susėsti ir alučio gurkštelėti. Sykį gi esam taip jau darę, visai gerai pavyko. Aišku, šiemet nebeišeis, bet jei nori šviečiamosios paskaitos apie programavimo pagrindus, galiu padėti.

        Suprantu kad norisi išsaugoti savo veidą nuosavame bloge prieš nuosavą auditoriją. Vienok visiems sveika mokėti pripažinti kad apsidurninai iš nežinojimo, ir neteršti pakankamai apterštų internetų dar papildomomis nesąmonėmis.

        Panagrinėkime ponulio suklydimus paeiliui.

        Pirma, skaitmeniniai resursai kaipo tekstūros, garsai ir taip toliau nėra kuriami programinėmis kalbomis. Garsai kuriami sintezatoriumi, garso įrašymo ir redagavimo priemonėmis, ir beveik niekuomet neprogramuojami programavimo kalbomis (aišku galima bet visiškai neverta). Tekstūros niekuomet neprogramuojamos o dažniausiai nufotografuojamos ir pafotošopinamos, arba tiesiog sufotošopinamos t.y. niekur joks programuotojas nagų nekiša ir kodo nerašo, o tiesiog dizaineris su pelyte (arba su el.pieštuku ant piešpado) nupaišo. Judesių medžių niekas neprogramuoja, o tiesiog žaidimų dizaineris vėlgi su pelyte susmauko. Tų pačių 3D modelių niekas neprogramuoja, juos su trysDėMaksu dizaineriai nupeckelioja.

        Aiškiau jau? Jei nori „programavimo kalbą“ taip plačiai apibrėžti kad apimtų paišymą pieštuku ar įrašinėjimą diktofonu, tai tada dievulis tau nebepadės, o reikės medicininės intervencijos.

        Reziumuokim: elektroniniai skaitmeniniai resursai NĖRA kuriami programavimo kalbomis. Elektroninių resursų redaktoriai -- galbūt, bet patys elektroniniai resursai -- NE. Jeigu nori paredaguoti tekstūrą savo žaidimui, jokiu būdu neprogramini nei redaktoriaus, nei pačios tekstūros.

        Antra, žaidimams tikrai reikia programinio kodo. Programinis kodas yra žaidimo logika: pvz įvykių algoritmai, AI, trigeriai ir t.t. Pvz moderniam normaliam videožaidimui reikia nuo keliolikos tūkstančių iki kelių šimtų tūkstančių programinio kodo eilučių. Sukompiliavus gausis apie kelis megabaitus, kas sudarys apie procentą normalaus žaidimo dydžio. Visa kita -- resursai, bibliotekos ir runtaimas.

        Reziumuokime: pasakymas kad VISAS žaidimas yra sukurtas programavimo kalba yra nesąmonė. Apie vienas procentas normalaus žaidimo sukuriama programavimo kalba.

        Trečia, mašininis kodas nėra laikoma programavimo kalba. Dvejetainis mašininis kodas -- tai yra tai, kuo pavirsta programinis kodas jį kompiliatoriui suvirškinus: konkrečiai mašinai pritaikytų mašininių instrukcijų šmotas (tarkim x86 skirtas mašininis kodas neveiks ant armo, nors tas pats C kodas gali puikiausiai varyti ant abiejų platformų). Yra dar interpretuojamų kalbų, kurios nėra kompiliuojamos į mašininį kodą, bet paprastumo dėlei brėžkime brūkšnį: dvejetainis suvirškintas mašininis kodas NĖRA PROGRAMINIS KODAS. Tas yra YRA VYKDOMASIS KODAS. Žmonės NEPROGRAMUOJA dvejetainiu kodu (nes tai nepatogu, ir patinka tik mazochistams). Vietoje to žmonės programuoja kad ir asemblerio programavimo kalba, o jau tada programinis tekstas sukompiliuojamas į mašinines instrukcijas.

        Ketvirta, bibliotekos nelaikomos programiniu kodu. Programuotojo požiūriu, bibliotekų API (pvz, printf ar mysql_db_connect) tam tikra prasme yra toks pats resursas kaip koks operacinės sistemos API (pvz., GetLastError ar fork) ar procesoriaus palaikomų instrukcijų rinkinys (pvz push ar CMPXCHG). Faktas, kad bibliotekos kažkada kažkieno iš tiesų buvo suprogramuotos, nereiškia jog jas reikia perprogramuoti kiekvieną kartą. Programuotojo ir programos požiūriu, tai yra kažkas ką galima iškviesti.

        Varau pietauti, tingiu čia taipinti daugiau. Manau jei moki priimti argumentus, tai jau turėjai suprasti kaip apsidurninai. Jei kils klausimų ir jei man papietavus dar nesuprasi kuo skiriasi programinis kodas nuo išorinio resurso, ir kuo skiriasi programavimo kalba nuo CPU instrukcijų aibės, tai galėsiu vėl padėti.

        Reply
        1. petraszd

          Grybauji…

          Aš suprantu, ką tu nori pasakyti, bet vis tiek grybauji.

          Tekstūra nėra programavimo kalba. Bet tekstūros formatai yra kompiuterinė kalba. Taip pat ir visos kitos žaidimų dalys (muzika, 3d modeliai ir t.t.) yra kompiuterine kalba parašytos, nes kitaip kompiuteris jų nesuprastų ir nebūtų galima žaisti to žaidimo.

          Tu įsikandai tą žodį „programavimas“. Ir visai pamiršai pažiūrėti į įrašo pavadinimą, kuriame puikuojasi žodis „kompiuterines“.

          P.S. Linkiu, kad tavęs neužbanintų…

          Reply
          1. mantas

            Jei kam nors patinka kalbėtis su savo adoruotojais, o kritinis požiūris baninamas, tai tas kas nors yra Donskis. Ir visiškai nebaisus toks baninimas.

            Formatai nėra programavimo kalba. Rokiškis būtent kalba ne apie abstrakčias „kompiuterių kalbas“, o apie PROGRAMAVIMO kalbas, ir čia jis stipriai šauna pro šalį. Citata: „Visas jis sukurtas tiesiog teksto. Programos teksto, kuris, giliau pažvelgus, nelabai tesiskiria nuo įprastų tekstų.“

            1. Binarianiai resursai nėra kalba. Nors ir turi struktūrą, bet tai tiesiog resursas. Kaip fotonuotrauka, kuri irgi turi struktūrą, bet nėra kalba. Jie niekada nebuvo jokioje tekstinėje formoje.

            2. Čia ties tuo susitariam, ir einam toliau ar dar ginčijamės?

            Reply
            1. Rokiškis Post author

              Ponas Mantai, tamsta netgi negebate apibrėžti, kas yra kalba, o ginčijatės. Aš tamstai pasakiau eiti mokytis arba eiti naxui, bet tamsta vietoj to kad eiti mokytis arba eiti naxui, galvojate, kad tamsta pasiginčysit, nes tamstai nei mokytis nereikia, nei naxui eiti.

              Čionai nėra mokyklėlė, čionai nėra ir tolerancijos vieta. Tai paskutinis perspėjimas.

              Reply
              1. mantas

                > aš tamstai pasakiau eiti mokytis arba eiti naxui

                Sprendžiant iš Rokiškio retorikos, jam visiškai nerūpi diskusijų objektas, nes akivaizdžiai supranta susimovęs ir dabar mojuodamas zekų žargonu bando banais pridengti nuosavą nekompetenciją.

                Už mintį esą bet koks protokolas „yra programavimo kalba“ Rokiškį reiktų nominuoti 2012 metų nusišnekėjimo prizui.

                Niekas nesukelia tokio malonumo kaip nervuotas susimovėlis, savo teisumą įrodinėjantis komentarų trynimais. Už tai myliu Donskį, myliu Zagorskį, Bačiulį, o dabar tuoj tuoj malonumą suteiks susiisterikavęs chamiakas 😉

                Reply
                1. Rokiškis Post author

                  Aš komentarų netrinu, bet vat į naxui tamsta netikėtai nukeliavote stebuklingu būdu. Lameriams tenai vieta.

                  Reply
          2. Rokiškis Post author

            Ponas Petrai, tasai ponas įsivaizduoja kad kalba yra tiktai ten, kur jis pats parašė kažką. Kas tas yra bibliotekos ir iš kur jos atsiranda -- jis nežino. Kaip tos pačios tekstūros skaitomos ir interpretuojamos -- jis irgi nežino. Protokolo sąvoka jam matyt irgi nesuprantama. UTM jis irgi nežino. Vykdomasis kodas pagal jį nėra kalba ir nėra programa. Ir taip toliau.

            Mes turim reikalą su tipiniu variantu -- vaikinuku iš serijos „aš moku C++, bet nežinau, kas ta rodyklė nes to man nereikia“.

            Reply
            1. mantas

              kad rokiškis nenusimano apie programavimo kalbas, protokolus ir Tiuringo mašinos ribotumą jau žinome.

              dabar klausimėlis informatikos studentui pirmakursiui: kiek kartų gc++ kompiliatoriaus atveju skiriasi paprastos rodyklės dydis nuo rodyklės į objekto funkciją?

              Reply
              1. Rokiškis Post author

                Kaip matau, net referencų nuo rodyklių neskiriantis pridūrkas dabar įsivaizduoja, kad kažką testuos. Tamsta būsite kaip tik toje vietoje, kuri vadinasi Naxui ir tenai save pats testuositės.

                Reply
              2. Void

                Prieš 10 metų KTU davė Rabinovičiaus straipsnius apie procesorių architektūrą ir programavimo kalbas. Buvo geriau negu įprasta medžiaga, nes su gerais pavyzdžiais. Vienas buvo apie tai kaip HTML gali būti įprastam programavimui o C gali būti teksto formatavimui. Užtrolino visą kursą bet privertė mąstyt. Dabar matau atsiranda jaunimas kuris jaučiasi kiečiau ir senius nori pamokyti. Gal taip ir reikia nes iš tikėjimo savim noras nuveikt didelius darbus.

                Reply
                1. Alg.

                  Pala, čia rimtas dalykas ar nelabai?

                  Jei taip, gal būtų galima pavadinimus sužinot, arba (dar geriau) ir pačius straipsnius gaut? Sudomino pavyzdžiai.

                  Reply
        2. nuvylė

          Jomajo, pirma pastraipa „panagrinėjimo paeiliui“ ir jau šaudo tuščiais. Toliau nebeskaičiau. O taip tikėjaus iš „profesionalaus programuotojo“ žinių pasisemti… :/

          Reply
    3. Betkoks Visada

      Trumpai pasakius: Slėpkis po lapais

      Ilgėliau: „99% — tai elektroniniai resursai: muzika, garsai, tekstūros, trimačiai modeliai, judesių medžiai, lygių žemėlapiai“ Papasakok, kas yra elektroniniai resursai ? tekstūros, trimačiai modeliai, judesių medžiai,lygių žemėlapiai ir t.t. Viskas yra programavimo kalba parašyti, tai camon … Sakysi garsas nėra ? Na iš esmės gal ir nėra realiame pasaulyje, bet kompiuterių pasaulyje yra ta pati programavimo viena iš kalbų su tam tikra sintakse skirta atkūrimui.

      Tai arba esate visiškas lameris kaip minėjo Rokiškis. Arba nesuvokete apie ką šnekate, todėl mielas „Profesionale“ pasikartosiu dar kartelį, slėpkitės po pernykščiais lapais …

      Reply
      1. mantas

        programavimo kalba -- tai taisyklės, apibrėžiančios programos išeities kodo sintaksę bei semantiką tam, kad kompiliatorius (ar interpretatorius) mokėtų vienareikšmiškai programuotojo užrašytą išeities kodą paversti mašininėmis instrukcijomis.

        Taigi skaitmeniniai resursų formatai NĖRA programavimo kalbos.

        Protokolai NĖRA programavimo kalbos.

        Mašininio kodo instrukcijų rinkiniai NĖRA programavimo kalbos.

        Sukompiliuotas programinis kodas tampa nebe programos tekstu.

        Rokiškis susimovė nebepataisomai.

        Reply
        1. Rokiškis Post author

          Nuostabu tiesiog -- kaip ir kažkokiais 199x, kai visokie pirmakursiai pridūrkai panašiai programming@ konfoje pezėdavo. Niekas nuo to laiko nepasikeitė, tik vietoj Basic tie patys pridūrkai dabar C++ mokosi.

          Lamerių durnumas visada toks panašus -- tai ir tikėjimas, kad programavimo kalba tapatu rinkiniui taisyklių, ir tikėjimas, kad tos taisyklės semantiką apibrėžia, ir kompiliatorių mitologizavimas, įsivaizduojant, kad mašinos kodas yra kažkuo stebuklingai kokybiškai kitas daiktas, nei programos tekstas, ir t.t., etc..

          Bet tamsta šito komentaro dabar netgi nepaskaitysite, nes tamsta esate Naxui. Tenai tinkama tamstai vieta.

          Reply
        2. Brauninkas

          Įdomu iš kur atsiranda toks bukas biurokratinis požiūris? Ponui reikėtų bent retkarčiais į nagrinėjamą dalyką pažiūrėti iš abstraktesnio koncepcinio lygio, nes kitaip funkciškai išbaigto namo neatskirsi nuo paprastos plytų krūvos. Yra net toks posakis -- „per medžius nemato miško“…

          Abstrakčiau žiūrint -- turim tris dalis: 1. kompiuterinį interpretatorų (tai gali būti ne tik kompiliatorius, o siaip koks softo gabalas, 3d engine, cpu, gpu, garso plokstė… vienzo belenkas -- ne tame esmė, nes galima įsivaizduoti tiesiog kaip abstraktų black-box’a), 2. įeinantys duomenys, turintys savo leksiką, sintaksę ir apskritai gramatiką konkrečiam atvejui, 3. išėjimo rezultatus -- vaizdas, garsas, prijungto varikliuko judesys, ar tiesiog šiaip apdoroti duomenys…

          Iš tokio abstraktaus požiūrio taško, kiekvienas resursų failas -- tai konkrečiam kompiuteriniam interpretatoriui skirta „programa“, užrašyta tam interpretatoriui suprantama kalba: net tokie primityvai kaip wav ar bmp failai -- turi labai konkrečią sintaksę, nes jei jos neturėtų, atitinkamas kompiuterinis interpretatorius (paveiksliukų renderinimo kodas, ar garso posistemė) jų nesuprastų ir savo išėjime nesugeneruotų adekvataus prognozuojamo rezultato.

          Reply
    4. Kar

      Na kaip programuotojas tai tamsta silpnai… Kodas vis tik kompiuteryje yra visur. Taip, kokius 95% duomenų žaidime sudaro resursai. Bet kaip gi jie yra sukuriami? Įrankiai modeliams kurti, garsams, tekstūroms ir paveikslėliams redaguoti -- visi savo rezultatą saugo tam tikra kalba. Tegu tai žemiausiame lygyje ir bus dvejetainis kodas. Bet visa šita daugybės skirtingo kodo sistema leidžia užrašyti ir atkurti praktiškai bet ką.
      Na o likę 5% žaidime, kurie jau yra grynai žaidimo logika, vis tik nėra mažai. Eilučių kiekis tai yra sunkiai suvokiamas. Taip, jis nesmarkiai didėja. Vis tik vis kylant programavimo lygiui tų papildomų eilučių reikia vis mažiau. Tačiau realiai kodo kiekio dalis nė kiek nemažėja.

      Reply
      1. skirmantas tumelis

        O štai tai, jog du simboliai gali virsti į tokias sudėtingas konstrukcijas, t.y. kad dviejų simbolių pilnai užtenka realizuoti iki šiol žmonėms žinomoms konstrukcijoms, tai yra irgi nuostabu.

        Nuostabu vien dėl to, kad gyvename mes tai trimatėje erdvėje. O gal mums taip tik atrodo? Gal tai dvimatė erdvė , tik konstrukcijos sudėtingos?

        O gal vienmatė? 😉

        Reply
  3. petraszd

    Esminis skirtumas tarp gyvųjų ir kompiuterinių kalbų yra tas, kad pastarąsias puikiai supranta kompiuteriai. Tuo tarpu gyvąsias nelabai. Kažkada visi manė, kad tuoj, tuoj, tuoj kompiuteriai supras viską, ką mes šnekame.

    Taip neįvyko. Dabar mes teturime visokius Google Voice ir Siri. Jie yra tik žaislų lygio žaidimukai, o ne kažkas panaudojamo. Beje, pačios technologijos yra nedeterministinės, kas reiškia, kad rezultatas visąlaik bus „daug maž teisingai“ veikia, o ne „visąlaik teisingai“ veikia.

    Tiesa, yra ir šiek tiek kitokių kalbų. Pasaulyje yra keletą kalbų[1], kurios lengvai parsinamos[2] kompiuterinėmis programomis. Tarsi kalba būtų neišsivysčiusi, o dirbtinai sukurta. Kas iškarto užduoda vieno žodžio klausimą. Tas klausimas skamba taip: „Ufikai?“.

    Bet kokiu atveju (tikriausiai ne ufikai…), aš turiu hipotezę (kuri turbūt nėra labai originali), kad vartojamos kalbos galiausiai evoliucionuos į kompiuteriams labiau suprantamus darinius.

    [1] http://en.wikipedia.org/wiki/Aymara_language
    [2] http://connection.ebscohost.com/c/articles/12608881/ancient-language-as-tool-computer-age

    Reply
    1. Rokiškis Post author

      Ponas Petrai, tas supratimas kompiuteriais -- toksai simptomatinis dalykas, o ne aiškiai apibrėžiamas. Kitaip tariant, problemą matome, o įvardinti tiksliai negalime, nes tiesiog nežinome, kur tas skirtumas. Aš apie tą šiek tiek rašiau kadaise, viena iš nuorodų straipsnyje.

      Jei kalbam rimčiau, tai didžiausia problematika yra įvardinama, kaip transliacijos problema: pagal klasikinį Greimo struktūralizmą, vienas diskursas gali turėti neribotą kiekį naratyvų, tad klausimas, ar tikrai pagal naratyvą galime atkurti diskursą, o atkūrę ir pertransliavę, kaip galime būti tikri dėl to, kad ištransliavome tinkamiausią naratyvą. Pagal poststruktūralizmą kyla dar viena problema: naratyvas gali atstovauti neribotą kiekį diskursų. Vat čia tos transliacijos ir užsilenkia galutinai.

      Dėl to straipsnio apie Aymara, kaip programavimo kalbą -- jei kaip nors man galėtumėt kopiją ano suveikti, tai būčiau labai dėkingas, nes čia labai įdomu. Atsimenu tik kitą dalyką -- Esperanto irgi buvo vienu metu bandoma panaudoti programavimui tiesiogiai. Neatsimenu, kuo ten tai baigėsi.

      Dar dėl parsinamų kalbų -- Piraha neturi rekursijos ir skaičių. Tai matyt reiškia, kad nerealizuoja Tiuringo mašinos, o tai, savo ruožtu, reiškia, kad irgi turėtų būti parsinama lengvai.

      Dėl tamstos teorijos apie evoliucionavimą -- gal būt ne pilnai, bet link to, kad susidarytų tam tikri kompiuteriais interpretuojami subsetai -- tai tikrai po truputį einama, kad ir lėtai. BASIC, Pascal, SQL -- tipiški bandymai. Tarp kitko, Perl su savo kontekstualumais -- nors iš kitos pusės, bet irgi labai įdomus žingsnis.

      Prieš keliasdešimt metų IBM bandė kažkokį galingesnį programavimo kalbų variantą sukurti, dar labiau prie gyvų kalbų priartintą, bet anas nelabai sėkmingas gavosi -- paaiškėjo, kad atsiremiama į poreikį nesveikai dideliems bibliotekų ir visokių iš anksto apibrėžiamų kontekstų kiekiams -- galimai čia ir kiekybės problema.

      Kita vertus, bibliotekų taip ar anaip daugėja -- tas išvirtę yra į dar kitą problemą, kad dažnai programuotojams jau netgi paprasčiau susikurti nuosavas bibliotekas, nei ieškoti tinkamų funkcijų.

      Kas, savo ruožtu, man kai kuo asociatyviai primena dar kitus senus lingvistų bandymus analizuoti kalbų/žodžių sąryšius statistiniais metodais -- bene daugiausiai žadėjusi ir juokingiausiai žlugusi kalbotyros sritis buvo. Lygiai taip pat užsilenkė ant kiekybių.

      Reply
      1. petraszd

        Kadangi lingvistikoje aš labai prastai gaudausi (Pvz.: net nežinau ar žodis „lingvistika“ yra tinkamas šiame sakinyje), tai aš daugiau žiūrau iš fantastų perspektyvos. Tai „kompiuteris supranta kalbą“ galiausia išvirsta į „aš galiu kalbėtis su robotais, kaip filmuose“. Kas yra labai blogas apibrėžimas.

        Programuotojų tarpe SQL ir BASIC yra vienos iš labiausiai nekenčiamų programavimo kalbų. Apie SQL iš vis yra tokia mitinė istorija. Atseit SQL buvo sukurta ir reklamuojama, kaip kalba, kuri yra tokia panaši į žmonių kalbas, kad ja gali rašyti net projektų vadovai. Ale galėsite atleisti tuos brangius programuotojus. Galiausiai gavosi, kad SQL specialistai yra vieni brangiausiai apmokamų programuotojų, nes niekas nenori dirbti SQL, nes ji pošlykštė kalba, kuri užknisa.

        Deja, bet straipsnio kopijos suveikti negaliu – jau esu praradęs prisijungimus prie visokių mokslinių straipsnių šaltinių.

        Reply
        1. Rokiškis Post author

          Dėl tos mitinės istorijos -- tai aš pats dar atsimenu, kaip SQL šitaip reklamino kaip kuriose knygose. Tame gal ir yra dalis tiesos, nes SQL tiesiogiai nerealizuoja UTM reikalavimų kokiais nors natūraliais būdais, t.y., yra primityvoka.

          Kita vertus, BASIC irgi buvo taip reklamuojama -- tipo „jums nereiks programuotojų, nes pats galėsite parašyti tai, ko reikia“.

          Visgi, kiek atsimenu, labiausiai taip buvo reklamuojama dBase (kurios tiesioginis klonas buvo FoxPro) -- ten visas marketingas ant tokio proto knisimo buvo pastatytas, kad esą ten jokios programavimo kalbos nėra, todėl čia jums labai apsimoka.

          Reply
  4. Alius

    Esu programuotojas. Jau seniai -- pradėjau nuo CM-1600 (tokia mini-skaičiavimo mašina iš keturių spintų ir keleto terminalų). Programavimo kalbų mano gyvenime buvo labai daug; tame tarpe ir tiesioginis rašymas mašininiais kodais. Taigi bent jau programavimo kalbų ištakas aš žinau gerai (ko negaliu pasakyti apie gyvąsias kalbas).

    Pradžioje noriu pakomentuoti: paprasta kalba galima aprašyti ir sceną ir veiksmą ir netgi sugalvotą pasaulį. Kaip pavyzdį galiu pateikti Žiulį Verną, kurio gamtovaizdžio aprašymai tiesiog kvapą užima, nepaisant to, kad jis pats to nematė (20 000 mylių po vandeniu -- aprašytas povandeninis pasaulis).

    Apie kontekstą:
    Programavimo kalbos remiasi tam tikru kontekstu t.y. konkrečia kompiuterio architektūra (pvz. C++) arba konkrečia aplinka (pvz. Java, C#). C++ programa sukompiliuota 64 bitų architektūrai nepasileis ant 32 bitų mašinos. Java progamos nepaleisi sistemoje, kuriai nėra sukurta Java virtuali mašina.
    Kažką panašaus pastebiu ir gyvosiose kalbose -- reikalingas kontekstas: mokėdamas tik anglų kalbą, nelabai susikalbėsi su Afrikos džiunglių gyventojais. Gali prisipažinti meilėje įmantriausiais žodžiais ir švariausia anglų kalba, bet Afrikos gražuolei tai bus nė motais.
    Lietuvių kalboje prisipažinti meilėje mes visi mokam (vieni geriau, kiti blogiau) -- mums tas kontekstas žinomas nuo mažų dienų. Galiu padaryti prielaidą, kad programuotojas gali sukurti programą, kuri sugeneruotų mielą paveikslėlį ir taip prisipažinti meilėje programuotojai, kuri net nemoka kalbėti mūsiškai, bet supranta programavimą.

    Apie paskirtį ir turinį:
    Su programavimo kalbom yra gana aišku -- žmonės (gana neseniai) sukūrė kompiuterius ir sukūrė priemonę bendrauti su tais kompiuteriais -- programavimo kalbas. Taigi į programavimo kalbas įdėta bazinė prasmė paprasta: nurodyti kompiuteriui veiksmų seką. Taip -- tos kalbos keitėsi tobulėjo (kartu su kompiuterine technika), bet pagrindinė paskirtis išliko. Realiai procesoriai turi labai ribotą komandų kiekį, bet vienas programuotojas sunkiai parašo programą „Hello World !!!“, o kitas su tais pačiais resursais sugeba parašyti programą, kuri muziką sukuria.
    Su gyvosiomis kalbomis man kiek sudėtingiau -- nežinau, kaip jos atsirado. Tačiau manau, kad žinau bazinę prasmę t.y. perduoti informaciją kitiems žmonėms. Kalbos irgi turi stiprų apribojimą -- ribotą garsų kiekį: lietuvių -- 32, anglų -- 26. Mokėjimas naudotis tais garsais skiria eilinį peckelį nuo didžio rašytojo.

    Apie vystymąsi:
    Programavimo kalbų yra daug. O kiek jų jau numirė: kas dabar prisimena tokias kalbas kaip Ada, Fokalas? Kitos kalbos mutavo: iš C atsirado C++. Jos keitėsi, kai atsirasdavo kažkas naujo -- nauji išradimai matematikoje/logikoje, nauji kompiuteriai ir t.t. Atsrado naujos kalbos, kuriomis paprasčiau (greičiau) pasiekti rezultatą.
    Gyvosios kalbos taip pat gimė ir mirė. Ir keitėsi. Ir dar keisis.
    Kaip gyvosiose, taip ir programavimo kalbose yra kalbininkai: Java kalbos sintaksė versijoje 1.2 ir 1.6 yra pakitusi -- taip nusprendė Java vystymo grupė (tuo metu dar Sun Microsystems).
    O skirtumas yra toks, kad nereikalingų programavimo kalbų niekas nesaugo, o paprastas nykstančias kalbas paskelbia pasaulio paveldu ir bando išlaikyti.

    Dabar apie tikslą (o gal nuo to reikėjo pradėti):
    Programavimo kalbos (kaip ir kompiuteriai) yra absoliutus niekalas, jei neneša materialinės ar moralinės naudos žmonėms.
    Gyvosios kalbos irgi yra niekalas, jei jomis nešneka nė vienas žmogus.

    Išvados:
    1.Negalima kaktomūša sutrenkti programavimo ir gyvųjų kalbų -- tai yra paralelės tik skirtinguose kontekstuose.
    2.Visos kalbos (gyvosios ir programavimo) skirtos žmonėms. Tik mes patys galime įprasminti kalbą ir pasinaudoti jos privalumais.

    Reply
    1. Rokiškis Post author

      Ponas Aliau, truputį paskirai apie kai kuriuos dalykus, kurios tamsta minite, pasakysiu -- gal vietomis patikslindamas, gal vietomis papildydamas, nes tamsta tikrai vertai čia parašėte.

      Apie kontekstą:
      ką tamsta minite, kai kalbate apie kompiuterius -- tai daugiau apie transliaciją (ar interpretaciją, ar kompiliaciją). Kalbant apie kontekstus žmonių kalboje, vertėtų palyginti su Perl, kur tie patys kintamieji turi skirtingą turinį priklausomai nuo to, kam juos naudojate (plg., kai kalbam apie paršą namuose, tai reiškia ką kitą, negu kalbant apie paršą tvarte). Panašūs dalykai gali būti ir su preprocesoriumi daromi, jei tą pačiai programai naudojate skirtingas bibliotekas ir konstantas priklausomai nuo architektūros, kuriai kompiliuojate, tik tiek, kad čia konteksto įvedimas kompiliacijos, o ne vykdymo metu.

      Apie paskirtį ir turinį:
      raidžių kiekiai -- tai tiktai kodavimas. Ar koduosime tą pačią komandą 7 bitų seka, ar 8 bitų seka -- nuo to programos logikoje niekas nesikeičia, jei komandų sistema ta pati. Bet štai kalbos gramatika jau reiškia daug daugiau. Ir tada išties pamatome, kur kažkas prikopypeistina melejoną vienodų eilučių, o kur kažkas ciklą įdeda -- čia jau programuotojo kompetencija. Bibliotekinės funkcijos -- irgi savo prideda prie to.

      Dar dėl paskirties -- prisiminkim, kad bet kuri programavimo kalba realizuoja UTM, o tai, kad realizuoja UTM, savaime reiškia, kad ji yra ne mažiau, nei UTM. Tai reiškia, kad žmonių kalba irgi realizuoja UTM. Taigi, vargu, ar žmonių kalbos atveju čia tik komunikacija.

      Dar dėl atsiradimo gyvųjų kalbų -- prieš kelis dešimtmečius ėmė kilti tokia labai įdomi teorija, kad nors ir nelabai aišku, kaip tos kalbos atsirado, kažkiek kalbinių konceptų galėjo kardinaliai nulemti vėlesnį civilizacijų atsiradimą. Truputį rašiau šį bei tą apie kai kuriuos įdomumus, gal ir tamstai bus įdomu:
      http://rokiskis.popo.lt/2012/04/28/civilizacija-kaip-kalbos-produktas/

      Apie vystymąsi:
      Ada vis dar naudojama, o ir nebloga jinai buvo, tiktai gremėzdiška baisiai ir kažkokiomis standartizacinėmis ligomis apsirgusi, kur visi savus reguliavimus kišo. C ir C++ -- labai įdomus atvejis: čia kaip tik ir pamatome, kaip iš gražią gramatiką turėjusios vos ne asemblerio lygio kalbos, pridėjus krūvas preprocesoriaus failų ir nežymių sintaksinių pagerinimų, išaugo aukšto lygio kalba, kuria šiais laikais programuoja visokie studentai, mirtinai užsigluminantys nuo klausimo, kuo rodyklė skiriasi nuo integerio. Tai labai įdomu: jie nesuvokia, kaip veikia tie C++ viduriai, bet jiems to ir nereikia.

      Dėl išvadų:
      1. Nesutinku, kad negalima programavimo ir gyvųjų kalbų trankyti kaktomuša. Greičiau jau nesigauna jų sutrenkti, nors tie bandymai ir vyksta nuolat. Kodėl nesigauna, kažkodėl niekas negali vienareikšmiškai pasakyti. Gal todėl ir nesigauna.
      2. Tikrai taip, kad ir vienos, ir kitos yra skirtos žmonėms. Klausimas, ar ir vienas, ir kitas galima tiek pat interpretuoti kompiuteriais, ir ar ir vienas, ir kitas įmanoma tiek pat gerai naudoti kasdieniam bendravimui. Ir kur gi tas skirtumas?

      Reply
  5. Pjovejas

    Kad gyvo ir kompiuterinio negalima sudaužt kaktom, tai man atrodo kalta… kaip čia pavadinus? „jas vartojančių aparatų“ struktūra… turbūt. Na, pvz., gyva kalba: gi atsirado labai nevienodą mastymą turinčių primatų būryje. Toks žodis „žalia“ lyg ir turėtų būt paprasta, bet kiek po savim slepia skirtingų dalykų!!! (pradedant elektrine ir baigiant tamsiai žalia :)) Ir kai skirtingi žmonės tą patį daiktą vadina tai „žaliu“, tai „mėlynu“ niekam net neateina į galvą vartoti žodžio „daltonizmas“, nes visi daugmaž suvokia, kad tai „leistini“ nukrypimai.
    Tuo tarpu griežtai dvejetainės architektūros elektroninių prietaisų būrys iš vis nežinia kiek po žodžiu „žalia“ esančių dalykų išskiria kaip skirtingus… priklauso ir nuo to susitarimo keliais bitais aprašoma spalva.

    Reply
    1. Rokiškis Post author

      Na, tai ką sakot apie tuos žalius, po kuriais daug skirtingų dalykų, tai buvo bandoma realizuoti kokiame Lisp, kur programuojant nuo aukštesnio lygio apibrėžimų būdavo einama prie detalizacijos. Bet ir čia nesigavo kažkas.

      Reply
  6. Almiasas

    Nesu super rimtas programeris, bet mokykloje yra tekę paprograminti dar DOS’inėje aplinkoje veikiančiose GW-BASIC, Q-BASIC ir Turbo Pascal kalbose. Šiuo metu turiu daug reikalų su MATLAB’u. Kiek pamenu Turbo Pascal yra ypač griežtai apibrėžta kalba -- pabandyk eilutės gale nepadėti kabliataškio -- ir pišš… Tuo tarpu MATLAB’as nėra toks griežtas ir visiškai dėl to nepyksta bei programą vykdo.
    Panašiai yra ir su žmonių kalbomis, ta pati frazė ar išsireiškimas gali turėti daugybę reikšmių, kurios priklauso nuo istorinės epochos, išsilavinimo, socialinės grupės, …
    Galiausiai žmonės turi jausmus ir emocijas, ko neturi kompas. Mano nuomone, čia ir yra daugiau mažiau esminis dalykas, skiriantis programavimo kalbas nuo gyvųjų -- progkalbėse nereikalingos su emocijomis susiję struktūros.

    P.S. Tamsta Rokiški, pastebėjau, kad čia jau lygiai 1000-asis straipsnis šiame bloge 🙂 Sveikinu su kūrybiniu jubiliejumi ir linkiu kūrybingų bei produktyvių ateinančių metų!

    Reply
    1. Rokiškis Post author

      Turbo Pascal buvo labai gera ir tiksliai reikalavimus atitinkanti klasikinio Niklaus Wirth Pascal realizacija, tik dar paturbinta papildomais išplėtimais kai kuriais.

      Tas Pascal griežtumas, kuris dabar išplitusių skriptinimo kalbų kontekste atrodo baisokas, vėliau būna visų labai vertinamas, kaip vienas iš esminių privalumų: gramatika padeda kurti griežtas konstrukcijas, didelė dalis programuotojo klaidų automatiškai randama kompiliatoriaus.

      Kaip kontrastas čia būtų Perl, kur išvis aiškios sintaksės nelabai yra -- programas galima rašyti belenkaip -- ir panašia į C, ir panašia į BASIC gramatika. Skirtumai gaunasi tokie, kad kartais dvi vienodą struktūrą turinčias (t.y., faktiškai vienodas) programas parašę programuotojai neišsyk net susigaudo, kad tai viena ir tas pat.

      Larry Wall, kuris Perl kūrė, tarp kitko, yra lingvistas -- matyt iš to ir idėja, kad galima turėti tam tikrą semantinę struktūrą su labilia ženklų sistema, panašiai kaip gyvosiose kalbose.

      ——

      Už sveikinimus -- ačiū, pats kažkaip dabar galvoju, kad tai nesveikai daug ir kartu keistai sutampa su Naujais Metais 🙂

      Reply
  7. Alvidon

    Šiaip mintis kilo (iš kitokios, ne teoretiko, o praktiko, varpinės vėpsant): gyvosios kalbos skirtos/naudojamos žmonėms susikalbėti, o kompiuterinės tėra žmogaus priemonė išaiškinti kompui ką jis turi daryti. Kitaip sakant kompiuterinė kalba -- žaidimas į vienus vartus, vienos krypties eismas.
    Čia dar kažkaip prisipaišo visokie paplepėjimai apie emocijas, daugiaprasmingumus ir pan., kas kaip ir patampa tiesiog funkcinio tikslingumo/reikalingumo pasekme, o ne galimybiniu skirtumu.

    Reply
    1. Rokiškis Post author

      Ponas Alvidon, kai sakote, kad gyvosios kalbos skirtos žmonėms susikalbėti, tai ar neturite omeny to, kad jos tėra priemonė tam, kad koks nors žmogus išaiškintų kitam, ką jis turi daryti, t.y., toks pat vienos krypties eismas?

      O jei ne, tai ar nėra taip, kad kompiuteris, atlikęs programą, visgi perduoda jos rezultatą žmogui, t.y., gauname visgi dvipusę komunikaciją?

      Taigi, čia užkabinote visgi greičiau vienų ir kitų kalbų panašumą.

      BTW, čia jums skirtingų informacijos kanalų kvadrantas, rodantis ir kalbų skirtumus:
      * Žmogus-žmogus
      * Žmogus-kompiuteris
      * Kompiuteris-žmogus
      * Kompiuteris-kompiuteris

      Čia galim užduoti kitą klausimą: kuo kalbos, skirtos kompiuteris-kompiuteris kanalui skiriasi nuo kalbų, skirtų žmogus-žmogus kanalui, jei atmesim to kanalo technines charakteristikas, o paliksim tik pačių kalbų logiką?

      Reply
      1. Alvidon

        Kol kas realybėj komunikacija kompiuteris->žmogus nesiskiria nuo komunikacijos lošimo_kauliukas->žmogus.
        Kitaip sakant viskas, ką išveda kompas, yra užprogramuota žmogaus, na o jei kompo „išvadose“ dalyvavo randomaizas -- turim lošimo kauliuką, kuris mums kažką pasakė. Nežiūrint to, kad gali ir praeiti Tiuringo testą (tai tik testo problema, ne realybės).
        Klausimas kas yra kalba lieka neaiškus (na arba kas yra mastymas, nesvarbu).

        Reply
        1. Rokiškis Post author

          Ne. Tamstos samprotavimas čia yra maginis, maždaug kaip „visi žmonės yra daryti tam tikru būdu iš tam tikro skysčio, todėl jie yra skysti, o jei netapo žmonėmis, tai kažkur ištekėjo, vadinasi jie yra upės“.

          Tamstai kiek žemiau komentaruose jau rašiau, kad jau reikia tamstai aiškintis, kuo tiesinis automatas skiriasi nuo Tiuringo mašinos.

          Nes tamsta darote klaidingus samprotavimus, remdamasis klaidinga prielaida, kad Tiuringo mašina veikia kaip linijinis automatas. Taip nėra.

          Reply
          1. Alvidon

            Na kaip ir išsiaiškinom. Tamsta labiau linkęs gyvent Tiuringų pasauly, aš -- primityvios realybės pasauly. Priešiškumo bei nesuderinamumo čia nėra. Sinergetika čia gali gautis. Tiesiog skirtingi interesų/požiūriu ratai. Ir „mano pasauly“ komunikacija kompiuteris->žmogus nesiskiria nuo komunikacijos lošimo_kauliukas->žmogus. Jūs negalit paneigti to. Kaip ir aš negaliu paneigti jūsų požiūrio. Kol kas tiek.

            Reply
  8. Alvidon

    Pratesiant pirmą komentarą: manto incidentas irgi susiveda tiktais į termino kalba skirtingą traktavimą.
    Kadangi ir man šis klausimas (tik ne programerišku požiūriu) neaiškus/idomus, tai gal prasiplėsiu, vat tokis trumpas vaizdelis: sėdžiu aš namie, skambutis, praveriu duris, o ten kokis prekijas/išmaldautojas/sektantas; aš lepteliu „eik nx“ ir užveriu duris. Kur šiame vaizdelyje kalba ? Ir kur šiame vaizdelyje mastymas ?

    Reply
    1. Rokiškis Post author

      Tamstos pavyzdyje labai konkretus primityvaus komunikacinio protokolo atvejis. Patransliuokim į hipotetinę kalbą, panašią į kokį nors pašto protokolą:

      Prekeivis: CALL DOOR
      Alvidon: DOOR OPEN
      Prekeivis: BLABLABLA
      Alvidon: SESSION CLOSED

      O dėl mąstymo -- tai tas pat Tiuringo testas čia labai įdomus, kur nagrinėjamas kompiuterio komunikavimas su žmogumi. To testo kritika, bandant analizuoti įvairius redukuotus atvejus, demonstruoja, kad gana sunku tą mąstymą apibrėžti.

      Kaip pvz., vienas iš redukuotų variantų: kinų kalbos nesuprantanti mergina sėdi kambaryje, kur gauna raštelius iš kiniečio. Turėdama specialią instrukcijų knygą, ji identifikuoja, kokius hieroglifus įrašyti į atsakymų raštelius ir siunčia juos atgal. Kinietis, susirašinėjantis su mergina, galvoja, kad jis ją kadrina, o mergina visai jam neabejinga. Bet ar išties kinietis bendrauja su mergina?

      Būtent bandant panašius atvejus analizuoti, ir kyla tokie įtarimai, kad visgi neaišku, kiek čia mes kalbą naudojame mąstymui, o kiek pati kalba mąsto, mus tepanaudodama, kaip skaičiavimų resursą.

      Reply
      1. Alvidon

        Iš mano varpinės vėpsant problemos išvis nėra. Grįžtant prie vaizdelio: jei priimam kad kalba yra tik tos keturios eilutės, tai man kaip ir akivaizdu, jog kalba visai nesusijus su mastymu (iš ko seka darbinė hipotezė, kad mudu skirtingai traktuojam terminą mastymas, o ne terminą kalba). Mano požiūriu duotam vaizdely mastymas yra tai, kas mani privertė visgi atidaryti duris bei pasirinkti sekančius veiksmus. Kalba tėra mastymo proceso rezultatų ištransliavimo priemonė, daugiau nieko. Kaip visiškai primityvi iliustracija: duotam vaizdely komunikacijos nei eiga nei rezultatai nepakis jei aš tiesiog praversiu duris, pažvelgsiu ir užversiu duris, t.y. į kalbainišką erdvę išvis neįlipsiu.

        Reply
        1. Rokiškis Post author

          Taigi, dėl pirmos tamstos komentaro dalies -- dabar jau tamstai reikia pradėt aiškintis, kuo skiriasi tiesinis automatas nuo Tiuringo mašinos.

          Dėl antros tamstos komentaro dalies -- čia iliustratyvus pavyzdys, kad kalba toli gražu ne vien fonetizuojamas reikalas, o tam tikras veiksmų ekvivalentas, nes tamstos esą bekalbę iliustraciją lygiai taip pat galima pervesti į tą patį protokolinės komunikacijos logą, kaip aukščiau minėtas.

          Reply
          1. Alvidon

            Kas yra ir kuo skiriasi tiesinis automatas nuo Tiuringo mašinos kolkas nesiruošiu aiškintis. Dėl tos paprastos priežasties, kad kolkas pilnai pakanka tos info, kurią čia pateiki, o pati tematika man nėra idomi. Idomus man kitas šio proceso galas. Aš, kaip įprasta fizikams, žiūrau labai paprastai: turim realybę (tiksliau jos atvaizdą žmoguje/samonėje/bilekur), kuriam modelį ir vėpsom kaip modelio rezultatai koreliuoja su realybe. Automatai bei Tiuringai -- modeliai, paliekam tai RR kompetencijai, man idomu kaip realybės objektai susiejami su modeliu. Kitaip sakant ką užvadinam mastymu, ką kalba ir kaip juos susiejam su modelio elementais.

            Reply
            1. Rokiškis Post author

              Tai jei tamsta nesiruošiate aiškintis, tai tada visa tema tamstai užsidaro. Įskaitant ir tą dalį, kur sakote, kad tai yra tamstai įdomus proceso galas.

              Reply
              1. Alvidon

                Kotais ponas nesupratot, musie nemoku klausimėlių formuluot. Pabandysiu dar sykį:
                1) turim realybę, su visokiom kalbom bei mastymais.
                2) turim modelį, su visokiais tiesiniais automatais beigis Tiuringo mašinom.
                3) man idomu, katras realybės kontinuumo dalis užvadinam kalba, katras mastymu, ir kaip jas susiejam su modelio elementais.

                Nė per katrą vietą neįžiūrau šioj savo trijų punktų pozicijoj poreikio sau išsiaiškint modelio niuansus, man pilnai pakanka, kad tu žinai tuos niuansus.

                Reply
                1. Rokiškis Post author

                  Realybė tam modeliui nėra būtina, nes jis pats emuliuoja realybę. Taigi, lieka klausimas apie modelį. Ir kol tamsta neišsiaiškinsit, kas ta Tiuringo mašina ir kuo ji skiriasi nuo tiesinio automato, tol tamstai ta tema liks uždara.

                  Reply
                  1. Alvidon

                    YES! Tikslas pasiektas. Vat tokio paprasto, vienareikšmiško ir aiškaus atsakymo aš ir norėjau. Ir nebuvau tikras kad jo sulauksiu. Ir nebuvau tikras, kad turiu pagrindą pats jį formuluot kaip spėjimą. Manau/tikiuosi jog dar grįšim prie šios temos, ba gi idomi tema…

                    Reply
  9. Brauninkas

    Mano manymu, pagrindinis skirtumas tarp gyvosios kalbos ir kompiuterinės kalbos yra ne pačios kalbos kažkokios gramatinės subtilybės, o tik kalbos interpretatorius (ir generatorius, kas be ko). Gyvosios kalbos atveju tas interpretatorius/generatorius yra žmogus -- su visomos savo žmogiškojo gyvenimo subtilybėmis, kurių neturi kompiuteriai (bent jau kol kas). Žmonės gyvena daugiaprasmiame socialiniame pasaulyje -- jie turi daugybę skirtingų lygių poreikių ir interesų, kurie nuolat kertasi tiek tarpusavyje, tiek su kitų žmonių ir jų grupių poreikiais ir interesais. Tikriausiai todėl evoliucijos eigoje ir išsivystė toks daugiaprasmis kalbos interpretavimo mechanizmas -- kartais atrodytų visiškai paprasta frazė, atvirai pasakyta grupei žmonių, kiekvieno bus suprasta savaip -- priklausomai nuo kiekvieno grupės nario statuso, amžiaus, patirties,samojingumo, santykio su kalbančiuoju ir t.t.

    Kitas dalykas yra tai, kaip pas žmones vyksta komunikacijos užmezgimo procesas. Komunikacija gali būti dvipusė -- bandant bendrauti su nežinomos kalbos atstovu, arba vaikui mokantis pirmosios savo kalbos. Beigi komunikacija gali būti ir vienpusė -- pvz bandant iššifruoti senovės tekstus. Visais atvejais galima pastebėti, kad sėkmingas komunikacijos užmezgimas nevyksta nuo nulio. Pvz yra kažkokios bendražmogiškos (gal būt įgimtos) komunikavimo suvokimo priemonės, kurios vaikui padeda suvokti asociacijas tarp iš kitų žmonių (mamos pvz) girdimų garsų ir to, ką vaikas mato ir kitaip jaučia vykstant aplink, bei asociacijas tarp tariamų garsų ir aplinkinių reakcijos į juos. Vaikai netgi labai nesunkiai prisigalvoja visokiausių naujadarų naujoms savokoms nusakyti (tik suaugusieji dažnai „sėkmingai“ numarina tuos naujadarus, arba jie lieka tik šeimos rate)
    Panašiai viskas vyksta ir bandant susišnekėti su kokiais nors nežinomais čiabuviais -- tas pats klaidų ir bandymų mokymosi procesas, atidžiai stebint pašnekovų reakciją. O reakcija interpretuojama/ištansliuojama jau pagal įgimtą supratimą, kuris beje ne visada atitinka, kai kultūros yra pakankamai skirtingos. Bet kažkokie reakcijos suvokimo pagrindai matyt yra labai labai bendriniai -- pvz agresijai ar pavojui suvokti tikriausiai užtenka ir burunduko smegenų, tam net nereikia būti žmogumi. Tai rodo, kad kai kurios įgimtos komunikavimo reakcijos smegenyse gali turėti labai gilias evoliucines šaknis -- gal net dešimtis ar net šimtus milijonų metų.
    O su senų tekstų šifravimu matosi ta pati alternatyvaus komunikavimo būtinumo problema -- jeigu apie tą kultūrą nežinome nieko, neturime žodyno (rozetės akmuo), statistinė analizė neparodo panašumų į žinomas kalbas -- tekstas dažniausiai lieka neiššifruojamu -- išskyrus retus atvejus, kai analizė parodo koreliacijas su pvz gamtos ciklais -- berods taip buvo iššifruotas majų kalendorius pvz.
    Visais atvejais sėkmingam kalbos mokymuisi yra labai svarbus alternatyvus informacijos kanalas, vien „grynos“ kalbos neužtenka -- reikia matyti (pageidautina -- abipusiai) pašnekovo reakciją ir veiksmus, aplinką.
    Gryžtant prie kompiuterių kalbos -- absoliuti dauguma programų nėra net suprojektuotos mokytis bendrauti klaidų ir bandymų keliu. Kažkaip neteko girdėti apie sėkmingas sistemas, kurios pvz mokėtų daugmaž savarankiškai „pingint“ kitą, visiškai visiškai nežinomą sudėtingą sistemą atsitiktiniais baitais ir pagal anos reakciją -- mokytis su ja bendrauti, su sąlyga, kad nėra kito, alternatyvaus, iš anksto daugmaž suprantamo komunikacijos kanalo ar pamatinių žinių bazės.
    Taip kad čia kažin ar kalbos skirtumai. Čia pagrindiniai skirtumai yra interpretacijos mechanizme. Šiuolaikiniai kompai ir programos dar nėra suprojektuoti veikti taip, kaip žmogaus smegeninė.

    Reply
    1. Rokiškis Post author

      Vat čia užkabinote tamsta tą vieną labai įdomų metodą: kaip mes tos kalbos išmokstame.

      Gali būti keli variantai: ji yra įsiūta (pvz., kaip procesoriaus komandų rinkinys), gali būti įsiūtos bendros taisyklės (plg. su Noam Chomsky įgimtumais), o gali būti ir kitaip -- kad egzistuoja kažkoks metainterpretatorius, kuris sugeba atsekti ir identifikuoti tam tikras taisykles, pagal jas generuodamas interpretatorių. Pastarasis atvejis labiausiai primena žmones.

      Galim čia padaryt prielaidą, kad neuroninės struktūros, panašiai, kaip tame klasikiniame perceptrone, ima identifikuoti tam tikrus ženklus ir jų galiojimo ribas, o atsiradus kažkokiam vidiniam atgalinio ryšio mechanizmui jau ne tarp paskirų neuronų, o tarp jų grupių, atsiranda saviadresacija, kur ženklų sistema ima vystytis pati.

      Reply
      1. Brauninkas

        Aš kartais pagalvoju apie tokia idėją, kad visai gali būti, kad smegenys pritaiko kai kuriuos evoliucijos principus informacijos apdorojimo procese -- visa info esanti smegenyse: žinios, asociacijos, apibendrinimai, įgimti refleksai -- viskas nuolat konkuruoja -- kuri info bus ištrinta kaip nenaudinga, o kuri bus pritaikyta ir išplėtota, pakeliui įgydama visiškai naujų -- iš anksto neprognozuojamų sąvybių ir galimybių. Evoliucijos teorija paaiškina kaip iš atrodytų visiškai primityvių dalykų gali išsvystyti labai sudėtingi. Toks požiūris iškeltų smegenis į visai kitą koncepcinį lygį, lyginant su tiuringo mašinos modeliu, kuris yra statinis. Tai reiškia, kad jeigu smegenys kažkuriuo momentu funkciškai nėra pajėgios išspręsti kažkokia problemą, tačiau su ja nuolat dirba -- po kurio laiko sprendimas atsiranda tarsi iš niekur -- nes galbūt smegenyse fiziškai irba funkciškai išsivysto galimybės tai problemai išspresti.
        O kalba (su visa savo evoliucija) gal tik atspindys tų procesų, kurie vyksta smegenyse.
        Jeigu iš tiesų smegenys taip veikia, tai tiuringo mašinos modelio taikymas žmonių kalbai neturi jokios prasmės.

        Reply
        1. Rokiškis Post author

          Taip, čia interpretatoriaus savigeneracija irba polimorfizmas. Tik čia interpretatoriaus evoliucija vyksta ne iš kartos į kartą, o vienų smegenų ribose.

          Bet Tiuringo mašinos taikymas čia kaip tik ir yra esminis -- kol susidaręs interpretatorius yra tik tiesinis automatas, tol viskas vyksta paprastai, kaip pagal Skinner ir Pavlov biheviorizmą: išorinis signalas-reakcija. Bet kai atsiranda kažkoks vidinis signalas, prasideda netiesiniai procesai.

          Galima sakyti ir taip: kai kognityvinis disonansas dėl vidinio signalo neatitikties išoriniam signalui pasiekia pakankamai stiprų lygį, interpretatorius ima persitvarkinėti taip, kad galėtų tą išorinį signalą interpretuoti tinkamu būdu. Tik vat tam persitvarkymui reikalingas meta lygmuo.

          Kai šitaip besivystantis, save begeneruojantis interpretatorius pasiekia pakankamą sudėtingumo lygį (faktiškai tą, kur turim daryti prielaidą, jog jis jau tapo ne mažiau, nei Tiuringo mašina), jis jau pradeda vykdyti kažkokias nuosavas programas, kur jo, kaip juodosios dėžės, mes negalime nagrinėti, nes jis, atitikdamas Tiuringo kriterijus, gali sugeneruoti mums belenką. Bet meta lygmenyje mes turime dar keblesnę situaciją: tai ne tik interpretatorius, bet ir interpretatoriaus interpretatorius, kuris dar ir tikrina interpretatoriaus pakankamumą ir neprieštaringumą.

          BTW, visai nukrypstant nuo temos ir prisimenant senus Infected voice leidėjus, tai tie matematikos daktarai savo polimorfinio Forth projektu jie iš esmės bandė kažką panašaus padaryti -- tam tikrą transliatorių, kuris pats save generuotų. Gaila, kad paskui jie nutilo -- dabar net neaišku, kas ten išvis jiems gavosi.

          Reply
  10. ProjekcinisKliedesys

    Žmonės bendrauja ne tik žodine, bet ir nežodine kalba, kuri yra be galo sudėtingesnė nei žodinė…

    Reply
  11. TiesiaiSviesiai

    Be žmonių, dar ir gyvūnai, kad ir primityviai, turintys kalbą. Ir ji panaši į kompiuterinę- gauni A signalą iš aplinkinių , reaguoji vienaip, gauni B signalą- reaguoji kitaip. Pvz. pavojaus signalai, atitinkami garsai, prityla gyvūnai. Tokia primityvi kalba, be mąstymo, instinktyvi. Kompiuteris, po šios kalbos išmokymo (programos, algoritmų parašymų) nesunkiai susidorotų. Neturėtų būti neįveikiama kliūtis su šiandienine technika vien dėl nedidelio informacijos kiekio lyginant su gyvąja žmonių kalba.
    Kompiuterinės kalbos išveda rezultatą (žaidimų screenshotai, ar sausi statistikos departamento grafikai), tai yra kalba jau parašyta, ir nėra bendravimo, žaidėjas kalbasi su kompiuteriu tik iš anksto numatytų duomenų įvestimi/išvestimi (paspaudi pelę- sakai šauti, rezultate matai paleistą kulką), labiau kaip gyvūnų instinktyvi siaura kalba su numatytu rezultatu. Ir staigi, net nežinau kas ten kaip vyksta, tik įvestis ir rezultatas- praktiškai nėra tarpinio laiko.
    Gyvoji kalba verčia rezultatą pačiam sukurti pirmiausiai aišku mintyse: pagal viršininko nurodymus pirmiausiai matai būsimą rezultatą, ko sieksi, tai yra tau kalbantis su viršininku, mąstai. Arba emocinis lygmuo- skaitant grožinę literatūrą, neverti iš karto paskutinio puslapio, o skaitai visą knygą, tai netgi pati kalba, atitinkamai išreikšta, yra priemonė pasiekti tikslui- emocijai. Tuo tarpu kompiuterinę kalbą sulėtinus, pasiekta bus tik viena emocija- spyris kompiuteriui dėl lėto veikimo. Gyvąjai kalbai būdinga laiko nebuvimas su atitinkamomis pasekmėmis (praeitis, dabartis, atetis suvokiama iš karto (mąstymas/sąmonė ar tik daugiau suvokimo dimensijų?), tuo tarpu kompiuterinės tik iš eilės vykdo kelis žodžius, be atšakų nenumatytomis kryptymis (mąstymo/sąmonės nebuvimas).
    Netgi galima palyginti skirtingomis kalbomis išreiškiamą tą patį kūrinį, pvz. skaityti knygą, tai yra viską kurti mintyse, vaizduotėje, ir žiūrėti filmą pagal tą pačią knygą, kur mąstymo nėra, tik bukas greitas info (galutinio rezultato) gavimas/priėmimas. Asmeniškai man knyga n kartų geriau.
    O paplepėjimai apie orą. Juk kartais pats kalbėjimas yra tikslas emocijai, bendravimui, o kompiuterinė tik rezultatui.

    Reply
  12. jurgis

    > Bet esmę jūs jau visvien pagavote: paveikslėliuose jinai.

    Tuomet galima sakyti -- pieštuko stumdymas (piešimas) -- irgi yra kalba?…

    Reply

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *