Lil' Furaha Langs' matumbo | Mewayz Blog Skip to main content
Hacker News

Lil' Furaha Langs' matumbo

Maoni

12 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Kwa nini Kuchungulia Chini ya Lugha Ndogo za Kuandaa Programu Hukufanya Kuwa Mjenzi Bora

Kila programu unayotumia - kutoka CRM inayofuatilia miongozo yako hadi injini ya otomatiki inayotuma ankara usiku wa manane - iliundwa kwa lugha ya programu. Lakini je, umewahi kujiuliza ni nini hufanya lugha ya programu kuwa tiki? Sio mifumo mikubwa ya ikolojia kama Python au JavaScript, lakini ile ndogo, chakavu, ya kushangaza ambayo watengenezaji huunda wikendi ili kutatua shida moja au kujifunza tu. Hizi "lil' fun langs" - lugha za kuchezea, lugha mahususi za kikoa (DSL), na wakalimani wa elimu - ndipo baadhi ya mawazo maridadi zaidi katika sayansi ya kompyuta huishi. Kuelewa matumbo yao hakukufanyi wewe kuwa mpanga programu bora; kimsingi hubadilisha jinsi unavyofikiri kuhusu zana za ujenzi, utiririshaji wa kazi kiotomatiki, na kubuni mifumo ambayo inawasaidia watu haswa.

"Lil' Fun Langs" ni Nini Hasa?

Ulimwengu wa programu umejaa lugha ambazo hazikukusudiwa kamwe kuwasha seva za uzalishaji au kuchakata mamilioni ya miamala. Lugha kama vile Lox (kutoka kwa Crafting Interpreters ya Robert Nystrom), Tumbili (kutoka Kuandika Mkalimani kwa Go ya Thorsten Ball), au hata lugha za mzaha kama vile Brainfuck na Chef zipo ili kufundisha, kuburudisha, na kuvuka mipaka ya maana ya "lugha" hata. Lugha hizi ndogo huondoa utata wa minyororo ya zana za ulimwengu halisi na kufichua mbinu mbichi za jinsi msimbo unavyofanyika.

Lakini "lil' fun langs" haiko kwenye mazoezi ya kielimu pekee. Lugha mahususi za kikoa huwezesha baadhi ya zana bora zaidi za biashara kwenye soko. Kila wakati unapoandika fomula katika lahajedwali, kufafanua kanuni ya kichujio katika kiteja chako cha barua pepe, au kusanidi utendakazi otomatiki katika jukwaa kama Mewayz, unawasiliana na lugha ndogo iliyobuniwa kwa makusudi. Moduli 207 ndani ya Mewayz - kuanzia CRM, ankara, HR, usimamizi wa meli, na zaidi - zinategemea injini za kanuni za ndani na vichanganuzi vya kujieleza ambavyo, kimsingi, ni lugha ndogo zilizoundwa kuwapa watumiaji nguvu bila kuhitaji digrii ya sayansi ya kompyuta.

Kuelewa muundo wa lugha hizi hudhihirisha kwa nini baadhi ya zana huhisi angavu huku zingine zikihisi kama kushindana na mwongozo ulioandikwa katika mwelekeo mwingine.

The Lexer: Kuvunja Maneno Kuwa Atomu

Kila lugha, haijalishi ni ndogo kiasi gani, huanza na hatua sawa ya kimsingi: uchanganuzi wa kileksika, au "lexing." Leksa huchukua mfuatano mbichi wa herufi - kitu kama total = price * quantity + tax - na kuigawanya katika vipande vya maana vinavyoitwa tokeni. Lexer hajali maana bado. Inabainisha tu kwamba jumla ni kitambulisho, = ni opereta wa kazi, bei ni kitambulisho kingine, * ni kuzidisha, na kadhalika.

Kuunda leksi kwa lugha ndogo kunaridhisha kwa kushangaza. Katika chini ya mistari 100 ya msimbo, unaweza kufundisha programu kutambua nambari, mifuatano, manenomsingi na waendeshaji. Usahili ni hoja - inakulazimisha kufikiria juu ya kile seti ya chini kabisa ya "maneno" lugha yako inahitaji. Mawazo haya haya yanatumika wakati wa kuunda zana zinazowakabili watumiaji. Wakati injini ya Mewayz inapomruhusu mfanyabiashara mdogo kuweka sheria kama vile " ankara inapochelewa kuchelewa kwa siku 7, tuma barua pepe ya kikumbusho," mfumo unaweka sheria hiyo kwa utulivu katika tokeni zilizopangwa ambazo unaweza kuzifanyia kazi. Miunganisho bora zaidi huhisi rahisi kwa sababu mtu fulani alifikiria kwa kina jinsi vitengo vidogo vya maana vya dhamira ya mtumiaji vinavyoonekana.

Kuchanganua: Kugeuza Tokeni Bapa Kuwa Miti Hai

Ukipata tokeni, unahitaji muundo. Uchanganuzi hubadilisha mfuatano bapa wa tokeni kuwa Muhtasari wa Sintaksia Tree (AST) - uwakilishi wa ngazi ya juu unaonasa uhusiano kati ya sehemu tofauti za usemi. Usemi 3 + 4 * 5 sio tu mlolongo wa ishara tano; ni mti ambapo kuzidisha kunafungamana zaidi kuliko kuongeza, na kutoa 23 badala ya 35.

Hapa ndipo mambo yanakuwa ya kufurahisha kweli. Uchanganuzi wa algoriti kama vile mteremko unaojirudia au uchanganuzi wa Pratt ni vipande vya uhandisi vinavyotoshea katika faili moja lakini vinaweza kushughulikia sarufi changamano ya kushangaza. Vichanganuzi asili vya kujirudia, haswa, husomwa karibu kama maelezo ya lugha yenyewe - kila chaguo la kukokotoa linalingana na kanuni ya sarufi, na kufanya msimbo kujiandikisha kwa njia ambayo ni nadra katika uundaji wa programu.

Masomo kutoka kwa uchanganuzi yanaenea zaidi ya muundo wa lugha. Mfumo wowote unaochakata ingizo lililoundwa - fomu ya kuhifadhi iliyo na safu za tarehe, usanidi wa mishahara na sheria za masharti, bomba la CRM lenye mantiki ya matawi - unatatua tatizo la uchanganuzi. Watumiaji 138,000+ kwenye jukwaa la Mewayz hutoa data changamano, iliyopangwa kila siku. Kuelewa jinsi vichanganuzi hugeuza ingizo lisiloeleweka kuwa muundo usio na utata ni tofauti kati ya kujenga mfumo unaoshughulikia kesi za makali kwa umaridadi na ule unaovunja pindi mtu anapoingiza tarehe katika umbizo lisilotarajiwa.

Mkalimani: Mahali Msimbo Unapatikana

Mkalimani ndipo uchawi hutokea. Inatembea AST, nodi kwa nodi, na kuitekeleza. Nodi ya nambari inarudisha thamani yake. Nodi ya operesheni ya binary hutathmini watoto wake wa kushoto na kulia na kuwachanganya. Simu ya kukokotoa hutafuta chaguo za kukokotoa katika mazingira, hufunga mabishano, na kutathmini mwili. Katika lugha ya kuchezea, mkalimani mzima anaweza kuwa na mistari 200-300 - ndogo ya kutosha kukushikilia kichwani, lakini ina nguvu ya kutosha kuendesha programu halisi.

Kuna mbinu mbili pana za utekelezaji: wakalimani wa kutembea kwa miti na mashine pepe za bytecode. Watembea kwa miti ni rahisi lakini polepole; wanapitia AST moja kwa moja. Bytecode VM hukusanya AST katika mfuatano wa maagizo rahisi (kama lugha ndogo ya kusanyiko) na kutekeleza hayo badala yake, biashara ya utata wa utekelezaji kwa utendakazi bora zaidi. CPython, utekelezaji wa kawaida wa Python, hutumia bytecode VM. Kilua, mojawapo ya lugha bora zaidi zinazoweza kupachikwa, ilianzisha muundo wa VM unaotegemea rejista ambao uliathiri injini za mchezo ulimwenguni kote.

Maarifa muhimu: Zana zenye nguvu zaidi za biashara si zile zilizo na vipengele vingi - ndizo zilizo na "lugha" bora ya ndani ya kueleza kile ambacho watumiaji wanahitaji. Kila injini ya sheria, mfumo wa fomula, na kijenzi cha kiotomatiki ni mkalimani mdogo aliyejificha. Ubora wa mkalimani huyo huamua kama zana inakua kutoka kwa watumiaji 10 hadi 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 →

Mazingira na Upeo: Usanifu Uliofichwa wa Jimbo

Mojawapo ya dhana gumu zaidi katika utekelezaji wa lugha - na mojawapo inayotumika moja kwa moja kwa programu ya biashara - ni jinsi lugha zinavyodhibiti hali kupitia mazingira na upeo. Unapoandika mgawo wa kutofautisha ndani ya chaguo la kukokotoa, utofauti huo haufai kuvuja na kubatilisha kitu katika wigo wa kimataifa. Hii inaonekana wazi, lakini kuitekeleza kwa usahihi kunahitaji muundo wa data unaoitwa msururu wa mazingira: orodha iliyounganishwa ya ramani za hashi ambapo kila ngazi inawakilisha upeo, na upembuzi tofauti hupanda msururu hadi wapate inayolingana.

Mchoro huu unaonekana kila mahali katika programu iliyoundwa vizuri. Ruhusa za mtumiaji katika jukwaa la biashara hufanya kazi kwa njia ile ile - ufikiaji wa mshiriki wa timu hubainishwa kwa kuangalia ruhusa zao za kibinafsi kwanza, kisha ruhusa za majukumu yao, kisha chaguomsingi za shirika. Mfumo wa moduli wa Mewayz, ambao unajumuisha kila kitu kutoka kwa kurasa za kiungo-katika-bio hadi usindikaji kamili wa malipo, hutumia usanidi wa tabaka ambao unaakisi kanuni hii kamili. Mmiliki wa biashara huweka chaguomsingi za shirika zima, wasimamizi wa idara wanaweza kubatilisha mipangilio maalum, na watumiaji binafsi wanaweza kubinafsisha nafasi yao ya kazi - yote bila migongano.

Kupata wigo vibaya katika lugha ya programu husababisha hitilafu. Kupata wigo vibaya katika jukwaa la biashara husababisha uvujaji wa data, kuongezeka kwa ruhusa, na aina ya machafuko ya kiutendaji ambayo hugharimu pesa halisi. Masomo ni yale yale katika kila ngazi ya muhtasari.

Ni Nini Kinachokufundisha Kujenga Lugha Ndogo

Ikiwa hujawahi kuunda lugha ndogo ya programu, haya ndio uzoefu unafunza - na kwa nini ni muhimu ikiwa wewe ni msanidi programu, mwanzilishi wa kiufundi, au mtu ambaye anataka tu kuelewa zana wanazotumia kila siku:

  • Usahihi wa mawazo: Huwezi kuwa na utata unapofafanua sarufi. Kila utata katika vipimo vya lugha yako huwa hitilafu katika kichanganuzi chako. Taaluma hii huhamia moja kwa moja hadi kwenye uandishi wa vipimo bora zaidi, uwekaji hati wazi zaidi na mahitaji sahihi zaidi ya vipengele.
  • Huruma kwa watumiaji: Unapobuni lugha, unabuni kiolesura cha mawazo ya binadamu. Unajifunza kuuliza: "Mtumiaji anamaanisha nini kwa hili?" — swali ambalo linafaa kuendesha kila uamuzi wa bidhaa.
  • Mtazamo wa utendakazi: Unajifunza kwa nini baadhi ya shughuli ni za haraka na nyingine ni za polepole, si kutokana na kusoma vigezo bali kutokana na kuona ni hatua ngapi hasa ambazo mkalimani huchukua. Hii inakufanya uwe bora zaidi katika kubuni mifumo yenye mizani.
  • Ustadi wa utatuzi: Lugha yako inapotoa pato lisilofaa, huna pa kujificha. Hakuna mfumo wa kulaumiwa, hakuna mgongano wa toleo la maktaba. Ni mantiki yako, miundo yako ya data, algoriti yako. Hii hujenga aina ya ustadi wa utatuzi wa kina ambao hutenganisha wahandisi wazuri kutoka kwa wahandisi wakuu.
  • Kuthamini uondoaji: Unaelewa ni kwa nini lugha za kiwango cha juu zilifanya chaguo walizofanya - kwa nini JavaScript imefungwa, kwa nini Python ilichagua nafasi nyeupe, kwa nini kikagua kukopa cha Rust kipo. Haya si maamuzi ya kiholela; ni suluhu za matatizo halisi utakayokutana nayo katika utekelezaji wako.

Kutoka Lugha za Vichezeo hadi Uendeshaji wa Ulimwengu Halisi

Pengo kati ya lugha ya kuchezea na injini ya utengenezaji otomatiki ni ndogo kuliko watu wengi wanavyofikiria. Lugha ya kuiga ya Shopify's Liquid ilianza kama mfumo rahisi na salama wa violezo na sasa ina uwezo wa mamilioni ya mbele ya duka. Sintaksia ya mtiririko wa kazi ya GitHub Actions ni lugha mahususi ya kikoa iliyojengwa kwenye YAML. Lugha ya hoja ya Stripe's Sigma huruhusu timu za fedha kuhoji data ya malipo bila kuandika SQL. Kila moja ya haya ilianza na mtu kuuliza: "Ni lugha gani ndogo na rahisi ambayo husuluhisha tatizo hili mahususi?"

Hii ni falsafa sawa nyuma ya mifumo ambayo inalenga kuunganisha shughuli za biashara katika mfumo mmoja wa ikolojia. Wakati Mewayz inamhudumia mfanyakazi huru anayehitaji ukurasa wa kiungo-katika-wasifu na kampuni ya ukubwa wa kati inayoendesha malipo kwa wafanyakazi 50 katika moduli zake 207, changamoto ya msingi ni ile ile inayokabili kila mbuni wa lugha: unawezaje kuunda mfumo ambao ni rahisi kutosha kwa wanaoanza lakini wenye uwezo wa kutosha kwa kesi changamano za matumizi? Jibu, kama mtekelezaji yeyote wa lugha atakavyokuambia, lipo katika kupata masahihisho ya awali - vijenzi vidogo, vinavyoweza kutungwa ambavyo watumiaji wanaweza kuchanganya kwa njia ambazo mbuni hakutarajia.

Wakati mwingine utakaposanidi sheria ya otomatiki, kuunda dashibodi maalum, au kusanidi mtiririko wa masharti katika zana yoyote ya biashara, kumbuka: unaandika programu katika lil' fun lang. Mtu alibuni uwezo wa lugha hiyo - kikanuzi, kichanganuzi na mkalimani wake - ili kufanya dhamira yako itekelezwe. Na ubora wa kazi yao ni nguvu isiyoonekana inayoamua kama uzoefu wako unahisi kama uchawi au taabu. Kuelewa matumbo hayo, hata kwa kiwango cha juu zaidi, hukupa nguvu kuu: uwezo wa kuona mashine chini ya kiolesura, kutabiri ni wapi itapasuka, na kuisukuma zaidi kuliko wabunifu wake walivyowahi kufikiria.

Jenga Mfumo wa Uendeshaji wa Biashara Yako Leo

Kutoka kwa wafanyakazi huru hadi mashirika, Mewayz inasimamia biashara 138,000+ kwa kutumia sehemu 207 zilizounganishwa. Anza bila malipo, pata toleo jipya zaidi unapokua.

Unda Akaunti Bila Malipo →

Maswali Yanayoulizwa Sana

"lil' fun langs" ni nini na kwa nini nijali?

Lil' langs za kufurahisha ni lugha ndogo za programu za majaribio zilizoundwa ili kuchunguza mawazo mahususi au kufundisha dhana za msingi. Zinatofautiana kutoka kwa wakalimani wa vichezeo vilivyoandikwa wikendi hadi lugha mahususi za kikoa (DSL) iliyoundwa kwa kazi finyu. Kuelewa jinsi zinavyofanya kazi hukupa maarifa zaidi kuhusu jinsi programu zote zinavyofanya kazi - ikiwa ni pamoja na zana za biashara unazozitegemea kila siku. Ujuzi huo hukufanya kuwa msanidi mzuri zaidi na mtoa maamuzi aliye na ujuzi zaidi wakati wa kuchagua au kuunda mifumo ya otomatiki.

Je, kujifunza kuhusu lugha ya ndani kunasaidia vipi katika kujiendesha kwa biashara?

Unapoelewa dhana kama vile uchanganuzi, tathmini na wakalimani, unaanza kuona otomatiki kwa njia tofauti. Unatambua ruwaza katika wajenzi wa mtiririko wa kazi, injini za violezo na mifumo ya sheria. Mifumo kama vile Mewayz hutumia kanuni hizi katika moduli 207 ili kukuruhusu ufanye ankara kiotomatiki, utendakazi wa CRM, na zaidi - yote bila kuandika msimbo. Kujua mambo ya msingi hukusaidia kusukuma zana hizi zaidi na kutatua masuala haraka zaidi.

Je, ninahitaji shahada ya sayansi ya kompyuta ili kujenga lugha ndogo?

Sivyo kabisa. Wasanidi wengi huunda mkalimani wao wa kwanza katika wikendi moja kwa kutumia mafunzo na miongozo ya chanzo huria. Lugha kama Python na JavaScript hufanya iwe rahisi kuandika lexer ya kimsingi, kichanganuzi, na kitathmini. Lengo si kuunda lugha inayofuata ya uzalishaji — ni kujifunza kwa vitendo. Hata lugha rahisi ya kikokotoo inakufundisha jinsi misemo inavyochanganuliwa na kutekelezwa, ujuzi ambao huhamia moja kwa moja kwenye maendeleo ya ulimwengu halisi.

Je, kuelewa DSL kunaweza kunisaidia kuchagua zana bora za biashara?

Hakika. Mifumo mingi ya biashara hupachika lugha mahususi za kikoa kwa fomula, vichungi na sheria za mtiririko wa kazi. Unapoelewa jinsi DSL zinavyofanya kazi chini ya kofia, unaweza kutathmini zana kwa umakini zaidi. Kwa mfano, Mewayz inatoa Mfumo wa Uendeshaji wa biashara wa kina kuanzia $19/mwezi na mantiki ya otomatiki iliyojengewa ndani kwenye moduli zake. Kujua dhana za DSL hukusaidia kutumia vipengele hivyo kikamilifu badala ya kukwaruza usoni.