Hacker News

Lil' Fun Langs 'Guts

Ndemanga

10 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Chifukwa Chake Kuyang'ana Pansi pa Zilankhulo Zazing'ono Zopanga Mapulogalamu Kumakupangitsani Kukhala Omanga Bwino

Pulogalamu iliyonse yomwe mumagwiritsa ntchito - kuchokera ku CRM yomwe imayang'anira mayendedwe anu kupita ku injini yodzipangira yomwe imatumiza ma invoice pakati pausiku - idapangidwa ndi chilankhulo cha pulogalamu. Koma kodi munayamba mwadzifunsapo chimene chimapanga chinenero cha pulogalamu tick? Osati zachilengedwe zazikulu ngati Python kapena JavaScript, koma zing'onozing'ono, zowonongeka, zochititsa chidwi zomwe opanga amamanga kumapeto kwa sabata kuti athetse vuto limodzi kapena kuphunzira. Izi "lil' fun langs" - zilankhulo zoseweretsa, zilankhulo za domain-specific (DSLs), ndi omasulira amaphunziro - ndipamene ena mwamalingaliro apamwamba kwambiri mu sayansi yamakompyuta amakhala. Kumvetsetsa matumbo awo sikumangokupangani kukhala wolemba mapulogalamu; zimasintha momwe mumaganizira za zida zomangira, makina oyendetsera ntchito, komanso kupanga makina omwe amagwirira ntchito anthu.

Kodi "Lil' Fun Langs" Ndi Chiyani Kwenikweni?  Zilankhulo monga Lox (kuchokera kwa Robert Nystrom'sCrafting Interpreters), Monkey (kuchokera ku Thorsten Ball'sKulemba Womasulira mu Go), kapena ngakhale zilankhulo za nthabwala monga Brainfuck ndi Chef zilipo kuphunzitsa, kusangalatsa, ndi kukankhira malire a zomwe "chinenero" chimatanthauza. Zilankhulo zazing'onozi zimachotsa zovuta za zida zenizeni zapadziko lapansi ndikuwonetsa momwe ma code amagwirira ntchito.

Koma "lil' fun langs" samangokhala pazochita zamaphunziro. Zilankhulo zodziwika ndi domain zimapatsa zida zina zogwira mtima kwambiri zamabizinesi pamsika. Nthawi zonse mukalemba fomula mu spreadsheet, kufotokozerani lamulo la fyuluta mu kasitomala wanu wa imelo, kapena konzani kayendedwe ka ntchito papulatifomu ngati Mewayz, mukuchita ndi chinenero chaching'ono, chopangidwa ndi cholinga. Ma module 207 mkati mwa Mewayz - kuyambira CRM, invoicing, HR, kasamalidwe ka zombo, ndi zina zambiri - amadalira injini zamalamulo amkati ndi magawo ofotokozera omwe, pachimake, zilankhulo zing'onozing'ono zopangidwira kupatsa ogwiritsa ntchito mphamvu popanda kufunikira digiri ya sayansi ya makompyuta.

Kumvetsetsa kapangidwe ka zilankhulo izi kumawonetsa chifukwa chake zida zina zimamveka mwanzeru pomwe zina zimafuna kulimbana ndi buku lolembedwa mbali ina.

The Lexer: Kuphwanya Mawu Kukhala Atomu

Chilankhulo chilichonse, ngakhale chaching'ono chotani, chimayamba ndi sitepe yofanana: kusanthula lexical, kapena "lexing." Wolemba lexer amatenga zilembo zingapo - monga total = price * quantity + tax - ndikuziphwanya m'magawo ofunikira otchedwa tokeni. The lexer sasamala za tanthauzo panobe. Zimangozindikiritsa kuti total ndi chizindikiritso, = ndi ntchito, mtengo ndi chizindikiritso china, * ndikuchulutsa, ndi zina zotero.

Kupanga lexer ya chilankhulo chaching'ono ndikokhutiritsa modabwitsa. M'mizere yochepera 100 yamakhodi, mutha kuphunzitsa pulogalamu kuzindikira manambala, zingwe, mawu osakira, ndi ogwiritsa ntchito. Kuphweka ndi mfundo yake - imakukakamizani kuganizira zomwe "mawu" ochepa kwambiri m'chinenero chanu amafunikira. Lingaliro lomweli limagwiranso ntchito popanga zida zoyang'ana ogwiritsa ntchito. Injini ya Mewayz ikalola kuti eni mabizinesi ang'onoang'ono akhazikitse lamulo ngati "invoice ikachedwa ndi masiku 7, tumizani imelo yokumbutsa," makinawo amangolemba mwakachetechete lamulolo kukhala ma tokeni omwe atha kuchitapo kanthu. Mawonekedwe abwino kwambiri amawoneka ngati osavutikira ndendende chifukwa wina amaganizira mozama momwe timagulu tating'ono tanthauzo ta ogwiritsa ntchito timawonekera.

Kuyimitsa: Kutembenuza Zizindikiro Zosanja Kukhala Mitengo Yamoyo

Mukakhala ndi zizindikiro, muyenera dongosolo. Parsing amasintha kutsatizana kosalekeza kwa zizindikiro kukhala Abstract Syntax Tree (AST) - choyimira choyimira chomwe chimasonyeza ubale wapakati pa magawo osiyanasiyana a mawu. Mawu akuti 3 + 4 * 5 samangotsatizana ndi zizindikiro zisanu; ndi mtengo womwe kuchulukitsa kumamanga molimba kuposa kuwonjezera, kutulutsa 23 m'malo mwa 35.

Apa ndipamene zinthu zimakhala zosangalatsa. Kuyika ma algorithms ngati kutsika kobwerezabwereza kapena Pratt parsing ndi zidutswa zaukadaulo zomwe zimakwanira mufayilo imodzi koma zimatha kuthana ndi galamala yovuta modabwitsa. Magawo obwerezabwereza, makamaka, amawerengedwa ngati kutanthauzira kwa chinenerocho - ntchito iliyonse imagwirizana ndi lamulo la galamala, kupanga codeyo kudzilemba yokha m'njira yomwe imakhala yosowa popanga mapulogalamu.

Maphunziro ochokera ku kafotokozedwe amapitilira kamangidwe ka chilankhulo. Dongosolo lililonse lomwe limakonza zolowetsa mwadongosolo - fomu yosungitsa malo okhala ndi masiku, zolipira zokhala ndi malamulo okhazikika, mapaipi a CRM okhala ndi nthambi zanthambi - ikuthetsa vuto lodulira. Ogwiritsa ntchito 138,000+ papulatifomu ya Mewayz amapanga zidziwitso zovuta, zosanjidwa tsiku lililonse. Kumvetsetsa momwe ofotokozera amasinthira malingaliro osamveka bwino ndikusiyana pakati pa kupanga makina omwe amasamalira bwino milandu yakutsogolo ndi yomwe imaswa nthawi yomwe wina alowa m'deti mwanjira yosayembekezereka.

Wotanthauzira: Pomwe Khodi Imakhala Yamoyo

Womasulira ndi pamene matsenga amachitika. Imayenda AST, node ndi node, ndi kuchita. Nambala ya nambala imabweretsanso mtengo wake. A binary operation node amawunika ana ake kumanzere ndi kumanja ndi kuwaphatikiza. Kuyitana kwa ntchito kumayang'ana ntchitoyo pamalo, kumangiriza mikangano, ndikuwunika thupi. M'chinenero cha chidole, womasulira onse akhoza kukhala mizere 200-300 - yaying'ono yokwanira kugwira m'mutu mwanu, koma yamphamvu yokwanira kuyendetsa mapulogalamu enieni.

Pali njira ziwiri zophatikizira: omasulira oyenda pamitengo ndi makina owoneka bwino a bytecode. Oyenda pamitengo ndi osavuta koma odekha; amadutsa AST mwachindunji. Ma Bytecode VM amaphatikiza AST kukhala malangizo osavuta (monga chilankhulo chaching'ono) ndikuchita izi m'malo mwake, kugulitsa zovuta kuti zigwire bwino ntchito. CPython, kukhazikitsa kwa Python, kumagwiritsa ntchito bytecode VM. Chilua, chimodzi mwa zilankhulo zomasuliridwa bwino kwambiri, zidayambitsa mapangidwe a VM otengera kaundula omwe adakhudza makina amasewera padziko lonse lapansi.

Chidziwitso chofunikira kwambiri: Zida zamabizinesi zamphamvu kwambiri sizomwe zili ndi mawonekedwe ambiri - ndizomwe zili ndi "chinenero" chamkati chamkati chofotokozera zomwe ogwiritsa ntchito amafunikira. Injini iliyonse yaulamuliro, kachitidwe ka fomula, ndi wopanga makina odzipangira okha ndi wotanthauzira pang'ono mobisa. Ubwino wa womasulirayo umatsimikizira ngati chidacho chikuchokera pa anthu 10 kufika pa 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 →

Chilengedwe ndi Kuchuluka kwake: Zomangamanga Zobisika za State

Limodzi mwa malingaliro opusitsa kwambiri pakukhazikitsa zilankhulo - ndipo imodzi mwamapulogalamu omwe amagwiritsidwa ntchito mwachindunji pamapulogalamu abizinesi - ndi momwe zilankhulo zimayendetsera dziko kudzera m'malo ndi kukula kwake. Mukalemba ntchito yosinthika mkati mwa ntchito, kusinthako sikuyenera kutuluka ndikulembanso china chake padziko lonse lapansi. Izi zikumveka ngati zodziwikiratu, koma kuzikwaniritsa moyenera zimafunikira dongosolo la data lotchedwa unyolo wa chilengedwe: mndandanda wolumikizana wa mamapu a hashi pomwe gawo lililonse limayimira kuchuluka, ndipo kuyang'ana kosinthika kumayendera unyolo mpaka atapeza ofanana.

Mchitidwewu umawonekera paliponse pamapulogalamu opangidwa bwino. Zilolezo za ogwiritsa ntchito papulatifomu yabizinesi zimagwiranso ntchito chimodzimodzi - mwayi wa membala wa gulu umatsimikiziridwa poyang'ana zilolezo zawo kaye, kenako zilolezo zaudindo wawo, kenako zolakwika za bungwe. Dongosolo la module la Mewayz, lomwe limatengera chilichonse kuchokera pamasamba a ulalo-mu-bio mpaka kumalipiro athunthu, limagwiritsa ntchito masinthidwe omwe amawonetsa mfundoyi. Mwiniwake wabizinesi amakhazikitsa kusakhazikika kwa bungwe lonse, oyang'anira madipatimenti amatha kunyalanyaza zokonda zina, ndipo ogwiritsa ntchito payekha amatha kusintha malo awo ogwirira ntchito - zonse popanda mikangano.

Kusokoneza kuchuluka muchilankhulo chokonzekera kumayambitsa zovuta. Kuchita molakwika pabizinesi kumayambitsa kutayikira kwa data, kukwera kwa chilolezo, komanso chipwirikiti chantchito chomwe chimawononga ndalama zenizeni. Maphunziro ndi omwewo pamlingo uliwonse wofotokozera.

Zomwe Kumanga Chinenero Chaching'ono Kumakuphunzitsani Kwenikweni

Ngati simunapangeko chilankhulo chaching'ono chopangira mapulogalamu, izi ndi zomwe chidziwitsocho chimaphunzitsa mosasunthika - komanso chifukwa chake ndikofunikira kaya ndinu wopanga mapulogalamu, woyambitsa luso, kapena wina yemwe akungofuna kumvetsetsa zida zomwe amagwiritsa ntchito tsiku lililonse:

  • Kulondola kwa ganizo: Simungakhale osamveka bwino pofotokoza galamala. Kusamveka kulikonse m'chinenero chanu kumakhala cholakwika muzolemba zanu. Chilangochi chimasamutsidwa mwachindunji ku zolemba zabwinoko, zolemba zomveka bwino, ndi zofunikira zenizeni.
  • Chifundo kwa ogwiritsa ntchito: Mukapanga chilankhulo, mukupanga mawonekedwe amalingaliro amunthu. Mumaphunzira kufunsa kuti: "Kodi wogwiritsa ntchito akutanthauza chiyanindi izi?" - funso lomwe liyenera kuyendetsa chisankho chilichonse chamankhwala.
  • Performance intuition: Mumaphunzira chifukwa chake ntchito zina zimathamanga ndipo zina zimakhala zochedwa, osati chifukwa chowerenga ma benchmarks koma powona kuchuluka kwa masitepe omwe womasulirayo atenga. Izi zimakupangitsani kukhala bwino popanga masikelo.
  • Kuthetsa vuto: Chilankhulo chanu chikatulutsa mawu olakwika, mulibe pobisalira. Palibe dongosolo loyimba mlandu, palibe kusamvana kwa mtundu wa library. Ndi malingaliro anu, mapangidwe anu a data, algorithm yanu. Izi zimamanga mtundu wa luso lochotsa zolakwika lomwe limalekanitsa mainjiniya abwino ndi akulu.
  • Kuyamikira kumasulira: Mukumvetsa chifukwa chake zilankhulo zapamwamba zinapanga zisankho zomwe adachita - chifukwa chake JavaScript yatsekedwa, chifukwa chiyani Python inasankha whitespace, chifukwa chake Rust's checker alipo. Izi sizinthu zongosankha; ndi njira zothetsera mavuto enieni omwe mungakumane nawo pakukhazikitsa kwanu.

Kuchokera Zilankhulo Zoseweretsa Kupita Padziko Lonse Zodzichitira Zenizeni

Kusiyana pakati pa chilankhulo cha chidole ndi injini yopangira makina ndikocheperako kuposa momwe anthu ambiri amaganizira. Chilankhulo chojambula cha Shopify's Liquid chinayamba ngati njira yosavuta, yotetezeka ya template ndipo tsopano ikupatsa mphamvu mamiliyoni akutsogolo. GitHub Actions' workflow syntax ndi chilankhulo chokhazikika chomwe chimamangidwa pa YAML. Chilankhulo cha funso la Stripe's Sigma chimalola magulu azandalama kuti afufuze zamalipiro osalemba SQL. Chilichonse cha izi chinayamba ndi wina kufunsa kuti: "Kodi chilankhulo chaching'ono, chosavuta ndi chiyani chomwe chimathetsa vutoli?"

Iyi ndi filosofi yomweyi kuseri kwa nsanja zomwe cholinga chake ndi kuphatikiza mabizinesi kukhala chilengedwe chimodzi. Pamene Mewayz akutumikira munthu wodziimira payekha yemwe amafunikira tsamba la ulalo-mu-bio ndikampani yapakatikati yomwe ikuyendetsa malipiro kwa antchito 50 kudutsa ma modules ake 207, vuto lalikulu ndilofanana ndi lomwe wokonza chinenero chilichonse amakumana nalo: mumapanga bwanji dongosolo losavuta mokwanira kwa oyamba kumene komabe lamphamvu mokwanira pazochitika zovuta zogwiritsira ntchito? Yankho, monga aliyense wogwiritsa ntchito zilankhulo angakuuzeni, lagona pakukonza zoyambira bwino - midadada yomangika yaing'ono, yomwe ogwiritsa ntchito angaphatikize m'njira zomwe wopanga samayembekezera.

Nthawi ina mukakonza lamulo lodzipangira zokha, kupanga dashboard yokhazikika, kapena kuyika mayendedwe okhazikika mu chida chilichonse chabizinesi, kumbukirani: mukulemba pulogalamu mu lil' fun lang. Winawake adapanga chilankhulo cha chilankhulocho - chofotokozera, chofotokozera, ndi chomasulira - kuti cholinga chanu chikwaniritsidwe. Ndipo ubwino wa ntchito yawo ndi mphamvu yosaoneka yomwe imatsimikizira ngati zochitika zanu zimamveka ngati matsenga kapena chisoni. Kumvetsetsa matumbo amenewo, ngakhale pamtunda, kumakupatsani mphamvu zazikulu: kutha kuwona makina omwe ali pansi pa mawonekedwe, kulosera pomwe adzasweka, ndikukankhira patsogolo kuposa momwe okonza ake amaganizira.

Pangani Bizinesi Yanu OS Lero

Kuchokera kwa odziyimira pawokha mpaka mabungwe, Mewayz imapatsa mphamvu mabizinesi 138,000+ okhala ndi magawo 207 ophatikizika. Yambani kwaulere, sinthani mukakula.

Pangani Akaunti Yaulere →

Mafunso Ofunsidwa Kawirikawiri

Kodi "lil' fun langs" ndi chiyani ndipo ndiyenera kusamalanji?

Lil' fun langs ndi zilankhulo zazing'ono, zoyeserera zomangidwa kuti zifufuze malingaliro enaake kapena kuphunzitsa mfundo zazikuluzikulu. Amachokera ku omasulira a chidole olembedwa kumapeto kwa sabata kupita ku zilankhulo zodziwika bwino (DSLs) zopangidwira ntchito zopapatiza. Kumvetsetsa momwe amagwirira ntchito kumakupatsani kuzindikira mozama momwe mapulogalamu onse amagwirira ntchito - kuphatikiza zida zamabizinesi zomwe mumadalira tsiku lililonse. Kudziwa kumeneko kumakupangitsani kukhala wopanga bwino komanso wodziwa zambiri posankha kapena kupanga makina opangira makina.

Kodi kuphunzira za anthu olankhula chinenero kumathandiza bwanji pakupanga bizinesi?

Mukamvetsetsa mfundo monga kuwerengetsa, kuyesa, ndi kutanthauzira, mumayamba kuwona zosintha zokha mosiyana. Mumazindikira mawonekedwe mu omanga kayendedwe ka ntchito, injini zama template, ndi machitidwe olamulira. Mapulatifomu ngati Mewayz amagwiritsa ntchito mfundo zomwezi m'ma module awo 207 kukulolani kuti musinthe ma invoicing, CRM workflows, ndi zina zambiri - zonse popanda kulemba code. Kudziwa zoyambira kumakuthandizani kukankhira zida izi patsogolo ndikuthetsa zovuta mwachangu.

Kodi ndikufunika digiri ya sayansi ya makompyuta kuti ndipange chilankhulo chaching'ono?

Ayi. Madivelopa ambiri amapanga womasulira wawo woyamba kumapeto kwa sabata limodzi pogwiritsa ntchito maphunziro ndi maupangiri otsegula. Zilankhulo monga Python ndi JavaScript zimapangitsa kuti zikhale zosavuta kulemba lexer, parser, ndi evaluator. Cholinga si kulenga lotsatira kupanga chinenero — ndi kuphunzira ndi kuchita. Ngakhale chilankhulo chosavuta chowerengera chimakuphunzitsani momwe mawu amafalitsidwira ndi kuchitidwa, luso lomwe limasunthira ku chitukuko cha dziko lenileni.

Kodi kumvetsetsa ma DSL kungandithandize kusankha zida zabwinoko zamabizinesi?

Ndithu. Mapulatifomu ambiri amabizinesi amayika zilankhulo zamtundu wamitundu, zosefera, ndi malamulo oyendetsera ntchito. Mukamvetsetsa momwe ma DSL amagwirira ntchito pansi pa hood, mutha kuwunika zida mozama kwambiri. Mwachitsanzo, Mewayz imapereka bizinesi yokwanira yoyambira $19/mo yokhala ndi malingaliro odzipangira okha pama module ake. Kudziwa malingaliro a DSL kumakuthandizani kuti mugwiritse ntchito bwino mbalizo m'malo mongokanda pamwamba.