abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | Zajímavý článek

    Český statistický úřad (ČSÚ): Průměrná hrubá měsíční mzda ICT specialistů v roce 2025 meziročně vzrostla o 6 % na téměř 100 tisíc korun. Nejlépe placeni byli vývojáři softwaru. Dlouhodobým trendem zůstává nízké zastoupení žen, a to jak mezi specialisty, tak studenty těchto oborů.

    Ladislav Hagara | Komentářů: 5
    dnes 14:11 | IT novinky

    Ochranný svaz autorský (OSA) připravuje žalobu na společnost Suno, která umožňuje generování hudby pomocí umělé inteligence (AI). ČTK to sdělil předseda představenstva OSA Roman Strejček. Suno podle něj bez souhlasu využívá k trénování svých modelů hudbu autorů, které svaz zastupuje. Nedávný investigativní materiál magazínu The Atlantic ukázal, že firmy jako Suno nebo Udio k trénování modelů používají rozsáhlé databáze obsahující miliony skladeb. V databázích, které časopis zveřejnil, lze dohledat i písně řady českých a slovenských umělců.

    Ladislav Hagara | Komentářů: 3
    dnes 13:33 | Komunita

    Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vyřešen byl problém s macOS 27 Golden Gate. Vývoj lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 1
    dnes 12:55 | IT novinky

    EU dnešním dnem zavedla clo ve výši 3 eur na balíky nízké hodnoty dovážené ze zemí mimo EU. To zahrnuje širokou škálu výrobků běžně nakupovaných on-line, jako jsou oděvy, hračky, elektronika a další spotřební zboží v hodnotě až 150 EUR.

    Ladislav Hagara | Komentářů: 5
    dnes 08:55 | Nová verze

    Vyšel Redmine 7.0, jeden z nejlepších open source ticketovacích systémů. Došlo k migraci na Rails 8, vylepšení UI/UX, Workflow, byla přidána podpora náhledu pro Microsoft Office a LibreOffice dokumenty, došlo k výkonnostním optimalizacím a přibylo spoustu dalších oprav a novinek. Více informací v oficiálním oznámení.

    Max | Komentářů: 0
    včera 16:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 166 (pdf).

    Ladislav Hagara | Komentářů: 1
    včera 03:33 | Pozvánky

    Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,

    … více »
    bkralik | Komentářů: 0
    včera 03:22 | Nová verze

    Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Nová verze

    Byla vydána nová verze 2.55.0 distribuovaného systému správy verzí Git. Přispělo 100 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    29.6. 20:22 | IT novinky

    Craig Loewen na blogu Microsoftu oznámil veřejnou preview verzi WSL kontejnerů, tj. linuxových kontejnerů ve Windows Subsystem for Linux (WSL). Spouští se příkazem wslc.exe.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (26%)
    Celkem 2030 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Jazyk Chapel II - Prvé kroky

    24.8.2024 01:51 | Přečteno: 1049× | Code Snippety | poslední úprava: 24.8.2024 01:52

    V minulom dieli seriálu o HPCS jazyku Chapel, sme si prešli inštaláciu. Po inštalácii odporúčam vybrať si nejaký editor. Za mňa najbezproblémovejší bol (neo)vim (u mňa konkrétne varianta VIMu https://nvchad.com/ ). Treba teda switchnuť na Vim / Neovim prípadne Emacs (VSCode ako editor pre Chapel neodporúčam, tam je totiž našepkávanie a type hinting polofunkčný).
    Dnes si teda pozrieme, niektoré bežné vlastnosti jazyka, ktorý vznikol ako vedlajší produkt iniciatívy DARPA High Productivity Computing Systems, ktorá mala za ciel zvýšiť produktivitu superpočítačov do roku 2010. Spolu s ním vznikli aj jazyky ako Fortress (od Sun Microsystems / dnes Oracle) a X10 (od IBM), ktoré sú nemenej zaujímavé. Ale nepredbiehajme. Na začiatok dnešného dielu sa zameriame na polia a domény. Už práca s poľami nám ukáže, že Chapel je jazyk doslova z inej galaxie.

    Vidieť že vývojári neurobili len ďalší z rady klonov mainstreamových jazykov ale naozaj premýšľali nad tým ako programátorom zjednodušiť život.

    Pozn: Pre porovnanie jednoduchosti zápisu uvediem pár príkladov aj v imperatívnom JS a funkcionálnom F#.


    Polia


    Už len taká drobnosť: Máme k dispozícii skutočné viac-rozmerné polia a u nich si vieme stanoviť rozsahy, takže polia môžeme indexovať od 0, 1, 3.14 alebo -150. Všetky bežné jazyky, ktoré majú pôvod v C, alebo su ním inšpirované (napr. C++, JS, C#, Rust, Java, Python, F#) indexujú polia vždy od 0, tí čo ale skúšali jazyky z inej rodiny ako C...Jazyky ako napr Fortran, Pascal, julia, Modula, Algol, Basic istotne poznajú aj možnosť definovať si rozsah poľa, aj možnosť definovať si viac-dimenzionálne polia, sktorými sa inak pracuje omnoho pohodlnejšie ako s C-čkoidným poľom polí.


    Indexovanie začínajúce hodnotou 0


    Pre porovnanie su najprv uvedieme príklad v JS a potom v jazyku Chapel.


    JS:

    var arr = [1, 2, 3];
    
    console.log("arr[0]", arr[0]); // vypíše 1 kedže indexovanie je od 0
    console.log("arr[3]", arr[3]); // vypíše undefined kedže sme mimo rozsah
    console.log("arr", arr); // vypíšeme si celé pole


    Chapel:

    var arr:[{0..2}] int = 1..3; // literal 1..3 nam urcuje rozsah (range 1 .. 3 ktory môžeme priradiť do poľa)
    
    writeln("arr[0]", arr[0]); // vypíše 1 kedže indexovanie je od 0
    writeln("arr[3]", arr[2]); // vypíše 0 keďže sme mimo rozsah
    writeln("arr", arr); // vypíšeme si celé pole

    Ak náš index smeruje mimo rozsah, pole vráti defaultnú hodnotu pre daný typ položky: napríklad 0 pre celočíselný typ "int" (NA TOTO POZOR!!!). Toto je ďalšia zaujímavá vlastnosť jazyka. Polia sa inicializujú na defaultnú hodnotu a dokonca ju vracajú aj tam kde sme nič nealokovali. V mainstreamových jazykoch ako C++, Java, C# môže byť v alokovanej pamati prakticky čokoľvek. Funkcionalne jazyky majú na kontainery ako Array, List, Seq, Set špeciálne knižničné funkcie ako Array.init Array.create ktoré umožňujú inicializovať pole aj s defaultnou hodnotou. Chapel ale nič také nepotrebuje, proste ak chcem všetkým položkám poľa nastaviť nejakú hodnotu, urobím to takto:
    var arr:[{1..3}] int;
    
    writeln(arr); // 0 0 0
    
    arr = 3.14; // všetky položky pola majú hodnotu 3.14
    arr = arr * arr; // všetky položky pola majú druhú mocninu 3.14
    arr = 0..2; // arr[1] má hodnotu 0, arr[2] má hodnotu 1, arr[3] má hodnotu 2
    
    proc sqr(n) {
        return n * n;
    }
    
    arr = sqr(arr); // na všetky položky pola sa fcia sqr
    
    writeln(arr); // 0, 1, 4
    

    takže zápis v jazyku chapel:

    arr = sqr(arr);

    by sme v JS museli zapísať takto:

    arr = arr.map(x => sqr(x));

    a v F# takto:

    let arr = arr |> Array.map(sqr); // pozn: v F# som použil shadowing

    Ako sme si už ukázali Chapel je dosť hi-level jazyk, a aj viac-dimenzionálne polia sú priamo súčasťou špecifikácie jazyka, nemusíme to "hackovať" cez pole polí ani na to mať sadu špeciálnych modulov ako v F# (F# má len kolekcie Array2D a Array3D. Chapel vie vytvoriť aj 4, 5 a aj viac-rozmerné pole) Jednoducho chapel na to ide intuitívne, výhoda je, že takýto hi level kód si vie kompilátor dobre zoptimalizovať. Vidieť, že Chapel má korene v starom dobrom fortrane. Uvedieme si príklad poľa, začínajúceho indexom jedna a končiace indexom 10.


    Indexovanie od 1 - príklad v Chapel:

    var example_domain = {1..10};
    var example_array: [my_domain] int64 = 1..10;

    Riadok 1 - Doména:

    Na prvom riadku vidíme zvláštny typ - doménu príklad: {1..10}, ktorá nám určuje rozsah poľa. Ale čo je to doména? Domény (domains) sú špecialitou jazyka chapel, abstrakcie pre indexové priestory, ktoré definujú rozsah indexov pre polia (alebo iné indexové priestory, napr asociatívne polia). Domény umožňujú efektívne a flexibilné riadenie dátových štruktúr a paralelizmu. Domény môžu mať rôzne typy (napriklad aj string pre asociatívne pole). A môžu byť viac-rozmerné.

    var celsius_scale_domain = {-273..n}
    var farenheit_scale_domain = {-459..n}
    var kelvin_scale_domain = {0..n}

    Riadok 2 - samotná deklarácia poľa:

    Pole sa deklaruje tak, že:

    1. uvedieme keyword var prípadne const (pre immutable premenné),
    2. nasledovaný názvom identifikátoru pola
    3. dvojbodkou a hranatými zátvorkami (v ktorých definujeme indexovanie, rozsah, typ indexu)
    4. názvom typu jednotlivých položiek (napr: string, int, real)

    Ak chcem pole inicializovať všetky položky poľa nejakou hodnotou, tak stačí spraviť toto:

    var example_array: [{1..10}] int = 1..10; // 1..10 je typ range pozor nemýliť si s doménami: 1..10 != {1..10}
    writeln("example_array: ", example_array); // vypíše 1 2 3 4 5 6 7 8 9 10
    

    V budúcom diely seriálu si podrobnejšie rozoberieme viacrozmerné polia a záležitosti s nimi súvisiace (Nechcem spolierovať, ale prezradím, že do viacrozmerných polí nevieme priraďovať priamo ranges.) a prejdeme na ďalšiu kapitolu, kde si ukažeme veci, ktoré ste v mainstreamových jazykoch ešte nevideli.

    PS: ak by boli v mojom blogovom zápisku nejaké chyby a nepresnosti, alebo ak som niekde použil zlé názvoslovie, budem rád keď ma opravíte. Tiež sa chapel iba učím a toto berte ako moj grimoár. Písanie je, výborný spôsob ako si niečo zapamatať. A navyše, nie som žiadny zamestnanec HP, ktorý by robil tomuto jazyku platenú reklamu. Venujem sa mu čisto iba zo záujimu a nadšenia, nakolko poskytuje zaujímavé možnosti na rýchly vývoj určitého typu aplikácií. Čo sa týka mojej histórie vo voľnom čase mi k srdcu najviac prirástlo F# a C++. Chapel je do tretice ďalší z jazykov zase z úplne iného súdka. V neskoršich dieloch seriálu si spravíme aj nejakú real-world aplikáciu, ktorá bude cez REST komunikovať s frontendom v Blazore alebo Reacte (výber technológie pre FE nechám na vás).

    Seriál jazyk Chapel:

    1. Chapel 0. - Programovací jazyk chapel
    2. Chapel I. - Inštalácia / Úvod
    3. > Chapel II. - Prvé kroky

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    24.8.2024 02:09 RealJ | skóre: 10
    Rozbalit Rozbalit vše Re: Jazyk Chapel II - Prvé kroky
    Dotaz: v prvnim dile jsi psal o tom ze jazyk je primarne pro distribuovane vypocty rozdelene mezi vicero pocitacu. Budes to nejak prakticky popisovat? Zajima me treba nejaky vypocet rozdelen mezi vice zdroju.
    24.8.2024 07:45 footgun
    Rozbalit Rozbalit vše Re: Jazyk Chapel II - Prvé kroky
    Ak náš index smeruje mimo rozsah, pole vráti defaultnú hodnotu pre daný typ položky

    v cem je tohle zajimavy a ne jenom footgun? diky
    26.8.2024 10:21 karkar | skóre: 14 | blog: Kartrolling
    Rozbalit Rozbalit vše Re: Jazyk Chapel II - Prvé kroky
    že to nezhavaruje?
    27.8.2024 07:00 čavo | skóre: 16
    Rozbalit Rozbalit vše Re: Jazyk Chapel II - Prvé kroky
    writeln("arr[3]", arr[2]); // vypíše 0 keďže sme mimo rozsah
    
    Hádam, že vypíše 3, lebo arr[2] je definované.
    27.8.2024 08:21 plostenka | blog: plstnk
    Rozbalit Rozbalit vše Re: Jazyk Chapel II - Prvé kroky
    Vlastni rozsahy poli a integrovana defaultni hodnota jsou moc pekne vlastnosti. Na druhou stranu ticha akceptace out of range je zlocin...

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.