Lil' Fun Langs' Guts | Mewayz Blog Skip to main content
Hacker News

Lil' Fun Langs' Guts

komentarai

12 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Kodėl žvilgtelėjus po mažyčių programavimo kalbų gaubtu tampate geresniu kūrėju

Kiekviena jūsų naudojama programinė įranga – nuo CRM, kuri seka jūsų potencialius klientus iki automatizavimo variklio, kuris vidurnaktį siunčia sąskaitas faktūras – buvo sukurta naudojant programavimo kalbą. Tačiau ar kada susimąstėte, kas verčia programavimo kalbą pažymėti? Ne didžiulės ekosistemos, tokios kaip Python ar JavaScript, o mažos, niūrios, nuostabiai keistos, kurias kūrėjai sukuria per savaitgalį, kad išspręstų vieną problemą arba tiesiog išmoktų. Šiose „lil' fun langs“ – žaislų kalbos, konkrečioms domenams skirtos kalbos (DSL) ir mokomieji vertėjai – yra vieta, kur gyvena keletas elegantiškiausių kompiuterių mokslo idėjų. Suprasdami jų drąsą, jūs ne tik tampate geresniu programuotoju; tai iš esmės pakeičia jūsų požiūrį į įrankių kūrimą, darbo eigos automatizavimą ir sistemų, kurios iš tikrųjų tinka žmonėms, kūrimą.

Kas iš tikrųjų yra „Lil' Fun Langs“?

Programavimo pasaulyje gausu kalbų, kurios niekada nebuvo skirtos maitinti gamybos serverius ar apdoroti milijonus operacijų. Tokios kalbos kaip Lox (iš Roberto Nystromo Crafting Interpreters), Monkey (iš Thorsten Ball Writing an Interpreter in Go) ar net pokštų kalbos, tokios kaip „Brainfuck“ ir „Chef“, yra skirtos mokyti, pramogauti ir peržengti „kalbos“ prasmės ribas. Šios mažos kalbos pašalina realaus pasaulio įrankių grandinių sudėtingumą ir atskleidžia neapdorotą mechaniką, kaip kodas virsta veiksmu.

Tačiau „lil' fun langs“ neapsiriboja lavinamaisiais pratimais. Konkrečiam domenui skirtos kalbos yra viena iš efektyviausių verslo įrankių rinkoje. Kiekvieną kartą, kai rašote formulę skaičiuoklėje, apibrėžiate filtro taisyklę el. pašto programoje arba konfigūruojate automatizavimo darbo eigą tokioje platformoje kaip Mewayz, bendraujate su maža, specialiai sukurta kalba. 207 „Mewayz“ moduliai, apimantys CRM, sąskaitų faktūrų išrašymą, žmogiškųjų išteklių valdymą, transporto parko valdymą ir kt., remiasi vidiniais taisyklių varikliais ir išraiškų analizatoriais, kurių esmė yra mažytės kalbos, skirtos suteikti vartotojams galios nereikalaujant informatikos laipsnio.

Supratus šių kalbų anatomiją, paaiškėja, kodėl kai kurie įrankiai jaučiasi intuityvūs, o kiti – kaip galynėtis su kitoje dimensijoje parašytu vadovu.

Lekseris: žodžių suskaidymas į atomus

Kiekviena kalba, kad ir kokia ji būtų maža, prasideda nuo to paties pagrindinio žingsnio: leksinės analizės arba „leksingo“. Lekseris paima neapdorotą simbolių eilutę – kažką panašaus į iš viso = kaina * kiekis + mokestis – ir suskaido ją į reikšmingas dalis, vadinamas žetonais. Lekseriui dar nerūpi prasmė. Tai tik identifikuoja, kad total yra identifikatorius, = yra priskyrimo operatorius, kaina yra kitas identifikatorius, * yra daugyba ir pan.

Sukurti lekserį mažai kalbai stebėtinai malonu. Mažiau nei 100 kodo eilučių galite išmokyti programą atpažinti skaičius, eilutes, raktinius žodžius ir operatorius. Esmė yra paprastumas – jis verčia susimąstyti, kokio absoliutaus minimalaus „žodžių“ rinkinio reikia jūsų kalbai. Tas pats mąstymas galioja ir kuriant vartotojui skirtus įrankius. Kai „Mewayz“ automatizavimo variklis leidžia smulkaus verslo savininkui nustatyti taisyklę, pvz., „Kai sąskaita faktūra vėluojama 7 dienas, siųskite priminimą el. paštu“, sistema tyliai perkelia tą taisyklę į struktūrinius žetonus, pagal kuriuos gali veikti. Geriausios sąsajos jaučiasi be vargo būtent todėl, kad kažkas nuodugniai pagalvojo, kaip atrodo mažiausi reikšmingi naudotojo ketinimų vienetai.

Nagrinėjimas: plokščių žetonų pavertimas gyvais medžiais

Kai turite žetonus, jums reikia struktūros. Analizuojant plokščią žetonų seką paverčiama abstrakčiuoju sintaksės medžiu (AST) – hierarchiniu vaizdu, fiksuojančiu ryšius tarp skirtingų išraiškos dalių. Išraiška 3 + 4 * 5 nėra tik penkių žetonų seka; tai medis, kuriame daugyba susiejama griežčiau nei sudėjimas, o ne 35, o 23.

Čia viskas tampa tikrai linksma. Analizavimo algoritmai, tokie kaip rekursinis nusileidimas arba Pratto analizavimas, yra elegantiškos inžinerijos dalys, kurios telpa viename faile, tačiau gali apdoroti stebėtinai sudėtingas gramatikas. Visų pirma, rekursinės kilmės analizatoriai skaitomi beveik kaip pačios kalbos specifikacija – kiekviena funkcija atitinka gramatikos taisyklę, todėl kodas savaime dokumentuojasi taip, kaip retai kuriant programinę įrangą.

Išanalizavimo pamokos apima daug daugiau nei kalbos dizainą. Bet kuri sistema, apdorojanti struktūrizuotą įvestį – užsakymo forma su datų intervalais, darbo užmokesčio konfigūracija su sąlyginėmis taisyklėmis, CRM vamzdynas su šakojimo logika – išsprendžia analizavimo problemą. Daugiau nei 138 000 „Mewayz“ platformos vartotojų kasdien sukuria sudėtingus, struktūrizuotus duomenis. Supratimas, kaip analizatoriai dviprasmišką įvestį paverčia nedviprasmiška struktūra, yra skirtumas tarp sistemos, kuri grakščiai tvarko kraštutinius atvejus, ir sistemos, kuri sugenda, kai kas nors įveda datą netikėtu formatu.

Vertėjas: kur kodas atgyja

Vertėjas yra ta vieta, kur vyksta magija. Jis eina AST po mazgo ir vykdo jį. Skaičių mazgas grąžina savo vertę. Dvejetainis operacijos mazgas įvertina savo kairįjį ir dešinįjį vaikus ir juos sujungia. Funkcijos iškvietimas aptinka funkciją aplinkoje, susieja argumentus ir įvertina turinį. Žaislų kalba visas vertėjas gali būti 200–300 eilučių – pakankamai mažas, kad tilptų galvoje, tačiau pakankamai galingas, kad paleistų tikras programas.

Yra du platūs vykdymo būdai: medžiu vaikščiojantys interpretatoriai ir baitinio kodo virtualios mašinos. Vaikštantieji medžiais yra paprastesni, bet lėtesni; jie kerta AST tiesiogiai. „Baitecode“ virtualios mašinos sukompiliuoja AST į paprastų instrukcijų seką (pvz., mažą surinkimo kalbą) ir jas vykdo, pakeisdamos diegimo sudėtingumą, kad našumas būtų žymiai geresnis. CPython, standartinis Python diegimas, naudoja baitinio kodo VM. „Lua“, viena iš efektyviausių įterpiamųjų kalbų, sukūrė registru pagrįstą VM dizainą, kuris turėjo įtakos žaidimų varikliams visame pasaulyje.

Pagrindinė įžvalga: galingiausi verslo įrankiai nėra tie, kurie turi daugiausiai funkcijų – jie turi geriausią vidinę „kalbą“, leidžiančią išreikšti tai, ko iš tikrųjų reikia naudotojams. Kiekvienas taisyklių variklis, formulių sistema ir automatikos kūrėjas yra mažytis užmaskuotas interpretatorius. To vertėjo kokybė lemia, ar įrankis svyruoja nuo 10 vartotojų iki 100 000.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Aplinka ir taikymo sritis: paslėpta valstybės architektūra

Viena sudėtingiausių kalbų diegimo koncepcijų – ir viena iš labiausiai tiesiogiai taikomų verslo programinei įrangai – yra tai, kaip kalbos valdo būseną per aplinką ir apimtį. Kai rašote kintamojo priskyrimą funkcijoje, tas kintamasis neturėtų nutekėti ir ko nors perrašyti visuotinėje srityje. Tai skamba akivaizdžiai, tačiau norint ją tinkamai įdiegti, reikia duomenų struktūros, vadinamos aplinkos grandine: susieto maišos žemėlapių sąrašo, kuriame kiekvienas lygis nurodo apimtį, o kintamųjų paieškos eina grandine, kol randa atitiktį.

Šis modelis matomas visur gerai suprojektuotoje programinėje įrangoje. Naudotojo leidimai verslo platformoje veikia taip pat – komandos nario prieiga nustatoma pirmiausia patikrinus jo individualius leidimus, tada – vaidmens leidimus, o tada – organizacijos numatytuosius nustatymus. „Mewayz“ modulių sistema, apimanti viską nuo puslapių su nuoroda į biografiją iki visiško darbo užmokesčio apskaitos tvarkymo, naudoja daugiasluoksnę konfigūraciją, kuri atspindi šį tikslų principą. Įmonės savininkas nustato numatytuosius visos organizacijos nustatymus, skyrių vadovai gali nepaisyti konkrečių nustatymų, o individualūs vartotojai gali tinkinti savo darbo sritį – visa tai be konfliktų.

Neteisingai naudojant programavimo kalbą atsiranda klaidų. Neteisinga verslo platformos apimtis sukelia duomenų nutekėjimą, leidimų eskalavimą ir tokį veiklos chaosą, kuris kainuoja tikrus pinigus. Pamokos yra vienodos kiekviename abstrakcijos lygyje.

Ko iš tikrųjų moko kurti mažytę kalbą

Jei niekada nesukūrėte mažos programavimo kalbos, štai ko konkrečiai moko patirtis – ir kodėl tai svarbu, ar esate kūrėjas, techninis įkūrėjas, ar asmuo, kuris tiesiog nori suprasti kasdien naudojamus įrankius:

  • Minčių tikslumas: apibrėždami gramatiką negalite būti neaiškūs. Kiekviena kalbos specifikacijos dviprasmybė tampa analizatoriaus klaida. Ši disciplina tiesiogiai pereina prie geresnių specifikacijų, aiškesnės dokumentacijos ir tikslesnių funkcijų reikalavimų rašymo.
  • Užuojauta naudotojams: kurdami kalbą, kuriate sąsają žmogaus mintims. Išmoksite paklausti: „Ką vartotojas turi omenyje tuo? — klausimas, kuris turėtų paskatinti kiekvieną sprendimą dėl produkto.
  • Veikimo intuicija: sužinosite, kodėl kai kurios operacijos yra greitos, o kitos lėtos, ne skaitydami etalonus, o matydami, kiek žingsnių tiksliai atlieka vertėjas. Taip galėsite geriau kurti sistemas, kurios keičiasi masteliu.
  • Derinimo meistriškumas: kai jūsų kalba pateikia neteisingą išvestį, jūs neturite kur slėptis. Negalima kaltinti jokios sistemos, jokio bibliotekos versijos konflikto. Tai jūsų logika, jūsų duomenų struktūros, jūsų algoritmas. Taip sukuriami gilūs derinimo įgūdžiai, kurie atskiria gerus inžinierius nuo puikių.
  • Abstrakcijos įvertinimas: suprantate, kodėl aukštesnio lygio kalbos pasirinko – kodėl „JavaScript“ yra uždaryta, kodėl „Python“ pasirinko reikšmingą tarpą, kodėl egzistuoja „Rust“ skolinimosi tikrintuvas. Tai nėra savavališki sprendimai; jie yra realių problemų, su kuriomis susidursite įgyvendindami, sprendimai.

Nuo žaislų kalbų iki realaus pasaulio automatizavimo

Atotrūkis tarp žaislų kalbos ir gamybos automatizavimo variklio yra mažesnis nei dauguma žmonių mano. „Shopify“ skystųjų šablonų kalba prasidėjo kaip paprasta, saugi šablonų sistema ir dabar veikia milijonuose parduotuvių vitrinų. „GitHub Actions“ darbo eigos sintaksė yra konkrečiai domenui skirta kalba, sukurta naudojant YAML. „Stripe“ užklausų kalba „Sigma“ leidžia finansų komandoms apklausti mokėjimo duomenis nerašydama SQL. Kiekvienas iš jų prasidėjo nuo to, kad kažkas paklausė: „Kokia yra mažiausia, paprasčiausia kalba, kuri išsprendžia šią konkrečią problemą?“

Tai ta pati filosofija, kuria remiasi platformos, kuriomis siekiama sujungti verslo operacijas į vieną ekosistemą. Kai „Mewayz“ aptarnauja laisvai samdomą darbuotoją, kuriam reikia nuorodos į biografiją puslapio ir vidutinio dydžio įmonėje, kurioje 207 moduliuose dirba 50 darbuotojų, pagrindinis iššūkis yra tas pats, su kuriuo susiduria kiekvienas kalbų kūrėjas: kaip sukurti sistemą, kuri būtų pakankamai paprasta pradedantiesiems, tačiau būtų pakankamai galinga sudėtingiems naudojimo atvejams? Atsakymas, kaip pasakys bet kuris kalbos diegėjas, slypi teisingų primityvų – mažų, sukomponuojamų elementų, kuriuos vartotojai gali derinti taip, kaip dizaineris net nenumatė, taikymas.

Kai kitą kartą konfigūruosite automatizavimo taisyklę, sukursite tinkintą prietaisų skydelį arba nustatysite sąlyginę darbo eigą bet kuriame verslo įrankyje, atminkite: rašote programą linksma kalba. Kažkas sukūrė tos kalbos pagrindą – jos lekserį, analizatorių ir vertėją – kad jūsų ketinimas būtų vykdomas. O jų darbo kokybė yra nematoma jėga, lemianti, ar jūsų patirtis atrodo magija ar kančia. Suprasdami šias drąsas, net ir paviršiaus lygmenyje, gausite supergalią: galimybę matyti mašiną po sąsaja, numatyti, kur ji suges, ir pastūmėti ją toliau, nei kada nors įsivaizdavo jos dizaineriai.

Sukurkite savo verslo OS šiandien

Nuo laisvai samdomų darbuotojų iki agentūrų – „Mewayz“ valdo 138 000 ir daugiau įmonių su 207 integruotais moduliais. Pradėkite nemokamai, atnaujinkite, kai augsite.

Sukurti nemokamą paskyrą →

Dažniausiai užduodami klausimai

Kas yra „lil' fun langs“ ir kodėl man tai turėtų rūpėti?

Lil' fun langs yra mažos, eksperimentinės programavimo kalbos, sukurtos tyrinėti konkrečias idėjas arba išmokyti pagrindinių sąvokų. Jie svyruoja nuo žaislų vertėjų, parašytų savaitgalį, iki konkrečios srities kalbų (DSL), skirtų siauroms užduotims atlikti. Suprasdami, kaip jie veikia, galite geriau suprasti, kaip veikia visa programinė įranga, įskaitant verslo įrankius, kuriais pasitikite kasdien. Šios žinios daro jus ryškesniu kūrėju ir labiau informuotu sprendimų priėmėju renkantis ar kuriant automatizavimo sistemas.

Kaip mokymasis apie kalbos vidines savybes padeda automatizuoti verslą?

Kai suprantate tokias sąvokas kaip analizė, vertinimas ir interpretatoriai, automatizavimą pradedate matyti kitaip. Atpažįstate šablonus darbo eigos kūrimo priemonėse, šablonų varikliuose ir taisyklių sistemose. Tokios platformos kaip „Mewayz“ naudoja tuos pačius principus savo 207 moduliuose, kad galėtumėte automatizuoti sąskaitų faktūrų išrašymą, CRM darbo eigą ir dar daugiau – visa tai nerašydami kodo. Žinodami pagrindinius dalykus, galėsite toliau naudoti šiuos įrankius ir greičiau pašalinti triktis.

Ar man reikia informatikos laipsnio, kad galėčiau sukurti mažą kalbą?

Visiškai ne. Daugelis kūrėjų savo pirmąjį vertėją sukuria per vieną savaitgalį, naudodami mokymo programas ir atvirojo kodo vadovus. Tokios kalbos kaip Python ir JavaScript leidžia nesudėtingai parašyti pagrindinį lekserį, analizatorių ir vertintoją. Tikslas yra ne sukurti kitą gamybos kalbą, o mokytis dirbant. Netgi paprasta skaičiuotuvo kalba moko, kaip analizuojamos ir vykdomos išraiškos – įgūdžių, kurie tiesiogiai perkeliami į realų vystymąsi.

Ar DSL supratimas gali padėti pasirinkti geresnius verslo įrankius?

Visiškai. Daugelyje verslo platformų formulės, filtrai ir darbo eigos taisyklės įterpiamos konkrečios domeno kalbos. Kai suprasite, kaip DSL veikia po gaubtu, galite kritiškiau įvertinti įrankius. Pavyzdžiui, „Mewayz“ siūlo išsamią verslo OS nuo 19 USD per mėnesį su integruota automatizavimo logika visuose moduliuose. Žinodami DSL koncepcijas, galėsite visiškai išnaudoti šias funkcijas, o ne subraižyti paviršių.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 6,203+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,203+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime