Hacker News

Lil' Fun Langs 'Guts

Comments

17 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Çima nihêrîna di bin lepên zimanên bernamesaziyê yên piçûk de, te çêkerek çêtir dike

Her perçeyek nermalava ku hûn bikar tînin - ji CRM-ya ku rêberên we dişopîne heya motora otomasyonê ya ku nîvê şevê fatûreyan dişîne - bi zimanek bernamesaziyê hate çêkirin. Lê gelo we qet meraq kiriye ka çi zimanek bernamesaziyê tîk dike? Ne ekosîstemên girseyî yên mîna Python an JavaScriptê, lê yên piçûk, şikestî, ecêb ecêb ên ku pêşdebiran di dawiya hefteyê de ava dikin da ku pirsgirêkek yekane çareser bikin an tenê fêr bibin. Van "zimanên kêfê" - zimanên pêlîstok, zimanên taybetî yên domainê (DSL), û wergêrên perwerdehiyê - ew in ku hin ramanên herî xweş ên di zanistiya komputerê de dijîn. Fêmkirina gewriya wan ne tenê we dike bernamenûsek çêtir; ew di bingeh de diguhezîne ka hûn çawa li ser avakirina amûran, otomatîkkirina gerokên xebatê û sêwirana pergalên ku bi rastî ji mirovan re dixebitin difikirin.

Bi rastî "Lil' Fun Langs" çi ne?

Cîhana bernamesaziyê tijî zimanên ku tu carî ji bo hêzdarkirina serverên hilberînê an jî bi mîlyonan danûstendinan pêk nehatin tije ye. Zimanên wek Lox (ji Robert Nystrom's Crafting Interpreters), Monkey (ji Thorsten Ball's Writing an Interpreter in Go), an jî zimanên pêkenokî yên mîna Brainfuck û Chef hene ku ji bo hînkirin, şahîkirin û derbaskirina sînorên wateya "ziman" jî hene. Van zimanên piçûk tevliheviya zincîreyên amûran ên cîhana rastîn ji holê radikin û mekanîka xav a ku kod çawa dibe kiryar eşkere dikin.

Lê "lil' fun langs" bi tetbîqatên perwerdehiyê ne sînordar in. Zimanên taybetî yên domainê hin amûrên karsaziyê yên herî bi bandor ên li ser sûkê hêz dikin. Her gava ku hûn di çarşefek belavokê de formulek dinivîsin, di muwekîlê e-nameya xwe de rêgezek fîlterê diyar dikin, an di platformek mîna Mewayz de karûbarek otomatîkî mîheng dikin, hûn bi zimanek piçûk û armanc-çêkirî re têkilî dikin. 207 modulên di hundurê Mewayz de - CRM, fatûrekirin, HR, rêveberiya fîloyê, û hêj bêtir - xwe dispêrin motorên qaîdeyên hundurîn û parserên derbirînê yên ku di bingehê xwe de, zimanên piçûk in ku ji bo hêzê bidin bikarhêneran bêyî ku hewcedariya destûrnameyek zanistiya komputerê bikin hatine çêkirin.

Fêmkirina anatomiya van zimanan diyar dike ku çima hin amûr hestiyar in, lê yên din hest dikin ku bi manualek ku di pîvanek din de hatî nivîsandin re şer bikin.

Lexer: Şikandina peyvan nav atoman

Her ziman, çi qas piçûk be jî, bi heman gavê bingehîn dest pê dike: analîza ferhengî, an "lexing". A lexer rêzek xav ji karakteran digire - tiştek wekî tevahiya = biha * mîqdar + bac - û wê di perçeyên watedar ên ku jê re token têne gotin vediqetîne. The lexer li ser wateya hîn ne girîng e. Ew tenê destnîşan dike ku total nasnameyek e, = operatorek peywirdarkirinê ye, price nasnameyek din e, * pirbûnek e, û hwd.

Avakirina lexerek ji bo zimanek piçûk ecêb têrker e. Di kêmtirî 100 rêzikên kodê de, hûn dikarin bernameyek hîn bikin ku hejmar, rêzik, peyvên sereke û operatoran nas bike. Xalê sadebûn e - ew zorê dide we ku hûn li ser kîjan herî hindiktirîn koma "peyvan" a zimanê we hewce bike bifikirin. Ev heman raman di dema sêwirana amûrên rûbirûyê bikarhêner de derbas dibe. Gava ku motora otomasyonê ya Mewayz dihêle ku xwediyê karsaziyek piçûk qaîdeyek wekî "gava fatûre 7 rojan dereng bimîne, e-nameya bîranînê bişîne" saz bike, pergal bi bêdengî wê qaîdeyê li ser tokenên birêkûpêk ku ew dikare li ser tevbigere vedibêje. Navberên çêtirîn bi rastî bêhêz hîs dikin ji ber ku kesek kûr difikirî ku yekeyên herî piçûk ên watedar ên niyeta bikarhêner çawa xuya dikin.

Parskirin: Veguheztina Nîşanên Xiristiyan Li Darên Zindî

Dema ku hûn nîşanekan hebin, hûn hewceyê avahîsaziyê ne. Parskirin rêzek guncan a nîşanan vediguherîne Dara Hevoksaziya Abstract (AST) - nûneriyek hiyerarşîk ku têkiliyên di navbera beşên cihêreng ên îfadeyê de digire. Gotina 3 + 4 * 5 ne tenê rêzek ji pênc nîşanan e; ew darek e ku lê pirbûn ji lêzêdekirinê hişktir girêdide, li şûna 35 23 çêdike.

Li vir tişt bi rastî kêfxweş dibin. Algorîtmayên parskirinê yên mîna daketina paşverû an parkirina Pratt perçeyên endezyariyê yên spehî ne ku di pelek yekane de cih digirin lê dikarin rêzimanên ecêb tevlihev bi rê ve bibin. Bi taybetî parskerên daketina paşverû, hema hema wekî taybetmendiyek ziman bixwe dixwînin - her fonksiyonek bi qaîdeyek rêzimanê re têkildar e, kodê bi rengek ku di pêşkeftina nermalavê de kêm e, bixwe-belge dike.

Dersên parskirinê ji sêwirana ziman wêdetir in. Her pergalek ku têketina birêkûpêk pêvajo dike - formek veqetandinê bi rêzikên tarîxê, veavakirina mûçeya bi qaîdeyên şertî, boriyek CRM bi mantiqa şaxkirinê - pirsgirêkek parskirinê çareser dike. Zêdetirî 138,000 bikarhênerên li ser platforma Mewayz her roj daneyên tevlihev, sazkirî diafirînin. Fêmkirina çawa parsker têketina nezelal vediguherîne avahiyek nezelal, ferqa di navbera avakirina pergalek ku bi dilşewatî dozên qeraxê digire û ya ku gava kesek bi rengekî nediyar têkevin dîrokek dişkîne.

Wergêr: Ku Kod Bijîn

Wergêr cihê ku sêrbaz çêdibe ye. Ew AST-ê dimeşe, girêk bi girêk, û îdam dike. Nodek hejmar nirxa xwe vedigerîne. Nodek operasyonê ya binaryê zarokên xwe yên çep û rast dinirxîne û wan li hev dike. Bangek fonksiyonek fonksiyonê li hawîrdorek dinêre, argumanan girêdide, û laş dinirxîne. Di zimanekî pêlîstokê de, dibe ku tevahiya wergêr 200-300 rêzik be - têra xwe piçûk e ku meriv di serê we de bigire, di heman demê de têra xwe hêzdar e ku bernameyên rastîn bimeşîne.

Du nêzîkatiyên berfereh ên darvekirinê hene: wergêrên daran-rêveçûnê û makîneyên virtual yên bytecode. Dar-meşiyan sadetir lê hêdîtir in; ew rasterast AST derbas dikin. Bytecode VM-ê AST-ê di rêzek rêwerzên hêsan de (wek zimanek meclîsê ya piçûk) berhev dikin û li şûna wan wan bicîh dikin, ji bo performansa dramatîk çêtir tevliheviya pêkanîna bazirganiyê dikin. CPython, pêkanîna standard Python, VM-ya bytecode bikar tîne. Lua, yek ji zimanên bikêrhatî yên bikêrhatî, pêşengiya sêwirana VM-ya qeydkirî kir ku bandor li motorên lîstikê li çaraliyê cîhanê kir.

Agahdariya sereke: Amûrên karsaziyê yên herî hêzdar ne yên ku herî zêde taybetmendî ne - ew "zimanên" hundurîn ên çêtirîn in ji bo îfadekirina tiştê ku bikarhêner bi rastî hewce ne. Her motora qaîdeyê, pergala formula, û çêkerê otomasyonê wergerek piçûk e ku veşartî ye. Qalîteya wê wergêr diyar dike ka amûr ji 10 bikarhêneran bigihîje 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 →

Jîngeh û Qada: Mîmariya Veşartî ya Dewletê

Di pêkanîna zimên de yek ji têgînên herî dijwar - û yek ji wan ên ku rasterast ji bo nermalava karsaziyê ve tê sepandin - ev e ku ziman çawa bi hawîrdor û berferehiyê ve dewletê birêve dibin. Gava ku hûn peywirek guhêrbar di hundurê fonksiyonek de dinivîsin, divê ew guhêrbar di çarçoveyek gerdûnî de tiştek dernekeve û binivîsîne. Ev eşkere xuya dike, lê ji bo pêkanîna wê bi rêkûpêk avahiyek daneyê bi navê zincîra jîngehê hewce dike: navnîşek girêdayî nexşeyên hash ku her astek çarçoveyek temsîl dike, û lêgerînên guhêrbar li ser zincîreyê dimeşin heya ku hevberdanê bibînin.

Ev nimûne li her derê di nermalava xweş sêwirandî de xuya dike. Destûrên bikarhêner di platformek karsaziyê de bi heman rengî dixebitin - gihîştina endamek tîmê bi kontrolkirina destûrên xwe yên kesane pêşî, dûv re destûrnameyên rola wan, paşê pêşnumayên rêxistinê têne destnîşankirin. Pergala modulê ya Mewayz, ku her tiştî ji rûpelên girêdan-di-bio bigire heya pêvajoya bêkêmasî ya mûçeyê vedihewîne, veavakirina qat bi kar tîne ku vê prensîba tam nîşan dide. Xwediyê karsaziyek pêşnumayên li seranserê rêxistinê destnîşan dike, rêvebirên beşê dikarin mîhengên taybetî bişopînin, û bikarhênerên takekesî dikarin cîhê xebata xwe xweş bikin - hemî bêyî pevçûn.

Di zimanekî bernamesaziyê de çewtî çewisandin dibe sedema xeletiyan. Di platformek karsaziyê de xeletîbûna çarçoweyê dibe sedema derketina daneyan, zêdebûna destûr, û celebek kaosa xebitandinê ya ku dravê rastîn lê dike. Ders di her asta abstrakasyonê de yek in.

Avakirina Zimanek Biçûk Bi Rastî Te Hîn Dike

Heke we tu carî zimanek bernamenûsek piçûk ava nekiriye, li vir tiştê ku ezmûn bi taybetî hîn dike - û çima girîng e hûn pêşdebir in, damezrînerek teknîkî ne, an kesek ku tenê dixwaze amûrên ku ew her roj bikar tînin fam bike:

  • Rastbûna ramanê: Dema ku rêzimanekê diyar dike hûn nikarin nezelal bin. Her nezelaliyek di taybetmendiya zimanê we de di parsera we de dibe xeletiyek. Ev dîsîplîn rasterast derbasî nivîsandina taybetmendîyên çêtir, belgeyên zelaltir, û pêdiviyên taybetmendiyê yên rasttir dibe.
  • Empatî ji bo bikarhêneran: Dema ku hûn zimanekî sêwiran dikin, hûn ji bo ramana mirovî navbeynkarek dizayn dikin. Hûn fêr dibin ku bipirsin: "Bikarhêner Wateya vê yekê çi ye?" - pirsek ku divê her biryarek hilberan bide meşandin.
  • Intuitiona performansê: Hûn fêr dibin ka çima hin kar bilez in û yên din hêdî ne, ne ji xwendina pîvanan lê ji dîtina tam çend gavan ku wergêr diavêje. Ev yek we di sêwirandina pergalên ku pîvan de çêtir dike.
  • Serdestkirina çewtiyê: Dema ku zimanê we encamek xelet derdixe, cihê we tune ku hûn xwe veşêrin. Çarçoveyek ku sûcdar be, nakokiya guhertoya pirtûkxaneyê tune. Ew mantiqa we, strukturên daneya we, algorîtmaya we ye. Ev cûreyek jêhatîbûna nerastkirina çewtiyê ya kûr ava dike ku endezyarên baş ji yên mezin vediqetîne.
  • Qedexekirina abstraction: Hûn fêm dikin ka çima zimanên asta bilind tercîhên xwe kirine - çima JavaScript girtî ye, çima Python cîhê spî yê girîng hilbijart, çima kontrolkera deynê Rust heye. Ev ne biryarên keyfî ne; ew çareseriya pirsgirêkên rast in ku hûn ê di pêkanîna xwe de rû bi rû bibin.

Ji Zimanên pêlîstokan berbi otomasyona cîhana rastîn

Capahiya di navbera zimanê pêlîstok û motora otomatîkê ya hilberînê de ji ya ku pir kes difikirin piçûktir e. Zimanê şablonê Liquid ya Shopify wekî pergalek şablonê hêsan, ewle dest pê kir û naha bi mîlyonan pêşangehan hêz dike. Hevoksaziya xebatê ya GitHub Actions zimanek domain-taybetî ye ku li ser YAML hatî çêkirin. Zimanê pirsiyariya Sigma ya Stripe dihêle tîmên darayî bêyî nivîsandina SQL daneyên dravdanê bipirsin. Her yek ji van bi kesek dest pê kir û pirsî: "Zimanê herî piçûk, herî hêsan çi ye ku vê pirsgirêka taybetî çareser dike?"

Ev heman felsefe ye li pişt platformên ku armanc dikin ku karûbarên karsaziyê di yek ekosîstemek yekdeng bikin. Dema ku Mewayz ji xebatkarek serbixwe re xizmet dike ku pêdivî bi rûpelek lînka-di-bio heye û pargîdaniyek navîn ku ji bo 50 karmendan li seranserê 207 modulên xwe mûçeyan dimeşîne, kêşeya bingehîn heman e ku her sêwiranerê ziman pê re rû bi rû maye: hûn çawa pergalek ku ji bo destpêkek têra xwe hêsan e lê ji bo dozên karanîna tevlihev têra xwe bi hêz diafirînin? Bersiv, wekî ku her cîbicîkarek zimanî dê ji we re bibêje, di rastkirina primitives de ye - blokên avahiyek piçûk, berhevkirî ku bikarhêner dikarin bi awayên ku sêwiraner qet texmîn nedikir berhev bikin.

Cara din ku hûn qaîdeyek otomasyonê mîheng dikin, dashboardek xwerû ava dikin, an di her amûrek karsaziyê de xebatek şertî saz dikin, ji bîr mekin: hûn bernameyekê bi zimanek kêfê dinivîsin. Kesek guhên wî zimanî sêwirand - lexer, parser û wergêr - da ku niyeta we were cîbicîkirin. Û qalîteya xebata wan hêza nedîtbar e ku diyar dike ka ezmûna we wekî sêrbaz an bextreş hîs dike. Fêmkirina wan gêjiyan, tewra di astek rûkal de, hêzek super dide we: şiyana ku hûn makîneyê di binê navberê de bibînin, pêşbînî bikin ku ew ê li ku derê bişkê, û wê ji ya ku sêwiranerên wê heya niha xeyal dikirin wêdetir bikişîne.

Îro OS-ya Karsaziya Xwe Ava Bikin

Ji freelanceran bigire heya ajansê, Mewayz bi 207 modulên yekbûyî 138,000+ karsazî hêz dike. Belaş dest pê bikin, gava ku hûn mezin bibin nûve bikin.

Afirînerê

Pirsên Pir Pir tên Pirsîn

"lil' fun langs" çi ne û çima divê ez bala xwe bidim?

Zimanên kêfê yên Lil', zimanên bernamesaziyê yên piçûk û ceribandinî ne ku ji bo vekolîna ramanên taybetî an hînkirina têgehên bingehîn hatine çêkirin. Ew ji wergêrên pêlîstokan ên ku di dawiya hefteyê de hatine nivîsandin bigire heya zimanên taybetî yên domainê (DSL) ku ji bo karên teng hatine çêkirin. Fêmkirina ka ew çawa dixebitin têgihiştinek kûrtir dide we ka hemî nermalavê çawa tevdigere - tevî amûrên karsaziyê yên ku hûn rojane pê ve girêdayî ne. Dema ku hûn pergalên otomasyonê hildibijêrin an ava dikin, ew zanyarî we dike pêşdebirek tûj û biryardarek bêtir agahdar.

Fêrbûna li ser zimanên navxweyî çawa bi otomatiya karsaziyê re dibe alîkar?

Dema ku hûn têgînên mîna parkirin, nirxandin, û wergêr fêm dikin, hûn dest bi dîtina otomasyonê cuda dikin. Hûn di avakerên xebata xebatê, motorên şablonê û pergalên qaîdeyê de qalibên nas dikin. Platformên mîna Mewayz van heman prensîban di nav 207 modulên xwe de bikar tînin da ku hûn bihêlin ku hûn fatûra, karûbarên CRM, û hêj bêtir bixweber bikin - hemî bêyî nivîsandina kodê. Naskirina bingehîn ji we re dibe alîkar ku hûn van amûran bêtir bişopînin û pirsgirêkan zûtir çareser bikin.

Ma ji bo avakirina zimanekî piçûk pêdivî bi destûrnameyek zanistiya kompîturê heye?

Qet nebe. Pir pêşdebiran wergêrê xwe yê yekem di dawiya hefteyê de bi karanîna dersan û rêberên çavkaniya vekirî ava dikin. Zimanên mîna Python û JavaScript nivîsandina lexer, parser, û nirxandinek bingehîn hêsan dike. Armanc ne afirandina zimanê hilberîna paşîn e - ew fêrbûna bi kirinê ye. Tewra zimanek hesabkerek hêsan fêrî we dike ku çawa îfade têne parsandin û darvekirin, jêhatîyên ku rasterast vediguhezînin pêşkeftina cîhana rastîn.

Ma têgihîştina DSLyan dikare ji min re bibe alîkar ku ez amûrên karsaziya çêtir hilbijêrin?

Bêguman. Gelek platformên karsaziyê ji bo formul, fîlter û qaîdeyên xebata xebatê zimanên-taybetî yên domainê vedigirin. Gava ku hûn fêm dikin ka DSL-ê çawa di binê kapê de dixebitin, hûn dikarin amûran bi rexnegirtir binirxînin. Mînakî, Mewayz OS-ya karsaziyek berfireh a ku bi 19 $ / mehê dest pê dike bi mantiqa otomatîkê ya çêkirî li seranserê modulên xwe pêşkêşî dike. Naskirina têgehên DSL ji we re dibe alîkar ku hûn wan taybetmendiyan bi tevahî bikar bînin û ne ku rûyê xwe bişkînin.