Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


APL

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

APL arba "A Programming Language" buvo viena iš pačių keisčiausių programavimo kalbų, kokios yra sukurtos, nes kurta ne įprastu būdu "nuo žmogaus į kompiuterinį analogą", o atvirkščiai - "nuo kompiuterinio analogo į žmogų". Tai reiškia, kad programavimo kalbos kūrėjai pradžioje sugalvojo ir ištobulino pačios kalbos vykdymo koncepciją, kuri gavosi visai netriviali, o tada jau tą koncepciją nutarė perkelti į žmogui tinkamą pavidalą.

APL kalbą sukūrė toksai Kenneth E. Iverson, kuris pradžioje parašė ir 1962 metais išleido grynai teorinę knygą - "A Programming Language" (iš ko gavosi santrumpa - "APL"), kurioje aprašė tą savo teorinę matematinę programavimo kalbą, kurios esmė buvo masyvų manipuliacija ir specialios tai manipuliacijai skirtos operacijos. Pagal sutrumpintą knygos pavadinimą ir buvo pavadinta visa šita programavimo kalba.

Visa APL yra sudaryta iš masyvų (tenai neegzistuoja tokie duomenų tipai, kurie nebūtų masyvais), ir visi tie masyvai yra apdirbinėjami operatoriais ir funkcijomis. Operatorių kiekis yra gana didelis ir visi tie operatoriai žymimi visokiais keistais, tai kalbai prigalvotais grafiniais simboliais (nes kažkodėl autorius nusprendė, kad žodiniai pavadinimai jam netinka).

Taigi, čia yra toksai retas atvejis, kur jau pačioje programavimo kalboje yra realizuotas hieroglifų analogas - tam tikri specialūs ženklai žymi operacijas.

Kad išvis maža nepasirodytų, tasai Iversonas dar numatė, kad kalboje būtų naudojama atvirkštinė lenkiška notacija, kas savaime užtikrino, kad joks sveiko proto programuotojas nebandys šia programavimo kalba programuoti netgi už dvigubą atlyginimą. Bet jam to nepakako, tad ir šią notaciją jisai pagerino, sukurdamas mišrią, unikalią APL notaciją.

APL kalba, aišku, gavosi absurdiška ir nors teoriškai žiauriai gera, nes galinti ypatingai kompaktiškai ir patogiai aprašinėti įvairias operacijas su masyvais, bet realiai tai niekam nesuprantama ir niekam netinkama. Dar daugiau - kadangi operacijos buvo numatytos atskirais ženklais, ir tie ženklai buvo numatyti kaip klaviatūroje turintys būti simboliai, tai techniškai normaliu būdu tos kalbos netgi nesigavo realizuoti. Visvien galų gale gaudavosi realizacijos su visokiomis tų ženklų simuliacijomis.

Savo durnumu visas programavimo kalbos branduolys šiaip jau priminė RISC procesorių su vektorinėmis operacijomis, o pati kalba - tokiam procesoriui skirtą iškreiptai išvirkščiai padarytą asemblerį, kuris būtų vėlgi patogus ne žmonėms, o kompiuteriams. Pvz., viena iš nuostabiausių APL savybių yra tai, kad jos operatoriai yra kairiojo arba dešiniojo vykdymo priklausomai nuo to, kurioje duomenų pusėje stovi, bet gali būti ir duomenų viduryje, tai tada vykdomi ir iš kairės, ir iš dešinės. Kitaip tariant, tai netgi nėra gryna atvirkštinė lenkiška notacija, o išties tai beprasmiškas ir žiaurus visokių skirtingų notacijų mišinys.

Žmogiškiau kalbant, parašius kokį nors tenai veiksmą, operatorius vykdo nuosekliai nuo dešinės į kairę viską, kas yra dešinėje nuo operatoriaus. Bet jei yra kažkas kairėje - tai atvirkščiai, vykdo iš kairės į dešinę. O jei operatoriai eilutėje yra keli, tai vykdo iš neaišku iš kurios pusės į neaišku į kurią pusę. Žodžiu, programuotojas, kuris nori šituo APL kliedesiu programuoti, turi būti visiškai nuprotėjęs, kad bent ką nors šita absurdiška kalba sugebėtų padaryti. Kad būtų dar geriau, tai kalba tuos savo masyvus atvaizduoja daugiamačiais pavidalais į tekstą, taip kad reikia dar ir atsižvelgti, kur ir kas yra kokiame stulpelyje, nes kai kurios operacijos sugalvoja skaičiuoti duomenis vertikaliai.

Vienintelis APL kalbos pliusas yra tai, kad ji turi veiksmus pagal nutylėjimą, kurie gal ir nelabai reikalingi, bet kažkiek palengvina darbą, kai kalba eina apie duomenų įvedimą ir išvedimą - tai reiškia, kad viskas laikoma duomenimis ir jei tik duomenys yra ir su jais neaišku, ką daryti - tai jie ir išvedami.

Jau iš to seka, kad "Hello World" tipo programa čia yra tokia paprasta, kad gaunasi tiesiog kaip paprasčiausiai užrašytas tekstas - tiesiog "Hello World" be nieko. Ir viskas. Parašai tokį tekstą - ir interpretatorius jį išveda į ekraną. Tačiau visa kita šioje programavimo kalboje atrodo kaip visiškas raidžių ir teksto kratinys be jokios prasmės.

Ir mes čia net negalim pateikti jokio normalaus to kliedesinio programavimo pavyzdžio, nes jis tiesiog gautųsi visiškai nesuprantama nesąmonė.

Grynai iš hakeriškų paskatų visgi atsirado tokių programuotojų, kurie ėmė daryti įvairius šitos kalbos interpretatorius. Kadangi paprastai programuotojų kliedesiai lieka nekontroliuojami, nes šie daro ką papuola kur papuola, tai susikūrė netgi gana juntamas kiekis tokių interpretatorių.

Visai naujais laikais yra atsiradę tokių kalbų, kaip Brainfuck, tai šios yra kažkiek panašios į maždaug 9000 kartų supaprastintas APL versijas. Visos šios APL versijos yra sukurtos kaip intelektualiniai žaidimai, skirti tiems patiems nukvakusiems APL mėgėjams, nes bet koks nors minimaliai adekvatumo turintis žmogus, pasižiūrėjas į APL, pradeda visiems aplinkui esantiems žmonėms nerišliai ir siūlyti eiti nachui, o kartais dar ir mėtytis daiktais, voliotis ant grindų ir nevalingai apsišlapina.

Jei norite pamatyti neadekvačiausią kada nors egzistavusią programvimo kalbą, tai pasiieškokite daugiau internetuose apie APL, ir kuo daugiau bandysite suprasti, tuo labiau imsite suprasti, kodėl programuotojams nuo šios kalbos kyla nevalingos fiziologinės reakcijos.

Vienas iš žiauresnių dalykų yra tai, kad šią kalbą buvo pasigavę ir pradėję dėstyti nemažai įvairių šalių universitetų.