Cursus Raku / Programmatio functionalis, simultanea, reactiva et retialis / Programmatio simultanea / hyper et race 🆕
map parallelum per hyper
Voca .hyper in indice ante map vel
grep, et opus per plura fila operaria diffunditur — dum
effectus adhuc ordine originali redeunt:
say (1..5).hyper.map(* * 2); # (2 4 6 8 10)Hoc prorsus ut map ordinarium apparet, et effectus idem
est; sola differentia est quod duplicationes fortasse in nucleis
diversis eodem tempore computatae sunt.
.hyper cum grep eodem prorsus modo operatur
— unumquodque elementum parallele probatur, et ea quae transeunt adhuc
ordine originali redeunt:
say (1..10).hyper.grep(* %% 2); # (2 4 6 8 10)Quia .hyper ordinem servat, substitutio directa est pro
map vel grep tardo: nihil quod ex ordine
effectuum pendet mutari debet. Emolumentum solum apparet cum opus
uniuscuiusque elementi satis magnum est ut pretium fila ordinandi
superet — numerum quadrare longe nimis vile est ut re vera parallelizari
mereatur. Pro opere per elementum vere sumptuoso super indicem magnum,
.hyper exspectationem longam in brevem vertere potest
pretio unius vocationis methodi.
Unum tenendum: utrum opus revera per nuclea diffundatur,
compilatoris est. Lingua effectus figit — et, pro .hyper,
ordinem eorum originalem — sed exsecutionem parallelam actualem non
postulat. .hyper et .race parallelismum
rogant potius quam exigunt, itaque compilator quidam
eas in stagno filorum currere potest vel elementa tacite in serie
tractare. Eas ut occasionem accelerationis habe, non ut garantiam.
Quia ordo servatur, operationes quae ex eo pendent adhuc recte exeunt. Hic unumquodque verbum parallele in maiusculas vertitur, et tamen partes in locutionem ordine originali rursus iunguntur:
say <raku is fun>.hyper.map(*.uc).join(' '); # RAKU IS FUNExercitatio
Sequuntur 1 quiz de contentis huius argumenti.
Navigatio cursus
← hyper et race 🆕 | Quiz — hyper →
💪 Vel recta ad exercitationes huius
sectionis i.