Apple představil (YouTube) telefony iPhone 17 Pro a iPhone 17 Pro Max, iPhone 17 a iPhone Air, sluchátka AirPods Pro 3 a hodinky Watch Series 11, Watch SE 3 a Watch Ultra 3.
Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.6.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze již instalovat také ze Snapcraftu a Flathubu.
Polské vývojářské studio CD Projekt Red publikovalo na Printables.com 3D modely z počítačové hry Cyberpunk 2077.
Organizátoři konference LinuxDays 2025 vydali program a zároveň otevřeli registrace. Akce se uskuteční 4. a 5. října na FIT ČVUT v pražských Dejvicích, kde vás čekají přednášky, workshopy, stánky a spousta šikovných lidí. Vstup na akci je zdarma.
Uživatelé komunikátoru Signal si mohou svá data přímo v Signalu bezpečně zálohovat a v případě rozbití nebo ztráty telefonu následně na novém telefonu obnovit. Zálohování posledních 45 dnů je zdarma. Nad 45 dnů je zpoplatněno částkou 1,99 dolaru měsíčně.
Server Groklaw, zaměřený na kauzy jako právní spory SCO týkající se Linuxu, skončil před 12 lety, resp. doména stále existuje, ale web obsahuje spam propagující hazardní hry. LWN.net proto v úvodníku připomíná důležitost zachovávání komunitních zdrojů a upozorňuje, že Internet Archive je také jen jeden.
Jakub Vrána vydal Adminer ve verzi 5.4.0: "Delší dobu se v Admineru neobjevila žádná závažná chyba, tak jsem nemusel vydávat novou verzi, až počet změn hodně nabobtnal."
V Německu slavnostně uvedli do provozu (en) nejrychlejší počítač v Evropě. Superpočítač Jupiter se nachází ve výzkumném ústavu v Jülichu na západě země, podle německého kancléře Friedricha Merze otevírá nové možnosti pro trénování modelů umělé inteligence (AI) i pro vědecké simulace. Superpočítač Jupiter je nejrychlejší v Evropě a čtvrtý nejrychlejší na světě (TOP500). „Chceme, aby se z Německa stal národ umělé inteligence,“ uvedl na
… více »V Berlíně probíhá konference vývojářů a uživatelů desktopového prostředí KDE Plasma Akademy 2025. Při té příležitosti byla oznámena alfa verze nové linuxové distribuce KDE Linux.
Byl vydán Debian 13.1, tj. první opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.12, tj. dvanáctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Není tedy problém na začátku udělat datovou třídu, kde jsou datové proměnné veřejné a pak později v případě potřeby udělat pro některou proměnnou explicitně getter/setter aniž by se nějak změnilo API.Na úrovni zdrojáku ano, na úrovni IL kódu ne. C# má automaticky implementované vlastnosti, takže stačí napsat
public Typ Vlastnost { get; set; }a kompilátor automaticky vytvoří privátní proměnnou a implementuje getter i setter.
Není tedy problémJe to problém z hlediska binární kompatibility.
Dúfam, že dobu primitívnych Java fazuliek, kde trieda bola len množina premenných pristupovaných triviálnymi gettermi a settermi je už za nami.Obávám se, že doufáte marně. Vždyť JPA, různé JAX-* a různé další moderní technologie jsou postavené právě na těch strukturách nazývaných JavaBeany. A vůbec celá tří- a vícevrstvá architektura nebo SOA vedou v nejjednodušším případě právě k takovýmto řešením.
Ale jsem opravdu jediný, kdo Javu ze srdce nesnáší? Je to obrovský moloch, kód v ní napsaný je nevzhledný, nepřehledný a zbytečně obsáhlý. Počítač je dokonalý nástroj, má obrovský výpočetní výkon. A Java a software v ní napsaný využívá jeho prostředky s takovou účinností, jaké dosahoval snad jen parní stroj. Kód je možná rychleji napsaný (což jistě občas potřeba je), ale v dlouhodobém hledisku se vyplatí udělat to "pořádně". A ta její blbuvzdornost je taky k vzteku. Abych použil další nevhodné přirovnání: sekera se taky neprodává tupá, aby si její uživatel neusekl prsty...
... využívá jeho prostředky s takovou účinností, jaké dosahoval snad jen parní stroj.Vážně? Tak to je java mnohem lepší, než jsem si o ní myslel...
Je to obrovský moloch, kód v ní napsaný je nevzhledný, nepřehledný a zbytečně obsáhlý. Počítač je dokonalý nástroj, má obrovský výpočetní výkon. A Java a software v ní napsaný využívá jeho prostředky s takovou účinností, jaké dosahoval snad jen parní stroj.BS.
Tak abych byl přesnější - interpretovaný jazyk už z principu bude vždycky pomalejší než strojový kód. Jde jen o to, o kolik bude pomalejší. Možná nebudete souhlasit s tím, že Java je interpretovaná. V jejím případě to asi není úplně přesný termín, ale v podstatě to tak je. Možná se nejdřív překládá do bytecode, ale nakonec to dopadne stejně.
Tady nejde o to, jestli jsou vyšší jazyky pomalejší nebo ne, jasné že když napíšu něco v assembleru (a dám si s tím dost práce), bude to rychlejší než co vyplodí gcc ze zdrojáku v C. Tady jde o to, že stejný program v C a Jave bude vždycky o něco pomalejší právě díky tomuto rysu Javy (té interpretaci, co vlastně není interpretace. Nenašel jsem žádný vhodnější výraz)
kontrola toho bajtkodu, coz neni moc jednoduche (treba konstrukce grafu dostupnosti ma blbou slozitost)Od toho přece překladače (od verze 6) generují StackMapy. A budoucí JVMka (snad od verze 8?) budou kód bez nich už odmítat, mám pocit.
...interpretovaný jazyk už z principu bude vždycky pomalejší než strojový kód.Staticky kompilovaný jazyk nikdy neurobí escape analysis, on stack replacement ani runtime dead code elimination, na rozdiel od virtuálneho stroja.
Netušil jsem, že dělá i do Javy.Ano, dělá. Je totiž jeho hlavní pracovní náplní.
Pavel Tišnovský má skvělé články a opravdu velký rozhled v počítačových technologiích (viz jeho profil na rootu). Netušil jsem, že dělá i do Javy.http://cz.linkedin.com/in/paveltisnovsky
Quality Assurance Engineer, OpenJDK team.
Python - ten zase par veci neumi a jako dynamicky jazyk ma o dost jinou oblast pouziti ...)A já myslel, že jsou programovací jazyky ekvivalentní.
Kolikrát může singleton docela pomoci, zvlášť pokud se jedná o objekt starající se o něco, co je mimo samotnou aplikaci a existuje to jen v jednom exempláři.Takový kód pak člověk nemůže normálně otestovat.
Takový kód pak člověk nemůže normálně otestovat.Okolnosti bývají různé.
Napadají mě jen dva případy, kdy použití singletonu může být užitečné – správce paměti a logování.Napadají tě z fleku dva, to znamená, že je velká šance, že se v praxi najde takových případů docela dost.
Spousta lidí si to neuvědomuje, ale jsou to jen zakuklené globální proměnné.V podstatě. Až na to, že je jejich použití kousek hladčí v tom, že inicializaci lze provést kdykoli a odpadne testování, jestli je globální proměnná inicializována nebo ne.
Už jsem se setkal s takovými jedinci, kteří brojili proti globálním proměnným a vyzdvihovali singleton do nebes.Tak ono je docela dobré si na řešení okrajových případů vybrat pokud možno jeden z těch způsobů.
Tak se teda - kdyz je ten svatek - omlouvam, ze jsem ti sahl na oblibeny jazykNeomlouvej se, to je plytké a nezajímavé. Mně právě zajímají ty faktické rozdíly :).
Ale kdyz uz jsme v tehle diskusi zacali tak napriklad se tezko tvori _spravne_ singleton,Nepřijde mi, že by se tvořil těžko, stačí vcelku triviální funkce new. Navíc jde vyřešit v nadřazené třídě, takže všechny odvozené od singletonu jsou singletony. Dělal jsem to. Tedy ne, že neumí :).
privatni metody jsou AFAIK (mozna se to zmenilo?) reseny pres "magicke prejmenovani".Žádné magické přesměrování, prostě jmenná konvence se dvěma podtržítkama. Co je schováno za tím, nemusí programátora až tolik zajímat. Někomu může použití dvojtého podtržítka připadat zvláštní, ale není pravda, že se to neumí.
Python je v tomto ohledu hodne dynamicky jazyk, ale neni zase tak odlisne od tvorby getteru a setteru, ktere nekdo nazval boilerplate code.Já nemám nic proti tomu, když se člověku některé vlastnosti Pythonu nelíbí. Taky bych nějaké své neoblíbené našel. Ale pokud někdo tvrdí, že Python něco neumí, stálo by za to říci co. To platí o každém nástroji, bez ohledu na to, jestli je můj oblíbený nebo neoblíbený.
Ano singleton lze vytvorit tak, ze se predeklaruje funkce __new__ ale to vubec neni jednoducha zalezitostMně osobně to připadá naprosto triviální.
Btw bych chtel tu vasi implementaci skutecne videt, jestli tam nenastanou problemy s vicenasobnym volanim init napriklad (dost casty problem, kdyz se to z netu "opise" bez premysleniNo, zaprvé v Pythonu k vytvoření singletonu vůbec není nutné předefinovávat __new__, viz například zde. A i kdybys to chtěl řešit předefinováním __new__, tak je v dokumentaci přesně napsáno, jak __new__ funguje. Ten popis má pár řádků a je velice srozumitelný. Opakování __new__ se dá rovněž triviálně zabránit. Pokud ti řešení __new__ a __init__ přijde složité, doporučuju první postup. Pokud ti i ten přijde složitý, nemůžeš se považovat za zkušeného Pythoního programátora, a budeš mít mnohem větší problémy s jinými věcmi.
Je to obrovský moloch, kód v ní napsaný je nevzhledný, nepřehledný a zbytečně obsáhlý.Kód je přesně takový, jaký napíšeš.
A ta její blbuvzdornost je taky k vzteku.Já třeba taky Javu nerad, můj oblíbený jazyk je Common Lisp, ale pro psaní jistého typu aplikací asi zatím lepší jazyk neexistuje. Ano, není nic, co by skupina lisperů-superhrdinů nezvládla (přece jenom, debugovali kód a opravili kód - za běhu - běžící 160 miliónů kilometrů od Země na hardwaru za 100 miliónů dolarů
průměrný programátor na ně nemáIMO je to jen o zvyku.
Pozor: mluvím o zvládnutí jazyka na profesionální úrovni, se všemi jeho vychytávkami, jež jsou pro psaní efektivních a robustních velkých aplikací naprosto nezbytné.Co konkrétně máte na mysli? Co konkrétně by mělo být težké? Pokud se bavíme o praktickém používání, tak si člověk vystačí se standardním Haskellem a pár jednoduchými rozšířeními, co má Hugs i GHC. Stejně tak člověk nemusí používat monad transformers (v GHC je nepoužívají) nebo arrows nebo skládání funkcí nebo doplňte si sám, když si myslí, že je to nepřehledné.
IMHO zvládnutí Haskellu na profesionální úrovni vyžaduje na programátorovi daleko vyšší schopnosti abstrakce než je běžné u mainstreamových imperativních jazyků vč. Javy. Není to jen o schopnosti plynně rozumět a efektivně kombinovat standardní typové třídy, ale už samotná implementace výpočtu definičním popisem výsledku místo mechanického zápisu kroků algoritmu vyžaduje hodně nadprůměrné IQ.
Bez kompozice funkcí, která je základním stavebním kamenem funkcionálních jazyků Haskell nevyjímaje, byste nic kromě trivialit nenapsal.Mám na mysli operátor skládání funkcí, a ten v řadě funkcionálních jazyků není – například v OCamlu a F# není, neboť value restriction značně snižuje jeho užitečnost.
Stavovým monádám se v praktických aplikacích také málo kdy vyhnete a I/O už vůbec ne.Standardní monády jsou jednoduché a užitečné. Nestandardní monády typu obrácená stavová nebo líná stavová už jsou IMO těžké, protože je nepoužívám.
Analogicky ke kompozicím se dostanete do situace, kdy budete potřebovat složit monády z rozdílných tříd a ty transformery byste si stejně musel napsat.Ty monády si mohu napsat přímo a nemusím je skládat – jak už jsem psal výše v GHC to takto dělají nebo alespoň dělali. V F# je prakticky nutnost udělat si nové workflow, protože transformery tam jsou kvůli slabému typovému systému dost těžkopádné (a F# 3.0 to nezlepší).
samotná implementace výpočtu definičním popisem výsledku místo mechanického zápisu kroků algoritmu vyžaduje hodně nadprůměrné IQProč? Naopak si myslím, že použít nějaký EDSL a popisovat problém jazykem, který mu je bližší, je jednodušší.
IMHO zvládnutí Haskellu na profesionální úrovni vyžaduje na programátorovi daleko vyšší schopnosti abstrakce než je běžnéNení hlavní překážkou jen nezvyk?
Tiskni
Sdílej: