Scenoje vėl Redmondo rastamanai. Šįkart jų čempionai, Windows Installer komanda.
Citata iš dokumentacijos (apie reliacinės bazės stulpelį):
===============================================================
Display (type Integer)
----------------------
The number in this field specifies the order in which the
feature is to be displayed in the user interface.
The value also determines whether or not the feature is
initially displayed expanded or collapsed. If the value is null
or 0 (zero), the record is not displayed.
* If the value is odd, the feature node is expanded initially.
* If the value is even, the feature node is collapsed initially.
===============================================================
(http://msdn.microsoft.com/en-us/library/aa368585(VS.85).aspx)
Gražu, ar ne? Ėmė ir sukišo nesusijusius parametrus į vieną skaičių. Matyt, taupo baitus. Windows Installeryje. Ha ha!
Bet čia nieko. Sunku patikėti, bet tai yra gėlytės, lyginant su tikru perlu. Toliau kalba eina apie kitą lentelę, Signature, su kurios pagalba galima sistemoje ieškoti, ar yra jums reikalingas failas. Pvz., ar yra .NET'as ir kokia jo versija. Viskas puiku, viskas faina. Bet štai padarai, ir neveikia. Tada žiūri kodėl ir randi šitokį siurprizą (skaitykit atidžiai):
===============================================================
Languages (type Text)
---------------------
The languages supported by the file.
MinVersion (type Text)
----------------------
The minimum version of the file, with a language comparison.
If this field is specified, then the file must have a version
that is at least equal to MinVersion. If the file has an equal
version to the MinVersion field value but the language specified
in the Languages column differs, the file does not satisfy the
signature filter criteria.
Note: The language specified in the Languages column is used
in the comparison and there is no way to ignore language. If you
want a file to meet the MinVersion field requirement regardless
of language, you must enter a value in the MinVersion field that
is one less than the actual value. For example, if the minimum
version for the filter is 2.0.2600.1183, use 2.0.2600.1182 to find
the file without matching the language information.
===============================================================
(http://msdn.microsoft.com/en-us/library/aa371853(VS.85).aspx)
Дорогая редакция, я фалломорфируюсь. Mėgstu sakyti, kad aš irgi noriu tokios žolės, bet šiuo atveju, tai nu ir nafig, tokio šūdo aš nerūkysiu.
Neapsiimsiu aiškinti kas čia negerai. Kad apsakyti tai žodžiais, reikia būti poetu. Ir dar, ko gero, rašyti klasikine kalba ir hegzametru. Na, jūs suprantat kur lenkiu.
Jeigu kažkam iš skaitytojų neprogramuotojų neaišku apie ką aš čia, patikėkite mano žodžiu, tai tas retas atvejis, kai palaimintas tas, kuris sėdi ir karpo ausimis nieko nesuprasdamas. Tikrai. Žmogų, be daugelio metų dvasinių treniruočių, staiga suvokusį šito kretinizmo mastą, gali ištikti nihilizmo priepuolis.
O programuotojams tema pamąstymui: jeigu komanda, kuri daro vieną iš core OS komponentų, sugeba paleisti į productioną šitokį kolosalaus masto mėšlą, ką galima manyti apie bendrą to komponento kokybę? Ar galima daryti prielaidą, kad kiti, į proto ribas telpantys, to komponento aspektai, yra geresni tyčia, ar taip gavosi nesąmoningai? Ir svarbiausia, kaip jaustis vartotojui, kuriam pateikiamas softas yra pošlykštis dėl to, kad pastatytas ant mėšlo krūvos, kuriai nepateikiama alternatyva?
Mieli kolegos, susimildami, būkit geri, nevartokite darbe svaigalų...
Vakar darbe pabaigiau vieną darbelį ir prieš dėdamas jį į revizijų kontrolę, nusprendžiau pabūti doras ir padaryti tai, ką mes vadinam TMR: Total Massive Rebuild. Tai veiksmas, kai perkompiliuoji visai visą produktą, kad įsitikinti, kad niekam nieko nesugadinai.
Nu cvs up, nu make clean, nu make all. Įprasti dalykai. Kompiliuojasi.
Tik kompiliuojasi neilgai, sustoja, nes sugriūna kažkuris unit testas. Galvoju, WTF? Bet aiškintis neturėjau laiko, tai užsiėmiau tuo šiandien.
Gana greitai išsiaiškinu kodėl griūna testas -- kolega neseniai padarė pakeitimą, visai gerą pakeitimą, dėl kurio šita problema ir turi išlįsti, o ne tyliai likti praignoruota. Viskas lyg ir tvarkoj. Bet vienas dalykas netvarkoj -- o kodėl *man* išlenda šita klaida, o kitiems ne?
Padebuginus paaiškėja, kad nesuveikia štai toks kodas:
mkdir ("%TEMP%/sub1/sub2/sub3/.../sub28/sub29");
(Tik vietoj %TEMP% ten buvo tikras kelias į temp direktoriją: C:\Users\Vytautas.Saltenis\AppData\Ir\Dar\Kažkas\Nepamenu\Kas\. Nu ir, aišku, vietoj daugtaškio visi trūkstami sub-sub-sub.)
Įtarimas aiškus -- kažkodėl viršija MAX_PATH. Betgi nusikopijuojam tą eilutę, pamatuojam jos ilgį ir matom, kad ne, neviršija. Jos ilgis 248. Va šitoj vietoj prasideda kondicija "O-ba...".
Pirma mintis: gal aš neteisingai atsimenu kiek yra MAX_PATH? Pasitikrinu, 260. Reiškia teisingai, ne tas...
Tada tikrinam klaidos kodą. errno po mkdir() būna 2, kas yra ENOENT, ką dokumentacija iškilmingai išaiškina: "Path was not found.". Blet. Koks dar not found? Aš gi sukurti bandau!
Gūglinam kaip ant Vindauso padarytas mkdir(). Randam, kad ten jis yra plonas wrapperis ant CreateDirectory() -- "gerai bent tiek, o ne atskira realizacija", spėju pagalvoti.
OK, tad kaipgi galima priversti CreateDirectory() nesuveikti? Ten yra kažkoks antras parametras, kažkas su security, gal ten kažkas ne taip? Nu, debuginam visaip kaip išsijuosę, ir žiūrim, kad mkdir() padarytas maždaug va taip:
int mkdir (char *path)
{
return CreateDirectory (path, NULL);
}
Blyn. Nu irgi nėra kam nesuveikti... Nebent tas NULL 20 metų veikė, o dabar neveikia. Vėjai.
Bet čia eiga pasisuka link atomazgos, prieinama prie CreateDirectory() dokumentacijos. Paskaitom prierašą prie pirmo parametro, ir liekam "в охуе":
"There is a default string size limit for paths of 248 characters. This limit is related to how the CreateDirectory function parses paths."
Bingo! Pasirodo, visgi susidūriau su limitu, pasiaiškinam kodėl kiti nesusidūrė, pataisom ir ilgai ir laimingai gyvenam. Boring.
The *fun* part! Kuo galvojo tas senovinis Microsoft darbuotojas, kuris parašė CreateDirectory()? Ar jis išvis galvojo? Ne, nu rimtai. Gaunasi taip: mūsų sistemoje apribojimas kelio ilgiui yra 260, bet aš chujovas programuotojas, dėl to nemoku suprogramuoti taip, kad būčiau suderinamas su likusia sistema ir padarysiu 248 ir dokumentacijoje parašysiu, kad aš chujovas programuotojas. Rimtai, taip išeina. Paskaitykit dar kartą citatą iš dokumentacijos:
"There is a default string size limit for paths of 248 characters. This limit is related to how impaired was the original author of CreateDirectory."
Pakalbam apie tai su kolegomis, pažvengiam, aptariam, paspėliojam kodėl 248, o ne 246, kodėl išvis yra toks MAX_PATH ir kodėl jis 260, o ne 256 ir pan... Linksmiausia išsakyta versija tokia: o nefig tau kurti direktorijos, į kurią paskui netilps 8.3 failas! Dėl to ir MAX_PATH - 12 = 248. Skamba įtikinamai ;-)
Akylesni skaitytojai gal pastebėjo ir iki šiol nesupranta kodėl gi man neveikė? Juk mano kelio ilgis buvo 248, ir funkcija priima 248. Turi veikti. Cha cha! Nieko jūs nesuprantat! Chujovą funkciją reikia ne tik chujovai suprogramuoti, ją paskui dar reikia ir chujovai dokumentuoti! Kitaip gausis tik pusiau chujova funkcija. Iš tikro jinai veikia su keliais iki 247 simbolių ilgio imtinai, o dokumentatorius parašė kokio dydžio buferis ten viduje naudojamas keliui kartu su terminuojančiu nuliu laikyti.
Atrodytų, tokia vat nuotaikinga istorija. Ir maniau, kad toliau jau nėra kur, kad čia viršūnė. Nope, naivu. Betvarkydamas mūsų kodą, užklydau į kitos įdomios funkcijos GetTempFileName() dokumentaciją. Skaitom pirmo parametro aprašymą:
"The directory path for the file name. [...] The string cannot be longer than MAX_PATH–14 characters or GetTempFileName will fail. If this parameter is NULL, the function fails."
Uch ty! Štai jums ir 246! Man dabar baisu į gūglą įvesti "MAX_PATH - 17", bijau, kad ką nors suras :-)
Beje, plika akim tai sunkiai įžiūrima, bet ten dokumentacijoj parašyta ne "MAX_PATH-14". Rimtai, nejuokauju. Ten ne minusas, ten tipografinis brūkšnys, "En dash" vadinasi. Ir jeigu nukopijuosi tą daiktą į kodą, gausi keistų pranešimų nuo kompiliatoriaus, versijų kontrolės sistemos ir kitų "suinteresuotų šalių".
Va taip vat. Pyzdėc, gerbiamieji Redmondo programuotojai. Pyz-dėc.
Dideliausių sutapimų diena, kaip kitaip pavadint... Šiandien viename forume užtaikiau ant karštos diskusijos apie evoliuciją. Aptarinėjamas buvo vieno berazumio straipsnis, neva tai akivaizdžiai paneigiantis evoliucijos teoriją.
Well... Tyčiotis iš tokių rašliavų man yra kaip ir hobis, bet labiau mėgstu tuo užsiimti prie alaus bokalo ir diskusijos forma, o ne rašyti apie tai rebuttal straipsnius. Tačiau foruminėje diskusijoje akivaizdžiai trūko kai kurių svarbių punktų pabrėžimo, juos ir surašiau. O tada pagalvojau, kad gal ir platesnei visuomenei tai bus naudinga, o tie keli pipiriukai apie keistų žmonių keistas nuomones nepagadins bendro vaizdo.
Tad štai jūsų dėmesiui šventinis ne-IT straipsnis apie mokslines teorijas su konkrečiais pavyzdžiais kaip į jas reikia žiūrėti. Už brūkšnio bus suprantamiausia, jeigu prieš tai užmesite akį į straipsnį, apie kurį eina kalba. Tik perspėju, ten tekstukas ne silpnų nervų skaitytojams ;-)
------------------
Pakvaišęs kreacionistas rašo: "The theory of evolution is not a law, but a mere theory"... Helooo! Captain Obvious, pavadinime parašyta theory. Bet čia tik šiaip. Iš tono ir konteksto matosi, kad autorius norėjo pasakyti "guess" vietoj "theory". Kitaip tariant, jis nesupranta kas per monas yra mokslinė teorija ir kaip tai veikia.
Pradėkim nuo tos dalies, kur autorius yra atsitiktinai teisus. Evoliucijos teorija (kaip ir bet kuri kita mokslinė teorija) nebūtinai yra teisinga. Jinai gali būti netgi labai klaidinga (t.y. nesugebėti paaiškinti kad ir šimtų atskirai paimtų faktų ar stebėjimų rezultatų). Tik nuo to ji netampa mažiau teorija. Netgi dar daugiau: nuo to ji netampa mažiau teisinga! Paradoksas? Tuoj paaiškinsiu.
Aiškinant kas yra mokslinė teorija ir kaip tai veikia, man gražiausiai atrodo vienos fizikinės analogijos panagrinėjimas.
Atėjo vieną gražią dieną Izaokas. Ne, ne Abraomo sūnus, Jokūbo tėvas, o Izaokas Niutonas. Ir pareiškė, kad obuoliai krenta taip kaip krenta, o planetos sukasi taip kaip sukasi, nes gravitacija. Šiais laikais tai supaprastintai vadinama "Niutono fizika", o jeigu tiksliau, tai Niutono gravitacijos teorija. Ir buvo jinai ilgai, ir buvo jinai labai. XIX a. pabaigoje netgi buvo kalbama apie fizikos kaip mokslo šakos artėjimą prie pabaigos, nes jau kaip ir viskas paaiškinta, o ko dar trūksta, tuoj pat bus paaiškinta ir jaunuoliui sieti ateitį su fizika neperspektyvu. Ha ha.
Taigi buvo gravitacijos teorija, kuri nu офигеть kaip gerai viską paaiškino, išskyrus porą smulkmenų, kurių nepaaiškino, bet jos tokios smulkmenos ir tokios nežymios, kad jeigu teorijoje ir trūksta kažkokių detalių, tai jas užpildysim, o pati teorija nuo to niekaip nesugrius.
Tada atėjo Maksvelis ir kažką užrašė. Kadangi Maksvelis buvo matematikas, fizikai nelabai suprato ką jis ten užrašė ir netgi nelabai suprato kam to reikia.
Paskui atėjo Einšteinas. Kadangi jis dirbo nuobodų darbą patentų biure, turėjo laiko įsiskaityti į tai, ką užrašė Maksvelis. Kad kitiems būtų lengviau, jis netgi šį bei tą supaprastino -- aplinkiniai irgi pradėjo suprasti.
Long story made short, paaiškėjo, kad Niutono gravitacijos teorija subliuško, kad Einšteino bendroji reliatyvumo teorija paaiškina gravitaciją, o Niutono -- ne. Voila, turim paneigtos teorijos pavyzdį istorijoje.
Bet ar tikrai? Kai užsirašai ant popieros visą matieką, paaiškėja, kad Niutono fizika tėra atskiras Einšteino fizikos atvejis. Kai nagrinėjamų reiškinių greičiai yra daug mažesni už šviesos greitį, nelieka skirtumo, kuria teorija remiesi. (Papildomos analogijos iš matematikos: Makloreno eilutės yra atskiras Teiloro eilučių atvejis; kvadratas yra atskiras hiperkubo atvejis).
Ką mes iš šitos istorijos sužinome? Ogi tai, kad netgi subliuškusi teorija nėra klaidinga, ji tiesiog buvo papildyta kritiniu kiekiu naujos medžiagos, kad nusipelnytų naujo pavadinimo (ir tos naujos medžiagos autorių paliaupsinimo).
Ir šiaip, mokslininkai yra labai, Labai priekabūs kažkam, kas grasinasi tapti teorija. Kiek man žinoma, modernaus mokslo istorijoje nėra nė vieno atvejo, kad teorija kažkiek laiko būtų pripažinta, o paskui sutaršyta į druzgus, ir pakeista visiškai nesuderinama teorija. Nors pagal idėją tai ir gali nutikti. Tik labai neįtikėtina. Pagrinde dėl to, kad mokslines teorijas kuria ir, kas daug svarbiau, peržiūri, tikrina ir „aprobuoja“ ne tokie kretinai kaip Evolutionary Fraud, o žmonės, kurie realiai naudoja tą daiktą ant pečių, o ne tik pro jį valgo.
Kodėl teorijos turi savybę transformuotis į naujas, vietoj to, kad kolapsuotų? Juk nuolat randama tiek daug naujų faktų! O ir šiaip, netgi kai teorijos „aprobuojamos“, kartais jau būna žinoma faktų, kurių teorija nesugeba apžioti. Mechanika čia tokia: kad ir yra/atsiranda saujelė faktų, kurių nemodifikuota teorija nepaaiškina, yra šimtai faktų, kuriuos paaiškina. Ir stačiai nesuvokiama situacija, kad turimi šiai dienai faktai būtų toks kruopštus viso reiškinio poaibis, kad jam paaiškinti labiausiai pirštųsi kardinaliai neteisinga teorija.
(Šioje vietoje būtina pastebėti, kad žmonijos istorijoje tokių klystkelių buvo didelis daug, tik jie arba buvo iki šiuolaikinio mokslo atsiradimo, arba „plaukioja“ visai nemoksliniuose sluoksniuose, kur fenomeno prigimties paaiškinimas nėra vertybė).
Dar viena teorijų savybė, užtikrinanti jų ilgaamžiškumą ir atsparumą ją iš pašaknų graužiantiems naujiems, nepaaiškinamiems, faktams, yra modelis. Paaiškinimų rinkinys be modelio nėra teorija. Teorija, su modelio pagalba, turi sugebėti paaiškinti ne tik šiai dienai žinomus faktus, bet ir naujus.
Skamba kaip science fiction? Taip, tik ne fiction. Pure science. Modelis yra formalizmų rinkinys, sutalpinantis žinomus faktus į bendrą kompleksą, plius apibrėžiantis tam tikrą aibę galimų naujų faktų. Kuo tikslesnis modelis, tuo didesnę aibę naujų faktų jis paaiškins be išplėtimo. Makes sense? Gerai, reiškia, tu gudresnis už tą idiotą, kuris bando ant pirštų paneigti evoliuciją.
Taigi, toks tad ekskursas į What Science Is and How It Works. (Beje, ypatingai puiki knyga!)
Dabar, kai jau išmanom apie teorijas, galim grįžti konkrečiai prie evoliucijos.
Pašalinkim dar keletą miskoncepcijų:
0. Darvino teorija NElygu evoliucijos teorijai. Santykis tarp Darvino teorijos ir evoliucijos teorijos yra maždaug toks pats, kaip santykis tarp mano aukščiau aprašytos Niutono gravitacijos teorijos ir Einšteino bendrosios reliatyvumo teorijos. Beveik šimtaprocentinė analogija.
1. Evoliucijos teorija NEnagrinėja gyvybės atsiradimo klausimo. Visos kalbos apie Urėjaus-Milerio eksperimentą, apie ląstelės formavimąsi iš aminorūgščių sriubos yra oftopikas evoliucijos kontekste. Nesakau, kad tai neįdomios temos, tiesiog nereikia komplikuoti reikalo, kai ir taip yra problemų suprantant patį reikalą.
2. Dėl šuns veisimo tol, kol gausi katę -- complete bullshit! Pažiūrėkit į pudelius ir bolonkes ;-). O jei rimtai, tai evoliucija šito klausimo irgi NEnagrinėja. Labai svarbu suprasti šitą subtilų skirtumą. Evoliucijos teorija NEteigia, kad vienąkart išsišakojus rūšims, jos gali kada nors tolimesnės evoliucijos eigoje grįžti. Ji, žinoma, to ir neneigia, bet pagrinde dėl to, kad ji šito klausimo išvis nenagrinėja.
Given all of this, tas Evolutionary Fraud'o skaitinys jau pirmoje pastraipoje, penktame sakinyje parodo, kad autorius nesupranta apie ką kalba. Ergo, visko kas žemiau galima (ir reikia) net nenagrinėti. Tad, susimildami, jeigu matote straipsnį apie evoliucijos (ar didžiojo sprogimo, ar reliatyvumo teorijos, ar kitos pagrindinės mokslinės teorijos) paneigimą kokiame nors leidinyje, kuris nėra „Nature“ arba „Science“, būtinai atsiverskite redakcijos skiltį ir pažiūrėkite kas tai per leidinys ir ar galima juo tikėti.
Tai jau beveik kaip ir viskas. Dar tik norėjau pagrūmoti pirštu dėl antrojo termodinamikos dėsnio. Atsargiai su juo. Jis turi daug formuluočių, o ta su neišvengiamu visatos entropijos didinimu yra mažiausiai ką nors sakanti apie reiškinį (t.y. provokuojanti klaidingus dėsnio taikymus). Nekalbant jau apie tai, kad išvis diskutuotinas klausimas, ar tokia formuluotė yra teisinga, t.y. ar taip suformulavus, mes tikrai vis dar kalbam apie antrą termodinamikos dėsnį, ar jau nebe.
Va. Sveikinu visus su Darvino gimtadieniu! ;-)
Šitaip, šitaip, va ir va kaip.
Finale norėčiau pasidalinti nuorodomis į medžiagą, kuri daugiau ar mažiau susijusi su šia tema. Kai kas gal jau ir buvo minėta, bet išimu nuorodas į atskirą "literatūros sąrašą". Enjoy!
The Command Line - The Best Newbie Interface?, by Richard Wareham
Learn to Program, by Chris Pine
Why Pascal is Not My Favorite Programming Language, by Brian W. Kernighan
Teach Yourself Programming in Ten Years, by Peter Norvig
Vieno britų mokslininko, Miachael Kolling'o Google Tech Talk'as apie jų pasiekimus savo tiriamąjame projekte Greenfoot. Atkreipkite dėmesį į tai (~26:40 min), kad projektą skatintanti problematika iki skausmo panaši į lietuviškąją.
Ir vietoj užsklandos, viena man labai patikusi citata; Don Box'as apie savo paties vaikų mokymą programuoti: "I have no intention of having any of my kids grow up to program for a living - this is just about making them more complete human beings".
Stay tuned! ;-)
Pirmoji šio serialo serija čia, antroji čia.
"O mein Gott! Kas čia per klausimas! Kaip gi galima programuoti be debugerio?!"
Bla bla. Ne apie programavimą kalbam. O apie vidurinę mokyklą. Ten niekas neprogramuoja, ten žmonės mokosi. Mokosi rašyti paprastas programas. Jas rašo ir skaito tik autoriai ir mokytojai. Jos yra tuoj pat išmetamos. Jos yra mažos.
Nematau kaip debugeris čia galėtų padaryti juntamą įtaką. Ypač jeigu vaikams yra paaiškinami kiti būdai ieškoti klaidų, iš kurių svarbiausias -- introspekcinis print.
Dar vienas akmuo į debugerio daržą -- vėl, interpretatorius. Kai kas nors negero įvyksta su interpretuojama programa, padorus interpretatorius parodys ir steką, ir kintamųjų reikšmes. O tai yra du trečdaliai to, ką aš, profesionalas, pirmiausiai noriu matyti, kai įsijungiu debugerį. Kam moksleiviui daugiau?
Taigi, debugeris lemiamos rolės negroja.
Mane labai stebina kai kurių žmonių fobija dinamiškai tipizuotoms kalboms ir jų taikymui mokykloje. Žmonės sugeba pareikšti, kad vaikas gali pradėti painioti kur 3, o kur "3". Arba, dar geriau, paporina, kad statiškai tipizuotose kalbose, atsiprašant, "anksčiau" sužinoma apie vienokį ar kitokį tipų nesuderinamumą.
Nėra skirtumo!
Kai EuroPython'2007 Guido pasakė, kad Python 3000 bus galima kintamuosius vadinti bet kuria kalba, vieni žmonės sutiko šią žinią aplodismentais, kiti šaltai. Aš buvau prie pastarųjų. Dėl to, kad šia tema mane drasko dvejonės.
Viena vertus, akivaizdu, kad iš šių trijų eilučių pirma yra gražiausia:
sąrašas = [1, 2, 3] # (1) sarasas = [1, 2, 3] # (2) listas = [1, 2, 3] # (3)
Kita vertus, neseniai parsisiunčiau vienos atvirojo kodo programos išeities tekstus. Išpakavau, pažiūrėjau į failus, vienas iš jų buvo pavadintas vokiškai. Pakvipo negeruoju. Netruko išaiškėti, kad kode esama angliškai pavadintų kintamųjų, esama ir vokiškai. Kai kurie komentarai angliški, kai kurie vokiški.
Nepaisant to, kad projektas mane iš principo domina, tokios betvarkės per akis pakanka, kad aš prie jo neprisiliesčiau. Ir neprisiliesiu.
Žiūrint toliau, kas jeigu tokia pati betvarkė komercinės įmonės kode? Ar norėtųsi dirbti tokioje kontoroje prie tokio kodo? Man ne.
Todėl aš atsargiai žiūriu į moksleivių skatinimą rašyti lietuvišką kodą. Vienas dalykas yra to nedrausti (juk transliatoriui vienodai šviečia, ar kintamasis pavadintas sarasas, ar list, ar x), o kitas dalykas skatinti. Juk paskui teks perauklėti!
Žinoma, mano nuogąstavimus pagrindžia tik tie moksleiviai, kurie vėliau taps programuotojais ir juos reikės atpratinti nuo mokykloje įgytų blogų įpročių. Tuo tarpu didžiąjai daliai moksleivių -- tai, kuriai programavimo pamokos bus tik susipažinimas, lietuvybės įvedimas tik palengvins supratimą, sumažins atgrasumą.
Tiesą pasakius, nežinau...
Manau, šitas punktas nekvescionuojamas. Apie jį papildomai rašyti būtų laiko švaistymas, prirašyta jau tiek ir šitiek. Pakaks paminėti, kad tai turi tokią pat svarbą, kaip ir kalbos komerciškumas. Kalbos realizacija turi būti pasiekiama bent keliose populiariose platformose, būtinai bent vienoje nemokamoje. Kad nekainuotų ir nekvaršintų galvos.
O jeigu kas turite argumentų prieš, pateikite juos šitam vaikui: "mano tėtė alchitektaš, il paš muš namuoše tik Mašintokai; Tulbo Paškališ nedilba" ;-)
Neprisirišimas būtinas. Ir į jį reikia atkreipti daug dėmesio.
Rytoj baigiam.