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

Lil' Fun Langs' Guts

Kommentit

11 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Miksi pienten ohjelmointikielten konepellin alle kurkistaminen tekee sinusta paremman rakentajan

Jokainen käyttämäsi ohjelmisto – asiakassuhdehallinnasta, joka seuraa liidejäsi automaatiokoneeseen, joka lähettää laskut keskiyöllä – on rakennettu ohjelmointikielellä. Mutta oletko koskaan miettinyt, mikä saa ohjelmointikielen rastimaan? Ei massiivisia ekosysteemejä, kuten Python tai JavaScript, vaan pieniä, surkeita, ilahduttavan outoja ekosysteemejä, joita kehittäjät rakentavat viikonlopun aikana ratkaistakseen yksittäisen ongelman tai vain oppiakseen. Nämä "lil' fun langs" -lelukielet, verkkotunnuskohtaiset kielet (DSL) ja opetustulkit - ovat siellä, missä jotkut tietojenkäsittelytieteen tyylikkäimmistä ideoista elävät. Heidän sisunsa ymmärtäminen ei tee sinusta vain parempaa ohjelmoijaa; se muuttaa perusteellisesti ajatteluasi työkalujen rakentamisesta, työnkulkujen automatisoinnista ja järjestelmien suunnittelusta, jotka todella toimivat ihmisille.

Mitä "Lil' Fun Langs" oikein ovat?

Ohjelmointimaailma on täynnä kieliä, joita ei koskaan ole tarkoitettu tuotantopalvelimille tai miljoonien tapahtumien käsittelyyn. Kielet, kuten Lox (Robert Nystromin Crafting Interpreters), Monkey (Thorsten Ballin kirjasta Writing an Interpreter in Go) tai jopa vitsikielet, kuten Brainfuck ja Chef, ovat olemassa opettaakseen, viihdyttääkseen ja ylittääkseen "kielen" merkityksen rajoja. Nämä pienet kielet poistavat todellisten työkaluketjujen monimutkaisuuden ja paljastavat koodin muuttuvan toiminnan raakamekaniikan.

Mutta "lil' fun langs" ei rajoitu opetusharjoituksiin. Verkkotunnuskohtaiset kielet tukevat eräitä markkinoiden tehokkaimmista liiketoimintatyökaluista. Joka kerta, kun kirjoitat kaavan laskentataulukkoon, määrität suodatussäännön sähköpostiohjelmassasi tai määrität automaation työnkulun alustalle, kuten Mewayz, olet vuorovaikutuksessa pienen, tarkoitukseen rakennetun kielen kanssa. Mewayzin 207 moduulia – jotka kattavat CRM:n, laskutuksen, HR:n, kalustonhallinnan ja paljon muuta – perustuvat sisäisiin sääntömoottoreihin ja lausekkeiden jäsentimiin, jotka ovat ytimenään pieniä kieliä, jotka on suunniteltu antamaan käyttäjille tehoa ilman tietojenkäsittelytieteen tutkintoa.

Näiden kielten anatomian ymmärtäminen paljastaa, miksi jotkut työkalut tuntuvat intuitiivisilta, kun taas toiset tuntuu painivan toisessa ulottuvuudessa kirjoitetun käyttöoppaan kanssa.

Lexer: Sanojen särkyminen atomeiksi

Jokainen kieli, olipa se kuinka pieni tahansa, alkaa samasta perustavanlaatuisesta vaiheesta: leksikaalisesta analyysistä tai "lexingistä". Lexer ottaa raakamerkkijonon – esimerkiksi yhteensä = hinta * määrä + alv – ja jakaa sen merkityksellisiksi paloiksi, joita kutsutaan tokeneiksi. Lexer ei välitä merkityksestä vielä. Se vain tunnistaa, että total on tunniste, = on määritysoperaattori, price on toinen tunniste, * on kertolasku ja niin edelleen.

Lekserin rakentaminen pienelle kielelle on yllättävän tyydyttävää. Alle 100 koodirivillä voit opettaa ohjelman tunnistamaan numeroita, merkkijonoja, avainsanoja ja operaattoreita. Yksinkertaisuus on pääasia – se pakottaa sinut miettimään, mitä "sanojen" ehdoton vähimmäismäärä kielesi tarvitsee. Sama ajattelu pätee suunniteltaessa käyttäjäkohtaisia ​​työkaluja. Kun Mewayzin automaatiomoottori antaa pienyrityksen omistajan määrittää säännön, kuten "kun lasku on myöhässä 7 päivää, lähetä muistutussähköposti", järjestelmä on hiljaa leksoimassa tätä sääntöä jäsennellyiksi tunnuksiksi, joiden perusteella se voi toimia. Parhaat käyttöliittymät tuntuvat vaivattomilta juuri siksi, että joku pohtii tarkasti, miltä käyttäjätarkoituksen pienimmät merkitykselliset yksiköt näyttävät.

Jäsentäminen: Tasaisten merkkien muuttaminen eläviksi puiksi

Kun sinulla on tunnukset, tarvitset rakenteen. Jäsentäminen muuntaa tasaisen merkkijonon abstraktiksi syntaksipuuksi (AST) – hierarkkiseksi esitykseksi, joka kaappaa lausekkeen eri osien väliset suhteet. Lauseke 3 + 4 * 5 ei ole vain viiden tunnuksen sarja; se on puu, jossa kertolasku sitoo tiukemmin kuin yhteenlasku, jolloin saadaan 23 35:n sijaan.

Tässä asiat ovat todella hauskoja. Jäsennysalgoritmit, kuten rekursiivinen laskeutuminen tai Pratt-jäsennys, ovat tyylikkäitä teknisiä osia, jotka mahtuvat yhteen tiedostoon, mutta voivat käsitellä yllättävän monimutkaisia ​​kielioppeja. Erityisesti rekursiiviset laskeutuvat jäsentimet lukevat melkein kuin itse kielen määrittelyä – jokainen funktio vastaa kielioppisääntöä, mikä tekee koodista itsestään dokumentoituvan tavalla, joka on harvinaista ohjelmistokehityksessä.

Jäsentämisestä saadut opetukset ulottuvat paljon kielisuunnittelun ulkopuolelle. Mikä tahansa järjestelmä, joka käsittelee strukturoitua syöttöä – varauslomake, jossa on päivämäärävälit, palkanlaskentakokoonpano ehdollisilla säännöillä, CRM-putki, jossa on haarautumislogiikka – ratkaisee jäsennysongelman. Mewayzin alustan yli 138 000 käyttäjää tuottavat monimutkaista, jäsenneltyä dataa päivittäin. Sen ymmärtäminen, kuinka jäsentimet muuttavat moniselitteisen syötteen yksiselitteiseksi rakenteeksi, eroaa järjestelmän rakentamisesta, joka käsittelee reunatapaukset sulavasti, ja sellaisen järjestelmän välillä, joka katkaisee hetken, kun joku syöttää päivämäärän odottamattomassa muodossa.

The Interpreter: Where Code Comes Alive

Tulkki on paikka, jossa taika tapahtuu. Se kävelee AST:ta solmu kerrallaan ja suorittaa sen. Numerosolmu palauttaa arvonsa. Binäärioperaatiosolmu arvioi vasemman ja oikean lapsensa ja yhdistää ne. Funktiokutsu etsii funktion ympäristöstä, sitoo argumentteja ja arvioi rungon. Lelukielellä koko tulkki voi olla 200–300 riviä – tarpeeksi pieni pysyäkseen päässä, mutta silti riittävän tehokas ajamaan oikeita ohjelmia.

Suoritukseen on olemassa kaksi laajaa lähestymistapaa: puussa kulkevat tulkit ja tavukoodin virtuaalikoneet. Puussa kävelejät ovat yksinkertaisempia, mutta hitaampia; ne kulkevat suoraan AST:n läpi. Bytecode-virtuaalikoneet kokoavat AST:n yksinkertaisten käskyjen sarjaksi (kuten pieneksi kokoonpanokieleksi) ja suorittavat ne sen sijaan, vaihtamalla toteutuksen monimutkaisuutta huomattavasti paremman suorituskyvyn saavuttamiseksi. CPython, Pythonin vakiototeutus, käyttää tavukoodin VM:ää. Lua, yksi tehokkaimmista upotetuista kielistä, oli edelläkävijä rekisteripohjaisessa VM-suunnittelussa, joka vaikutti pelimoottoreihin maailmanlaajuisesti.

Tärkein näkemys: Tehokkaimmissa yritystyökaluissa ei ole eniten ominaisuuksia, vaan ne, joilla on paras sisäinen "kieli" ilmaisemaan, mitä käyttäjät todella tarvitsevat. Jokainen sääntömoottori, kaavajärjestelmä ja automaation rakentaja on pieni tulkki valepuvussa. Tulkin laatu määrittää, skaalautuuko työkalu 10 käyttäjästä 100 000:een.

💡 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 →

Ympäristö ja laajuus: valtion piilotettu arkkitehtuuri

Yksi kielen toteutuksen vaikeimmista käsitteistä – ja yksi suorimmin sovellettavista yritysohjelmistoihin – on se, miten kielet hallitsevat tilaa ympäristöjen ja laajuuden kautta. Kun kirjoitat muuttujamäärityksen funktion sisään, muuttujan ei pitäisi vuotaa ulos ja korvata jotain globaalissa laajuudessa. Tämä kuulostaa itsestään selvältä, mutta sen oikea toteuttaminen edellyttää tietorakennetta, jota kutsutaan ympäristöketjuksi: linkitetty luettelo hash-kartoista, jossa jokainen taso edustaa laajuutta ja muuttujahakuja kulkee ketjussa, kunnes ne löytävät vastaavuuden.

Tämä kuvio näkyy kaikkialla hyvin suunnitelluissa ohjelmistoissa. Liiketoimintaympäristön käyttäjien käyttöoikeudet toimivat samalla tavalla – tiimin jäsenen käyttöoikeudet määritetään tarkistamalla ensin hänen henkilökohtaiset käyttöoikeutensa, sitten roolinsa käyttöoikeudet ja sitten organisaation oletusasetukset. Mewayzin moduulijärjestelmä, joka kattaa kaiken linkit-in-bio-sivuista täydelliseen palkanlaskennan käsittelyyn, käyttää kerroksittain tätä periaatetta. Yrityksen omistaja määrittää organisaation laajuiset oletusasetukset, osastopäälliköt voivat ohittaa tietyt asetukset ja yksittäiset käyttäjät voivat muokata omaa työtilaansa – kaikki ilman ristiriitoja.

Ohjelmointikielen laajuuden väärinkäyttö aiheuttaa virheitä. Liiketoimintaympäristön laajuuden väärinkäyttö aiheuttaa tietovuotoja, lupien eskaloitumista ja sellaista toiminnallista kaaosta, joka maksaa oikeaa rahaa. Oppitunnit ovat samat kaikilla abstraktion tasoilla.

Mitä pienen kielen rakentaminen sinulle todellisuudessa opettaa

Jos et ole koskaan rakentanut pientä ohjelmointikieltä, tässä on se, mitä kokemus konkreettisesti opettaa – ja miksi sillä on merkitystä, oletko kehittäjä, tekninen perustaja vai joku, joka haluaa vain ymmärtää päivittäin käyttämiään työkaluja:

  • Ajatuksen tarkkuus: Et voi olla epämääräinen määriteltäessäsi kielioppia. Kaikista epäselvyyksistä kielimäärityksessäsi tulee virhe jäsentimessäsi. Tämä kurinalaisuus siirtyy suoraan parempien teknisten tietojen kirjoittamiseen, selkeämpään dokumentaatioon ja tarkempiin ominaisuusvaatimuksiin.
  • Empatia käyttäjiä kohtaan: Kun suunnittelet kieltä, suunnittelet käyttöliittymän ihmisajattelulle. Opit kysymään: "Mitä käyttäjä tarkoittaa tällä?" — kysymys, jonka pitäisi ohjata jokaista tuotepäätöstä.
  • Suorituskyvyn intuitio: Opit, miksi jotkut toiminnot ovat nopeita ja toiset hitaita, ei lukemalla vertailuarvoja, vaan näkemällä tarkalleen kuinka monta askelta tulkki ottaa. Tämä auttaa sinua suunnittelemaan skaalautuvia järjestelmiä.
  • Virheenkorjauksen hallinta: Kun kieli tuottaa väärän tuloksen, sinulla ei ole minnekään piiloutua. Ei ole syyllistää kehystä, ei kirjastoversioiden ristiriitaa. Se on sinun logiikkasi, tietorakenteet, sinun algoritmisi. Tämä rakentaa sellaisen syvän virheenkorjaustaidon, joka erottaa hyvät insinöörit loistavista.
  • Arvostus abstraktiosta: Ymmärrät, miksi korkeamman tason kielet tekivät valinnat – miksi JavaScriptillä on sulkemisia, miksi Python valitsi merkittävän välilyönnin, miksi Rustin lainantarkistus on olemassa. Nämä eivät ole mielivaltaisia ​​päätöksiä; ne ovat ratkaisuja todellisiin ongelmiin, joita kohtaat omassa toteutuksessasi.

Lelukielistä reaalimaailman automaatioon

Lelukielen ja tuotantoautomaatiomoottorin välinen kuilu on pienempi kuin useimmat luulevat. Shopifyn Liquid-mallinnuskieli alkoi yksinkertaisena, turvallisena mallijärjestelmänä, ja nyt se toimii miljoonien myymälän julkisivujen vallassa. GitHub Actionsin työnkulun syntaksi on YAML:ään rakennettu verkkotunnuskohtainen kieli. Stripen Sigma-kyselykielen avulla taloustiimit voivat kysellä maksutietoja kirjoittamatta SQL:ää. Jokainen näistä alkoi siitä, että joku kysyi: "Mikä on pienin, yksinkertaisin kieli, joka ratkaisee tämän ongelman?"

Tämä on sama filosofia alustojen taustalla, joilla pyritään yhdistämään liiketoiminta yhdeksi ekosysteemiksi. Kun Mewayz palvelee freelanceria, joka tarvitsee linkkisivun ja keskikokoista yritystä, joka hoitaa 50 työntekijän palkanlaskennan 207 moduulissaan, taustalla oleva haaste on sama, jonka jokainen kielisuunnittelija kohtaa: miten luodaan järjestelmä, joka on tarpeeksi yksinkertainen aloittelijoille, mutta riittävän tehokas monimutkaisiin käyttötapauksiin? Kuten kaikki kielen toteuttajat kertovat, vastaus piilee primitiivien oikeissa osissa – pienissä, koostettavissa olevissa rakennuspalikoissa, joita käyttäjät voivat yhdistää tavoilla, joita suunnittelija ei koskaan osannut odottaa.

Kun seuraavan kerran määrität automaatiosäännön, rakennat mukautetun hallintapaneelin tai määrität ehdollisen työnkulun missä tahansa yritystyökalussa, muista: kirjoitat ohjelmaa hauskalla kielellä. Joku on suunnitellut tuon kielen sisut – sen lekserin, jäsentimen ja tulkin – tekemään tarkoituksestasi suoritettavan. Ja heidän työnsä laatu on näkymätön voima, joka määrittää, tuntuuko kokemuksesi taikalta vai kurjuudelta. Näiden rohkeiden ymmärtäminen jopa pintatasolla antaa sinulle supervoiman: kyvyn nähdä kone käyttöliittymän alla, ennustaa, missä se hajoaa, ja työntää sitä pidemmälle kuin sen suunnittelijat ovat koskaan kuvitelleet.

Rakenna yrityksesi käyttöjärjestelmä jo tänään

Frelancereista toimistoihin Mewayz tarjoaa yli 138 000 yritystä 207 integroidulla moduulilla. Aloita ilmaiseksi, päivitä, kun kasvat.

Luo ilmainen tili →

Usein kysytyt kysymykset

Mitä ovat "lil' fun langs" ja miksi minun pitäisi välittää siitä?

Lil' fun langs ovat pieniä, kokeellisia ohjelmointikieliä, jotka on suunniteltu tutkimaan tiettyjä ideoita tai opettamaan ydinkäsitteitä. Ne vaihtelevat viikonloppuisin kirjoitetuista lelutulkeista ahtaisiin tehtäviin suunniteltuihin verkkotunnuskohtaisiin kieliin (DSL). Niiden toiminnan ymmärtäminen antaa sinulle syvemmän käsityksen siitä, miten kaikki ohjelmistot toimivat – mukaan lukien liiketoimintatyökalut, joihin luotat päivittäin. Tämä tieto tekee sinusta terävämmän kehittäjän ja tietoisemman päätöksentekijän valitessasi tai rakentaessasi automaatiojärjestelmiä.

Miten kielten sisäisten ominaisuuksien oppiminen auttaa liiketoiminnan automatisoinnissa?

Kun ymmärrät käsitteet, kuten jäsennys, arviointi ja tulkit, alat nähdä automaation eri tavalla. Tunnistat mallit työnkulun rakentajissa, mallikoneissa ja sääntöjärjestelmissä. Mewayzin kaltaiset alustat käyttävät samoja periaatteita 207 moduulissaan, jotta voit automatisoida laskutuksen, CRM-työnkulut ja paljon muuta – kaikki ilman koodin kirjoittamista. Perusasioiden tunteminen auttaa sinua kehittämään näitä työkaluja pidemmälle ja ratkaisemaan ongelmia nopeammin.

Tarvitsenko tietojenkäsittelytieteen tutkinnon pienen kielen rakentamiseen?

Ei ollenkaan. Monet kehittäjät rakentavat ensimmäisen tulkkinsa yhden viikonlopun aikana käyttämällä opetusohjelmia ja avoimen lähdekoodin oppaita. Pythonin ja JavaScriptin kaltaiset kielet tekevät peruslekserin, jäsentimen ja arvioijan kirjoittamisesta yksinkertaista. Tavoitteena ei ole luoda seuraavaa tuotantokieltä, vaan oppia tekemällä. Jopa yksinkertainen laskinkieli opettaa sinulle, kuinka lausekkeita jäsennetään ja suoritetaan, taitoja, jotka siirtyvät suoraan todelliseen kehitykseen.

Voiko DSL-yhteyksien ymmärtäminen auttaa valitsemaan parempia liiketoimintatyökaluja?

Ehdottomasti. Monet yritysympäristöt upottavat toimialuekohtaisia ​​kieliä kaavoille, suodattimille ja työnkulkusäännöille. Kun ymmärrät kuinka DSL:t toimivat konepellin alla, voit arvioida työkaluja kriittisemmin. Esimerkiksi Mewayz tarjoaa kattavan yrityskäyttöjärjestelmän, jonka hinta on 19 $/kk, ja sen moduuleissa on sisäänrakennettu automaatiologiikka. DSL-käsitteiden tunteminen auttaa sinua hyödyntämään näitä ominaisuuksia täysimääräisesti sen sijaan, että naarmutat pintaa.

:n sijaan

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