Hacker News

Sɛnea Dada Ma Nsɛm a Wɔde Kyerɛw Nsɛm a Ɛwɔ Mu

Nsɛm a wɔka

16 min read Via smallcultfollowing.com

Mewayz Team

Editorial Team

Hacker News

Ɔhaw a ɛfa Ankasa ho a Ɛhaw Systems Programming Mfe Du du pii

Sɛ woabɔ mmɔden pɛn sɛ wobɛkyekyere graph, list a ɛwɔ nkitahodi abien, anaa observer pattern wɔ kasa bi a ɛwɔ ownership mmara a emu yɛ den mu a, wunim ɛyaw no. Self-referential data structures — baabi a struct no fã biako kura pointer a ɛkɔ struct koro no ara fã foforo — agye dimmɔne sɛ ɛyɛ den sɛ wɔbɛda no adi dwoodwoo. Rust developers adi aperepere ne eyi mfe pii, de wɔn nsa kɔ Pin, unsafe blocks, anaa arena allocators so de yɛ nhwɛsode a ɛte sɛ nea ɛho nhia wɔ kasa ahorow a wɔaboaboa ano wɔ nwura mu mu kɛkɛ. Dada, nhyehyɛe kasa a wɔde sɔ hwɛ a Niko Matsakis yɛe no fa ɔkwan soronko koraa so. Ɛnam sɛ Dada san susuw owura ne tumi krataa ho fi mfiase so no, ɛma emu nsɛm a wɔde gyina hɔ ma no tumi yɛ adwuma a ɔmfa nkae ahobammɔ mmɔ afɔre — na nea ɛkyerɛ no kɔ akyiri koraa sen adesua mu anigye a obi wɔ sɛ obehu nneɛma pii.

Dɛn Ne Nsɛm a Wɔde Kyerɛw Nsɛm a Ɛwɔ Mu ne Dɛn Nti na Ɛho Hia?

Mfinimfini nkyerɛkyerɛmu ba bere a afuw bi a ɛwɔ data nhyehyɛe bi mu kyerɛ afuw foforo a ɛwɔ nhyehyɛe koro no mu. Susuw parser a ɛkura source string ne slice nyinaa kɔ saa string no mu, anaa UI component a ɛkora mmofra widgets a wɔahyehyɛ ka ho ne pointer a ɛkɔ abofra a ɔde n’adwene asi so mprempren no ho. Saa nhyehyeɛ yi pue daa wɔ wiase ankasa softwea mu: nsɛm a esisi nhyehyɛeɛ, nkrataa nhwɛsoɔ, nhyehyeɛ nnua, ne adwumayɛ kwan engine nyinaa de ne ho to ɔkwan bi a wɔfa so hwɛ wɔn ho so.

Wɔ kasa te sɛ Python anaa JavaScript mu no, nwura a wɔboaboa ano di nhomakorabea no ho dwuma wɔ ɔkwan a wontumi nhu so. Wobɔ reference no, na runtime no hwɛ hu sɛ memory no bɛtena ase bere tenten a biribi twe adwene si so no. Nanso wɔ nhyehyɛe kasa ahorow a ɛde zero-cost abstractions ne deterministic resource management di kan mu no, compiler no hia adanse a ɛkyerɛ sɛ reference no rentra ase nsen data a ɛkyerɛ no. Eyi ne baabi a nneɛma yɛ den — ne baabi a kasa dodow no ara a egyina owurayɛ so hyɛ wɔn a wɔyɛ no ma wɔyɛ adwuma a ɛyɛ fɛre ade a ɛkata adwene so na ɛde mfomso a ɛnyɛ anifere ba.

Asɛnnennen no nyɛ nsusuwii hunu ara kwa. Akuo a wɔreyɛ modular platforms — te sɛ 207-module architecture a ɛwɔ Mewayz akyi — gyina emu nsɛm so daa. CRM module a ɛkyerɛ kyerɛwtohɔ ahorow a ɛwɔ data tebea koro no ara mu, invoicing engine a ɛde line nneɛma bata wɔn awofo krataa no ho, anaasɛ analytics dashboard a ɛkyerɛ data nsuten a ɛte ase wɔ tebea a wɔakyekyɛ mu: eyinom nyinaa yɛ wiase ankasa mu nhwɛso ahorow a ɛfa emu nkyerɛkyerɛmu nhyehyɛe a ɛyɛ adwuma wɔ nsenia so.

Sɛnea Amammerɛ mu Owurayɛ Nhwɛso ahorow no Twa Tiatiaa

Rust borrow checker yɛ nneɛma foforo a wɔadi ho afahyɛ kɛse wɔ nnɛyi kasa nhyehyɛe mu no mu biako, eyi memory bugs ahorow nyinaa fi hɔ wɔ bere a wɔboaboa ano no mu. Nanso ne nkyerɛase a ɛyɛ katee a ɛfa owura biako ho, bofɛm anaa tu a wotu kɔ baabi foforo no ma emu nsɛm a wɔde gyina hɔ ma no yɛ yaw ankasa. Bere a wɔde struct bi kɔ memory mu no, emu pointer biara bɛyɛ nea enni mu. Rust mmuaeɛ — Pin API a wɔde aba wɔ version 1.33 mu — ma adwinnadeɛ a ɛbɛma awerɛhyɛmu sɛ botaeɛ bi renkɔ, nanso ɛde nsɛnnennen to deɛ ɛsɛ sɛ ɛyɛ nhwɛsoɔ adwuma a ɛyɛ tẽẽ so.

Developers taa bɔ amanneɛ sɛ wɔde wɔn bere 30-40% ko tia borrow checker no wɔ patterns a ɛfa self-reference ho. Arena nkyekyɛmu nwomakorabea te sɛ typed-arena ne index-based approaches (baabi a wode indices sie wɔ Vec mu sen sɛ wode references ankasa bɛsie) yɛ ano aduru a ɛyɛ adwuma nanso ɛnyɛ pɛ. Wɔde nsɛm a wɔde gyina hɔ tẽẽ a wɔda no adi no sesa indirection a nea ɔboaboa ano no betumi agye atom, nanso wɔde pefeeyɛ nso sesa boilerplate.

a wɔde ahyɛ mu

"Kasa mu ade a eye sen biara ne nea ɛma nhwɛso a ɛteɛ no yɛ nhwɛso a ɛyɛ mmerɛw sɛ wɔbɛkyerɛw. Sɛ wɔn a wɔyɛ no de wɔn ho to akwan a wɔfa so yɛ adwuma so a, ɛkyerɛ sɛ kasa no nhwɛso ne wɔn adwene mu nhwɛso no apaapae." — Niko Matsakis, wɔ adwini nyansapɛ a ɛwɔ Dada

akyi no ho
na ɛkyerɛ sɛ woayɛ

Dada Ɔkwan a Egyina Tumi a Ɔfa so Fa Owurayɛ Ho

Dada san susuw owurayɛ ho ɛnyɛ sɛ gyinaesi a ɛyɛ n’ankasa anaa boseabɔ a ɛyɛ abien na mmom sɛ kwan ho kwan ahorow. Sɛ anka wobɛma wo wurayɛ anaa wobɛbɔ bere tiaa mu boseabɔ no, Dada ma kwan ma gyinapɛn ahorow de kwan ho nkyerɛkyerɛmu a ɛkyerɛkyerɛ nea wubetumi de ayɛ — akenkan, akyerɛw, anaa wo de — na nea ɛho hia no, saa tumi krataa yi betumi atra faako wɔ data nhyehyɛe koro no ara afã horow a ɛka bom so.

Nhumu titiriw ne adwene a ɛfa leases ho. Lease a ɛwɔ Dada no ma kwan ma wonya bo bi bere tiaa bi bere a mfitiase wura no kura ne hokwan ahorow no. Nea ɛnte sɛ Rust borrows no, wɔayɛ leases sɛnea ɛbɛyɛ a wɔbɛhyehyɛ wɔ abɔde mu ne emu nhyehyɛe. Sɛ wogye struct bi afuo bi a, Dada type system no te aseɛ sɛ wɔde lease no scoped kɔ ɔwofoɔ no nkwa nna mu a enhia sɛ wɔde nkwa nna mu nkyerɛkyerɛmu a ɛda adi pefee. Wei yi 'a nkwa nna mu parameter nkɔnsɔnkɔnsɔn a agye dimmɔne a ɛma Rust dwumadie nsaano nkyerɛwee yɛ den sɛ wɔbɛkenkan.

Wɔ emu nsɛm pɔtee ho no, Dada de nea kasa no frɛ no shared leases with interior paths ba. Structure betumi akura lease ama n’ankasa fields no mu baako ɛfiri sɛ compiler no di abusuabɔ a ɛda container no ne data a ɛwɔ mu no ntam sɛ adwene a ɛdi kan. Pin ho nhia, ɛho nhia sɛ wɔyɛ nea ahobammɔ nnim, na enhia sɛ wɔde index-based indirection di dwuma. Wokyerɛw koodu no ara kwa sɛnea wususuw data no ho, na nea ɔboaboa ano no di ho adanse.

Nhwɛsoɔ a mfasoɔ wɔ so a ɛbɛyɛ nea ɛho nhia wɔ Dada

Sɛ wɔma emu nsɛm a wɔde gyina hɔ ma no yɛ adwuma yiye a, abakɔsɛm mu nhwɛso ahorow pii a ɛyɛ den no bɛyɛ nea ɛyɛ tẽẽ sɛ wɔde bedi dwuma. Eyinom yɛ nhwɛso ahorow a nneɛma a wɔyɛ no hyia da biara da:

  • Self-referential iterators — Iterator a ɛkura nkyerɛkyerɛmu a ɛfa nneɛma a wɔaboaboa ano a ɛtwa mu, a wɔde asie sɛ struct baako, a nkwa nna nyinaa apɔmuden nni mu
  • Observer patterns — Event emitter a ɛhwɛ callbacks list a ɛkyerɛ n’ankasa tebea so, ɛma reactive programming a Rc/RefCell wrappers
  • nni mu no tumi yɛ adwuma
  • Nwoma nhwɛsoɔ a ɛwɔ cursors — Text editor no document struct a ɛwɔ buffer ne cursor gyinabea baako anaa nea ɛboro saa a ɛkyerɛ mu
  • Awofo-abofra nhyehyɛe — Nnua nhyehyɛe a mmofra kura nsɛm a ɛfa wɔn awofo node ho, a wɔayɛ ho nhwɛso tẽẽ sen sɛ wɔbɛfa nsɛnkyerɛnne anaa nsɛnkyerɛnnede a ɛyɛ mmerɛw so
  • Adwumayɛ engine ahorow a ɛwɔ ɔman mfiri — Pipeline struct a ɛkyerɛ ne mprempren gyinabea, nea afi mu aba dedaw, ne nneyɛe a ɛda so ara wɔ hɔ nyinaa wɔ data nhwɛso biako a ɛka bom mu

Wɔ platform architects fam no, saa nhwɛsoɔ yi nyɛ edge cases — ɛyɛ modular software akyi dompe. Sɛ Mewayz mfiridwuma kuw no kyekye nneɛma te sɛ drag-and-drop adwumayɛ nhyehyɛe adansifo anaasɛ bere ankasa mu adwumayɛ wɔ ne project management module no mu a, akyinnye biara nni ho sɛ data nhwɛso ahorow a ɛwɔ ase no fa nhyehyɛe ahorow a ɛkyerɛ ankasa ho. Kasa ne nhyehyeɛ a ɛdi saa nhwɛsoɔ yi ho dwuma fɛfɛɛfɛ tew nkɔsoɔ berɛ so na ɛtew asase ani a ɛwɔ hɔ ma mmoawa.

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

Nkɛntɛnso a Ɛtrɛw wɔ Software Architecture so

Dada kwan a ɔfa so de nsɛm a ɛfa emu nsɛm ho no da su kɛseɛ bi adi wɔ nhyehyɛeɛ kasa nhyehyɛɛ mu: ɔma nhwɛsoɔ a ahobanbɔ nni mu yɛ ergonomic sene sɛ ɛbɛma nsusuiɛ a ahobanbɔ nni mu ayɛ yie. Saa nyansapɛ yi wɔ nea efi mu ba tẽẽ wɔ sɛnea wɔyɛ nnɛyi softwea ho. Sɛ kasa bi ma nhwɛsode bi yɛ mmerɛw a, wɔn a wɔyɛ no de di dwuma. Sɛ ɛma nhwɛsoɔ bi yɛ yaw a, wɔn a wɔyɛ no kwati — ɛtɔ da bi a wɔbɔ ka wɔ adansiɛ mu pefeeyɛ ho.

Susuw microservices ne modular monolith akyinnyegye no ho. Ade biako nti a akuw kyekyɛ nhyehyɛe ahorow mu yɛ no nnwuma ahorow ne sɛ wɔbɛkwati sɛnea ɛyɛ den sɛ wɔbɛhwɛ tebea a wɔkyɛ so wɔ nhyehyɛe biako mu no. Nanso sɛ kasa no ma tebea a wɔkyɛ mu nhyehyɛe ahorow yɛ nea ahobammɔ wom na wotumi kenkan a, akyinnyegye a ɛfa sɛ ɛporɔw ntɛm ho no yɛ mmerɛw. Akuw betumi akyekye nhyehyɛe a ɛyɛ biako, modular — a module ahorow 50, 100, anaa mpo 207 a ɛka bom — wɔ ade biako a wotumi de di dwuma mu, na wɔanya ahyehyɛde mu mfaso a ɛwɔ modularity a enni adwumayɛ ho ka a ɛwɔ nhyehyɛe a wɔakyekyɛ mu.

Eyi ne architecture a ɛma platforms te sɛ Mewayz tumi pɛpɛɛpɛ, baabi a module ahorow a ɛfa CRM, invoicing, payroll, HR, fleet management, ne analytics nyinaa yɛ adwuma wɔ data tebea a wɔaka abom mu. Module biara twe adwene si entities a wɔkyɛ — nkitahodi, ahyehyɛde, nkitahodi — denam emu abusuabɔ a ɛbɛyɛ dae bɔne sɛ wɔbɛhwɛ so wɔ ɔsom ahye so nanso ɛyɛ abɔde mu de wɔ monolith a wɔahyehyɛ no yiye mu. Nkɔso a aba wɔ kasa nhyehyɛe mu a ɛma saa nsɛm a ɛwɔ mu yi yɛ mmerɛw no so ba softwea kuw yi so mfaso tẽẽ.

Nea Ɛsɛ sɛ Nkɔmmɔfo Hwɛ

Dada da so ara yɛ sɔhwɛ, na wɔda so ara resiesie n’adwene denam ɔmanfoɔ nkɔsoɔ ne mpɔtam hɔfoɔ mmuaeɛ so. Nanso, ne nneɛma foforo pii renya kasa titiriw nhyehyɛe so nkɛntɛnso dedaw. Rust adwuma a ɛkɔ so wɔ view types ne polonius (awo ntoatoaso a edi hɔ a ɔhwɛ boseabɔ so) no fɛm nsusuwii ahorow fi nhwehwɛmu beae koro no ara. Swift wurayɛ nhwɛsoɔ a wɔde baa Swift 5.9 mu no, saa ara nso na ɛhwehwɛ tumi krataa nhyehyɛeɛ a ɛyɛ granular kɛseɛ. TypeScript type system mpo kɔ so dan kɔ data abusuabɔ ho nhwɛsoɔ a ɛyɛ pɛpɛɛpɛ so.

Wɔ akuw a wɔreyɛ production software nnɛ no, nneɛma a mfaso wɔ so a wɔde kɔ no da adi pefee. Nea edi kan no, fa kasa ne nhyehyɛe ahorow a ɛma wɔn wurayɛ nhwɛso ne wo data nhwɛso no hyia — type nhyehyɛe no a wobɛko no yɛ adwumayɛ tow a ɛyɛ kɛse bere tenten. Nea ɛto so abien no, fa sika hyɛ nhyehyɛe ahorow a wo domain hwehwɛ no ase. Sɛ wo application no titiriw yɛ graph a ɛkyerɛ entities a ɛka bom (sɛnea adwumayɛ platform dodow no ara te no), paw nnwinnade a ɛyɛ graphs model wɔ abɔde mu sen sɛ wobɛhyɛ adwumayɛ a ɛte sɛ dua.

Awiei koraa no, hwɛ Dada ne nhwehwɛmu a egyina hɔ ma no so. Ɔhaw ahorow a edi ho dwuma — emu nsɛm, tumi krataa a wɔahyehyɛ, ergonomic ahobammɔ — nyɛ niche dadwen. Wɔyɛ ɔhaw ahorow pɔtee a kuw biara hyia bere a wɔreyɛ softwea a ɛyɛ aniberesɛm, a ɛka bom wɔ nsenia mu no. Sɛ́ ebia worehwɛ kar ahorow a wɔde kɔma nkurɔfo so, worehyehyɛ anammɔn pii a wɔde fa nnipa, anaasɛ woreyɛ data abom wɔ 207-module adwumayɛ kwan so no, ɔkwan a wo nnwinnade no fa so di emu abusuabɔ ho dwuma no na ɛkyerɛ biribiara a wokyekye wɔ wɔn so no su.

Efi Kasa Nsusuwii so kosi Adwumayɛ mu Nokwasɛm so

Programming kasa nhwehwɛmu betumi ate nka sɛ ɛwɔ akyirikyiri fi da biara da nokwasɛm a ɛfa adwuma bi a wɔde di dwuma ho. Nanso nnwinnade a yɛde di dwuma no na ɛkyerɛ nneɛma a yɛyɛ, na nneɛma a yɛyɛ no na ɛkyerɛ sɛnea nnwuma yɛ adwuma. Dada mmoa a ɔde ama wɔ emu nsɛm a wɔde gyina hɔ ma ɔhaw no mu no nyɛ mfiridwuma mu ade titiriw bi kɛkɛ — ɛyɛ sɛnkyerɛnne a ɛkyerɛ sɛ nnwuma no rekɔ nnwinnade a ɛkyerɛ obu ma sɛnea developers susuw data ho ankasa, sen sɛ wɔbɛhyɛ wɔn ma wɔasusuw te sɛ compiler.

Wɔ nnwuma 138,000+ a wɔde platforms te sɛ Mewayz di dwuma de hwɛ wɔn adwumayɛ so no, saa nkɔsoɔ yi kyerɛ software a wotumi de ho to so kɛseɛ, ɛwɔ feature-rich, na ɛkɔ ntɛmntɛm. Nkɔsoɔ biara a ɛba wɔ sɛdeɛ programming kasa ahodoɔ di nsɛnnennen ho dwuma no kyerɛ aseɛ, awieeɛ koraa no, kɔ osuahu pa mu ma deɛ ɔde di dwuma awieeɛ no — adwuma ketewa wura a ɔpɛ kɛkɛ sɛ wɔn CRM, invoicing, ne booking nhyehyɛeɛ no bom yɛ adwuma a ɛnyɛ den. Saa seamlessness no yɛ nea efi emu nsɛm mpempem pii a wɔayɛ no yiye mu aba, na kasa ahorow te sɛ Dada rema ayɛ nea ahobammɔ wom na ɛnyɛ den sɛ wɔbɛkyekye sen bere biara.

Fa Mewayz Fa Wo Adwuma no Nsiesiei

Mewayz de adwumayɛ module 207 ba platform baako mu — CRM, invoicing, project management, ne nea ɛkeka ho. Kɔka 138,000+ a wɔde di dwuma a wɔmaa wɔn adwumayɛ yɛɛ mmerɛw no ho.

Fi ase Free Ɛnnɛ →

Nsɛmmisa a Wɔtaa Bisa

Dɛn ankasa ne "ɔhaw a ɛfa ankasa ho"?

Ɔhaw a ɛfa ankasa ho no ba bere a data nhyehyɛe bi kura nkyerɛkyerɛmu a ɛfa ne ho, te sɛ node a ɛwɔ graph mu a ɛkyerɛ node foforo a ɛwɔ nhyehyɛe koro no ara mu. Wɔ kasa ahorow a ɛwɔ mmara a ɛyɛ katee wɔ owurayɛ ho te sɛ Rust mu no, eyi de ntawntawdi ba: kasa no ahobammɔ ho bɔhyɛ ahorow no ntumi nkyerɛ ntɛm sɛ ebia nkyerɛkyerɛmu no bɛtra ase akyɛ asen data a ɛkyerɛ no. Wei ma nhwɛsoɔ a ɛte sɛ nea ɛnyɛ den, a ɛtaa ba wɔ Mewayz module 207+ no mu no yɛ den ma ɛyɛ nwonwa na ɛnyɛ ahobammɔ sɛ wɔde bedi dwuma.

Ɔkwan bɛn so na Dada siesie ɔhaw yi wɔ ɔkwan soronko so wɔ Rust ho?

Bere a Rust taa hwehwɛ adwumayɛ a ɛyɛ den te sɛ Pin anaa unsafe koodu de di wɔn ho nsɛm ho dwuma no, Dada tow ano aduru tẽẽ kɔ ne wurayɛ nhwɛso mu. Dada de adwene a ɛne "leases" a ɛyɛ bere tiaa mu, a egyina kwan so nsɛm a wɔde gyina so no ba. Wei ma compiler no tumi de statically guarantee ahobanbɔ a ɛwɔ mu pointers a enhia ahodoɔ soronko anaasɛ ɛbubu memory ahobanbɔ, na ɛma ɛyɛ ergonomic koraa ma saa nhwɛsoɔ a ɛtaa ba yi.

So metumi de Dada adi dwuma ama me nnwuma nnɛ?

Dada yɛ kasa a wɔde sɔ hwɛ mprempren na ennya nsiesiee ne ho sɛ wɔde bedi dwuma wɔ adeyɛ mu. Ɛyɛ nhwehwɛmu adwuma a ɛhwehwɛ adwene foforo wɔ owurayɛ mu. Wɔ nhyehyɛe ahorow a ɛyɛ den, a wɔasiesie ama nneɛma a wɔyɛ ho nhyehyɛe ho no, Rust da so ara yɛ nea edi kan a wɔpaw. Wɔ application ahiadeɛ a ɛkorɔn ho no, dwumadie te sɛ Mewayz ($19/mo) de nwomakorabea kɛseɛ a ɛwɔ module ahodoɔ a wɔadi kan ayɛ ma nkɔsoɔ ntɛmntɛm a ɛnni nkaeɛ a ɛba fam ho haw ho dwuma.

So Dada kwan no wɔ anohyeto bi?

Wɔayɛ Dada lease nhyehyɛe no ama ɔhaw ahorow pɔtee bi a ɛfa emu nsɛm a wɔde gyina hɔ ma wɔ owura dua biako mu. Bere a edi paradigmatic graph ne observer pattern nsɛm ho dwuma fɛfɛɛfɛ no, ebia ɛnyɛ dwetɛ tuo mma pointer scenarios a ɛyɛ den nyinaa. Nhwɛsoɔ no da so ara wɔ nkɔsoɔ mu, na ne tumi ne anohyetoɔ nyinaa bɛda adi pefee berɛ a kasa no rekɔ so.

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