Architecture Decision Record

Active theme: Light

← Misalan rikodin shawara

Harsunan shirye-shirye

Abubuwan da ke ciki:

Taƙaitawa

Matsala

Muna buƙatar zaɓar harsunan shirye-shirye don manhajarmu. Muna da manyan buƙatu biyu: harshen shirye-shirye na gaba wanda ya dace da aikace-aikacen yanar gizo, da harshen shirye-shirye na baya wanda ya dace da aikace-aikacen sabar.

Shawara

Muna zaɓar TypeScript don na gaba.

Muna zaɓar Rust don na baya.

Matsayi

An yanke shawara. A buɗe muke ga sababbin madadin idan suka taso.

Cikakkun bayanai

Zato

Aikace-aikacen gaba na yau da kullum ne:

  • Masu amfani da mu’amaloli na yau da kullum

  • Burauza da tsarukan yau da kullum

  • Ci gaba da ɗora tsari na yau da kullum

Aikace-aikacen gaba suna iya canzawa da sauri:

  • Muna son tabbatar da ci gaba, ɗora tsari, maimaitawa, da sauransu cikin sauri da sauƙi.

  • Muna daraja iya tabbatarwa, kamar amincin nau’i, kuma mun yarda mu yi ɗan ƙarin aiki don cimma shi.

  • Ba ma buƙatar dacewa da tsoffin tsarukan.

Aikace-aikacen baya sun fi na yau da kullum:

  • Manufofi sama da na yau da kullum na inganci, musamman iya tabbatarwa, aminci, tsaro, da sauransu.

  • Manufofi sama da na yau da kullum na kusan-lokaci-na-gaske, wato ba ma son tsaiko saboda tattara shara na virtual machine.

  • Manufofi sama da na yau da kullum na shirye-shirye masu aiki (functional), musamman don daidaita aiki a lokaci ɗaya, sarrafa cores da yawa, da amincin ƙwaƙwalwa.

Mun yarda da ƙarancin gudun tarin lamba don amfanin amincin lokacin tarin da gudun lokacin aiki.

Ƙuntatawa

Muna da ƙaƙƙarfar ƙuntatawa kan harsunan da za a iya amfani da su da ayyukan manyan masu samar da girgije don ayyuka, kamar Amazon Lambda.

Ra’ayoyi

Mun yi la’akari da waɗannan harsuna:

  • C

  • C++

  • Clojure

  • Elixir

  • Erlang

  • Elm

  • Flow

  • Go

  • Haskell

  • Java

  • JavaScript

  • Kotlin

  • Python

  • Ruby

  • Rust

  • TypeScript

Hujja

Taƙaitawa ga kowane harshe:

  • C: an ƙi saboda ƙarancin aminci; Rust na iya yin kusan komai da kyau.

  • C++: an ƙi domin yana da ruɗani; Rust na iya yin kusan komai da kyau.

  • Clojure: kyakkyawan ƙira; mafi kyawun kwatankwacin Lisp; kyakkyawan lokacin aiki a kan JVM.

  • Elixir: kyakkyawan lokacin aiki ciki har da ɗora tsari da aiki a lokaci ɗaya; kyakkyawar ƙwarewar mai haɓakawa; tsarin muhalli ƙanƙani.

  • Erlang: kyakkyawan lokacin aiki ciki har da ɗora tsari da aiki a lokaci ɗaya; ƙwarewar mai haɓakawa mai ƙalubale; tsarin muhalli ƙanƙani.

  • Elm: yana da alƙawarin gaske; IBM yana wallafa manyan nazarin shari’o’i masu kyakkyawan sakamako; ƙaramin tsarin muhalli.

  • Flow: ingantuwa mai ban sha’awa a kan JavaScript; duk da haka; masu haɓakawa suna matsawa daga gare shi.

  • Go: kyakkyawar ƙwarewar mai haɓakawa; kyakkyawan aiki a lokaci ɗaya; amma tarihin munanan shawarwari da ke gurgunta harshen.

  • Haskell: mafi kyawun harshe mai aiki; ƙaramar al’ummar masu haɓakawa; bai cimma isasshen nasarorin samarwa da aka wallafa ba.

  • Java: kyakkyawan lokacin aiki; kyakkyawan tsarin muhalli; ƙwarewar mai haɓakawa maras kyau.

  • JavaScript: harshe mafi shahara a tarihi; mafi faɗin tsarin muhalli.

  • Kotlin: yana gyara abubuwa da yawa na Java; kyakkyawan goyon bayan JetBrains; kyawawan shari’o’in da aka wallafa na mayar da Java zuwa Kotlin.

  • Python: harshe mafi shahara a gudanar da tsarukan; kyawawan kayan aikin nazari; kyawawan tsarukan yanar gizo; amma Google ya yi watsi da shi don Go.

  • Ruby: mafi kyawun ƙwarewar mai haɓakawa a tarihi; mafi kyawun tsarukan yanar gizo; al’umma mafi daɗi; amma yana jinkiri sosai; ɗan wahala a tattara.

  • Rust: mafi kyawun sabon harshe; mai da hankali kan rashin abstraction; mai da hankali kan aiki a lokaci ɗaya; duk da haka tsarin muhalli ƙanƙani; kuma yana da iyakoki da gangan kan wasu nau’ikan hanzarta compiler misali samun ƙwaƙwalwa kai tsaye dole ne ya zama unsafe a sarari.

  • TypeScript: yana ƙara nau’ika zuwa JavaScript; kyakkyawan transpiler; ƙaruwar mai da hankali na masu haɓakawa kan mayar da JavaScript zuwa TypeScript; ƙaƙƙarfan goyon bayan Microsoft.

Mun yanke shawarar cewa VM suna da jerin musanyar da ba ma buƙata a yanzu, kamar ƙarin sarƙaƙiya da ke ba da iyawar lokacin aiki.

Mun yi imanin cewa babbar shawararmu tana motsawa ne da damuwa guda biyu da suka ratsa sassa:

  • Don mafi saurin gudun lokacin aiki da mafi tsananin samun tsari, za mu zaɓi JavaScript da C.

  • Don kusan mafi saurin gudun lokacin aiki da kusan mafi tsananin samun tsari, muna zaɓar TypeScript da Rust.

Ana ba da yabo na girmamawa ga harsunan VM da tsarukan yanar gizo da za mu zaɓa idan muna son harshen VM:

  • Clojure da Luminus

  • Java da Spring

  • Elixir da Phoenix

Tasiri

Masu haɓaka na gaba za su buƙaci koyon TypeScript. Wataƙila wannan lokacin koyo ne mai sauƙi idan babbar ƙwarewar mai haɓakawa ita ce amfani da JavaScript.

Masu haɓaka na baya za su buƙaci koyon Rust. Wataƙila wannan lokacin koyo ne matsakaici idan babbar ƙwarewar mai haɓakawa ita ce amfani da C/C++, kuma lokacin koyo mai wahala idan babbar ƙwarewar mai haɓakawa ita ce amfani da Java, Python, Ruby, ko makamantan harsunan da ake sarrafa ƙwaƙwalwarsu.

TypeScript da Rust duka sababbi ne. Wannan yana nufin cewa kayan aiki da yawa har yanzu ba su da takardu na waɗannan harsuna. Misali, za a buƙaci kafa bututun devops don waɗannan harsuna, kuma ya zuwa yanzu, babu ɗaya daga cikin kayan aikin devops da muke kimantawa da ke da misalan tsoho na waɗannan harsuna.

Lokutan tarin TypeScript da Rust suna da jinkiri sosai. Wasu daga cikin wannan na iya kasancewa saboda sabon harsunan. Wataƙila muna son duba yadda za a rage jinkirin lokutan tarin, kamar tarawa-bisa-buƙata, tarawa-a-lokaci-ɗaya, da sauransu.

Goyon bayan IDE ga waɗannan harsuna har yanzu bai yaɗu ba kuma bai kai matakin farko ba. Misali, JetBrains yana sayar da IDE PyCharm don goyon baya na farko ga Python, amma ba ya sayar da IDE mai goyon baya na farko ga Rust; maimakon haka, JetBrains na iya amfani da plug-in na Rust wanda ke ba da wataƙila 80% na goyon bayan harshen Rust idan aka kwatanta da goyon bayan harshen Python.

Mai alaƙa

Shawarwari masu alaƙa

Za mu yi niyya zuwa zaɓin tsarin muhalli da suka dace da waɗannan harsuna.

Misali, muna son zaɓar IDE mai kyawawan iyawa ga waɗannan harsuna.

Misali, don tsarin yanar gizonmu na gaba, mun fi yiwuwar yanke shawara kan tsarin da ke karkata zuwa TypeScript (misali Vue) fiye da tsarin da ke karkata zuwa JavaScript tsantsa (misali React).

Buƙatu masu alaƙa

Dole ne dukkan jerin kayan aikinmu ya goyi bayan waɗannan harsuna.

Kayayyakin da aka samar masu alaƙa

Muna sa ran za mu iya fitar da wasu sirri zuwa sauye-sauyen muhalli.

Ƙa’idoji masu alaƙa

Auna sau biyu, gina sau ɗaya. Muna fifita wani aminci fiye da wani gudu.

Lokacin aiki ya fi lokacin tarin daraja. Muna fifita amfanin abokin ciniki fiye da amfanin mai haɓakawa.

Bayanan kula

Kowane bayanin kula a nan.