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

Lil' Fun Langs' Guts

Iruzkinak

10 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Programazio-lengoaia txikien azpian begiratzeak zergatik egiten zaituen eraikitzaile hobea

Erabiltzen duzun software bakoitza (zure bezeroen jarraipena egiten duen CRMtik hasi eta gauerdian fakturak bidaltzen dituen automatizazio-motorra) programazio-lengoaia batekin eraiki zen. Baina inoiz galdetu al zaizu zerk eragiten duen programazio-lengoaia batek tick? Ez Python edo JavaScript bezalako ekosistema masiboak, baizik eta garatzaileek asteburu batean arazo bakar bat konpontzeko edo ikasteko soilik eraikitzen dituzten txikiak, kaskarrak eta arraroak. "Lil' fun langs" hauek - jostailu-hizkuntzak, domeinu-hizkuntza espezifikoak (DSL) eta hezkuntzako interpreteak - dira informatikaren ideia dotoreenetako batzuk bizi diren tokietan. Haien erraiak ulertzeak ez zaitu programatzaile hobea bihurtzen; funtsean, tresnak eraikitzeari, lan-fluxuak automatizatzeari eta pertsonentzako benetan funtzionatzen duten sistemak diseinatzeari buruz pentsatzen duzun modua aldatzen du.

Zer dira zehazki "Lil' Fun Langs"?

Programazio mundua produkzio-zerbitzariak elikatzeko edo milioika transakzio prozesatzeko inoiz egin ez ziren lengoaiez beteta dago. Lox bezalako hizkuntzak (Robert Nystrom-en Crafting Interpreters), Monkey (Thorsten Ball-en Writing an Interpreter in Go-tik) edo Brainfuck eta Chef bezalako txantxa-hizkuntzak existitzen dira irakasteko, entretenitzeko eta "hizkuntza" batek esan nahi duenaren mugak gainditzeko. Hizkuntza txiki hauek mundu errealeko tresna-kateen konplexutasuna kentzen dute eta kodea akzio bilakatzen denaren mekanika gordina agerian uzten dute.

Baina "lil' fun langs" ez dira hezkuntza-ariketetara mugatzen. Domeinuko hizkuntza espezifikoek merkatuan dauden negozio-tresna eraginkorrenetako batzuk bultzatzen dituzte. Kalkulu-orri batean formula bat idazten duzun bakoitzean, iragazki-arau bat zure posta-bezeroan definitzen duzun bakoitzean edo Mewayz bezalako plataforma batean automatizazio-fluxu bat konfiguratzen duzun bakoitzean, horretarako sortutako hizkuntza txiki batekin ari zara elkarreragin. Mewayzen barruko 207 moduluek (CRM, fakturazioa, HR, flota kudeaketa eta abar barne) barne-arauen motor eta adierazpen analizatzaileetan oinarritzen dira, eta, funtsean, hizkuntza txikiak dira erabiltzaileei boterea emateko diseinatutako informatika-titulurik behar izan gabe.

Hizkuntza hauen anatomia ulertzeak agerian uzten du zergatik sentitzen diren tresna batzuk intuitiboak diren eta beste batzuk beste dimentsio batean idatzitako eskuliburu batekin borrokatzeko gogoa dutela.

Lexera: hitzak atomo bihurtzea

Hizkuntza guztiak, txikiak izan arren, oinarrizko urrats berberarekin hasten dira: analisi lexikoa edo "lexing". Lexer batek karaktere-kate gordina hartzen du — total = price * kantity + tax bezalako zerbait — eta token izeneko zati esanguratsuetan zatitzen du. Lexerari ez zaio esanahiari axola oraindik. total identifikatzaile bat dela identifikatzen du, = esleipen-operadore bat dela, prezioa beste identifikatzaile bat dela, * biderketa dela eta abar.

Hizkuntza txiki baterako lexer bat sortzea harrigarriro pozgarria da. 100 kode-lerro baino gutxiagotan, programa bati zenbakiak, kateak, gako-hitzak eta operadoreak ezagutzen irakats diezaiokezu. Sinpletasuna da kontua: zure hizkuntzak "hitzen" multzo minimoak zer behar duen pentsatzera behartzen zaitu. Pentsamendu hori bera aplikatzen da erabiltzaileei begira tresnak diseinatzerakoan. Mewayz-en automatizazio-motoreak enpresa txiki baten jabeari arau bat ezartzen uzten dionean "faktura 7 egun igarota dagoenean, bidali abisu-mezu elektronikoa", sistemak isil-isilik ari da arau hori jarduteko token egituratuetan sartzen. Interfazerik onenak esfortzurik gabe sentitzen dira, hain zuzen ere, norbaitek erabiltzailearen asmoen unitate esanguratsuenak nolakoak diren sakon pentsatu duelako.

Analizatzea: token lauak zuhaitz bizi bihurtzea

Tokenak dituzunean, egitura behar duzu. Analisiak token-sekuentzia lau bat sintaxi-zuhaitz abstraktu batean (AST) bihurtzen du, adierazpen baten atal ezberdinen arteko erlazioak jasotzen dituen irudikapen hierarkikoa. 3 + 4 * 5 adierazpena ez da bost token sekuentzia besterik ez; biderketak batuketak baino estuago lotzen dituen zuhaitza da, 23 35 sortu beharrean.

Horretan gauzak benetan dibertigarriak dira. Jaitsiera errekurtsiboa edo Pratt analisia bezalako analisi-algoritmoak fitxategi bakarrean sartzen diren ingeniaritza pieza dotoreak dira, baina gramatika harrigarri konplexuak maneiatzen dituztenak. Jaitsiera errekurtsiboko analizatzaileek, batez ere, hizkuntzaren beraren zehaztapen bat bezala irakurtzen dute ia: funtzio bakoitza gramatika-arau bati dagokio, eta kodea autodokumentatu egiten du softwarearen garapenean arraroa den moduan.

Analisiaren ikasgaiak hizkuntzaren diseinutik haratago doaz. Sarrera egituratua prozesatzen duen edozein sistema - data-tarteak dituen erreserba-inprimakia, baldintzapeko arauekin nomina-konfigurazioa, adarkatze logika duen CRM kanalizazioa - analisi-arazo bat konpontzen ari da. Mewayz-en plataformako 138.000 erabiltzaile baino gehiagok datu konplexu eta egituratuak sortzen dituzte egunero. Analizatzaileek sarrera anbiguoa anbiguo gabeko egitura bilakatzen duten ulertzea da ertz-kasuak dotoretasunez kudeatzen dituen sistema bat eraikitzearen eta norbait data bat ustekabeko formatuan sartzen den momentuan hausten duenaren arteko aldea.

Interpretea: non kodea bizitzen den

Interpretea da magia gertatzen den tokian. AST ibiltzen du, nodoz nodo, eta exekutatzen du. Zenbaki-nodo batek bere balioa itzultzen du. Eragiketa-nodo bitar batek bere ezkerreko eta eskuineko seme-alabak ebaluatzen ditu eta konbinatzen ditu. Funtzio-deiak ingurune batean funtzioa bilatzen du, argumentuak lotzen ditu eta gorputza ebaluatzen du. Jostailu-hizkuntza batean, interprete osoa 200-300 lerrokoa izan daiteke, zure buruari eusteko nahikoa txikia, baina benetako programak exekutatzeko bezain indartsua.

Exekuziorako bi ikuspegi zabal daude: zuhaitzez ibiltzen diren interpreteak eta bytecode makina birtualak. Zuhaitz-ibiltariak sinpleagoak baina motelagoak dira; AST zeharkatzen dute zuzenean. Bytecode VM-ek AST instrukzio sinpleen sekuentzia batean konpilatzen dute (mihiztadura-lengoaia txiki bat bezala) eta horien ordez exekutatzen dituzte, inplementazio konplexutasuna ikaragarri hobeagoa lortzeko. CPython, Python inplementazio estandarrak, bytecode VM bat erabiltzen du. Lua, txertatzeko hizkuntza eraginkorrenetako bat, mundu osoko joko-motoreetan eragina izan zuen erregistroetan oinarritutako VM diseinuaren aitzindaria izan zen.

Ikuspen gakoak: negozio-tresna indartsuenak ez dira ezaugarri gehien dituztenak; erabiltzaileek benetan behar dutena adierazteko barne "hizkuntza" onena dutenak dira. Arau-motor, formula-sistema eta automatizazio-eraikitzaile bakoitza mozorrotutako interprete txiki bat da. Interprete horren kalitateak zehazten du tresna 10 erabiltzailetik 100.000era eskalatzen den ala ez.

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

Inguruneak eta esparrua: Estatuaren ezkutuko arkitektura

Hizkuntz inplementazioan kontzepturik zailenetako bat —eta negozio-softwareari zuzenean aplikatzen zaionetako bat— hizkuntzek egoera inguruneen eta esparruaren bidez nola kudeatzen duten da. Funtzio baten barruan aldagai-esleipena idazten duzunean, aldagai horrek ez luke ihes egin behar eta esparru globalean zerbait gainidatzi behar. Hau agerikoa dirudi, baina behar bezala inplementatzeko ingurumen-katea izeneko datu-egitura bat behar da: hash-mapen zerrenda estekatua, non maila bakoitzak esparru bat adierazten duen, eta aldagaien bilaketak katean gora ibiltzen dira parekatze bat aurkitu arte.

Eredu hau nonahi agertzen da ondo diseinatutako softwarean. Enpresa-plataforma bateko erabiltzaile-baimenek modu berean funtzionatzen dute: taldekide baten sarbidea lehenbailehen bere baimen indibidualak egiaztatuz zehazten da, ondoren bere rolaren baimenak eta, ondoren, erakundearen lehenetsiak. Mewayz-en modulu-sistemak, esteka-orrietatik hasi eta nomina osoa prozesatzeko dena barne hartzen duena, printzipio zehatz hori islatzen duen geruzetako konfigurazioa erabiltzen du. Enpresa-jabe batek erakunde osorako balio lehenetsiak ezartzen ditu, saileko kudeatzaileek ezarpen zehatzak gainidatzi ditzakete eta erabiltzaile indibidualek beren lan-eremua pertsonaliza dezakete, guztiak gatazkarik gabe.

Programazio-lengoaia batean esparrua gaizki erabiltzeak akatsak eragiten ditu. Negozio-plataforma batean esparrua oker egiteak datu-filtrazioak, baimenak handitzea eta benetako dirua balio duen kaos operatiboa eragiten du. Ikasgaiak berdinak dira abstrakzio maila guztietan.

Hizkuntza txiki bat eraikitzeak benetan irakasten dizunak

Inoiz ez baduzu programazio-lengoaia txiki bat eraiki, hona hemen esperientziak zehatz-mehatz irakasten duena, eta zergatik garrantzitsua den garatzailea, sortzaile teknikoa edo egunero erabiltzen dituzten tresnak ulertu nahi dituen norbait:

  • Pentsamenduaren zehaztasuna: ezin zara lausoa izan gramatika definitzerakoan. Zure hizkuntzaren zehaztapenaren anbiguotasun bakoitza zure analizatzailean akats bihurtzen da. Diziplina hau zuzen-zuzenean zehaztapen hobeak, dokumentazio argiagoa eta eginbide-eskakizun zehatzagoak idaztera igarotzen dira.
  • Erabiltzaileekiko enpatia: Hizkuntza bat diseinatzen duzunean, giza pentsamendurako interfaze bat diseinatzen ari zara. Galdetzen ikasten duzu: "Zer esan nahi du erabiltzaileak honekin?" — produktuaren erabaki bakoitza bultzatu beharko lukeen galdera.
  • Errendimenduaren intuizioa: eragiketa batzuk azkarrak eta beste batzuk motelak zergatik diren ikasten duzu, ez erreferentziak irakurtzen, baizik eta interpretatzaileak zenbat pauso ematen dituen ikusita. Horrek eskala duten sistemak diseinatzen hobetzen zaitu.
  • Arazteen menderatzea: Zure hizkuntzak irteera okerrak sortzen dituenean, ez duzu non ezkutatu. Ez dago errua markorik, ez dago liburutegiko bertsioen gatazkarik. Zure logika da, zure datuen egiturak, zure algoritmoa. Honek ingeniari onak handietatik bereizten dituen arazketa-trebetasun sakona sortzen du.
  • Abstrakzioaren estimua: Ulertzen duzu goi-mailako hizkuntzek zergatik egin zituzten aukerak: zergatik JavaScript-ek itxierak dituen, zergatik aukeratu zuen Python-ek zuriune esanguratsuak, zergatik existitzen den Rust-en mailegu-zuzentzailea. Hauek ez dira erabaki arbitrarioak; zure ezarpenean aurkituko dituzun arazo errealetarako irtenbideak dira.

Jostailu hizkuntzetatik mundu errealeko automatizaziora

Jostailu-hizkuntza baten eta ekoizpen-automatizazio-motor baten arteko aldea jende gehienak uste baino txikiagoa da. Shopify-ren Liquid txantiloi-lengoaia txantiloi-sistema sinple eta seguru gisa hasi zen eta orain milioika erakusleihoren esku uzten du. GitHub Actions-en lan-fluxuaren sintaxia YAML-n eraikitako domeinu espezifikoko lengoaia da. Stripe-ren Sigma kontsulta-lengoaiak finantza-taldeei ordainketa-datuak galdetzeko aukera ematen die SQL idatzi gabe. Hauetako bakoitza norbaitek galdetzen hasi zen: "Zein da arazo zehatz hau konpontzen duen hizkuntzarik txikiena eta sinpleena?"

Enpresa-eragiketak ekosistema bakar batean finkatzea helburu duten plataformen atzean dagoen filosofia bera da. Mewayz-ek 207 moduluetan 50 langileentzako nominak dituen enpresa ertaineko esteka-orri bat eta behar duen autonomo bati zerbitzua ematen dionean, azpiko erronka hizkuntza-diseinatzaile guztiek jasaten duten bera da: nola sortu hasiberrientzako nahikoa sinplea den sistema bat, baina erabilera-kasu konplexuetarako nahikoa indartsua? Erantzuna, edozein hizkuntza-inplementatzaileek esango dizuen bezala, primitiboak ondo lortzean datza: erabiltzaileek diseinatzaileak inoiz aurreikusi ez zuen moduan konbina ditzaketen eraikuntza-bloke txiki eta konposagarriak.

Hurrengoan automatizazio-arau bat konfiguratzen duzunean, panel pertsonalizatu bat eraikitzen duzunean edo baldintzapeko lan-fluxua konfiguratzen duzun edozein negozio-tresnetan, gogoratu: programa bat hizkuntza dibertigarri batean idazten ari zarela. Norbaitek hizkuntza horren erraiak diseinatu zituen (lexera, analizatzailea eta interpretea) zure asmoa exekutagarria izan dadin. Eta haien lanaren kalitatea zure esperientzia magia edo miseria sentitzen den erabakitzen duen indar ikusezina da. Errai horiek ulertzeak, gainazaleko mailan ere, superpotere bat ematen dizu: makina interfazearen azpian ikusteko, non hautsiko den aurreikusteko eta bere diseinatzaileek inoiz imajinatu zuten baino urrunago bultzatzeko gaitasuna.

Eraiki zure negozioa gaur egun

Independienteetatik hasi eta agentzietaraino, Mewayz-ek 138.000 enpresa baino gehiago sustatzen ditu 207 modulu integraturekin. Hasi doan, handitzen zarenean eguneratu.

Sortu doako kontua →

Ohiko galderak

Zer dira "lil' fun langs" eta zergatik axola zitzaidake?

Lil' fun langs programazio-lengoaia txiki eta esperimentalak dira, ideia zehatzak arakatzeko edo oinarrizko kontzeptuak irakasteko eraikiak. Asteburuan idatzitako jostailu interpreteetatik hasi eta zeregin estuetarako diseinatutako domeinu espezifikoko hizkuntzak (DSL) bitartekoak dira. Nola funtzionatzen duten ulertzeak software guztiak nola funtzionatzen duen ezagutzeko aukera ematen dizu, egunero oinarritzen zaren negozio-tresnak barne. Ezagutza horrek garatzaile zorrotzago bihurtzen zaitu eta erabaki-hartzaile informatuago bihurtzen zaitu automatizazio-sistemak aukeratzerakoan edo eraikitzerakoan.

Nola laguntzen du hizkuntza-barnekoak ikasteak negozioen automatizazioan?

Analisia, ebaluazioa eta interpreteak bezalako kontzeptuak ulertzen dituzunean, automatizazioa modu ezberdinean ikusten hasten zara. Lan-fluxuen eraikitzaileetan, txantiloi-motorretan eta arau-sistemetan ereduak ezagutzen dituzu. Mewayz bezalako plataformek printzipio hauek erabiltzen dituzte beren 207 moduluetan fakturazioa, CRM lan-fluxuak eta gehiago automatizatzeko, hori guztia kodea idatzi gabe. Oinarriak ezagutzeak tresna hauek gehiago bultzatzen eta arazoak azkarrago konpontzen laguntzen dizu.

Informatika titulua behar al dut hizkuntza txiki bat eraikitzeko?

Ez. Garatzaile askok asteburu bakarrean eraikitzen dute euren lehen interpretea, tutorialak eta kode irekiko gidak erabiliz. Python eta JavaScript bezalako hizkuntzek erraz egiten dute oinarrizko lexera, analizatzailea eta ebaluatzailea idaztea. Helburua ez da hurrengo produkzio-lengoaia sortzea, eginez ikastea baizik. Kalkulagailuaren hizkuntza sinple batek adierazpenak nola analizatzen eta exekutatzen diren irakasten dizu, mundu errealeko garapenera zuzenean transferitzen diren trebetasunak.

DSLak ulertzeak negozio-tresna hobeak aukeratzen lagunduko dit?

Erabat. Negozio-plataforma askok domeinuko hizkuntza espezifikoak txertatzen dituzte formuletarako, iragazkiak eta lan-fluxuen arauetarako. DSLek kaputxa azpian nola funtzionatzen duten ulertzen duzunean, tresnak modu kritikoagoan ebalua ditzakezu. Esaterako, Mewayz-ek negozio-OS integrala eskaintzen du $ 19 hilean hasita, bere moduluetan automatizazio logika integratua duena. DSL kontzeptuak ezagutzeak ezaugarri horiek guztiz aprobetxatzen laguntzen dizu, gainazala urratu beharrean.

beharrean

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