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

Lil' Fun Langs' Guts

Cumenti

14 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Perchè Peeking Under the Hood of Tiny Programming Languages Vi rende un megliu Builder

Ogni pezzu di software chì aduprate - da u CRM chì traccia i vostri conduce à u mutore d'automatizazione chì manda fatture à mezanotte - hè statu custruitu cù una lingua di prugrammazione. Ma avete mai dumandatu ciò chì rende una lingua di prugrammazione tick? Micca l'ecosistemi massivi cum'è Python o JavaScript, ma i picculi, scrappy, deliziosamente strani chì i sviluppatori custruiscenu in un weekend per risolve un solu prublema o solu per amparà. Queste "lil' fun langs" - lingue di ghjoculi, lingue specifiche di u duminiu (DSL) è interpreti educativi - sò induve campanu alcune di l'idee più eleganti in l'informatica. Capisce i so guts ùn vi solu fà un megliu programatore; cambia fundamentalmente a manera di pensà à custruisce e strumenti, automatizà i flussi di travagliu è cuncepisce sistemi chì funzionanu veramente per e persone.

Cosa sò esattamente "Lil' Fun Langs"?

U mondu di prugrammazione hè pienu di lingue chì ùn anu mai statu destinatu à alimentà i servitori di produzzione o processà milioni di transazzioni. Lingue cum'è Lox (da Crafting Interpreters di Robert Nystrom), Monkey (da Writing an Interpreter in Go di Thorsten Ball), o ancu lingue di scherzu cum'è Brainfuck è Chef esistenu per insignà, per divertisce, è per spinghje i limiti di ciò chì significa ancu "lingua". Queste lingue chjuche eliminanu a cumplessità di e catene di strumenti di u mondu reale è espone a meccanica cruda di cumu u codice diventa azzione.

Ma "lil' fun langs" ùn sò micca limitati à esercizii educativi. Lingue specifiche di u duminiu alimentanu alcuni di i strumenti di cummerciale più efficaci in u mercatu. Ogni volta chì scrivite una formula in una foglia di calculu, definisce una regula di filtru in u vostru cliente di email, o cunfigurà un flussu di travagliu d'automatizazione in una piattaforma cum'è Mewayz, site interazzione cù una lingua chjuca, custruita apposta. I moduli 207 in Mewayz - chì includenu CRM, fattura, HR, gestione di a flotta, è più - si basanu in motori di regule internu è parsers d'espressione chì sò, in u so core, lingue minuscule pensate per dà à l'utilizatori putenza senza avè bisognu di un diploma in informatica.

A capiscitura di l'anatomia di queste lingue palesa perchè certi arnesi si sentenu intuitivi mentre chì altri si sentenu cum'è luttà cù un manuale scrittu in un'altra dimensione.

U Lexer: Trasfurmà e parolle in atomi

Ogni lingua, quantunque chjuca, principia cù u listessu passu fundamentale: analisi lessicale, o "lexing". Un lexer piglia una stringa di caratteri crudi - qualcosa cum'è totale = prezzu * quantità + tassa - è a divide in pezzi significativi chjamati tokens. U lexer ùn importa micca u significatu. Solu identifica chì totale hè un identificatore, = hè un operatore di assignazione, prezzu hè un altru identificatore, * hè a multiplicazione, è cetara.

Custruì un lexer per una lingua minuscula hè sorprendentemente satisfacente. In menu di 100 linee di codice, pudete insignà un prugramma per ricunnosce numeri, stringhe, parole chjave è operatori. A simplicità hè u puntu - vi forza à pensà à ciò chì u minimu assolutu di "parole" hà bisognu di a vostra lingua. Stu stessu pensamentu s'applica à u disignu di l'uttene di l'utilizatori. Quandu u mutore d'automatizazione di Mewayz permette à un pruprietariu di una piccula impresa di stabilisce una regula cum'è "quandu a fattura hè in ritardo di 7 ghjorni, mandate un email di ricordu", u sistema lexa tranquillamente quella regula in tokens strutturati nantu à quale pò agisce. E migliori interfacce si sentenu senza sforzu precisamente perchè qualchissia hà pensatu profondamente à ciò chì pareanu e più chjuche unità significative di l'intenzione di l'utilizatori.

Analisi: Trasformà i Tokens Flat in Arburi Viventi

Una volta chì avete tokens, avete bisognu di struttura. L'analisi trasforma una sequenza piatta di tokens in un Abstract Syntax Tree (AST) - una rapprisintazioni gerarchica chì cattura e relazioni trà e diverse parti di una espressione. L'espressione 3 + 4 * 5 ùn hè micca solu una sequenza di cinque tokens; hè un arbulu induve a multiplicazione ligami più strette chì l'aghjunzione, pruducendu 23 invece di 35.

Questu hè induve e cose diventanu veramente divertenti. L'algoritmi di analisi cum'è a discendenza recursiva o l'analisi Pratt sò eleganti pezzi di ingegneria chì si adattanu à un unicu schedariu ma ponu trattà grammatiche sorprendentemente cumplesse. I parsers di discendenza recursiva, in particulare, leghjenu quasi cum'è una specificazione di a lingua stessa - ogni funzione currisponde à una regula di grammatica, facendu chì u codice si autodocumenta in una manera rara in u sviluppu di software.

E lezioni di l'analisi si estende assai oltre u disignu di a lingua. Ogni sistema chì processa l'input strutturatu - una forma di riservazione cù intervalli di data, una cunfigurazione di paghe cù reguli cundiziunali, un pipeline CRM cù logica di ramificazione - risolve un prublema di analisi. I più di 138 000 utilizatori nantu à a piattaforma Mewayz generanu dati cumplessi è strutturati ogni ghjornu. Capisce cumu i parsers trasformanu l'input ambiguu in una struttura senza ambiguità hè a diffarenza trà a custruzzione di un sistema chì gestisce i casi di punta cù grazia è quellu chì rompe u mumentu chì qualchissia entre in una data in un formatu inesperu.

L'Interprete: Induve u codice vene in vita

L'interprete hè induve a magia accade. Cammina l'AST, nodu per nodu, è esegue lu. Un node numericu torna u so valore. Un node di operazione binaria valuta i so figlioli di manca è di diritta è li combina. Una chjama di funzione cerca a funzione in un ambiente, liga argumenti, è evaluate u corpu. In una lingua di ghjoculu, l'interprete tutale puderia esse 200-300 linee - abbastanza chjuca per tene in a vostra testa, ma abbastanza putente per eseguisce prugrammi veri.

Ci hè dui approcci larghi per l'esekzione: l'interpreti di l'arburu è e macchine virtuali di bytecode. L'arbureti sò più simplici, ma più lenti; traversanu l'AST direttamente. I VM Bytecode compilanu l'AST in una sequenza di struzzioni simplici (cum'è una lingua di assemblea minuscula) è eseguite invece quelli, cummercializando a cumplessità di implementazione per un rendimentu drammaticamente megliu. CPython, l'implementazione standard di Python, usa una VM bytecode. Lua, una di e lingue incrustabili più efficaci, hà iniziatu un disignu di VM basatu in registru chì hà influenzatu i motori di ghjocu in u mondu.

Insight chjave: L'uttine di cummerciale più putenti ùn sò micca quelli chì anu più caratteristiche - sò quelli chì anu u megliu "lingua" interna per sprime ciò chì l'utilizatori anu veramente bisognu. Ogni mutore di regula, sistema di formule è custruttore di automatizazione hè un picculu interprete dissimulatu. A qualità di quellu interprete determina se l'utillita scala da 10 utilizatori à 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 →

Ambienti è Scopu: L'Architettura Oculata di u Statu

Unu di i cuncetti più difficili in l'implementazione di a lingua - è unu di i più direttamente applicabili à u software cummerciale - hè cumu e lingue gestiscenu u statu attraversu l'ambienti è u scopu. Quandu scrivite una assignazione variabile in una funzione, quella variabile ùn deve micca fughje è soprascrive qualcosa in u scopu globale. Questu sona ovvi, ma l'implementazione currettamente richiede una struttura di dati chjamata catena di l'ambiente: una lista ligata di carte hash induve ogni livellu rapprisenta un scopu, è e ricerche variabili avanzanu in a catena finu à truvà un match.

Stu mudellu si prisenta in ogni locu in un software ben cuncepitu. I permessi di l'utilizatori in una piattaforma di cummerciale funzionanu in u listessu modu - l'accessu di un membru di a squadra hè determinatu da cuntrollà i so permessi individuali prima, dopu i permessi di u so rolu, dopu i predefiniti di l'urganizazione. U sistema di moduli di Mewayz, chì copre tuttu, da e pagine link-in-bio à u processu cumpletu di a paga, usa una cunfigurazione in strati chì riflette stu principiu esattu. Un pruprietariu di l'impresa stabilisce i valori predeterminati in tutta l'urganizazione, i gestori di dipartimentu ponu annullà paràmetri specifichi, è l'utilizatori individuali ponu persunalizà u so propiu spaziu di travagliu - tuttu senza cunflitti.

Gettà u scopu sbagliatu in una lingua di prugrammazione provoca bug. Sbagliatu u scopu in una piattaforma cummerciale provoca fughe di dati, escalazione di permessi, è u tipu di caos operativu chì costa soldi reale. E lezioni sò listessi à ogni livellu di astrazione.

Ciò chì a custruzzione di una lingua minuscula ti insegna veramente

Se ùn avete mai custruitu un picculu linguaghju di prugrammazione, eccu ciò chì l'esperienza insegna concretamente - è perchè importa chì site un sviluppatore, un fundatore tecnicu, o qualchissia chì vole solu capisce l'arnesi chì utilizanu ogni ghjornu:

  • Precisione di u pensamentu: Ùn pudete micca esse vagu quandu definisce una grammatica. Ogni ambiguità in a vostra specificazione di lingua diventa un bug in u vostru parser. Sta disciplina si trasferisce direttamente à scrive megliu specs, documentazione più chjara è esigenze di funziunalità più precisa.
  • Empatia per l'utilizatori: Quandu cuncepite una lingua, cuncepisce una interfaccia per u pensamentu umanu. Amparate à dumandà: "Chì l'utilizatore significa per questu?" - una quistione chì deve guidà ogni decisione di produttu.
  • Intuizione di u rendiment: Amparate perchè alcune operazioni sò veloci è altre lente, micca da leghje benchmarks ma da vede esattamente quanti passi l'interprete piglia. Questu vi rende megliu à cuncepisce sistemi chì scala.
  • Maestria di debugging: Quandu a vostra lingua produce un output sbagliatu, ùn avete micca induve ammuccià. Ùn ci hè micca un quadru da culpisce, nè cunflittu di versione di a biblioteca. Hè a vostra logica, e vostre strutture di dati, u vostru algoritmu. Questu crea u tipu di capacità di debugging prufonda chì separa i boni ingegneri da i grandi.
  • Apprezzazione per l'astrazione: Capite perchè e lingue di livellu più altu anu fattu e scelte chì anu fattu - perchè JavaScript hà chjusi, perchè Python hà sceltu un spaziu biancu significativu, perchè esiste u verificatore di prestitu di Rust. Ùn sò micca decisioni arbitrarie; sò suluzioni à i prublemi veri chì truverete in a vostra propria implementazione.

Da a lingua di u ghjocu à l'automatizazione in u mondu reale

A distanza trà una lingua di ghjoculi è un mutore d'automatizazione di a produzzione hè più chjuca chè a maiò parte di a ghjente pensa. A lingua di mudelli Liquid di Shopify hà iniziatu cum'è un sistema di mudellu simplice è sicuru è avà alimenta milioni di vetrine. A sintassi di u flussu di travagliu di GitHub Actions hè una lingua specifica di u duminiu custruitu nantu à YAML. A lingua di dumanda Sigma di Stripe permette à e squadre finanziarie di interrogà i dati di pagamentu senza scrive SQL. Ognunu di questi hà cuminciatu cù qualchissia chì dumandava: "Quale hè a lingua più chjuca è simplice chì risolve stu prublema specificu?"

Questa hè a stessa filusufìa daretu à e plataforme chì anu u scopu di cunsulidà l'operazioni cummerciale in un solu ecosistema. Quandu Mewayz serve un freelance chì hà bisognu di una pagina di link-in-bio è una sucietà di media taglia chì gestisce una paga per 50 impiegati in i so 207 moduli, a sfida sottostante hè a stessa affruntata da ogni designer di lingua: cumu si crea un sistema abbastanza simplice per i principianti ma abbastanza putente per casi d'usu cumplessi? A risposta, cum'è qualsiasi implementatore di lingua vi diciarà, si trova in a ghjustizia di i primitivi - picculi blocchi di custruzzione cumponibili chì l'utilizatori ponu cumminà in modi chì u designer ùn hà mai anticipatu.

A prossima volta chì cunfigurà una regula d'automatizazione, custruisce un dashboard persunalizatu, o stabilisce un flussu di travagliu cundizionale in qualsiasi strumentu di cummerciale, ricordate: scrive un prugramma in una lingua divertente. Qualchissia hà cuncepitu u visu di quella lingua - u so lexer, parser, è interprete - per rende eseguibile a vostra intenzione. È a qualità di u so travagliu hè a forza invisibile chì determina se a vostra sperienza si senti cum'è magia o miseria. Capisce quelli guts, ancu à u livellu di a superficia, vi dà una superpotenza: a capacità di vede a macchina sottu à l'interfaccia, di predichendu induve si romperà, è di spinghjala più in là di ciò chì i so disignatori anu mai imaginatu.

Custruisce u vostru sistema operativu cummerciale oghje

Da i freelancers à l'agenzii, Mewayz alimenta più di 138.000 imprese cù 207 moduli integrati. Cumincià gratis, aghjurnà quandu cresce.

Crea un contu gratuitu →

Domande Frequenti

Chì sò "lil' fun langs" è perchè mi devu importa?

Lil' fun langs sò lingue di prugrammazione chjuche è sperimentali custruite per spiegà idee specifiche o insegnà cuncetti core. Vannu da l'interpreti di ghjoculi scritti in un weekend à e lingue specifiche di u duminiu (DSL) pensate per i travaglii stretti. Capisce cumu funzionanu vi dà una visione più profonda di cumu tutti i software operanu - cumpresi l'arnesi di l'affari chì vi fidate ogni ghjornu. Questa cunniscenza ti rende un sviluppatore più forte è un decisore più informatu quandu sceglite o custruisce sistemi d'automatizazione.

Come l'apprendimentu di l'internu di a lingua aiuta cù l'automatizazione di l'imprese?

Quandu capisci cuncetti cum'è parsing, valutazione è interpreti, cumencia à vede l'automatizazione in modu diversu. Ricunnosce i mudelli in i custruttori di flussu di travagliu, i mutori di mudelli è i sistemi di regule. Piattaforme cum'è Mewayz utilizanu sti stessi principii in i so moduli 207 per permette di automatizà a fattura, i flussi di travagliu CRM, è più - tuttu senza scrive codice. A cunniscenza di i fundamenti vi aiuta à spinghje sti strumenti più in più è à risolve i prublemi più rapidamente.

Aghju bisognu di un diploma in informatica per custruisce una lingua minuscula?

Nè tuttu. Parechji sviluppatori custruiscenu u so primu interprete in un unicu weekend utilizendu tutoriali è guide open-source. Lingue cum'è Python è JavaScript facenu simplice di scrive un lexer basicu, parser, è evaluatore. L'obiettivu ùn hè micca di creà a prossima lingua di pruduzzione - hè di amparà da fà. Ancu una lingua simplice di calculatrice vi insegna cumu l'espressioni sò analizate è eseguite, cumpetenze chì si trasferisce direttamente à u sviluppu di u mondu reale.

A capiscenu DSL pò aiutà à sceglie megliu strumenti di cummerciale?

Assolutamente. Parechje piattaforme cummerciale incorporanu lingue specifiche di u duminiu per formule, filtri è regule di flussu di travagliu. Quandu avete capitu cumu i DSL funzionanu sottu u cappucciu, pudete valutà l'arnesi più criticamente. Per esempiu, Mewayz offre un OS di cummerciale cumpletu à partesi da $ 19 / mo cù logica d'automatizazione integrata in i so moduli. A cunniscenza di i cuncetti DSL vi aiuta à sfruttà pienamente e funzioni piuttostu chè di graffià a superficia.

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