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 15:22 | Zajímavý článek

    Článek na blogu APNIC vysvětluje, jak správně vytvářet a používat ASPA záznamy — podepsané objekty v RPKI, které uvádějí, kteří poskytovatelé směrování jsou pro dané autonomní číslo (ASN) oprávněni. Síťoví operátoři je mohou využít k ověřování tras BGP a k odhalování úniků tras či podvržených tras.

    vencour | Komentářů: 0
    dnes 14:33 | Nová verze

    Byla vydána (𝕏) verze 8.0.0 open source programu pro prolamování hesel hashcat (GitHub, Wikipedie). Přehled novinek v příspěvku v diskusním fóru a pdf.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 2026.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 6 nových nástrojů v oficiálním oznámení na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 08:35 | Komunita
    Pořadatelé dalšího ročníku komunitního setkání správců nejen českých a slovenských sítí CSNOG 2027 upozorňují, Call for Abstracts pro blížící se akci (20. a 21. ledna 2027, Zlín) končí už 31. října, tedy na konci tohoto týdne.. … více »
    VSladek | Komentářů: 0
    24.10. 23:22 | Bezpečnostní upozornění

    Výzkumníci ukazují, jak mohou otevřené tunely a IPv6 Extension Headers synchronizovat pakety do krátkých provozních špiček. V kontrolovaném experimentu naměřili přes 180násobnou koncentraci paketového toku vůči průměrné rychlosti odesílání — nikoli 180násobné zvětšení objemu dat. Článek obsahuje metodiku, limity měření i mitigace pro GRE, IPIP a další tunely.

    vencour | Komentářů: 1
    24.10. 12:44 | Pozvánky

    Po velkém úspěchu prvního MobileLinux Hackdaye se vracíme do Českých Budějovic s druhým ročníkem. V pátek 30. října 2026 od 10:00 se v prostorách Jihočeské univerzity uskuteční Embedded & MobileLinux Hackday #2. Těšit se můžete na témata jako Immutable Linux na telefonech (BengalOS), U-Boot a upstream vývoj, AI optimalizace pro embedded systémy nebo otevřený hardware. Nebude chybět praktické hackování, sdílení zkušeností a možnost … více »

    lkocman | Komentářů: 1
    24.10. 00:44 | Bezpečnostní upozornění

    Dne 21. října 2026 vydal projekt Node.js bezpečnostní aktualizace opravující deset zranitelností, včetně jedné umožňující potenciální vzdálené spuštění kódu (RCE). Nejzajímavější je CVE-2026-111497, chyba dekodéru Brotli, kterou objevili výzkumníci využívající OpenAI Codex Security. Chyba je v nativním dekodéru Brotli, nikoli v samotném JavaScriptu. Speciálně vytvořený komprimovaný vstup způsobí, že dekodér zamění

    … více »
    vencour | Komentářů: 15
    23.10. 17:44 | IT novinky

    Francouzský výrobce kabelů Nexans upozornil na napjaté dodávky elektrických kabelů. Výstavba nové výrobní linky pro některé typy kabelů může trvat přibližně tři roky. Datacentra potřebují rozsáhlé nízkonapěťové a středněnapěťové rozvody. Poptávka roste současně s modernizací elektrických sítí. Někteří odběratelé proto uzavírají výrazně delší dodavatelské smlouvy [Reuters].

    vencour | Komentářů: 17
    23.10. 14:44 | Zajímavý projekt

    Představena byla (𝕏) virtuální platforma FLYBENCH FPV, která nováčky provede zapojením a konstrukcí dronů.

    Ladislav Hagara | Komentářů: 10
    23.10. 04:11 | Nová verze

    Google Chrome 156 byl prohlášen za stabilní. Přehled novinek v poznámkách k vydání. Opraveno bylo 353 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2915 hlasů
     Komentářů: 34, poslední dnes 08:24
    Rozcestník

    Scala - 02 prvni kroky

    7.8.2009 21:36 | Přečteno: 2125× | poslední úprava: 7.8.2009 23:00

    Rozhodl jsem se prelozit par clanku o jazyku Scala do Cestiny. V teto kapitole probereme zakladni definice promnenych a metod.

    Tento clanek je prekladem volne pristupne ukazky z knihy Programming in Scala od Martina Oderskeho. Autorovo svoleni jsem zatim neresil. Prosim omluvte hacky, carky a gramatiku, jsem liny. Pokud se najde nekdo ochotny text 'ohackovat a ocarkovat' budu rad. Autor je az moc polopaticky, takze nektere veci zkratim.

    Uvod

    Scala je staticky typovany, objektove orientovany programovaci jazyk, ktery slucuje imperativni a funkcionalni styly. Scala je navrzena aby snadno pracovala na modernich virtualnich strojich (virtual machine), hlavne nad Javou (JVM). Hlavni prekladac scaly (scalac) generuje Java class soubory spustitelne na JVM. Existuje i dalsi prekladac ktery generuje binarky pro .NET CLR. Scala je navrzena aby fungovala v obou svetech (pozn. prek: puvodni zamer autora, dnes .NET port pokulhava)

    Vyvoj Scaly zacal v roce 2003 skupina kolem Martina Oderskeho v EPFL v Lausanne, Svycarsko. Pred tim Martin pracoval na Jave: spolunavrhoval prvni verzi Java generik a je puvodni autor soucasneho javac. Prace na Scale byla motivovana touhou prekonat omezeni dana zpetnou kompabilitou Javy. Scala neni rozsirenim Javy (superset), ale zachovava si schopnost spoluprace (interoperability)

    Jeden z duvodu pro pouziti Scaly je vyssi produktivita v porovnani s Javou (pozn. prek: neni tak ukecana) pri zachovani rychlosti, pouzitelnosti Java knihoven a dalsich vyhod JVM. Scala ma strucnost dynamickych jazyku jako Ruby nebo Python, ale je staticky typovana jako Java. Dalsi vyhodou je lepsi podpora vice vlaknoveho programovani.

    V italstine Scala znamena schody. V tomto clanku je dvanact kroku (schodu) ktere vam pomohou zacit se Scalou.

    Krok 1: stazeni a instalace Scaly

    Pro spusteni prikladu by jste meli stahnout a nainstalovat Scalu. Z download stranky stahnete archiv a rozbalte. V bin adresari najdete prekladac, interpret shell apod. Aby vse fungovalo je treba pridat tento adresar do promnene prostredi (env. variable) PATH. Take je treba mit nainstalovanou JRE 1.4 nebo novejsi.

    Krok 2: pouziti Scala interpretu

    Nejsnadnejsi start se Scalou je interpret. Je to interaktivni shell (konzole) pro psani vyrazu a programu. Jednoduse napiste vyraz, interpret ho vyhodnoti a vypise vysledek. Interaktivn interpret je nazyvan jednoduse scala, najdete ho v adresari 'bin'. Po spusteni vypise toto:
    $ scala
    This is an interpreter for Scala.
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> 
    
    Je mozne vkladat vyrazi jako 1+2, interpret pak odpovy vysledkem.
    scala> 1 + 2
    
    unnamed0: Int = 3
    
    Vysledek obsahuje: Objektovy typ Int odpovida tride scala.Int. Tato trida odpovida int nebo Integer z Javy. Vlastne vsechny primitivni typy z Javy maji protejsek ve Scale. Scala sama o sobe nezna primitivni datove typy, vse se tvari jako objekt. Ale prekladac provadi optimalizace a pouziva primitivni datove typy pro lepsi vykon.

    unnamedX muze byt odkazovan z dalsich radku. Napriklad:

    scala> unnamed0 * 3
    unnamed1: Int = 9
    
    Pro vytisteni nezbytneho 'Hello world' muzeme pouzit toto:
    scala> println("Hello, world!")
    Hello, world!
    unnamed2: Unit = ()
    
    Datovy typ vysledku je 'Unit' to odpovida 'void' v Jave. Scala nezna 'void' ve smyslu 'zadna navratova hodnota'. Pro pripady jako println je proto zaveden typ 'Unit' ktery ma jedinou moznou hodnotu (). Pro nas ale bude ted stacit ze Unit a void jsou totozne (pozn. prek: na urovni bytecode je Unit prelozen na void)

    Krok 3: definujeme promnene

    Scala rozlisuje mez val (konstantami) ktere mohou byt prirazeny pouze jednou a var, ktere mohou byt prirazeny vicekrat. (pozn. prek: val je var s javovskym 'final'). Zde je ukazka definice konstanty:
    scala> val msg = "Hello, world!"
    msg: java.lang.String = Hello, world!
    
    Toto zavadi novou konstantu s datovym typem String a hodnotou 'Hello...'.

    Tento priklad take ukazuje dulezitou a velmi uzitecnou vlastnost Scaly: type inference (pozn. prek: odvozovani typu?). Typ 'String' neni treba uvadet u definice, protoze je uz znam pri inicializaci. Interpet/prekladac pozna hodnotu jakou je konstanta initializovana a podle toho prida k definici jeji datovy typ.

    Prekladac zvladne doplnit datovy typ u vetsiny definic. Vetsinou je lepsi ponechat tuto praci na nem, ale obcas muze byt nezbytne definovat datovy typ manualne. Definice typu neni pred promnenu jako v Jave, ale za, oddelene dvojteckou:

    scala> val msg2: String = "Hello again, world!"
    msg2: java.lang.String = Hello, world!
    
    Konstanty neni mozne modifikovat, proto v nekterych pripadech je treba pouzit var promnenou:
    scala> msg = "Goodbye cruel world!"
    console:5 error: assignment to non-variable 
      val unnamed4 = {msg = "Goodbye cruel world!";msg}
    
    scala> var greeting = "Hello, world!"
    greeting: java.lang.String = Hello, world!
    
    scala> greeting = "Leave me alone, world!"
    greeting: java.lang.String = Leave me alone, world!
    

    Krok 4: Definice metod

    Po praci s promnenymi asi budete chtit znat pouziti metod. Takhle se to dela ve Scale:
    scala> def max(x: Int, y: Int): Int = if (x < y) y else x
    max: (Int,Int)Int
    
    Definice metody zacina 'def'. Nazev metody 'max' je nasledovan vyctem parametru v zavorkach oddelenymi carkami. Kazdy parametr musi mit definovan typ (type inference zde nefunguje). V tomto pripade ma metoda 'max' dva parametry 'x' a 'y' s typem 'Int'.

    Dale nasleduje navratova hodnota ':Int'. U metod funguje odvozovani typu, takze ve vetsine pripadu to vynechat. Zde lze jednoduse odvodit ze navratovy typ bude vzdy 'Int'. Pokud napiseme metodu bez navratoveho typu, bude to fungovat:

    scala> def max2(x: Int, y: Int) = if (x < y) y else x
    max2: (Int,Int)Int
    
    Nazev metodu, parametry a navratovy typ tvori 'signature' metody (pozn.prek: tohle bych asi neprekladal). Zbytek je telo metody. V tomto pripade telo obsahuje jen jeden vyraz, takze neni nutno pouzit zavorky. Tuto metodu lze ale napsat take se zavorkami:
    scala> def max3(x: Int, y: Int) = { if (x < y) y else x }
    max3: (Int,Int)Int
    
    scala> max(3, 5)
    unnamed6: Int = 5
    
    Lze take definovat metodu bez parametru:
    scala> def greet() = println("Hello, world!")
    greet: ()Unit
    
    //zavolani:
    scala> greet()
    Hello, world!
    unnamed7: Unit = ()
    
    //nebo bez zavorek:
    scala> greet
    Hello, world!
    unnamed8: Unit = ()
    
    Vsimnete si ze greet nema zadnou navratovou hodnotu, ale interpret stejne pise 'Unit = ()'.

    Metody bez parametru je mozne volat s nebo bez zavorek. Konvence je pouzivat zavorky, pouze u get metod ktere pouze vraci promnenou, zavorky nepouzivat.        

    Hodnocení: 100 %

            špatné • dobré        

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

    Komentáře

    Vložit další komentář

    =^..^= AmigaPower® avatar 7.8.2009 21:59 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Prosim nepiste do diskuze veci, ktere se primo netykaji Scaly (minule bylo na 250 irelevantnich prispevku).
    ...dal bych si pivo...
    7.8.2009 22:27 marallo | skóre: 4 | blog: marallo | Dubnica nad Vahom
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky

    to bol dneska zase hic, čo?

    diakritiku neuznavam, a na chyby kaslem...
    =^..^= AmigaPower® avatar 7.8.2009 22:39 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    35 venku a 30 v bytě, strašný...
    kotyz avatar 7.8.2009 22:43 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    U nas o 5 stupnu min, ale stejne des. Pivo uz neni. Ale zejtra se nakupuje, tak zase chvili bude. Aspon sem dopil tu sangrii ... ;-)
    Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
    Darth Phantom avatar 7.8.2009 23:03 Darth Phantom | skóre: 18 | blog: Kelvin_Fitnick | Doma
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Jojo, pivíčko bodne. Jinak promněná se píše proměnná. Dam si asi jedno na dobrou noc.
    Tahle patička nemá hlavu ani patu
    Grunt avatar 7.8.2009 22:49 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Pche. Co v Dubnici. Si to někdy zkuste tady vy chytrolíni.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    7.8.2009 23:04 Trained.Monkey | skóre: 12 | blog: monkey
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Super, clovek se tady dela s prekladem a pak najde komentare od nejakyho frajirka. Jako specialni podekovani utopim par toulavych kocek co me porad otravujou na zahrade. Dobrou noc.
    kotyz avatar 7.8.2009 23:09 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Snaz se nas pochopit, vubec nevime vo co de, ale chcem si pokydat v diskuzi. A tech blogu tu zas tolik neni. A jak to jednou zacne neda se to zastavit. Chceme bulvar, chceme flejmovat ... ;-)
    Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
    7.8.2009 23:46 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Oproti diskuzi, jestli je java oop nebo není (či co to bylo, vůbec neumím programovat, jen jsem se koukl), to je pořád zlaté :-).
    Baník pyčo!
    =^..^= AmigaPower® avatar 7.8.2009 23:52 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Tak drsnej nejseš, jen frustrovanej hajzlík, kterýmu někdo zbořil bábovičku. :-D
    7.8.2009 23:42 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Nikdy bych si nezvykl na tu divnou syntax bez složených závorek :-) Ale tento jazyk asi stejně nikoho neohromil, já o tom slyším poprvé.
    xkucf03 avatar 7.8.2009 23:44 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    1. Trochu mi to připomíná BeanShell
    2. Dělám pokroky, už jsem si tu Scalu nainstaloval :-)
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    8.8.2009 00:04 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Typová inference je skutečně odvozování typů a signatura je skutečně signatura, pokud vím, normálně se tyhle výrazy používají.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    lukve avatar 8.8.2009 01:05 lukve | skóre: 30 | blog: lukolve | Slovensko
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    čo dodať podľa toho čo je v članku sa mi scala začína páčiť. vyzera to dosť jednoducho zatial (myslim oproti jave).. mne to pripada ako jazyk bežiaci nad javou a ju vyuzivajuci urceny pre tych co nemaju radi javu alebo jej neprisli na chut..

    tesim sa na pokracovanie :) lukas
    linux user more than 20y
    9.8.2009 20:35 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Má signatura nějaký další tajemný význam, než že je to deklarace?
    9.8.2009 20:54 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    U jazyků, které deklaraci a definici nerozlišují…
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    8.8.2009 01:36 Tomáš Heger (geckon) | skóre: 62 | Praha/Valašsko
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Autorovo svoleni jsem zatim neresil.
    A kdy tak hodláš učinit, když jsi to "nestihl" před vydáním překladu? :)
    8.8.2009 04:42 ____ | skóre: 15 | blog: _
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    Chybějící diakritika v článku... Vždyť se to pomalu nedá číst. Alespoň kdyby to autor prohnal skrz nějaký přitroublý automat...
    8.8.2009 13:15 pozortucnak | skóre: 21 | blog: vecny_windowsar
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky
    xsubway avatar 11.8.2009 13:16 xsubway | skóre: 13 | blog: litera_scripta_manet
    Rozbalit Rozbalit vše Re: Scala - 02 prvni kroky

    Ze začátku jsem byl nedůvěřivý, ale musím přiznat, že scala mi přijde (subjektivní názor) sympatyčtější než například groovy. Pro psani krátkých scriptů je celkem vhodná ...

    V nějakém dalším díle čekám, že bude příklad zdrojáku, jeho překlad a spuštění i s argumenty.

    ps: pro emacsomily: Scala, Emacs and Yasnippet ;-)

    Založit nové vlákno • Nahoru

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