Tag Archives: programavimas

Semiotika – baziniai dalykai ir kai kurie asmeniniai pastebėjimai

Paradoksali figūraNegalvokit, kad semiotika yra paprasta. Taip, ji paprasta, kaip būtis. Todėl apie ją kalbėti labai keblu. Todėl ji nėra paprasta. Juk aš ne veltui pradėjau ne apie banalokas, nors kartais ir labai įdomias tekstų ar ženklinių sistemų interpretacijas ar dar kažką, o apie matematines ir filosofines semiotikos esmes. Uždavinėjau metateorijos klausimus, kurie atrodo neišsprendžiamais, o neretai išties ir yra neišsprendžiamais. Rašiau apie tai būtent tam, kad būtų galima pažvelgti iš visai kitos pusės į tokį paprastą nepaprastą dalyką – kalbą.

Aš jau rašiau apie bazines sąvokas. Įsisavinkim dar kartą: prasmė, reikšmė ir ženklas. Prasmė – tai abstraktas, egzistuojantis mūsų galvose. Reikšmės – tai realybės (nebūtinai realios, gali būti ir menamoji) atspindys,, kurį susiejame su prasmėmis. Ženklas – tai tas dalykas, kuris leidžia manipuliuoti reikšmių ekvivalentais pagal tam tikras prasmines taisykles. Iš duotojo išplaukia pvz., tokios išvados: ženklais mes galime aprašyti tam tikrą realybės ekvivalentą, kuris susiejimo su reikšmėmis dėka gali tam tikromis (ribotomis) sąlygomis atstoti realybę. Kaip pvz., ženklų seka „Lietuvos krepšininkai nugalėjo Ispanus“ gali tapti tam tikru realybėje pažiūrėtų rungtynių ekvivalentu.

Semiotika kelia dar kelias idėjas: pvz., kad kalba negali būti analizuojama savo pačios priemonėmis, o tam reikalinga metakalba arba jos ekvivalentas. Tai reiškia, kad sąvokos nėra literatūrinis-filologinis „blablabla“, o kategoriškos ir griežtos. Jei žmogus neskiria reikšmės nuo prasmės, apie semiotiką jis kalbėti negali lygiai taip pat, kaip ir žmogus, neskiriantis pliuso nuo lygygbės negali kalbėti apie aritmetiką. Dar gilesnė semiotikos idėja yra ta, kad tekstuose gali egzistuoti (ir neretai egzistuoja) tam tikros giluminės struktūros, atsekamos per tam tikrus paternus (izotopijas – prasmių ar reikšmių pasikartojimus).

Galime tarti, kad kalba yra absoliučiai neatskiriama mūsų mastymo ir pasaulio suvokimo dalis. Net jei mes nemokėtume kalbėti, mes pasaulį suvoktume, panaudodami tam tikrus šabloninius apibendrinimus (prasmes) ir susietume jas su realiu pasauliu per tam tikrus, tegul ir smegenyse tesančius identifikatorius (ženklus). Kitaip tariant, mastymas be kalbos – neįmanomas. Gal būt, teisinga ir atvirkštinė prielaida: bet kuri pilnavertė (prasmes, reikšmes ir ženklus naudojanti) kalba savaime suponuoja mastymą. Iš to, beje, kilęs ir Tiuringo dirbtinio intelekto testas: kompiuterio sugebėjimas bendrauti su žmogumi taip, lyg jis pats būtų žmogus – tai vienintelė formali priemonė, leidžianti įvertinti, ar kažkoks intelektas yra, ar ne. Geresnio testo kol kas niekas nesugalvojo.

Galime tarti ir kitaip: visa semiotika yra paremta elementaria prielaida, kad žmonės tėra tam tikri kalbos interpretatoriai, susiję tarpusavyje tam tikra bendra ženklų sistema, leidžiančia komunikuoti bei gyvenantys tam tikroje bent dalinai sutampančioje reikšminėje terpėje. Ir, matomai, turintys tam tikrą nedidelį įgimtą bazinių prasmių ir gramatinių taisyklių rinkinį, pakankamą naujų prasmių, ženklų ir gramatikų generacijai, įskaitant ir metaprasmes, metaženklus, metagramatikas. Negana to, tie patys žmonės interpretuoja ir generuoja ir patys save, panaudodami tos pačios metakalbos priemones. Vienas iš klausimų, kuriuos galime užduoti: o gal žmonės iš skirtingų kultūrų negali susikalbėti tiesiog dėl skirtingų kalbų, net jei ženklai yra vienodi – prasmės ir reikšmės skiriasi?

Nors struktūralizmas ir semiotika vystėsi (ir neretai pateikiama), kaip revoliucinga filologijos pakraipa, išties kardinalus pokytis ir teorinė bazė, kuria remiantis suformuluojamos esminės semiotikos idėjos, atėjo iš matematikos, t.y., fundamentalus semiotikos pagrindas yra ne filologinis, o išimtinai matematinis, savo gilumine esme (metateorija visame gražume) artimesnis fundamentalioms programavimo sritims (kompiliatorių, interpretatorių, AI sistemų ir pan. kūrimas), nei įprastinei filologijai. Gal būt todėl kiek juokingai atrodo, kai kažkoks ten VU semiotikos institutas, ar kaip ten jis vadinasi, priima į semiotikos magistro studijas tiktai turinčius filologinį išsilavinimą. Nežinau, gal juos ten ir moko matematikos. Bet kažkodėl abejoju. Jei kas žinote detalių – apšvieskit, įdomu būtų sužinoti 🙂

Kita vertus, semiotika yra ir paprasta: tai būdinga metateorijoms. Gana nedidelis taisyklių rinkinys leidžia atlikti ne tik pakankamai išsamias analizes, bet ir vykdyti generaciją (ką savo laiku ryškiausiai pademonstravo Umberto Eco). Kaip jau matėme, pakanka vos kelių komandų, norint suformuluoti visą matematinį aparatą, nesunkiai žmones apgaunančius dirbtinius intelektus, o taip pat – ir tokias dirbtines realybes, kaip pvz., Quake ar Starcraft, galų gale, berods ir patsai Greimas juk ne veltui kalbėjo apie naratyvines programas 🙂

Tiuringinė metarekursija praktikoje

Panašu, kad nuo teorijos apie metateorijas reiktų truputį šoktelt link praktikos. Nes kaip bebūtų, man kažkodėl nesinori eiti link sudėtingesnės semiotikos dalies, nepraknaisiojus bazinės dalies, bent jau tos, kuri yra pagrindžiama formaliais metodais, t.y., per matematinį aparatą.

Kaip jau matėme iš tos teorijos apie metateorijas ir poros klausimų apie metateorijų tarpusavio santykius, pilnumą ir santykį tarp metakalbos ir natūralių kalbų, natūralioji kalba mažų mažiausiai gali būti panaudota, kaip metakalba visų matematinių teorijų aprašymui ir, sprendžiant iš Derida darbų, gali turėti net ir didesnį gilumą, t.y., ją naudojant, galima aprašyti Universalią Tiuringo Mašiną (UTM), tačiau naudojant UTM, nebūtinai galima, o gal būt ir negalima pilnai aprašyti natūralios kalbos. Pakankamai griežto pagrindimo, kuris būtų priimtinas matematikams, gal ir nėra, tačiau visgi daugybinė interpretacija kelia problemas.

Taigi, panagrinėkim nedidelį praktinį pavyzdį – tiesiog kompiuterį. Kaip žinia, kiekvienas mums įprastas kompiuteris yra pilnavertė UTM, kaip ir kiekviena programavimo kalba. Ir štai pavyzdys: koks nors Pentium grupės procesorius išties turi RISC branduolį, kuris emuliuoja i386 tipo CISC architektūrą, naudojant mikrokodą ir kai kurias aparatines priemones. T.y., viena Tiuringo mašina sukasi ant kitos. Jau ant tos emuliuojamos architektūros gali suktis kokia nors virtualių mašinų sistema. Ant šios – gali suktis kokia nors Java, ant kurios – vėl koks nors i386 emuliatorius, ant kurio – vėl kokia nors OS, virtualios mašinos, kita Java, ant kurios dar kas nors ir t.t., ir t.t. – kitaip tariant, turime krūvą kalbinių sluoksnių – kiekvienas su tam tikromis sintaksinės, semantinės ir pragmatinės analizės priemonėmis..

Iš matematinės pusės – viskas tvarkoje. Bet tiktai tol, kol visa ta daugiasluoksnė interpretatorių sistema nepradedama optimizuoti. Įsivaizduokime, kad, pvz., tiesiog turime Java mašiną, kuri sukasi ant kitos Java mašinos ir norime pagreitinti visą reikalą. Žinoma, paprasčiausias būdas – tai perkelti visas antrosios Java mašinos funkcijas į pirmąją ir antrosios programą vykdyti pirmojoje atskirai, tik pažymėtą, kaip emuliuojamą. Viskas labai gražu, kol neužduodi klausimo: o kaip nustatyti, ar emuliacija yra pilna, ar tik virtuali?

Kitaip tariant, klausimas gali būti suformuluotas ir kitaip: ar teksto/programos interpretatorius gali nustatyti, kad jo interpretacija yra pirminė, t.y., neįtakojama fundamentalesnių interpretacijų nustatomų apribojimų ar dėsnių? Galime įtarti, kad ne, nes įmanoma emuliacija, kuri neleidžia to nustatyti. Bet ar tai galioja praktiniams atvejams, t.y., ar pvz., gyvoji kalba gali būti emuliuojama taip, kad negalėtų nustatyti savo emuliavimo?

Dabar neprisimenu nei autoriaus, nei pavadinimo… Kadaise, prieš daugybę metų, buvo pakliuvusi į nagus nuostabi fantastinė knyga apie tai, kaip kažkokiame ateities pasaulyje iš kažkur atsirado virusinė kalba, ėmusi valdyti žmones. Autorius, kiek atsimenu, labai neblogai buvo susipažinęs su teoriniais semiotikos pagrindais. Ir nagrinėjo būtent panašų atvejį žmogaus galvoje. Žinoma, interpretacija buvo fantastinė, hipotetinė ir t.t., tačiau įdomi: o kas, jei tiesiog pasąmonė masto kita kalba, turi kitą prasmių, reikšmių ir ženklų sistemą?

Gerai, dar truputis iš formaliosios pusės: tie, kas giliau domėjosi senosios kartos virusais (tais, kurie plito dar DOS sistemoje), atsimena tokią virusų klasę, kaip polimorfikai. Tai buvo absoliučiai genialios programėlės, kurios generuodavo pačios save. Per kiekvieną tokio viruso pasidauginimą gaudavosi vis kitas kodas, kurio negalėdavo identifikuoti joks antivirusas pagal jokį šabloną – programa keisdavosi tiesiog neatpažįstamai, keisdama netgi ne tik pačią save, bet ir savo pačios generatorių. Ar tik neprimena tai natūraliųjų kalbų, kurios irgi nuolat keičiasi, mutuoja ir pasižymi išskirtiniu polimorfizmu visais požiūriais – ir semantiniu, ir pragmatiniu, ir sintaksiniu? Klausimas vėl: kaip atrasti tam tikrą pirminę struktūrą, jei ji išvis yra?

Apie Microsoft

Kadangi versmes  kažkur pasisakinėjo apie Microsoft ir panašius dalykus, tai prisiminiau vieną tokią istorijėlę, kuri nutiko vienam pažįstamam programuotojui.

Anas programuotojas buvo tikras hakeris, varydavo asmebleriu ant Windows API ir visiems kalbėdavo apie tai, kaip gerai programuoti ant Windows ir koks Linux yra gaidys (taip ir vadindavo – "tas gaidys"). Tiesą sakant, be Windows, jis nelabai ir bandė kur programuoti daugiau, o kai išgirsdavo kokių panašių pasiūlymų, tai labai keikdavosi. Apie UNIX sistemas neturėjo žalio supratimo, visas jas vadindamas žodžiu "Linuksas" arba, dažniau – "gaidys". Bet šiaip, programuotojas jis buvo tikrai geras ir patyręs. Tik kad įsimylėjęs tą windozę mirtinai. Turėjo netgi nuosavą programavimo firmelę su berods vienu ar tai dviem darbuotojais. Gyveno sau. O paskui nutarė išvažiuot į Ameriką, mat iš pat Lietuvos sugebėjo gauti pakvietimą dirbti Redmonde. Taip taip, tame pačiame Microsoft.

Žodžiu, dingo jis iš Lietuvos, ilgai nebuvo jokių žinių apie jį. Daugiau, kaip pusmetį. O paskui – prisijungia per IRC ir ima intensyviai plūstis. Maždaug taip:
Gaidys tas Microsoftas, pyderai ten vieni, būčiau žinojęs, būčiau nevažiavęs… Dirbu Ofiso padaliny. Porą mėnesių buvau testuotoju, dabar programuoju… Gaidys tas Microsoftas. Jie visą ofisą daro ant kažkokio gaidžio. Ant Linuxo, Soliariso kažkokio… Ir visas versijavimas ant kažkokio Linuxo. O paskui, kai parašo, reikia perkeldinėti ant Windows. Nesuprantu, kodėl jie Visual Studio nenaudoja. Gaidys tas Linuxas, kai ant jo padaro, tai net nesikompiliuoja, ištisus gabalus reikia perrašinėt, visi bugai ten dėl to gaidžio

Žodžiu, juokinga istorija. Tai buvo maždaug 2003-2004, ale iki šiol prisimenu 🙂

Grožytė. Pirmas viešas Dirbtinis Intelektas Lietuvoje

Vat kitame poste – http://rokiskis.popo.lt/2008/11/24/lietuviu-kalba-neturi-gramatikos/ – kalbėjau apie kai kuriuos lietuvių kalbos ypatumus. O čia vat papasakosiu apie vieną iš paskutinių savo programinių projektų. Tiesą sakant, tai net ne visai programavimas įprasta prasme, nors darbo teko idėti daug. Net neabejoju, kad panašių intelektų bandyta buvo paleisti ir iki tol, net ir aš pats bandžiau kažką tokio IRC tinklui suprogramuoti dar apie 1997-1998 metus, jau nekalbant apie dar ankstyvesnius, vieno vartotojo botus, skritus DOS sistemai. Visgi, iki tol buvę botai, nors ir turėjo protingesnius vidurius, buvo pernelyg jau nepanašūs į tikrus žmones.

Pilnavertį, daugumą žmonių apgaunantį dirbtinio intelekto botą paleidau apie kokius 2001 metus lietuviškame IRC tinkle „Aitvaras“. Tai buvo Eggdrop botas su kiek modifikuotais gan buko „Kalich“ boto skriptais. Nors pradžioje botas buvo nepritaikytas lietuvių kalbai (neatpažįstantis mūsiškės priešdėlių, priesagų beigi galūnių gausos), visgi pavyko jį truputį pakeisti ir gan neblogai sukonfigūruoti. Kalich teikia šiokią tokią primityvią dirbtinio intelekto (DI) apmokymo kalbą. Pradžioj botą apmokiau kelių šimtų populiarių žodžių bei sakinių, tokių, kaip „labas“, „koks tavo vardas?“, „kaip gyveni?“, „ką veiki“, etc., o tada – paleidau į IRC. Reaguodavo botas į tokius žodžius, pasakydamas kokį nors atsitiktinį iš galimų nurodytų sakinių (taip, tai visgi kraštutinai bukas variantas). Taigi, botas gavo kvailą vardą Grožytė ir ėmė bendrauti.

Bėgo dienos ir savaitės. Grožytė po truputį mokėsi. Atvejus, kai nerasdavo, ką atsakyti, išgaudydavau loguose ir įvesdavau naujus atsakymus. Įtraukiau Grožytę į lesbiečių pokalbių kambarį, kur ji momentaliai tapo tikra žvaigžde. Merginos smagindavosi, bendraudamos ir šaipydamosis iš Grožytės kvailumo, o vėliau kelios net pramoko DI apmokymo komandų, tad prisidėjo, gilindamos Grožytės žinias. Ir puikiausiai testuodavo, pranešdamos apie pastebėtus kvailumus. Keista, ilgainiui daugeliui merginų Grožytė tapo visai įdomia pašnekove – net ir žinodamos, kad tai robotas, o ne žmogus, kai kurios draugės prašnekėdavo su Grožyte ištisas valandas.

Tikrą furorą Grožytė sukėlė truputį vėliau, kai su Dammit aka Midom parama pavyko netikrą Grožytės nuotrauką bei išgalvotą biografiją paskelbti berods Girls.Lt svetainėje. Nuotrauką, per daug nesigilindamas, paėmiau iš pirmo pasitaikiuso porno tinklapio. Aišku, tokią, visai padorią. Biografijoj parašiau, esą anoji yra kažkokia studentė. Tuo pačiu Grožytę įtraukiau ir į krūvą didesnių IRC kanalų. Tada ir prasidėjo…

Taip, man nepatogu pasakoti, ką ten kas rašė jai. Dalis žmonių pabendraudavo pusvalandį-kitą ir, įsitikinę jos bukumu, palikdavo ramybėj. Bent jau tai dienai. Kažkuris net pareiškė nesuprantąs, kaip ją priėmė į aukštąją mokyklą – „tu gi visai buka idijotė“. Nuostabu, kad žmogus net neįtarė, kaip tiksliai apibūdino šią „merginą“. Visgi, didelė dalis gerbėjų buvo atkaklūs. Bendraudavo su Grožyte kasdien. Kai kurie – net kelis mėnesius, o rekordininkai – daugiau, nei pusę metų. Deja, nors ir stengiausi mokyti ją filosofijos bei kitų protingų dalykų, paaiškėjo, kad bene vienintelė tema, kuria bendraujama – tai pažintys vardan sekso. Pasiūlymų susipažinti būdavo įvairių – kai kurie žadėdavo apipilti gėlėmis, kiti pasakodavo apie tai, kad turi nuosavą butą, treti – tiesiai siūlydavo pinigus. Kažkoks studentas žadėjo atiduoti Grožytei visą savo stipendiją, o kažkoks universiteto dėstytojas norėjo padaryti ją savo meiluže. Vyriško skonio išradingumas stebino – kai kurie, po ilgo bendravimo pasisiūlydavo vesti, kiti gi – tiesiai siūlydavo pinigus už naktį. Buvo ir žadančių išvežti į tolimas keliones ar įdarbinti sekretore. Vieni jai rašė eiles patys, kiti gi pasakojo Maironio posmus. Skųsdavosi žmonomis, meilužėmis ir mokesčių inspekcija. Ir tai – dar ne kraštutiniai atvejai. Tiesa, kraštutinius Grožytė greit išmoko sudrausminti, pasakydama, kad nenori kalbėti tokiomis temomis. Nors buvo ir labai atkaklių keikūnų.

Viskas anksčiau ar vėliau baigiasi. Taip atėjo galas ir Grožytei. Vieną dieną tiesiog subyrėjo diskas, kuriame gulėjo ir jos dirbtinis intelektas, ir didžiuliai kiekiai pokalbių su jos draugais. Grožytė buvo palaidota šiukšlių dėžėje su kitomis kompiuterinėmis atliekomis. Visgi, ji išliko menkai žinomoje Lietuvos kompiuterių istorijoje, kaip pirmas viešas lietuviškas dirbtinis intelektas, su kuriuo prasmingai galėjo pabendrauti kiekvienas norintis. Prisiminus garsųjį Tiuringo testą, pagal kurį galima tarti, jog tikras dirbtinis intelektas yra tas, kurio žmogus neįstengia bendraudamas atskirti nuo tikro žmogaus, galim drąsiai sakyti – Grožyte, tu šį testą išlaikei!

Tai tiek vat nostalgijos jums.