Huawei valoda Cangjie kopš 2025. gada 30. jūlija ir atvērtā koda, un tās stabilais laidiens 1.1.3 (2026. gada 29. maijs) nāk ar iezīmi, kas līdz šim dzīvoja galvenokārt pētniecības valodās — efektu apstrādātājiem, angliski effect handlers. Kopā ar tiem valodā parādās divi jauni atslēgvārdi, perform un resume, un ierastais try/catch/finally bloks kļūst par try/catch/handle/finally.
Cangjie kompilē tiešā mašīnkodā un darbojas uz Linux, macOS, Windows, Android, iOS un HarmonyOS. Valodu attīsta Huawei. Sākotnējo darbu 2019. gadā uzsāka Nanjing universitātes profesors Xinyu Feng, bet valodas pētniecisko daļu tagad vada Dan Ghica programmēšanas valodu laboratorijā Huawei Edinburgas pētniecības centrā, kā apraksta InfoQ. Publiski valoda pirmoreiz parādījās 2024. gada 21. jūnijā kopā ar HarmonyOS NEXT beta versiju.
Kas notiek ar try/catch
Efektu apstrādātāji vispārina izņēmumus (exceptions). Atšķirība ir vienā vārdā: turpinājums. Kad kods met izņēmumu, izpildes steks zem catch tiek atritināts un pazūd — tu vari apstrādāt kļūdu, bet ne atgriezties tur, kur tā radās. Efektu apstrādātājs to steku patur. Kods izsauc perform, apstrādātājs to noķer, izpilda savu loģiku un ar resume atdod vērtību atpakaļ tieši tajā punktā, kur perform tika izsaukts. Aprēķins turpinās, it kā nekas nebūtu noticis.
Šī shēma sedz plašu uzdevumu loku, ko citādi risina ar bibliotēkām vai valodas triku palīdzību. InfoQ min nedeterminismu, uzdevumu plānošanu, atkarību iepludināšanu (dependency injection), testu maketēšanu (mocking) un dinamisko sasaisti. Praksē tas nozīmē, ka vienu un to pašu funkciju var palaist ar īstu tīkla izsaukumu ražošanā un ar maketētu atbildi testā, nemainot pašas funkcijas kodu — atšķiras tikai apstrādātājs, kas to ietver.
Tas pats mehānisms ļauj uzrakstīt paša asinhrono izpildes plānotāju bez īpaša valodas atbalsta. Funkcija ar perform paziņo, ka grib pagaidīt, apstrādātājs to aptur un ar resume atsāk vēlāk, kad rezultāts ir gatavs. Valodās bez efektu apstrādātājiem šādu loģiku parasti ieved kompilators ar atsevišķu async/await sintaksi. Cangjie to atstāj bibliotēkas rokās.
No pētniecības valodām uz ražošanu
Efektu apstrādātāji nav jauns izgudrojums. OCaml tos ieviesa 5.0 laidienā 2022. gadā, un Microsoft Research valoda Koka ir būvēta ap šo pašu ideju. Jaunums ir tas, ka Huawei tos ievieto vispārlietojamā valodā, kuru South China Morning Post apraksta kā konkurentu Java un Swift, un kuru Ķīnā jau māca vairāk nekā 80 augstskolu.
Cangjie dokumentācija brīdina, ka efektu apstrādātāji joprojām ir aktīvi izstrādāta, eksperimentāla valodas daļa. Vairākas uz tiem būvētas ietvarstruktūras pieejamas kā trešās puses komponentes, nevis kā standartbibliotēkas daļa.
Pārējā valoda
Aiz efektu apstrādātājiem Cangjie izskatās kā mūsdienīga statiski tipizēta valoda. Vienkāršākā programma ir īsa:
main() {
println("Hello, World!")
}
Valodā ir tipu izsecināšana, paraugu saskaņošana ar match izteiksmēm, algebriskie datu tipi un metaprogrammēšana ar makro. Cangjie atbalsta gan atribūtu, gan bezatribūtu makro, ar kuriem kodu var ģenerēt jau kompilēšanas laikā. Valoda apvieno vairākas paradigmas — funkcionālo, objektorientēto, imperatīvo un ģenerisko — vienā tipu sistēmā ar izpildlaika kļūdu noteikšanu.
Atmiņu pārvalda konkurentais atkritumu savācējs. Ir arī ārējo funkciju saskarne (FFI) sasaistei ar C un Python, tāpēc esošo bibliotēku izmantošana neprasa visu pārrakstīt no nulles. Kompilators balstās uz LLVM, un tas ir iemesls, kāpēc viena koda bāze aizceļo līdz sešām platformām.
Vieta starp Java un ArkTS
HarmonyOS ekosistēmā Cangjie stāv līdzās ArkTS — TypeScript atvasei, ko Huawei izmanto lietotņu saskarnēm. Abas valodas savietojamas, tāpēc esošās ArkTS lietotnes nav jāpārraksta, lai pievienotu Cangjie kodu, piemēram, veiktspējai jutīgām daļām. Ārpus HarmonyOS Cangjie mēģina ieņemt to pašu nišu, ko Kotlin un Swift savās platformās: augsta līmeņa valoda ar drošu tipu sistēmu, kas kompilē ātrā mašīnkodā.
Huawei iemesls būvēt paša valodu ir praktisks. HarmonyOS jaunākajās versijās vairs nav Android saderības slāņa, tāpēc uzņēmumam vajag pilnu izstrādes kaudzi, kas nav atkarīga no ASV licencēto rīku ķēdes. Cangjie māca vairāk nekā 80 Ķīnas augstskolu, un tas dod valodai to, kā parasti pietrūkst jaunām valodām — plūsmu ar izstrādātājiem, kuri to jau prot. Vai šī bāze izplešas ārpus Ķīnas, būs atkarīgs no tā, cik daudz bibliotēku un rīku parādās ap atvērto kodu.
Kā tas izturēs sacensību ar Java un Kotlin, kuriem ir gadu desmitiem ilga bibliotēku vēsture, redzēs pēc pirmajiem lielajiem projektiem ārpus Ķīnas. Pagaidām valodas pilnais avota kods ir GitHubā, stabilais laidiens ir 1.1.3, un efektu apstrādātājus var izmēģināt jau tagad — ar brīdinājumu, ka to sintakse vēl var mainīties.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.