Hacker News

No Kasano a Pagbalinen ni Dada dagiti Internal a Reperensia

Dagiti Komento

15 min read Via smallcultfollowing.com

Mewayz Team

Editorial Team

Hacker News

Ti Bukod a Reperensia a Problema a Nangriribuk iti Panagprograma ti Sistema iti Pinulpullo a Dekada

No napadasam pay ti nagaramid ti grapo, doble a naisilpo a listaan, wenno ti padron ti agpalpaliiw iti pagsasao nga addaan kadagiti nainget a pagannurotan ti panagtagikua, ammom ti saem. Dagiti bukod a reperensial nga estruktura ti datos — a ti maysa a paset ti maysa nga estruktura ket mangiggem ti maysa a puntor iti sabali a paset ti isu met laeng nga estruktura — ket agdindinamag a narigat a maiyebkas a natalged. Dagiti agparparang-ay ti rust ket nakirangetda iti daytoy iti adu a tawen, a nakadanon kadagiti Pin, saan a natalged a bloke, wenno dagiti arena allocators tapno laeng agmodelo kadagiti padron a marikna a saan a napateg kadagiti pagsasao a naurnong iti basura. Ti Dada, ti eksperimental a pagsasao ti panagprograma a pinartuat babaen ni Niko Matsakis, ket mangala ti pundamental a naiduma a wagas. Babaen ti panagpanunot manen ti panagtagikua ken dagiti pammalubos manipud iti daga, ni Dada ket mangpabalin kadagiti akin-uneg a reperensia a saan a mangisakripisio ti kinatalged ti memoria — ken dagiti implikasionda ket dumanon iti adayo a labes ti akademiko a panagusiuso.

Ania Dagiti Internal a Reperensia ken Apay a Napateg Dagitoy?

Ti akin-uneg a reperensia ket mapasamak no ti maysa a tay-ak iti uneg ti estruktura ti datos ket mangitudo ti sabali a tay-ak iti uneg ti isu met laeng nga estruktura. Ibilang ti maysa a parser a mangiggem agpadpada ti taudan a kuerdas ken ti slice iti dayta a kuerdas, wenno ti paset ti UI a mangidulin ti listaan ​​dagiti ubing a widget agraman ti maysa a puntor iti agdama a naipamaysa nga ubing. Dagitoy a padron ket agparang a kankanayon kadagiti pudno a lubong a software: dagiti sistema ti pasamak, dagiti modelo ti dokumento, dagiti kayo ti panagisaad, ken dagiti makina ti panagayus ti trabaho ket agpannurayda amin iti sumagmamano a porma ti panagreperensia ti bagi.

Kadagiti pagsasao a kas ti Python wenno JavaScript, ti panagurnong ti basura ket mangasikaso ti panagidulin ti libro a saan a makita. Mangparnuayka iti reperensia, ket ti runtime ket mangsigurado nga agtalinaed a sibibiag ti memoria no la ketdi ti maysa a banag ket mangitudo iti daytoy. Ngem kadagiti pagsasao ti sistema a mangipangpangruna kadagiti sero-gastos nga abstraksion ken deterministiko a panagtengngel ti rekurso, ti kompiler ket kasapulanna ti pammaneknek a ti reperensia ket saan nga agbiag iti nalablabes ngem ti datos nga itudona. Ditoy a dagiti banag ket agbalin a komplikado — ken sadiay a kaaduan kadagiti pagsasao a naibatay iti panagtagikua ket mangpilit kadagiti agparparang-ay kadagiti makauma a panagliklik a manglidem ti panggep ken mangiyam-ammo kadagiti nasipnget a bug.

Saan laeng a teoretikal ti karit. Dagiti grupo a mangbangbangon kadagiti modular a plataporma — a kas ti 207-modulo nga arkitektura iti likudan ti Mewayz — ket agpannuray kadagiti akin-uneg a reperensia a kankanayon. Ti maysa a modulo ti CRM a mangireperensia kadagiti rekord iti uneg ti isu met laeng a konteksto ti datos, ti makina ti panag-invoice a mangisilpo kadagiti banag ti linia nga agsubli iti nagannak a dokumentoda, wenno ti maysa nga analitiko a dashboard a mangitudo kadagiti sibibiag nga ayus ti datos iti uneg ti naibingbingay a banag ti estado: amin dagitoy ket dagiti pudno a lubong a pagarigan ti akin-uneg a reperensia a padron nga agtartaray iti sukog.

Kasano nga Ababa dagiti Tradisional a Modelo ti Panagtagikua

Ti borrow checker ni Rust ket maysa kadagiti kaaduan a naselebraran a panagbalbaliw iti moderno a disenio ti pagsasao, a mangikkat kadagiti sibubukel a kategoria dagiti bug ti memoria iti panawen ti panagtipon. Kaskasdi a ti nainget a single-owner, borrow-or-move a semantikana ti mamagbalin kadagiti makin-uneg a reperensia a pudno a nasaem. Iti kanito a ti maysa nga struct ket mayakar iti memoria, ti ania man nga akin-uneg a puntor ket agbalin a saan nga umiso. Ti sungbat ni Rust — ti Pin API a naiyam-ammo iti bersion 1.33 — ket mangipaay ti mekanismo a mangipanamnama ti maysa a pateg ket saan nga aggaraw, ngem daytoy ket mangikabil ti kinarikut iti no ania ti rumbeng a diretso nga aramid ti panagmodelo.

Masansan nga ireport dagiti developer ti panangbusbosda iti 30-40% ti panawenda a makilablaban iti borrow checker kadagiti padron a mairaman ti self-reference. Dagiti biblioteka ti panagbingbingay ti arena a kas ti nai-type-arena ken dagiti pamay-an a naibatay iti indeks (a sadiay ket mangidulin kadagiti indise iti maysa a Vec imbes a dagiti aktual a reperensia) ket pragmatiko ngem saan a perpekto a solusion. Inlakoda ti panagiyebkas dagiti direkta a reperensia para iti saan a direksion a mabalin a paneknekan ti kompiler, ngem ilakoda pay ti kinalawag para iti boilerplate.

"Ti kasayaatan a tampok ti pagsasao ket maysa a mangaramid ti umno a padron a kalalakaan a padron nga isurat. No dagiti agparparang-ay ket agpatulong kadagiti panagliklik, kayatna a sawen a ti modelo ti pagsasao ken ti mental a modeloda ket nagsisina." — Niko Matsakis, maipapan iti pilosopia ti disenio iti likudan ti Dada

Ti Pammalubos-a-Naibatay a Pamay-an iti Panagtagikua

Iladawanna manen ni Dada ti panagtagikua saan a kas maysa a binaryo a bukod-wenno-pautang a pangngeddeng ngem kas maysa a espektro dagiti pammalubos. Imbes nga iyakar ti panagtagikua wenno mangpartuat kadagiti temporario a panagutang, ti Dada ket mangipalubos kadagiti pateg nga awit dagiti anotasion ti pammalubos a mangiladawan no ania ti mabalinmo nga aramiden kadagitoy — agbasa, agsurat, wenno agtagikua — ken kritikal, dagitoy a pammalubos ket mabalin nga agbiag a sangsangkamaysa kadagiti agtuon a paset ti isu met laeng nga estruktura ti datos.

Ti kangrunaan a pannakaawat ket ti konsepto ti leases. Ti panagpaabang idiay Dada ket mangipaay iti temporario a pannakagun-od iti maysa a pateg bayat a ti orihinal a makinkukua ket pagtalinaedenna dagiti karbengan. Saan a kas kadagiti umutang ti Rust, dagiti panagpaabang ket nadisenio a mangbukel iti natural nga addaan iti makin-uneg nga estruktura. No abanganmo ti maysa a tay-ak ti maysa nga struct, maawatan ti sistema ti tipo ni Dada a ti panagpaabang ket nasaklaw iti panagbiag ti nagannak a saan a kasapulan dagiti nalawag nga anotasion iti tungpal biag. Daytoy ket mangikkat kadagiti agdindinamag a 'a a kawar ti parametro ti panagbiag a mangaramid kadagiti pirma ti panagandar ti Rust a narigat a mabasa.

Para kadagiti akin-uneg a reperensia nga espesipiko, ni Dada ket mangiyam-ammo ti awagan ti pagsasao a nabingbingay a panagpaabang kadagiti akin-uneg a dalan. Ti maysa nga estruktura ket mabalinna nga iggaman ti panagpaabang iti maysa kadagiti bukodna a tay-ak gapu ta ti kompiler ket mangsurot ti relasion ti nagbaetan ti paglaon ken ti linaon a datos a kas ti umuna a klase a konsepto. Saan a kasapulan ti Pin, saan a kasapulan ti saan a natalged, ken saan a kasapulan ti index-based indirection. Isuratmo laeng ti kodigo iti wagas a pampanunotem maipapan iti datos, ket ti kompiler ket paneknekanna daytoy.

Dagiti Praktikal a Padron nga Agbalin a Trivial iti Dada

Kadagiti akin-uneg a reperensia a napalubosan a nadalus, dagiti sumagmamano a historikal a narigat a padron ket agbalin a diretso a maipatungpal. Dagitoy ket dagiti padron nga inaldaw a masabet dagiti sistema ti produksion:

  • Self-referential iterators — Ti iterator a mangiggem ti reperensia iti koleksion a labsanna, a naidulin a kas maymaysa nga estruktura, nga awan ti tungpal biag a gymnastics
  • Dagiti padron ti agpalpaliiw — Ti maysa nga emitter ti pasamak a mangmantener ti listaan dagiti panagayab manen a mangireperensiaan ti bukodna a kasasaad, a mangpabalin ti reaktibo a panagprograma nga awan dagiti balkot ti Rc/RefCell
  • Dagiti modelo ti dokumento nga addaan kadagiti kursor — Ti maysa nga estruktura ti dokumento ti editor ti teksto a naglaon ti agpada a buffer ken maysa wenno ad-adu pay a posision ti kursor a mangitudo iti daytoy
  • Dagiti hirarkia ti nagannak-anak — Dagiti estruktura ti kayo a dagiti ubbing ket mangiggem kadagiti reperensia iti nagannak a nododa, a direkta a naimodelo imbes a babaen dagiti nakapuy a puntor wenno indise
  • Dagiti makina ti panagayus ti trabaho nga addaan kadagiti makina ti estado — Ti estruktura ti tubo a mangitudo ti agdama a tukadna, dagiti napalabas a resulta, ken dagiti nakasagana nga aramid amin iti uneg ti maymaysa a nagtitipon a modelo ti datos

Para kadagiti arkitekto ti plataporma, dagitoy a padron ket saan a kaso ti igid — dagitoy ti duri ti modular a software. No ti grupo ti inhenieria ti Mewayz ket mangbangon kadagiti tampok a kas dagiti drag-and-drop a managbangon ti panagayus ti trabaho wenno ti aktual nga oras a panagtitinnulong iti modulo ti panagmanehar ti proyektona, dagiti naibatay a modelo ti datos ket saan a maliklikan a mairaman dagiti bukod a reperensial nga estruktura. Dagiti pagsasao ken dagiti balbalay a mangasikaso kadagitoy a padron ket siaayat a mangkissay ti panawen ti panagrang-ay ken mangkissay ti kalawa ti rabaw para kadagiti bug.

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

Ti Nalawlawa nga Epekto iti Arkitektura ti Software

Ti wagas ni Dada kadagiti akin-uneg a reperensia ket mangipakita ti dakdakkel nga uso iti disenio ti pagsasao ti panagprograma: panagaramid kadagiti natalged a padron nga ergonomiko imbes a panagaramid kadagiti saan a natalged a padron nga imposible. Daytoy a pilosopia ket addaan kadagiti direkta a pagbanagan no kasano ti pannakaarkitekto ti moderno a software. No ti maysa a pagsasao ket mangpalaka iti maysa a padron, usaren dayta dagiti developer. No daytoy ket mangaramid ti maysa a padron a nasakit, dagiti agparparang-ay ket liklikanda daytoy — no dadduma iti gastos ti kinalawag ti arkitektura.

Ikonsiderar ti debate ti mikroserbisio kontra modular a monolito. Maysa a rason dagiti grupo a mangbingay kadagiti sistema kadagiti agsina a serbisio ket tapno maliklikan ti kinarikut ti panangituray ti naibingbingay nga estado iti uneg ti maymaysa a proseso. Ngem no ti pagsasao ket mangaramid kadagiti padron ti nabingbingay-a-kasasaad a natalged ken mabasa, ti argumento para iti nasapa a panagrunaw ket kumapuy. Dagiti grupo ket mabalinda ti mangbangon kadagiti agtitipon, modular a sistema — nga addaan kadagiti 50, 100, wenno uray pay 207 a nagsisilpo a modulo — iti uneg ti maymaysa a maipakat a yunit, a makagun-od kadagiti organisasional a pagimbagan ti modularidad nga awan ti operasional a gastos dagiti naiwarwaras a sistema.

Daytoy ket eksakto nga arkitektura a mangpabileg kadagiti plataporma a kas ti Mewayz, a dagiti modulo a mangsaklaw ti CRM, panag-invoice, payroll, HR, panagmanehar ti armada, ken analitiko ket amin ket agtigtignay iti uneg ti nagkaykaysa a konteksto ti datos. Tunggal modulo ket mangitudo kadagiti naibingbingay nga entidad — dagiti kontak, organisasion, transaksion — babaen dagiti akin-uneg a relasion a kasla bang-ar a maituray iti ballasiw dagiti beddeng ti serbisio ngem natural iti uneg ti nasayaat ti pannakaistrukturana a monolito. Dagiti panagrang-ay iti disenio ti pagsasao a mangpasimple kadagitoy nga akin-uneg a reperensia ket direkta a makagunggona iti daytoy a klase ti software.

No Ania ti Rumbeng a Bantayan dagiti Developer

Agtalinaed nga eksperimental ti Dada, ken dagiti kapanunotanna ket mapinpinpintas pay laeng babaen ti panagrang-ay ti publiko ken ti feedback ti komunidad. Nupay kasta, sumagmamano kadagiti kabaruanna ti mangimpluensia itan iti kangrunaan a disenio ti pagsasao. Ti agtultuloy nga obra ni Rust kadagiti dagiti kita ti panagkita ken ti polonius (ti sumaganad a henerasion a borrow checker) ket mangbulod kadagiti konsepto manipud iti isu met laeng nga espasio ti panagsukisok. Ti modelo ti panagtagikua ti Swift, a naiyam-ammo iti Swift 5.9, ket kapada a mangsukisok kadagiti ad-adu a granular a sistema ti pammalubos. Uray ti sistema ti tipo ti TypeScript ket agtultuloy nga agbaliw nga agturong iti ad-adu nga eksakto a panagmodelo kadagiti relasion ti datos.

Para kadagiti grupo a mangbangbangon iti software ti produksion ita, nalawag dagiti praktikal a takeaways. Umuna, pabor kadagiti pagsasao ken balbalay a mangitunos ti modelo ti panagtagikuada iti modelo ti datosmo — ti pannakidangadang iti sistema ti tipo ket maysa a buis ti produktibidad a kumaro iti panaglabas ti panawen. Maikadua, ipuonan ti pannakaawat kadagiti padron a kasapulan ti domain-mo. No ti aplikasionmo ket batayan a maysa a grapo dagiti agsisilpo nga entidad (kas ti kaaduan a plataporma ti negosio), agpili kadagiti ramit a mangmodelo kadagiti grapo a natural imbes a mangpilit kadagiti sukog-kayo a panagliklik.

Kamaudiananna, bantayan ni Dada ken ti panagsirarak nga irepresentarna. Dagiti parikut a solbarenna — dagiti akin-uneg a reperensia, komposision ti pammalubos, ergonomic safety — ket saan a pakaseknan ti niche. Isuda dagiti eksakto a parikut a masabet ti tunggal team no mangbangon kadagiti ambisioso, agkakanaig a software iti rukod. Iturturongmo man ti maysa a bunggoy dagiti lugan a mangitulod, ag-orkestra iti adu nga addang a tubo ti panagabang, wenno panagsinkronisar ti datos iti ballasiw ti 207-module a plataporma ti negosio, ti wagas a panangtaming dagiti ramitmo kadagiti makin-uneg a relasion ket mangporma ti kalidad ti amin a banag a bangonem iti rabaw dagitoy.

Manipud iti Teoria ti Pagsasao agingga iti Kinapudno ti Negosio

Ti panagsukisok ti pagsasao ti panagprograma ket mabalin a marikna nga adayo manipud iti inaldaw a kinapudno ti panagtaray ti negosio. Ngem dagiti ramit nga us-usarentayo ti mangporma kadagiti produkto a bangonentayo, ken dagiti produkto a bangonentayo ti mangporma no kasano ti panagandar dagiti negosio. Ti kontribusion ni Dada iti akin-uneg a parikut ti reperensia ket saan laeng a teknikal a milestone — daytoy ket maysa a senial a ti industria ket umad-adani nga agturong kadagiti ramit a mangraem no kasano ti aktual a panagpanunot dagiti agparparang-ay maipapan ti datos, imbes a mangpilit kadakuada nga agpanunot a kas maysa a kompiler.

Para kadagiti 138,000+ a negosio nga agus-usar kadagiti plataporma a kas iti Mewayz tapno mangimaton kadagiti panagpatarayda, daytoy a panagrang-ay ket kayatna a sawen ti software nga ad-adda a mapagtalkan, ad-adda a nabaknang iti tampok, ken naparpartak nga agbaliw. Tunggal panagpasayaat no kasano a dagiti pagsasao ti panagprograma ket mangasikaso ti kinarikut ket mangipatarus, iti kamaudiananna, iti nasaysayaat a padas para iti ngudo nga agar-aramat — ti bassit a makinkukua ti negosio a kayatna laeng a dagiti sistemada ti CRM, panag-invoice, ken panag-book ket agtrabaho a sangsangkamaysa a nasayaat. Dayta a kinaawan ti panagdadait ket produkto dagiti rinibu a nasayaat ti pannakamodelona nga akin-uneg a reperensia, ken dagiti pagsasao a kas ti Dada ket mangaramid kadagitoy a nataltalged ken nalaklaka a maibangon ngem idi.

Pasayaatem ti Negosyom iti Mewayz

Ti Mewayz ket mangiyeg ti 207 a modulo ti negosio iti maysa a plataporma — CRM, panag-invoice, panagmanehar ti proyekto, ken dadduma pay. Makikadua kadagiti 138,000+ nga agar-aramat a nangpasimple ti panagayus ti trabahoda.

Mangrugi a Libre Ita nga aldaw →

Dagiti Masansan a Saludsod

Ania nga eksakto ti "self-referential problem"?

Ti parikut ti bukod a reperensia ket mapasamak no ti maysa nga estruktura ti datos ket aglaon ti reperensia iti bagina, a kas ti maysa a nodo iti maysa a grapo a mangitudo ti sabali a nodo iti uneg ti isu met laeng nga estruktura. Kadagiti pagsasao nga addaan kadagiti nainget a pagalagadan ti panagtagikua a kas ti Rust, daytoy ket mangpartuat ti panagsusuppiat: dagiti garantia ti kinatalged ti pagsasao ket saan a nalaka a mangikeddeng no ti reperensia ket agbiagto ngem ti datos nga itudona. Daytoy ket mangaramid kadagiti kasla simple a padron, a gagangay kadagiti 207+ a modulo ti Mewayz, a nakaskasdaaw a narigat ken saan a natalged a maipatungpal.

Kasano a solbaren ni Dada daytoy a parikut a naiduma iti Rust?

Bayat a ti Rust ket masansan a kasapulanna dagiti komplikado a panagliklik a kas ti Pin wenno unsafe a kodigo tapno mangasikaso kadagiti bukod a reperensia, ti Dada ket agluto ti solusion a direkta iti modelo ti panagtagikua na. Iyam-ammo ni Dada ti konsepto ti "panagpaabang," nga isuda ket temporario, dagiti reperensia a naibatay iti pammalubos. Daytoy ket mangipalubos ti kompiler nga estatiko a mangipanamnama ti kinatalged dagiti akin-uneg a puntor a saan a kasapulan dagiti naisangayan a kita wenno mangburak ti kinatalged ti memoria, a mangaramid daytoy nga adayo nga ad-adda nga ergonomiko para kadagitoy a gagangay a padron.

Mabalin kadi nga usaren ti Dada para kadagiti proyektok ita nga aldaw?

Ti Dada ket agdama nga eksperimental a pagsasao ken saan pay a nakasagana para iti panagusar ti produksion. Daytoy ket maysa a proyekto ti panagsirarak a mangsuksukisok kadagiti baro nga ideya iti panagtagikua. Para iti natibker, nakasagana iti produksion a sistema a panagprograma, agtalinaed ti Rust a mangidadaulo a pili. Para kadagiti nangatngato nga antas a kasapulan ti aplikasion, ti serbisio a kas ti Mewayz ($19/mo) ket mangipaay ti nalawa a biblioteka dagiti nasakbay a naibangon a modulo tapno mapapartak ti panagrang-ay a saan a makiranget kadagiti nababa nga antas a pakaseknan ti memoria.

Adda kadi limitasion ti wagas ni Dada?

Ti sistema ti panagpaabang ni Dada ket nadisenio para iti espesipiko a klase dagiti parikut a mairaman dagiti akin-uneg a reperensia iti uneg ti maymaysa a kayo ti panagtagikua. Bayat a daytoy ket elegante a mangrisut kadagiti paradigmatiko a grapo ken dagiti isyu ti padron ti agpalpaliiw, daytoy ket mabalin a saan a maysa a pirak a bala para kadagiti amin a komplikado a senario ti puntos. Ti modelo ket madama pay laeng a maparang-ay, ken dagiti naan-anay a kabaelanna ken dagiti lappedna ket agbalinto a nalawag bayat ti panagbalbaliw ti pagsasao.

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