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

Lil' Naragsak nga Langs' Guts

Dagiti Komento

16 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Apay a ti Panagsiput iti Sirok ti Kap-aw dagiti Babassit a Pagsasao ti Panagprograma ket Pagbalinennaka a Nasaysayaat a Manangbangon

Tunggal pedaso ti software nga usarem — manipud iti CRM a mangsurot kadagiti lead-mo agingga iti makina ti automation a mangipatulod kadagiti invoice iti tengnga ti rabii — ket naibangon babaen ti pagsasao ti panagprograma. Ngem napanunotmo kadin no ania ti mamagbalin iti programming language a tick? Saan a dagiti nagdadakkel nga ecosystem a kas iti Python wenno JavaScript, no di ket dagiti babassit, scrappy, makaay-ayo a karkarna a bangonen dagiti developer iti ngudo ti lawas tapno marisut ti maymaysa a parikut wenno tapno laeng makasursuro. Dagitoy a "lil' fun langs" — dagiti pagsasao nga ay-ayam, dagiti pagsasao nga espesipiko iti dominio (DSL), ken dagiti edukasional nga agipatarus — ket isu ti pagnanaedan ti sumagmamano kadagiti kaaduan nga elegante nga ideya iti siensia ti kompiuter. Ti pannakaawat iti bitukada ket saan laeng a mamagbalin kenka a nasaysayaat a programmer; daytoy ket pundamental a mangbalbaliw no kasano ti panagpanunotmo maipapan ti panagbangon kadagiti ramit, panag-automate kadagiti panagayus ti trabaho, ken panagdisenio kadagiti sistema nga aktual nga agtrabaho para kadagiti tattao.

Ania nga Eksakto Dagiti "Lil' Fun Langs"?

Ti lubong ti panagprograma ket napno kadagiti pagsasao a saan a pulos a nairanta a mangpaandar kadagiti serbidor ti produksion wenno mangproseso kadagiti minilion a transaksion. Dagiti pagsasao a kas iti Lox (manipud iti Crafting Interpreters ni Robert Nystrom), Monkey (manipud iti Writing an Interpreter in Go ni Thorsten Ball), wenno uray dagiti pagsasao nga angaw a kas iti Brainfuck ken Chef ket addada a mangisuro, manglinglingay, ken mangiduron kadagiti beddeng no ania ti kayatna pay ketdi a sawen ti "pagsasao". Dagitoy a babassit a pagsasao ket mangikkat ti kinarikut dagiti pudno a lubong a kadena ti ramit ken mangibutaktak kadagiti raw mechanics no kasano nga agbalin ti kodigo nga aramid.

Ngem dagiti "lil' fun langs" ket saan laeng a limitado kadagiti edukasional nga ehersisio. Dagiti pagsasao nga espesipiko iti dominio ket mangpabileg kadagiti sumagmamano kadagiti kaepektibuan nga alikamen ti negosio iti merkado. Tunggal agsuratka ti pormula iti spreadsheet, mangikeddeng ti pagannurotan ti pagsala iti kliyente ti emailmo, wenno mangikonfigura ti panagayus ti trabaho ti automation iti plataporma a kas ti Mewayz, makilanglangenka iti bassit, nairanta a naibangon a pagsasao. Dagiti 207 a modulo iti uneg ti Mewayz — a mangsaklaw iti CRM, panag-invoice, HR, panagmanehar ti armada, ken dadduma pay — ket agpannurayda kadagiti makina ti akin-uneg a pagannurotan ken dagiti parser ti ebkas nga isuda, iti tengngada, dagiti babassit a pagsasao a nadisenio a mangted kadagiti agar-aramat iti bileg a saan a kasapulan ti degree iti siensia ti kompiuter.

Ti pannakaawat ti anatomia dagitoy a pagsasao ket mangipalgak no apay a marikna ti dadduma nga alikamen bayat a marikna ti dadduma a kasla makigubat iti manual a naisurat iti sabali a dimension.

Ti Lexer: Panagbingay kadagiti Sao iti Atomo

Tunggal pagsasao, uray kasano kabassit, ket mangrugi iti isu met laeng a batayan nga addang: leksikal a panaganalisar, wenno "lexing." Ti maysa a lexer ket mangala ti raw string dagiti karakter — maysa a banag a kas ti total = presio * kaadu + buis — ken bingayenna daytoy kadagiti addaan kaipapanan a pedaso a maawagan kadagiti token. Saan pay a maseknan ti lexer iti kaipapanan. Daytoy ket mangilasin laeng a ti total ket maysa a pakabigbigan, ti = ket maysa nga operator ti assignment, ti price ket sabali a pakabigbigan, ti * ket maysa a panagpaadu, ken dadduma pay.

Nakaskasdaaw a makapnek ti panangibangon iti lexer para iti bassit a pagsasao. Iti kurang a 100 a linia ti kodigo, mabalinmo nga isuro ti maysa a programa a mangbigbig kadagiti numero, kuerdas, keyword, ken operator. Ti kinasimple ket isu ti punto — daytoy ket mangpilit kenka a mangpanunot no ania ti absoluto a kabassitan a grupo dagiti "sasao" a kasapulan ti pagsasaom. Agaplikar daytoy met laeng a panagpampanunot no agdisenio kadagiti ramit a maipasango iti agus-usar. No ti makina ti automation ni Mewayz ket palubosanna ti maysa a bassit a makinkukua ti negosio a mangiset-up ti maysa a pagannurotan a kas ti "no ti invoice ket nalpasen iti 7 nga aldaw, mangipatulod ti palagip nga email," ti sistema ket siuulimek a mang-lexing iti dayta a pagannurotan kadagiti estrukturado a token a mabalinna nga agtignay. Dagiti kasayaatan nga interface ket mariknada nga awan ti panagregget nga eksakto gapu ta adda ti nagpanunot a nauneg maipapan ti langa dagiti kabassitan a kaipapanan a yunit ti panggep ti agar-aramat.

Parsing: Panagbalbaliw kadagiti Flat Tokens a Sibibiag a Kaykayo

Apaman nga addaanka kadagiti token, kasapulam ti estruktura. Ti panagpars ket mangbalbaliw ti patad a panagsasaruno dagiti token iti maysa nga Abstrakto a Kaykayo ti Sintaksis (AST) — ti hirarkikal a pannakabagi a mangtiliw kadagiti relasion ti nagbaetan dagiti nadumaduma a paset ti maysa nga ebkas. Ti ebkas a 3 + 4 * 5 ket saan laeng a panagsasaruno ti lima a token; daytoy ket maysa a kayo a sadiay ti panagpaadu ket naing-inget a mangisilpo ngem ti panagnayon, a mangpataud ti 23 imbes a 35.

Ditoy a pudno a makaay-ayo dagiti bambanag. Dagiti algoritmo ti panagparpar a kas ti rekursibo a panagbaba wenno ti panagparpar ti Pratt ket dagiti elegante a pedaso ti inhenieria a maibagay iti maymaysa a papeles ngem makabael a mangasikaso kadagiti nakaskasdaaw a komplikado a gramatika. Dagiti rekursibo a panagpars ti panagpababa, a naipangpangruna, ket agbasada a gangani a kas ti espesipikasion ti pagsasao a mismo — tunggal maysa a panagandar ket katupag ti maysa a pagalagadan ti gramatika, a mangaramid ti kodigo a bukod a mangdokumento iti wagas a manmano iti panagrang-ay ti software.

Dagiti leksion manipud iti panagpars ket adayo iti labes ti disenio ti pagsasao. Ania man a sistema a mangproseso ti estrukturado nga input — ti porma ti panag-book nga addaan kadagiti sakop ti petsa, ti panagisaad ti payroll nga addaan kadagiti kondisional a pagalagadan, ti tubo ti CRM nga addaan iti lohika ti panagsanga — ket mangsolsolbar ti parikut ti panagpars. Ti 138,000+ nga agus-usar iti plataporma ti Mewayz ket mangpataud iti komplikado, estrukturado a datos iti inaldaw. Ti pannakaawat no kasano a dagiti parser ket pagbalinenda ti saan a nalawag nga input iti saan a nalawag nga estruktura ket isu ti nagdumaan ti panagbangon ti sistema a mangasikaso kadagiti kaso ti igid a naparabur ken ti maysa a mangburak ti kanito ti maysa a tao ket mangiserrek ti petsa iti di ninamnama a pormat.

Ti Managipatarus: Sadino ti Agbiag ti Kodigo

Ti interpreter ti pakapasamakan ti mahika. Magna daytoy iti AST, node por node, ken ipatungpalna dayta. Ti maysa a numero a nodo ket mangisubli ti pategna. Ti binary operation node ket mangtingiting kadagiti kannigid ken kannawan nga annakna ken pagtitiponenna dagitoy. Ti panagayab ti panagandar ket mangsapul ti panagandar iti maysa nga aglawlaw, mangisilpo kadagiti argumento, ken mangtingiting ti bagi. Iti pagsasao nga ay-ayam, ti intero nga agipatarus ket mabalin a 200-300 a linia — bassit nga umdas a maiggaman iti ulom, ngem nabileg pay laeng a mangpataray kadagiti pudno a programa.

Adda dua a nalawa a wagas ti pannakaipatungpal: dagiti tree-walking interpreter ken dagiti bytecode a birtual a makina. Nasimsimple ngem nabannayat dagiti magmagna iti kayo; direkta a lumasatda iti AST. Dagiti bytecode VM ket mangtipon ti AST iti agsasaruno a simple nga instruksion (kas ti bassit a pagsasao ti panagtitipon) ken ipatungpal dagitoy ketdi, a mangtagilako ti kinarikut ti pannakaipatungpal para iti dramatiko a nasaysayaat a panagaramid. Ti CPython, ti pagalagadan a pannakaipatungpal ti Python, ket agus-usar ti bytecode a VM. Ti Lua, maysa kadagiti kaepisientean a maikabil a pagsasao, ket nangirugi ti disenio ti VM a naibatay iti rehistro a nakaimpluensia kadagiti makina ti ay-ayam iti sangalubongan.

Kangrunaan a pannakaammo: Dagiti kabibilgan nga alikamen ti negosio ket saan a dagitoy nga addaan kadagiti kaaduan a tampok — dagitoy ket dagitoy nga addaan iti kasayaatan nga akin-uneg a "pagsasao" para iti panangiyebkas no ania ti aktual a kasapulan dagiti agar-aramat. Tunggal makina ti pagannurotan, sistema ti pormula, ken automation builder ket maysa a bassit nga interpreter a nakadisguise. Ti kalidad dayta nga agipatarus ket mangikeddeng no ti ramit ket ag-scale manipud iti 10 nga agar-aramat aginggana iti 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 →

Dagiti Aglawlaw ken Sakup: Ti Nalimed nga Arkitektura ti Estado

Maysa kadagiti narikut a konsepto iti pannakaipatungpal ti pagsasao — ken maysa kadagiti kaaduan a direkta a maipakat iti software ti negosio — ket no kasano a dagiti pagsasao ket mangituray ti estado babaen dagiti aglawlaw ken sakop. No agsuratka ti maysa a panagituding ti variable iti uneg ti maysa a panagandar, dayta a variable ket saan koma nga agruar ken mangisurat ti maysa a banag iti sangalubongan a sakop. Daytoy ket kasla nalawag, ngem ti umiso a panangipatungpal iti daytoy ket agkasapulan ti estruktura ti datos a tinawtawagan iti kadena ti aglawlaw: ti naisilpo a listaan dagiti mapa ti hash a sadiay ti tunggal maysa a lebel ket mangibagi ti maysa a sakop, ken dagiti variable a panagkita ket magmagna nga agpangato iti kadena aginggana a makasarakda ti panagtunos.

Daytoy a padron ket agparang iti sadinoman iti nasayaat ti pannakadiseniona a software. Dagiti pammalubos ti agar-aramat iti maysa a plataporma ti negosio ket agtrabahoda iti isu met laeng a wagas — ti panagserrek ti maysa a kameng ti grupo ket maikeddeng babaen ti panangsukimat kadagiti indibidual a pammalubosda nga umuna, kalpasanna dagiti pammalubos ti akemna, kalpasanna dagiti default ti organisasion. Ti sistema ti modulo ni Mewayz, a mangsaklaw iti amin manipud kadagiti panid ti link-in-bio aginggana iti naan-anay a panagproseso ti payroll, ket agus-usar kadagiti naisaad a konfigurasion a mangsarming iti daytoy nga eksakto a prinsipio. Ti maysa a makinkukua ti negosio ket mangikeddeng kadagiti default ti sapasap nga organisasion, dagiti manager ti departamento ket mabalinda a baliwan dagiti espesipiko a panagitunos, ken dagiti indibidual nga agar-aramat ket mabalinda nga ipasayaat ti bukodda nga espasio ti trabaho — amin nga awan dagiti panagsusuppiat.

Ti pananggun-od ti saklaw a biddut iti pagsasao ti panagprograma ket mangpataud kadagiti bug. Ti pananggun-od iti sakup a di umiso iti plataporma ti negosio ket pakaigapuan ti panagruar ti datos, panagpangato ti pammalubos, ken ti kita ti riribuk ti panagpataray a makagasto iti pudno a kuarta. Agpada dagiti leksion iti tunggal lebel ti abstraksion.

Ania ti Aktual nga Isuro Kenka ti Panagbangon iti Bassit a Pagsasao

No dika pay pulos nangbangon ti bassit a pagsasao ti panagprograma, ditoy ti konkreto nga isursuro ti padas — ken no apay a napateg no maysaka a developer, maysa a teknikal a nangibangon, wenno maysa a tao a kayatna laeng a maawatan dagiti ramit nga inaldaw nga us-usarenda:

  • Eksakto ti kapanunotan: Saanmo a mabalin ti agbalin a saan a nalawag no mangidepinar iti gramatika. Tunggal ambiguity iti espesipikasion ti pagsasaom ket agbalin a bug iti parser-mo. Daytoy a disiplina ket direkta nga umakar iti panagsurat kadagiti nasaysayaat nga espesipikasion, nalawag a dokumentasion, ken ad-adu nga eksakto a kasapulan ti tampok.
  • Empatia para kadagiti agar-aramat: No agdisenioka iti pagsasao, agdisenioka iti interface para iti kapanunotan ti tao. Masursurom ti agsaludsod: "Ania ti kayat a sawen ti agar-aramat a iti daytoy?" — maysa a saludsod a rumbeng a mangtignay iti tunggal pangngeddeng ti produkto.
  • Intuision ti panagaramid: Masursurom no apay a napardas ti dadduma nga operasion ken nabannayat ti dadduma, saan a manipud iti panagbasa kadagiti pagrukodan no di ket manipud iti pannakakitam no mano nga addang ti eksakto nga aramiden ti agipatarus. Daytoy ket mangaramid kenka a nasaysayaat iti panagdisenio kadagiti sistema nga ag-scale.
  • Debugging mastery: No ti pagsasaom ket mangpataud ti di umiso a rimmuar, awan ti paglemmenganmo. Awan ti balangkas a mapabasol, awan ti panagsusupiat ti bersion ti libraria. Dayta ti lohikam, dagiti estruktura ti datosmo, ti algorithmmo. Daytoy ket mangbangon ti kita ti nauneg a paglaingan ti panag-debug a mangisina kadagiti nasayaat nga inheniero manipud kadagiti naindaklan.
  • Panangipateg iti abstraksion: Maawatanyo no apay a dagiti nangatngato nga antas a pagsasao ket inaramidda dagiti panagpili nga inaramidda — no apay nga addaan ti JavaScript kadagiti panagserra, no apay a ti Python ket nangpili ti naipangpangruna a puraw nga espasio, no apay nga adda ti borrow checker ni Rust. Saan nga arbitrario a pangngeddeng dagitoy; solusion dagitoy kadagiti pudno a parikut a masabetmo iti bukodmo nga implementasion.

Manipud kadagiti Pagsasao ti Ay-ayam aginggana iti Pudno a Lubong nga Automasion

Ti giwang iti nagbaetan ti pagsasao nga ay-ayam ken ti makina ti automation ti produksion ket basbassit ngem ti pampanunoten ti kaaduan a tattao. Ti pagsasao ti Liquid a panagplantilia ti Shopify ket nangrugi a kas maysa a simple, natalged a sistema ti plantilia ken ita ket mangpabileg kadagiti minilion a storefront. Ti sintaksis ti panagayus ti trabaho ti GitHub Actions ket maysa a pagsasao nga espesipiko a dominio a naibangon iti YAML. Ti pagsasao ti panagsaludsod ti Sigma ti Stripe ket mangpalubos kadagiti pinansia a grupo a mangsaludsod kadagiti datos ti panagbayad a saan a mangisurat ti SQL. Tunggal maysa kadagitoy ket nangrugi babaen ti maysa a nagsaludsod: "Ania ti kabassitan, kasimplean a pagsasao a mangrisut iti daytoy nga espesipiko a parikut?"

Daytoy ket isu met laeng a pilosopia iti likudan dagiti plataporma a panggepda a pagtitiponen dagiti panagpataray ti negosio iti maymaysa nga ekosistema. No ti Mewayz ket agserserbi iti maysa a freelancer a kasapulan ti link-in-bio a panid ken ti maysa a kalalainganna ti kadakkelna a kompania a mangpatpataray iti payroll para kadagiti 50 nga empleado iti ballasiw ti 207 a modulona, ​​ti naibatay a karit ket isu met laeng ti sangsanguen ti tunggal maysa a disenio ti pagsasao: kasano a mangparnuayka iti sistema nga umdas a simple para kadagiti agrugi ngem umdas a nabileg para kadagiti komplikado a kaso ti panagusar? Ti sungbat, kas ibaga kenka ti ania man nga implementador ti pagsasao, ket adda iti pananggun-od kadagiti primitibo nga umiso — dagiti babassit, mabukel a bloke ti panagbangon a dagiti agar-aramat ket mabalinda a pagtitiponen kadagiti wagas a saan a pulos a ninamnama ti disenio.

Inton sumaruno nga ikonfiguram ti pagannurotan ti automation, mangaramidka iti kostumbre a dashboard, wenno mangiset-up iti kondisional nga ayus ti trabaho iti aniaman nga alikamen ti negosio, laglagipem: agsursuratka iti programa iti lil’ fun lang. Adda nangdisenio iti bituka dayta a pagsasao — ti lexer, parser, ken interpreter-na — tapno maipatungpal ti panggepmo. Ket ti kalidad ti obrada ti di makita a puersa a mangikeddeng no mariknam a kasla mahika wenno kinapanglaw ti padasmo. Ti pannakaawat kadagita a bituka, uray pay iti rabaw a lebel, ket mangted kenka iti superpower: ti abilidad a mangkita iti makina iti baba ti interface, a mangipadto no sadino ti pannakaburakna, ken mangiduron iti dayta nga ad-adda ngem iti impagarup dagiti disenio daytoy.

Ibangon ti OS ti Negosyom Ita nga aldaw

Manipud kadagiti freelancer aginggana kadagiti ahensia, ti Mewayz ket mangpabileg kadagiti 138,000+ a negosio nga addaan kadagiti 207 a naikaykaysa a modulo. Mangrugika a libre, ag-upgrade inton dumakkelka.

Mangaramid ti Libre nga Kuenta →

Dagiti Masansan a Saludsod

Ania dagiti "lil' fun langs" ken apay koma a maseknanak?

Dagiti Lil' fun langs ket dagiti babassit, eksperimental a pagsasao ti panagprograma a naibangon tapno agsukisok kadagiti espesipiko nga ideya wenno mangisuro kadagiti kangrunaan a konsepto. Manipud kadagiti agipatarus iti ay-ayam a naisurat iti ngudo ti lawas agingga kadagiti domain-specific languages ​​(DSL) a nadisenio para kadagiti akikid nga aramid. Ti pannakaawat no kasano ti panagtrabahoda ket mangted kenka iti naun-uneg a pannakaawat no kasano ti panagandar ti amin a software — agraman dagiti ramit ti negosio a pagpannurayam iti inaldaw. Dayta a pannakaammo ket mangaramid kenka a natadem a developer ken ad-adu ti pannakaammona nga agdesision no agpili wenno mangbangon kadagiti sistema ti automation.

Kasano a makatulong ti panagsursuro maipapan kadagiti internal ti pagsasao iti automation ti negosio?

No maawatanmo dagiti konsepto a kas ti panagpars, panangtingiting, ken dagiti agipatarus, mangrugika a makakita iti automation iti sabali. Mabigbigmo dagiti padron kadagiti managbangon ti panagayus ti trabaho, dagiti makina ti plantilia, ken dagiti sistema ti pagannurotan. Dagiti plataporma a kas ti Mewayz ket agus-usar kadagitoy met laeng a prinsipio iti ballasiw dagiti 207 a moduloda tapno palubosannaka nga ag-automate ti panag-invoice, dagiti panagayus ti trabaho ti CRM, ken dadduma pay — amin nga awan ti panagsurat ti kodigo. Ti pannakaammo kadagiti batayan ket makatulong kenka nga ad-adda a mangiduron kadagitoy nga alikamen ken naparpartak a mangrisut kadagiti isyu.

Kasapulan kadi ti degree iti computer science tapno makaaramidak iti bassit a pagsasao?

Saan a pulos. Adu a developer ti mangbangon ti umuna nga interpreterda iti maymaysa a ngudo ti lawas babaen ti panagusar kadagiti tutorial ken open-source a giya. Dagiti pagsasao a kas ti Python ken JavaScript ket mangaramid a diretso ti panagsurat ti batayan a lexer, parser, ken evaluator. Ti panggep ket saan a mangpartuat ti sumaruno a pagsasao ti produksion — daytoy ket ti panagsursuro babaen ti panagaramid. Uray ti simple a pagsasao ti kalkulador ket mangisuro kenka no kasano a dagiti ebkas ket maiparpar ken maipatungpal, dagiti paglaingan a direkta a mayakar iti pudno a lubong a panagrang-ay.

Mabalin kadi a makatulong kaniak ti pannakaawat kadagiti DSL a mangpili kadagiti nasaysayaat nga alikamen ti negosio?

Naan-anay nga. Adu a plataporma ti negosio ket mangikabil kadagiti pagsasao nga espesipiko iti dominio para kadagiti pormula, pagsala, ken dagiti pagalagadan ti panagayus ti trabaho. No maawatanmo no kasano ti panagtrabaho dagiti DSL iti sirok ti hood, mabalinmo nga evaluate-en dagiti ramit nga ad-adda a kritikal. Kas pagarigan, ti Mewayz ket mangitukon ti komprehensibo nga OS ti negosio a mangrugi iti $19/mo nga addaan iti naibangon a lohika ti automation iti ballasiw dagiti modulona. Ti pannakaammo kadagiti konsepto ti DSL ket makatulong kenka a naan-anay a mang-aprobetsar kadagita a tampok imbes a mangkur-it iti rabaw.