Sut Mae Dada yn Galluogi Cyfeiriadau Mewnol | Mewayz Blog Skip to main content
Hacker News

Sut Mae Dada yn Galluogi Cyfeiriadau Mewnol

Sylwadau

12 min read Via smallcultfollowing.com

Mewayz Team

Editorial Team

Hacker News

Y Broblem Hunan-gyfeiriadol Sydd Wedi Aflonyddu Rhaglennu Systemau ers Degawdau

Os ydych chi erioed wedi ceisio adeiladu graff, rhestr â chysylltiadau dwbl, neu batrwm sylwedydd mewn iaith â rheolau perchnogaeth llym, rydych chi'n gwybod y boen. Mae strwythurau data hunangyfeiriol - lle mae un rhan o strwythur yn dal pwyntydd at ran arall o'r un strwythur - yn hynod o anodd eu mynegi'n ddiogel. Mae datblygwyr rhwd wedi ymgodymu â hyn ers blynyddoedd, gan estyn am Pin, blociau anniogel, neu ddyranwyr arena dim ond i fodelu patrymau sy'n teimlo'n ddibwys mewn ieithoedd a gesglir gan sbwriel. Mae Dada, yr iaith raglennu arbrofol a grëwyd gan Niko Matsakis, yn cymryd agwedd sylfaenol wahanol. Trwy ailfeddwl perchnogaeth a chaniatâd o'r gwaelod i fyny, mae Dada yn galluogi geirda mewnol heb aberthu diogelwch y cof - ac mae'r goblygiadau yn ymestyn ymhell y tu hwnt i chwilfrydedd academaidd.

Beth Yw Cyfeiriadau Mewnol a Pam Maen nhw'n Bwysig?

Mae cyfeiriad mewnol yn digwydd pan fydd maes y tu mewn i strwythur data yn pwyntio at faes arall o fewn yr un strwythur yr un. Ystyriwch ddosberthwr sy'n dal llinyn ffynhonnell a thafell i'r llinyn hwnnw, neu gydran UI sy'n storio rhestr o widgets plant ynghyd â phwyntydd i'r plentyn sy'n canolbwyntio ar hyn o bryd. Mae'r patrymau hyn yn ymddangos yn gyson mewn meddalwedd byd go iawn: mae systemau digwyddiadau, modelau dogfen, coed ffurfweddu, a pheiriannau llif gwaith i gyd yn dibynnu ar ryw fath o hunangyfeirio.

Mewn ieithoedd fel Python neu JavaScript, mae casglu sbwriel yn trin y cadw cyfrifon yn anweledig. Chi sy'n creu'r cyfeirnod, ac mae'r amser rhedeg yn sicrhau bod y cof yn aros yn fyw cyhyd â bod rhywbeth yn pwyntio ato. Ond mewn ieithoedd systemau sy'n blaenoriaethu tyniadau cost sero a rheoli adnoddau penderfynol, mae angen i'r casglwr gael prawf na fydd y cyfeirnod yn goroesi'r data y mae'n cyfeirio ato. Dyma lle mae pethau'n mynd yn gymhleth - a lle mae'r rhan fwyaf o ieithoedd sy'n seiliedig ar berchnogaeth yn gorfodi datblygwyr i gael atebion lletchwith sy'n cuddio bwriad ac yn cyflwyno chwilod cynnil.

Nid damcaniaethol yn unig yw’r her. Mae timau sy'n adeiladu llwyfannau modiwlaidd - fel y saernïaeth 207 modiwl y tu ôl i Mewayz - yn dibynnu ar gyfeiriadau mewnol yn gyson. Mae modiwl CRM sy'n cyfeirio yn cofnodi o fewn yr un cyd-destun data, peiriant anfonebu yn cysylltu eitemau llinell yn ôl i'w rhiant ddogfen, neu ddangosfwrdd dadansoddeg yn pwyntio at ffrydiau data byw o fewn gwrthrych cyflwr a rennir: mae'r rhain i gyd yn enghreifftiau byd go iawn o'r patrwm cyfeirio mewnol yn gweithredu ar raddfa.

Sut mae Modelau Perchnogaeth Traddodiadol yn Byrhau

Mae gwiriwr benthyciadau Rust yn un o'r datblygiadau arloesol mwyaf enwog ym maes dylunio ieithoedd modern, gan ddileu categorïau cyfan o fygiau cof ar amser llunio. Ac eto mae ei semanteg un perchennog llym, benthyca-neu-symud yn gwneud cyfeiriadau mewnol yn wirioneddol boenus. Yr eiliad y symudir strwythur yn y cof, mae unrhyw bwyntydd mewnol yn dod yn annilys. Mae ateb Rust - yr API Pin a gyflwynwyd yn fersiwn 1.33 - yn darparu mecanwaith i warantu na fydd gwerth yn symud, ond mae'n gosod cymhlethdod ar yr hyn a ddylai fod yn dasg fodelu syml.

Mae datblygwyr yn aml yn dweud eu bod yn treulio 30-40% o'u hamser yn brwydro yn erbyn y gwiriwr benthyciadau ar batrymau sy'n ymwneud â hunangyfeirio. Mae llyfrgelloedd dyrannu arena fel arena wedi'i deipio a dulliau sy'n seiliedig ar fynegai (lle rydych chi'n storio mynegeion i mewn i Vec yn hytrach na chyfeiriadau gwirioneddol) yn atebion pragmatig ond amherffaith. Maent yn masnachu ar fynegiant cyfeiriadau uniongyrchol ar gyfer angyfeiriad y gall y casglwr eu gwirio, ond maent hefyd yn masnachu eglurder ar gyfer plât boeler.

"Y nodwedd iaith orau yw un sy'n gwneud y patrwm cywir y patrwm hawsaf i'w ysgrifennu. Pan fydd datblygwyr yn troi at atebion, mae'n golygu bod model yr iaith a'u model meddyliol wedi dargyfeirio." — Niko Matsakis, ar yr athroniaeth ddylunio y tu ôl i Dada

Agwedd Seiliedig ar Ganiatâd Dada at Berchnogaeth

Mae Dada yn ail-ddychmygu perchnogaeth nid fel penderfyniad deuaidd berchen neu fenthyca ond fel sbectrwm caniatâd. Yn lle trosglwyddo perchnogaeth neu greu benthyciadau dros dro, mae Dada yn caniatáu i werthoedd gario anodiadau caniatâd sy'n disgrifio'r hyn y gallwch chi ei wneud â nhw - darllen, ysgrifennu, neu berchen - ac yn hollbwysig, gall y caniatâd hwn gydfodoli ar rannau o'r un strwythur data sy'n gorgyffwrdd.

Y mewnwelediad allweddol yw'r cysyniad o brydlesi. Mae les yn Dada yn rhoi mynediad dros dro i werth tra bod y perchennog gwreiddiol yn cadw ei hawliau. Yn wahanol i fenthyciadau Rust, mae prydlesi wedi'u cynllunio i gyfansoddi'n naturiol â strwythur mewnol. Pan fyddwch yn prydlesu maes o strwythur, mae system fath Dada yn deall bod y brydles wedi'i chwmpasu i oes y rhiant heb fod angen anodiadau oes penodol. Mae hyn yn dileu'r cadwyni paramedr oes 'a enwog sy'n ei gwneud yn anodd darllen llofnodion swyddogaeth Rust.

Ar gyfer cyfeiriadau mewnol yn benodol, mae Dada yn cyflwyno'r hyn y mae'r iaith yn ei alw yn lesi a rennir gyda llwybrau mewnol. Gall strwythur ddal prydles i un o'i feysydd ei hun oherwydd bod y casglwr yn olrhain y berthynas rhwng y cynhwysydd a'r data a gynhwysir fel cysyniad o'r radd flaenaf. Nid oes angen Pin, nid oes angen anniogel, ac nid oes angen cyfeiriadu ar sail mynegai. Yn syml, rydych chi'n ysgrifennu'r cod yn y ffordd rydych chi'n meddwl am y data, ac mae'r casglwr yn ei wirio.

Patrymau Ymarferol Sy'n Dod yn Ddibwys yn Dada

Gyda chyfeiriadau mewnol wedi'u galluogi'n lân, mae sawl patrwm hanesyddol anodd yn dod yn hawdd i'w gweithredu. Mae'r rhain yn batrymau y mae systemau cynhyrchu yn dod ar eu traws yn ddyddiol:

  • Iterators hunan-gyfeiriadol — Iterator sy'n dal cyfeiriad at y casgliad y mae'n ei groesi, wedi'i storio fel un strwythur, heb gymnasteg oes
  • Patrymau arsylwyr — Allyrrydd digwyddiad sy'n cadw rhestr o alwadau'n ôl sy'n cyfeirio at ei gyflwr ei hun, gan alluogi rhaglennu adweithiol heb ddeunydd lapio Rc/RefCell
  • Modelau dogfen gyda chyrchyddion — Strwythur dogfen golygydd testun yn cynnwys y byffer ac un neu fwy o leoliadau cyrchwr yn pwyntio ato
  • Hierarchaeth rhiant-plentyn — Strwythurau coed lle mae plant yn dal cyfeiriadau at eu nod rhiant, wedi'u modelu'n uniongyrchol yn hytrach na thrwy awgrymiadau neu fynegeion gwan
  • Peiriannau llif gwaith gyda pheiriannau cyflwr — Strwythur piblinell sy'n cyfeirio at ei gyfnod presennol, canlyniadau blaenorol, a gweithredoedd arfaethedig i gyd o fewn un model data cydlynol

Ar gyfer penseiri platfformau, nid achosion ymylol yw'r patrymau hyn - dyma asgwrn cefn meddalwedd modiwlaidd. Pan fydd tîm peirianneg Mewayz yn adeiladu nodweddion fel adeiladwyr llif gwaith llusgo a gollwng neu gydweithio amser real yn ei fodiwl rheoli prosiect, mae'r modelau data sylfaenol yn anochel yn cynnwys strwythurau hunangyfeiriol. Mae ieithoedd a fframweithiau sy'n ymdrin â'r patrymau hyn yn osgeiddig yn lleihau amser datblygu ac yn lleihau'r arwynebedd ar gyfer chwilod.

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

Yr Effaith Ehangach ar Bensaernïaeth Meddalwedd

Mae ymagwedd Dada at gyfeiriadau mewnol yn adlewyrchu tuedd fwy mewn dylunio iaith raglennu: gwneud patrymau diogel yn ergonomig yn hytrach na gwneud patrymau anniogel yn amhosibl. Mae gan yr athroniaeth hon ganlyniadau uniongyrchol o ran y modd y caiff meddalwedd modern ei saernïo. Pan fydd iaith yn gwneud patrwm yn hawdd, mae datblygwyr yn ei ddefnyddio. Pan fydd yn gwneud patrwm yn boenus, mae datblygwyr yn ei osgoi - weithiau ar draul eglurder pensaernïol.

Ystyriwch y ddadl microwasanaethau yn erbyn monolith modiwlaidd. Un rheswm y mae timau'n torri systemau yn wasanaethau ar wahân yw er mwyn osgoi cymhlethdod rheoli cyflwr a rennir o fewn un broses. Ond os yw'r iaith yn gwneud patrymau cyflwr a rennir yn ddiogel ac yn ddarllenadwy, mae'r ddadl dros ddadelfennu cynamserol yn gwanhau. Gall timau adeiladu systemau cydlynol, modiwlaidd - gyda 50, 100, neu hyd yn oed 207 o fodiwlau rhyng-gysylltiedig - o fewn un uned y gellir ei defnyddio, gan gyflawni buddion sefydliadol modiwlariaeth heb orbenion gweithredol systemau gwasgaredig.

Dyma’n union y bensaernïaeth sy’n pweru llwyfannau fel Mewayz, lle mae modiwlau sy’n rhychwantu CRM, anfonebu, cyflogres, AD, rheoli fflyd, a dadansoddeg i gyd yn gweithredu o fewn cyd-destun data unedig. Mae pob modiwl yn cyfeirio at endidau a rennir—cysylltiadau, sefydliadau, trafodion—drwy berthnasoedd mewnol a fyddai’n hunllefus i’w rheoli ar draws ffiniau gwasanaethau ond sy’n naturiol o fewn monolith sydd wedi’i strwythuro’n dda. Mae datblygiadau mewn dylunio iaith sy'n symleiddio'r cyfeiriadau mewnol hyn o fudd uniongyrchol i'r math hwn o feddalwedd.

Yr Hyn y Dylai Datblygwyr Wylio Amdano

Mae Dada yn parhau i fod yn arbrofol, ac mae ei syniadau yn dal i gael eu mireinio trwy ddatblygiad cyhoeddus ac adborth cymunedol. Fodd bynnag, mae nifer o'i ddatblygiadau arloesol eisoes yn dylanwadu ar ddyluniad iaith prif ffrwd. Mae gwaith parhaus Rust ar mathau o olygfeydd a polonius (gwiriwr benthyciadau cenhedlaeth nesaf) yn benthyca cysyniadau o'r un gofod ymchwil. Mae model perchnogaeth Swift, a gyflwynwyd yn Swift 5.9, yn yr un modd yn archwilio systemau caniatâd mwy gronynnog. Mae hyd yn oed system fath TypeScript yn parhau i esblygu tuag at fodelu perthnasoedd data yn fwy manwl gywir.

Ar gyfer timau sy'n adeiladu meddalwedd cynhyrchu heddiw, mae'r siopau cludfwyd ymarferol yn glir. Yn gyntaf, ffafrio ieithoedd a fframweithiau sy'n alinio eu model perchnogaeth â'ch model data - mae ymladd y math o system yn dreth cynhyrchiant sy'n gwaethygu dros amser. Yn ail, buddsoddwch i ddeall y patrymau sydd eu hangen ar eich parth. Os mai graff o endidau rhyng-gysylltiedig yw'ch cais yn ei hanfod (fel y mae'r rhan fwyaf o lwyfannau busnes), dewiswch offer sy'n modelu graffiau yn naturiol yn hytrach na gorfodi atebion siâp coeden.

Yn olaf, cadwch lygad ar Dada a'r ymchwil y mae'n ei gynrychioli. Nid yw'r problemau y mae'n eu datrys - cyfeiriadau mewnol, cyfansoddiad caniatâd, diogelwch ergonomig - yn bryderon arbenigol. Dyma'r union broblemau y mae pob tîm yn dod ar eu traws wrth adeiladu meddalwedd uchelgeisiol, rhyng-gysylltiedig ar raddfa. P'un a ydych chi'n rheoli fflyd o gerbydau danfon, yn trefnu piblinell llogi aml-gam, neu'n cydamseru data ar draws llwyfan busnes 207-modiwl, mae'r ffordd y mae'ch offer yn trin perthnasoedd mewnol yn siapio ansawdd popeth rydych chi'n ei adeiladu ar ben nhw.

O Theori Iaith i Realiti Busnes

Gall rhaglennu ymchwil iaith deimlo ymhell oddi wrth y realiti o ddydd i ddydd o redeg busnes. Ond mae'r offer rydyn ni'n eu defnyddio yn siapio'r cynhyrchion rydyn ni'n eu hadeiladu, ac mae'r cynhyrchion rydyn ni'n eu hadeiladu yn siapio sut mae busnesau'n gweithredu. Nid carreg filltir dechnegol yn unig yw cyfraniad Dada at y broblem gyfeirio fewnol - mae'n arwydd bod y diwydiant yn symud tuag at offer sy'n parchu sut mae datblygwyr yn meddwl am ddata mewn gwirionedd, yn hytrach na'u gorfodi i feddwl fel casglwr.

Ar gyfer y 138,000+ o fusnesau sy'n defnyddio llwyfannau fel Mewayz i reoli eu gweithrediadau, mae'r cynnydd hwn yn golygu meddalwedd sy'n fwy dibynadwy, yn fwy cyfoethog o ran nodweddion, ac yn gyflymach i'w datblygu. Mae pob gwelliant yn y ffordd y mae ieithoedd rhaglennu yn trin cymhlethdod yn trosi, yn y pen draw, yn brofiad gwell i'r defnyddiwr terfynol - perchennog y busnes bach sydd eisiau i'w systemau CRM, anfonebu ac archebu weithio gyda'i gilydd yn ddi-dor. Mae'r di-dordeb hwnnw yn gynnyrch miloedd o gyfeiriadau mewnol wedi'u modelu'n dda, ac mae ieithoedd fel Dada yn eu gwneud yn fwy diogel ac yn haws i'w hadeiladu nag erioed o'r blaen.

Ffrydio Eich Busnes gyda Mewayz

Mae Mewayz yn dod â 207 o fodiwlau busnes i un llwyfan - CRM, anfonebu, rheoli prosiectau, a mwy. Ymunwch â 138,000+ o ddefnyddwyr sydd wedi symleiddio eu llif gwaith.

Dechrau Am Ddim Heddiw →

Cwestiynau Cyffredin

Beth yn union yw'r "broblem hunangyfeiriol"?

Mae'r broblem hunangyfeiriadol yn digwydd pan fo strwythur data yn cynnwys cyfeiriad ato'i hun, fel nod mewn graff sy'n pwyntio at nod arall o fewn yr un strwythur. Mewn ieithoedd â rheolau perchnogaeth llym fel Rust, mae hyn yn creu gwrthdaro: ni all gwarantau diogelwch yr iaith benderfynu'n hawdd a fydd y cyfeirnod yn goroesi'r data y mae'n cyfeirio ato. Mae hyn yn gwneud patrymau sy'n ymddangos yn syml, sy'n gyffredin yn 207+ o fodiwlau Mewayz, yn rhyfeddol o anodd ac anniogel i'w gweithredu.

Sut mae Dada yn datrys y broblem hon yn wahanol i Rust?

Tra bod Rust yn aml yn gofyn am atebion cymhleth fel Pin neu god anniogel i drin hunan-gyfeiriadau, mae Dada yn pobi datrysiad yn uniongyrchol i'w fodel perchnogaeth. Mae Dada yn cyflwyno'r cysyniad o "brydlesi," sy'n gyfeiriadau dros dro, yn seiliedig ar ganiatâd. Mae hyn yn caniatáu i'r casglwr warantu diogelwch awgrymiadau mewnol yn statig heb fod angen mathau arbennig neu dorri diogelwch cof, gan ei gwneud yn llawer mwy ergonomig ar gyfer y patrymau cyffredin hyn.

Alla i ddefnyddio Dada ar gyfer fy mhrosiectau heddiw?

Ar hyn o bryd mae Dada yn iaith arbrofol ac nid yw eto'n barod i'w defnyddio wrth gynhyrchu. Mae'n brosiect ymchwil sy'n archwilio syniadau newydd mewn perchnogaeth. Ar gyfer rhaglennu systemau cadarn, parod i gynhyrchu, Rust yw'r prif ddewis o hyd. Ar gyfer anghenion cymhwysiad lefel uwch, mae gwasanaeth fel Mewayz ($19/mo) yn darparu llyfrgell helaeth o fodiwlau wedi'u hadeiladu ymlaen llaw i gyflymu datblygiad heb fynd i'r afael â phryderon cof lefel isel.

A oes unrhyw gyfyngiadau ar ddull Dada?

Mae system brydlesi Dada wedi'i chynllunio ar gyfer dosbarth penodol o broblemau sy'n ymwneud â chyfeiriadau mewnol o fewn un goeden perchnogaeth. Er ei fod yn datrys problemau'r graff paradigmatig a phatrwm sylwedyddion yn gain, efallai nad yw'n fwled arian ar gyfer pob senario pwyntydd cymhleth. Mae'r model yn dal i gael ei ddatblygu, a bydd ei alluoedd a'i gyfyngiadau llawn yn dod yn gliriach wrth i'r iaith ddatblygu.

Try Mewayz Free

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

Start managing your business smarter today

Join 6,207+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,207+ 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