Hacker News

Kif Dada Jippermetti Referenzi Interni

Kummenti

12 min read Via smallcultfollowing.com

Mewayz Team

Editorial Team

Hacker News

Il-Problema Awto-Referenzjali li Saret l-Ipprogrammar tas-Sistemi għal Għexieren ta’ Deċennji

Jekk qatt ippruvajt tibni grafika, lista konnessa doppjament, jew mudell ta' osservatur f'lingwa b'regoli ta' sjieda stretti, taf l-uġigħ. Strutturi tad-dejta awtoreferenzjali - fejn parti waħda ta 'struttura żżomm pointer għal parti oħra tal-istess struttura - huma notorjament diffiċli biex jiġu espressi b'mod sikur. L-iżviluppaturi tas-sadid ilhom iġġieldu ma 'dan għal snin, u jilħqu blokkiPin,mhux sikuri, jew allokaturi tal-arena biss biex jimmudellaw mudelli li jħossuhom trivjali f'lingwi miġbura biż-żibel. Dada, il-lingwa tal-ipprogrammar sperimentali maħluqa minn Niko Matsakis, tieħu approċċ fundamentalment differenti. Billi taħseb mill-ġdid is-sjieda u l-permessi mill-bidu, Dada tippermetti referenzi interni mingħajr ma tiġi sagrifikata s-sikurezza tal-memorja — u l-implikazzjonijiet jilħqu ferm lil hinn mill-kurżità akkademika.

X'Inhuma Referenzi Interni u Għalfejn Huma Jgħoddu?

Referenza interna sseħħ meta qasam ġewwa struttura tad-dejta jindika qasam ieħor fl-istess struttura. Ikkunsidra parser li jżomm kemm string sors kif ukoll porzjon f'dik is-sekwenza, jew komponent UI li jaħżen lista ta 'widgets tfal flimkien ma' pointer lejn it-tifel iffokat bħalissa. Dawn ix-xejriet jidhru kontinwament f'softwer tad-dinja reali: sistemi ta' avvenimenti, mudelli ta' dokumenti, siġar ta' konfigurazzjoni, u magni tal-fluss tax-xogħol kollha jiddependu fuq xi forma ta' awtoreferenza.

F'lingwi bħal Python jew JavaScript, il-ġbir taż-żibel jieħu ħsieb iż-żamma tal-kotba b'mod inviżibbli. Inti toħloq ir-referenza, u r-runtime jiżgura li l-memorja tibqa 'ħajja sakemm xi ħaġa tipponta lejha. Iżda f'lingwi tas-sistemi li jipprijoritizzaw l-astrazzjonijiet ta 'spiża żero u l-ġestjoni deterministika tar-riżorsi, il-kompilatur jeħtieġ prova li r-referenza mhux se tibqa' iktar mid-data li jindika. Dan huwa fejn l-affarijiet isiru kkumplikati — u fejn il-biċċa l-kbira tal-lingwi bbażati fuq is-sjieda jġiegħlu lill-iżviluppaturi f'soluzzjonijiet skomdi li joskuraw l-intenzjoni u jintroduċu bugs sottili.

L-isfida mhix biss teoretika. Timijiet li jibnu pjattaformi modulari — bħall-arkitettura 207-modulu waraMewayz — jiddependu fuq referenzi interni kontinwament. Modulu CRM li jirreferenzi rekords fl-istess kuntest ta' dejta, magna tal-fatturazzjoni li tgħaqqad l-oġġetti tal-linja lura mad-dokument prinċipali tagħhom, jew dashboard analitiku li jindika flussi ta' dejta ħajjin fi ħdan oġġett ta' stat kondiviż: dawn kollha huma każijiet tad-dinja reali tal-mudell ta' referenza intern li jopera fuq skala.

Kif il-Mudelli ta' Sjieda Tradizzjonali jaqgħu Qosra

Il-kontrollur tas-self ta' Rust huwa wieħed mill-aktar innovazzjonijiet ċċelebrati fid-disinn tal-lingwa moderna, li jelimina kategoriji sħaħ ta' bugs tal-memorja fil-ħin tal-kompilazzjoni. Madankollu s-semantika stretta tagħha ta 'sid wieħed, tissellef jew ċaqliq tagħmel ir-referenzi interni ġenwinament koroh. Fil-mument li strutt jiġi mċaqlaq fil-memorja, kwalunkwe pointer intern isir invalidu. It-tweġiba ta' Rust — l-PinAPI introdotta fil-verżjoni 1.33 — tipprovdi mekkaniżmu li jiggarantixxi li valur ma jiċċaqlaqx, iżda tgħaqqad il-kumplessità fuq dak li għandu jkun kompitu ta' mmudellar sempliċi.

L-iżviluppaturi spiss jirrappurtaw li jonfqu 30-40% tal-ħin tagħhom jiġġieldu l-kontrollur tas-self fuq mudelli li jinvolvu awtoreferenza. Libreriji ta 'allokazzjoni ta' arena bħalarena ittajpjatau approċċi bbażati fuq l-indiċi (fejn taħżen indiċi f'Vec aktar milli referenzi attwali) huma soluzzjonijiet pragmatiċi iżda imperfetti. Huma jinnegozjaw l-espressività ta 'referenzi diretti għal indirett li l-kompilatur jista' jivverifika, iżda jinnegozjaw ukoll iċ-ċarezza għal boilerplate.

"L-aqwa karatteristika tal-lingwa hija waħda li tagħmel il-mudell korrett il-mudell eħfef biex tikteb. Meta l-iżviluppaturi jirrikorru għal soluzzjonijiet, dan ifisser li l-mudell tal-lingwa u l-mudell mentali tagħhom diverġew." — Niko Matsakis, dwar il-filosofija tad-disinn wara Dada

Approċċ ta' Dada għall-Proprjetà Ibbażat fuq Permess

Dada jerġa' jimmaġina s-sjieda mhux bħala deċiżjoni binarja stess jew tissellef iżda bħalaspettru ta' permessi. Minflok ma tittrasferixxi s-sjieda jew toħloq self temporanju, Dada tippermetti li l-valuri jġorru annotazzjonijiet ta’ permessi li jiddeskrivu x’tista’ tagħmel bihom — taqra, tikteb jew tippossjedi — u b’mod kritiku, dawn il-permessi jistgħu jeżistu flimkien fuq partijiet li jikkoinċidu tal-istess struttura tad-dejta.

L-għarfien ewlieni huwa l-kunċett ta'kirjiet. Kiri f'Dada jagħti aċċess temporanju għal valur filwaqt li s-sid oriġinali jżomm id-drittijiet tiegħu. B'differenza missellef Rust, kirjiet huma mfassla biex jikkomponu b'mod naturali bi struttura interna. Meta tikri qasam ta 'struttura, is-sistema tat-tip ta' Dada tifhem li l-kirja hija ambitu għall-ħajja tal-ġenitur mingħajr ma teħtieġ annotazzjonijiet espliċiti tul il-ħajja. Dan jelimina l-infami 'a ktajjen tal-parametri tal-ħajja li jagħmlu l-firem tal-funzjoni Rust diffiċli biex jinqraw.

Għal referenzi interni speċifikament, Dada jintroduċi dak li l-lingwa ssejjaħkirjiet kondiviżi b'mogħdijiet interni. Strut jista 'jżomm kirja għal wieħed mill-oqsma tiegħu stess minħabba li l-kompilatur isegwi r-relazzjoni bejn il-kontenitur u d-dejta li tinsab bħala kunċett tal-ewwel klassi. M'hemm l-ebda ħtieġa għal Pin, l-ebda ħtieġa għal mhux sigur, u l-ebda ħtieġa għal indiretta bbażata fuq indiċi. Inti sempliċiment tikteb il-kodiċi kif taħseb dwar id-dejta, u l-kompilatur jivverifikaha.

Disinji Prattiċi Li Jsiru Trivjali f'Dada

B'referenzi interni attivati b'mod nadif, diversi mudelli storikament diffiċli jsiru faċli biex jiġu implimentati. Dawn huma mudelli li s-sistemi ta' produzzjoni jiltaqgħu magħhom kuljum:

  • Iteraturi awtoreferenzjali — Iteratur li jżomm referenza għall-kollezzjoni li jaqsam, maħżuna bħala struttura waħda, mingħajr ġinnastika tul il-ħajja
  • Mudelli ta' l-osservatur — Emettitur ta' avveniment li jżomm lista ta' callbacks li jirreferu għall-istat tiegħu stess, li jippermetti programmar reattiv mingħajr tgeżwir Rc/RefCell
  • Mudelli ta' dokumenti bil-cursors — Struttura tad-dokument ta' editur tat-test li fiha kemm il-buffer kif ukoll pożizzjoni waħda jew aktar tal-cursor li tipponta lejha
  • Ġerarkiji ġenitur-tfal — Strutturi tas-siġar fejn it-tfal iżommu referenzi għan-nodu ġenitur tagħhom, immudellati direttament aktar milli permezz ta’ indikaturi jew indiċi dgħajfa
  • Magni tal-fluss tax-xogħol b'magni tal-istat — Struttura ta' pipeline li tirreferi għall-istadju attwali tagħha, ir-riżultati preċedenti, u l-azzjonijiet pendenti kollha fi ħdan mudell ta' data koeżiv wieħed

Għall-periti tal-pjattaforma, dawn il-mudelli mhumiex każijiet tat-tarf — huma s-sinsla tas-softwer modulari. Meta t-tim tal-inġinerija ta 'Mewayz jibni karatteristiċi bħal bennejja tal-fluss tax-xogħol drag-and-drop jew kollaborazzjoni f'ħin reali fil-modulu ta' ġestjoni tal-proġett tiegħu, il-mudelli tad-dejta sottostanti inevitabbilment jinvolvu strutturi awtoreferenzjali. Lingwi u oqfsa li jimmaniġġjaw dawn il-mudelli b'mod grazzjuż inaqqsu l-ħin tal-iżvilupp u jimminimizzaw l-erja tal-wiċċ għall-bugs.

💡 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 →

L-Impatt Usa' fuq l-Arkitettura tas-Software

L-approċċ ta' Dada għar-referenzi interni jirrifletti xejra akbar fid-disinn tal-lingwa ta' programmar: jagħmlu mudelli sikuri ergonomiċi aktar milli jagħmlu mudelli mhux sikuri impossibbli. Din il-filosofija għandha konsegwenzi diretti għal kif is-software modern huwa arkitett. Meta lingwa tagħmel mudell faċli, l-iżviluppaturi jużawha. Meta tagħmel mudell ta' wġigħ, l-iżviluppaturi jevitawha — xi drabi bl-ispiża taċ-ċarezza arkitettonika.

Ikkunsidra d-dibattitu dwar il-mikroservizzi kontra l-monoliti modulari. Raġuni waħda li t-timijiet ikissru s-sistemi f'servizzi separati hija li tiġi evitata l-kumplessità tal-ġestjoni tal-istat kondiviż fi ħdan proċess wieħed. Imma jekk il-lingwa tagħmel il-mudelli tal-istat kondiviż sikuri u jinqraw, l-argument għal dekompożizzjoni prematura jiddgħajjef. It-timijiet jistgħu jibnu sistemi koeżivi u modulari — b'50, 100, jew saħansitra 207 moduli interkonnessi — f'unità waħda li tista' tiġi skjerata, u jiksbu l-benefiċċji organizzattivi tal-modularità mingħajr l-overhead operattiv tas-sistemi distribwiti.

Din hija preċiżament l-arkitettura li tagħti s-setgħa lil pjattaformi bħal Mewayz, fejn il-moduli li jkopru CRM, fatturazzjoni, pagi, HR, ġestjoni tal-flotot, u analytics kollha joperaw f'kuntest ta' dejta unifikata. Kull modulu jirreferi għal entitajiet kondiviżi — kuntatti, organizzazzjonijiet, tranżazzjonijiet — permezz ta’ relazzjonijiet interni li jkunu ta’ ħmar il-lejl biex jiġu mmaniġġjati bejn il-konfini tas-servizz iżda li huma naturali fi ħdan monolitu strutturat tajjeb. Avvanzi fid-disinn tal-lingwa li jissimplifikaw dawn ir-referenzi interni jibbenefikaw direttament din il-klassi ta' softwer.

X'Għandhom Jħarsu l-Iżviluppaturi

Dada tibqa' sperimentali, u l-ideat tagħha għadhom qed jiġu rfinuti permezz ta' żvilupp pubbliku u feedback tal-komunità. Madankollu, bosta mill-innovazzjonijiet tagħha diġà qed jinfluwenzaw id-disinn tal-lingwa mainstream. Ix-xogħol kontinwu ta’ Rust fuqtipi ta’ viżjoniupolonius(il-kontrollur tas-self tal-ġenerazzjoni li jmiss) jissellef kunċetti mill-istess spazju ta’ riċerka. Il-mudell ta' sjieda ta' Swift, introdott f'Swift 5.9, jesplora b'mod simili sistemi ta' permessi aktar granulari. Anki s-sistema tat-tip ta' TypeScript tkompli tevolvi lejn immudellar aktar preċiż tar-relazzjonijiet tad-dejta.

Għat-timijiet li jibnu softwer tal-produzzjoni llum, it-taħditiet prattiċi huma ċari. L-ewwel, iffavorixxi lingwi u oqfsa li jallinjaw il-mudell tas-sjieda tagħhom mal-mudell tad-dejta tiegħek — il-ġlieda kontra s-sistema tat-tip hija taxxa tal-produttività li tikkombina maż-żmien. It-tieni, investiment biex tifhem ix-xejriet li jeħtieġ id-dominju tiegħek. Jekk l-applikazzjoni tiegħek hija fundamentalment graff ta' entitajiet interkonnessi (kif huma l-biċċa l-kbira tal-pjattaformi tan-negozju), agħżel għodod li jimmudellaw graffs b'mod naturali aktar milli sfurzaw soluzzjonijiet f'forma ta' siġra.

Fl-aħħar, żomm għajnejk fuq Dada u r-riċerka li tirrappreżenta. Il-problemi li ssolvi - referenzi interni, kompożizzjoni tal-permessi, sigurtà ergonomika - mhumiex tħassib ta 'niċċa. Huma l-problemi eżatti li kull tim jiltaqa' magħhom meta jibni softwer ambizzjuż u interkonness fuq skala kbira. Kemm jekk qed timmaniġġja flotta ta' vetturi tal-konsenja, orkestra ta' pipeline ta' kiri f'diversi stadji, jew tissinkronizza dejta fuq pjattaforma ta' negozju ta' 207 moduli, il-mod kif l-għodod tiegħek jimmaniġġjaw ir-relazzjonijiet interni jifforma l-kwalità ta' dak kollu li tibni fuqhom.

Mit-Teorija tal-Lingwa għar-Realtà tan-Negozju

Ir-riċerka tal-lingwa tal-ipprogrammar tista' tħossha 'l bogħod mir-realtà ta' kuljum tat-tmexxija ta' negozju. Iżda l-għodod li nużaw jiffurmaw il-prodotti li nibnu, u l-prodotti li nibnu jsawru kif joperaw in-negozji. Il-kontribut ta' Dada għall-problema ta' referenza interna mhuwiex biss tragward tekniku — huwa sinjal li l-industrija qed timxi lejn għodod li jirrispettaw kif l-iżviluppaturi fil-fatt jaħsbu dwar id-dejta, aktar milli jġiegħelhom jaħsbu bħal kompilatur.

Għall-138,000+ negozju li jużaw pjattaformi bħal Mewayz biex jimmaniġġjaw l-operazzjonijiet tagħhom, dan il-progress ifisser softwer li huwa aktar affidabbli, aktar b'ħafna karatteristiċi, u aktar mgħaġġel biex jevolvi. Kull titjib fil-mod kif il-lingwi tal-ipprogrammar jimmaniġġjaw il-kumplessità jissarraf, eventwalment, f'esperjenza aħjar għall-utent aħħari — is-sid tan-negozju ż-żgħir li sempliċement irid li s-sistemi tas-CRM, tal-fatturazzjoni u tal-prenotazzjoni tagħhom jaħdmu flimkien bla xkiel. Dik l-għaqda hija l-prodott ta' eluf ta' referenzi interni mmudellati tajjeb, u lingwi bħal Dada qed jagħmluhom aktar sikuri u aktar faċli biex jinbnew minn qatt qabel.

Issimplifika n-negozju tiegħek ma' Mewayz

Mewayz iġib 207 modulu tan-negozju fi pjattaforma waħda — CRM, fatturazzjoni, ġestjoni tal-proġett, u aktar. Ingħaqad ma' 138,000+ utent li ssimplifikaw il-fluss tax-xogħol tagħhom.

Ibda Ħieles Illum →

Mistoqsijiet Frekwenti

X'inhi eżattament il-"problema awtoreferenzjali"?

Il-problema awtoreferenzjali sseħħ meta struttura tad-dejta fiha referenza għaliha nnifisha, bħal nodu f'graff li jindika nodu ieħor fl-istess struttura. F'lingwi b'regoli ta' sjieda stretti bħal Rust, dan joħloq kunflitt: il-garanziji tas-sikurezza tal-lingwa ma jistgħux jiddeterminaw faċilment jekk ir-referenza tibqax aktar mid-data li tipponta lejha. Dan jagħmel mudelli li jidhru sempliċi, komuni fil-moduli 207+ ta' Mewayz, sorprendentement diffiċli u mhux sikuri biex jiġu implimentati.

Dada kif issolvi din il-problema b'mod differenti minn Rust?

Filwaqt li Rust ħafna drabi teħtieġ soluzzjonijiet kumplessi bħall-kodiċi Pin jew mhux sikur biex timmaniġġja l-awtoreferenzi, Dada jaħmi soluzzjoni direttament fil-mudell tas-sjieda tiegħu. Dada jintroduċi l-kunċett ta '"kirjiet," li huma temporanji, referenzi bbażati fuq permess. Dan jippermetti lill-kompilatur jiggarantixxi b'mod statiku s-sigurtà tal-indikazzjonijiet interni mingħajr ma jkollu bżonn tipi speċjali jew jikser is-sigurtà tal-memorja, u jagħmilha ferm aktar ergonomika għal dawn il-mudelli komuni.

Nista' nuża Dada għall-proġetti tiegħi llum?

Dada bħalissa hija lingwa sperimentali u għadha mhix lesta għall-użu fil-produzzjoni. Huwa proġett ta' riċerka li jesplora ideat ġodda fis-sjieda. Għal programmar ta 'sistemi robusti u lesti għall-produzzjoni, Rust jibqa' l-għażla ewlenija. Għal ħtiġijiet ta 'applikazzjoni ta' livell ogħla, servizz bħal Mewayz ($ 19/mo) jipprovdi librerija vasta ta 'moduli mibnija minn qabel biex tħaffef l-iżvilupp mingħajr ma tiffaċċja tħassib dwar il-memorja ta' livell baxx.

L-approċċ ta' Dada għandu xi limitazzjonijiet?

Is-sistema ta' kiri ta' Dada hija mfassla għal klassi speċifika ta' problemi li jinvolvu referenzi interni fi ħdan siġra ta' sjieda waħda. Filwaqt li ssolvi b'mod eleganti l-kwistjonijiet tal-graff paradigmatiku u l-mudell tal-osservatur, jista 'ma jkunx bullet tal-fidda għax-xenarji kollha tal-pointer kumplessi. Il-mudell għadu qed jiġi żviluppat, u l-kapaċitajiet u r-restrizzjonijiet sħaħ tiegħu se jsiru aktar ċari hekk kif il-lingwa tevolvi.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ 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