Architecture Decision Record

Active theme: Light

← Samplaí de thaifid chinntí

Teangacha ríomhchlárúcháin

Ábhar:

Achoimre

Saincheist

Ní mór dúinn teangacha ríomhchlárúcháin a roghnú dár mbogearraí. Tá dhá phríomhriachtanas againn: teanga ríomhchlárúcháin taobh tosaigh atá oiriúnach d'fheidhmchláir ghréasáin, agus teanga ríomhchlárúcháin taobh cúil atá oiriúnach d'fheidhmchláir fhreastalaí.

Cinneadh

Táimid ag roghnú TypeScript don taobh tosaigh.

Táimid ag roghnú Rust don taobh cúil.

Stádas

Socraithe. Táimid oscailte do roghanna eile nua de réir mar a thagann siad chun cinn.

Sonraí

Toimhdeanna

Tá na feidhmchláir taobh tosaigh tipiciúil:

  • Úsáideoirí agus idirghníomhaíochtaí tipiciúla

  • Brabhsálaithe agus córais thipiciúla

  • Forbairtí agus imlonnuithe tipiciúla

Is dócha go bhforbrófar na feidhmchláir taobh tosaigh go tapa:

  • Ba mhaith linn forbairtí, imlonnuithe, atriallta, srl. tapa éasca a chinntiú.

  • Cuirimid luach ar infhíoraitheacht, amhail sábháilteacht cineálacha, agus táimid sásta beagán breise oibre a dhéanamh chun é a bhaint amach.

  • Níl comhoiriúnacht oidhreachta ag teastáil uainn.

Tá na feidhmchláir taobh cúil níos airde ná an gnáth:

  • Spriocanna níos airde ná an gnáth do cháilíocht, go háirithe infhíoraitheacht, iontaofacht, slándáil, srl.

  • Spriocanna níos airde ná an gnáth do fhíor-am gar, i.e. níl stopanna uainn mar gheall ar bhailiú truflais meaisín fíorúil.

  • Spriocanna níos airde ná an gnáth do ríomhchlárú feidhmiúil, go háirithe do chomhthráthú, próiseáil il-chroí, agus sábháilteacht cuimhne.

Glacaimid le luasanna íseal ama tiomsaithe i bhfabhar sábháilteachta ama tiomsaithe agus luasanna ama rite.

Srianta

Tá srian láidir againn ar theangacha atá inúsáidte le seirbhísí soláthraithe mhóra scamall d'fheidhmeanna, amhail Amazon Lambda.

Seasaimh

Bhreithnigh muid na teangacha seo:

  • C

  • C++

  • Clojure

  • Elixir

  • Erlang

  • Elm

  • Flow

  • Go

  • Haskell

  • Java

  • JavaScript

  • Kotlin

  • Python

  • Ruby

  • Rust

  • TypeScript

Argóint

Achoimre in aghaidh na teanga:

  • C: diúltaithe mar gheall ar shábháilteacht íseal; is féidir le Rust beagnach gach rud a dhéanamh níos fearr.

  • C++: diúltaithe mar gheall gur praiseach é; is féidir le Rust beagnach gach rud a dhéanamh níos fearr.

  • Clojure: samhaltú den scoth; an comhfhogasú Lisp is fearr; am rite iontach ar an JVM.

  • Elixir: am rite den scoth lena n-áirítear inimlonnaitheacht agus comhthráthacht; eispéireas forbróra den scoth; éiceachóras measartha beag.

  • Erlang: am rite den scoth lena n-áirítear inimlonnaitheacht agus comhthráthacht; eispéireas forbróra dúshlánach; éiceachóras measartha beag.

  • Elm: cuma an-gheallta air; tá IBM ag foilsiú mórchás-staidéar le torthaí maithe; éiceachóras níos lú.

  • Flow: feabhas suimiúil ar JavaScript; áfach, tá forbróirí ag bogadh ar shiúl uaidh.

  • Go: eispéireas forbróra den scoth; comhthráthacht den scoth; ach taifead drochchinntí a dhéanann nathair den teanga.

  • Haskell: an teanga fheidhmiúil is fearr; pobal forbróirí níos lú; níor bhain sé amach go leor rathúlachtaí táirgeachta foilsithe.

  • Java: am rite den scoth; éiceachóras den scoth; eispéireas forbróra faoi bhun an chaighdeáin.

  • JavaScript: an teanga is coitianta riamh; an t-éiceachóras is forleithne.

  • Kotlin: socraíonn sé an oiread sin de Java; tacaíocht den scoth ó JetBrains; cásanna maithe foilsithe d'aistriú ó Java go Kotlin.

  • Python: an teanga is coitianta le haghaidh riaracháin córas; uirlisí anailísíochta iontacha; creataí gréasáin maithe; ach tréigthe ag Google i bhfabhar Go.

  • Ruby: an t-eispéireas forbróra is fearr riamh; na creataí gréasáin is fearr; an pobal is deise; ach an-mhall; deacair beagán a phacáistiú.

  • Rust: an teanga nua is fearr; béim ar nialas-astarraingt; béim ar chomhthráthacht; áfach éiceachóras measartha beag; agus tá teorainneacha d'aon turas aige ar chineálacha áirithe luasghéaraithe tiomsaitheora m.sh. ní mór rochtain dhíreach cuimhne a bheith go sainráite neamhshábháilte (unsafe).

  • TypeScript: cuireann sé cineálacha le JavaScript; tras-tiomsaitheoir iontach; béim fhorbróirí atá ag fás ar aistriú ó JavaScript go TypeScript; tacaíocht láidir ó Microsoft.

Chinn muid go bhfuil tacar cothromaíochtaí ag VManna nach bhfuil uainn faoi láthair, amhail castacht bhreise a sholáthraíonn cumais ama rite.

Creidimid go dtiomáineann dhá imní thrasghearrtha ár gcinneadh lárnach:

  • Chun an luas ama rite is tapúla agus an rochtain chórais is dlúithe, roghnóimis JavaScript agus C.

  • Chun luas ama rite gar don tapúla agus rochtain chórais gar don dlúithe, roghnaímid TypeScript agus Rust.

Téann tagairtí onóracha do na teangacha VM agus na creataí gréasáin a roghnóimis dá mbeadh teanga VM uainn:

  • Clojure agus Luminus

  • Java agus Spring

  • Elixir agus Phoenix

Impleachtaí

Beidh ar fhorbróirí taobh tosaigh TypeScript a fhoghlaim. Is dócha gur cuar foghlama éasca é seo má tá príomhthaithí an fhorbróra ag úsáid JavaScript.

Beidh ar fhorbróirí taobh cúil Rust a fhoghlaim. Is dócha gur cuar foghlama measartha é seo má tá príomhthaithí an fhorbróra ag úsáid C/C++, agus cuar foghlama deacair má tá príomhthaithí an fhorbróra ag úsáid Java, Python, Ruby, nó teangacha bainistithe cuimhne den chineál céanna.

Tá TypeScript agus Rust araon measartha nua. Ciallaíonn sé seo nach bhfuil doiciméadú ag go leor uirlisí do na teangacha seo go fóill. Mar shampla, beidh gá an phíblíne devops a shocrú do na teangacha seo, agus go dtí seo, níl samplaí réamhshocraithe ag aon cheann de na huirlisí devops atá á meas againn do na teangacha seo.

Tá amanna tiomsaithe do TypeScript agus Rust measartha mall. D'fhéadfadh cuid de seo a bheith mar gheall ar nuacht na dteangacha. B'fhéidir gur mhaith linn féachaint ar an gcaoi ar féidir amanna tiomsaithe mall a mhaolú, amhail tiomsú-ar-éileamh, comhthráthacht tiomsaithe, srl.

Níl tacaíocht IDE do na teangacha seo uileláithreach go fóill agus níl sí den chéad scoth go fóill. Mar shampla, díolann JetBrains an IDE PyCharm le haghaidh tacaíochta den chéad scoth do Python, ach ní dhíolann sé IDE le tacaíocht den chéad scoth do Rust; ina ionad sin, is féidir le JetBrains breiseán Rust a úsáid a sholáthraíonn b'fhéidir 80% de thacaíocht na teanga Rust i gcomparáid le tacaíocht teanga Python.

Gaolmhar

Cinntí gaolmhara

Díreoimid ar roghanna éiceachórais atá ailínithe leis na teangacha seo.

Mar shampla, ba mhaith linn IDE a roghnú a bhfuil cumais mhaithe aige do na teangacha seo.

Mar shampla, dár gcreat gréasáin taobh tosaigh, is dócha go socróimid ar chreat a bhíonn dírithe ar TypeScript (m.sh. Vue) seachas creat a bhíonn dírithe ar JavaScript simplí (m.sh. React).

Riachtanais ghaolmhara

Ní mór dár slabhra uirlisí iomlán tacú leis na teangacha seo.

Déantáin ghaolmhara

Táimid ag súil go bhféadfaimis roinnt rún a easpórtáil chuig athróga timpeallachta.

Prionsabail ghaolmhara

Tomhais faoi dhó, tóg uair amháin. Táimid ag tabhairt tosaíochta do roinnt sábháilteachta thar roinnt luais.

Tá am rite níos luachmhaire ná am tiomsaithe. Táimid ag tabhairt tosaíochta d'úsáid custaiméirí thar úsáid forbróirí.

Nótaí

Aon nótaí anseo.