Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou
… více »Patchouli je open source implementace EMR grafického tabletu (polohovací zařízení). Projekt je hostován na GitLabu.
Český Nejvyšší soud potvrdil, že česká právní úprava plošného uchování dat o elektronické komunikaci porušuje právo Evropské unie. Pravomocným rozsudkem zamítl dovolání ministerstva průmyslu a obchodu. To se teď musí omluvit novináři Českého rozhlasu Janu Cibulkovi za zásah do práv na ochranu soukromí a osobních údajů. Ve sporu jde o povinnost provozovatelů sítí uchovávat údaje, ze kterých lze odvodit, kdo, s kým a odkud komunikoval.
Google bude vydávat zdrojové kódy Androidu pouze dvakrát ročně. Ve 2. a 4. čtvrtletí.
Bezpečnostní specialista Graham Helton z Low Orbit Security si všímá podezřelých anomálií v BGP, zaznamenaných krátce před vstupem ozbrojených sil USA na území Venezuely, které tam během bleskové speciální vojenské operace úspěšně zatkly venezuelského diktátora Madura za narkoterorismus. BGP (Border Gateway Protocol) je 'dynamický směrovací protokol, který umožňuje routerům automaticky reagovat na změny topologie počítačové sítě' a je v bezpečnostních kruzích znám jako 'notoricky nezabezpečený'.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,58 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,32 %. Procesor AMD používá 67,43 % hráčů na Linuxu.
V Las Vegas probíhá veletrh CES (Consumer Electronics Show, Wikipedie). Firmy představují své novinky. Například LEGO představilo systém LEGO SMART Play: chytré kostky SMART Brick, dlaždičky SMART Tagy a SMART minifigurky. Kostka SMART Brick dokáže rozpoznat přítomnost SMART Tagů a SMART minifigurek, které se nacházejí v její blízkosti. Ty kostku SMART Brick aktivují a určí, co má dělat.
Vládní CERT (GovCERT.CZ) upozorňuje (𝕏) na kritickou zranitelnost v jsPDF, CVE-2025-68428. Tato zranitelnost umožňuje neautentizovaným vzdáleným útočníkům číst libovolné soubory z lokálního souborového systému serveru při použití jsPDF v prostředí Node.js. Problém vzniká kvůli nedostatečné validaci vstupu u cest k souborům předávaných několika metodám jsPDF. Útočník může zneužít tuto chybu k exfiltraci citlivých
… více »V úterý 13. ledna 2025 se v pražské kanceláři SUSE v Karlíně uskuteční 5. Mobile Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a související infrastrukturu. Akci pořádá David Heidelberg.
… více »Už je 14 dní zbývá do začátku osmého ročníku komunitního setkání nejen českých a slovenských správců sítí CSNOG 2026. Registrace na akci je stále otevřená, ale termín uzávěrky se blíží. I proto organizátoři doporučují, aby se zájemci přihlásili brzy, nejlépe ještě tento týden.
… více »V poslednom čase programujem dosť vecí do školy a tak som si povedal, že je škoda to niekam nezavesiť, nech majú z toho úžitok aj ďalšie generácie. Ako prvé budú červeno-čierne stromy...
V zimnom semestri som mal predmet Algoritmy a dátové štruktúry a ako nepovinný projekt si náš tím vybral červeno-čierne stromy, ktoré sa akosi ani nevyučovali, takže to bol trošku výber mimo rámec, no nejako sme to zvládli. Ale o čo vlastne išlo? Mali sme naprogramovať danú dátovú štruktúru, ktorá mala spĺňať nasledovné:
Okrem vymazávania a krokovania sú implementované všetky veci zo zoznamu. Dokonca v kóde sa nachádza aj vymazávanie, avšak nie v použiteľnom stave. Viem, že nepoužitý kód nemá v zdrojáku čo robiť, avšak nechám ho tam, nech tam hnije. ;) Ou, skoro som zabudol - najhlavnejšou podmienkou bolo, aby sme to naprogramovali v Lazaruse, takže to bolo celkom obmedzujúce, no dalo sa - veď posúďte sami:
Keďže som autorom všetkého kódu, tak mi nerobí problém vypustiť to pod GPLv3, čiže užívajte v zdraví - balík na stiahnutie je v diskusí.
Tiskni
Sdílej:
Na druhou stranu unit crt a hlavně turbo vision - to byla věc, to se s (n)curses nedá srovnat.
). Pascalu pro me potreby chybi siroka zakladna knihoven, kterou mi muj oblibeny Python poskytuje. Je ale potreba si uvedomit rozdil mezi jazykem urcenym pro _vyuku programovani_ (tj. mysleni) a jazykem primarne urcenym pro realne pouziti v praxi.
Jasne, nemuzes si vytvorit promennou jen pro jeden blok kodu, aniz bys ten blok kodu vystrcil do procedury/funkce, ale uprimne, jak casto potrebujes neco takoveho delat?V každém for-cyklu? Ono
for (int i=0;i<length;i++) je o trochu menší prasárna než int i; for (i=0;i<length;i++), ale nevim jak se to dělá v pascalu - neviděl jsem ho od maturity.
Dost praktické to může být třeba i v definici makra, např.
#define SYSTEM_ERROR(x) { \
std::ostringstream errmsg; \
errmsg << x; \
throw system_error(errmsg.str()); \
}
(ne, dobre, tohle bylo jen zlovolne rypnuti, chapu tvuj priklad).
Na druhou stranu, proc ti prijde lepsi deklarovat a definovat ridici promennou cyklu v hlavicce cyklu, nez vyrobit si ji "na zacatku" (u vsech ostatnich deklaraci promennych)?
Je to stylově čistší v tom, že je tím jasně deklarováno, že proměnná je lokální pro daný cyklus a pokud se někde později vyskytne stejnojmenná proměnná, nemá s ní naprosto nic společného. Někdy to třeba může pomoci odhalit zapomenutou inicializaci, kterou by její nechtěná inicializace předchozím for cyklem zamaskovala.
Za sebe můžu říct, že postupem času mi začala filosofie "deklarovat až když je potřeba a jen tam, kde je potřeba" být trochu bližší než původní "všechno se nadeklaruje na začátku" a jsem docela rád, že C99 tuhle možnost z C++ převzalo.
Dále mi přijde jako naprostá blbost používat pro přiřazení := a pro porovnání = to je pro mě naprosto nelogická věc.
IMHO je to dost logické, ale nepříliš praktické. Dokonce bych řekl, že takové detaily dobře ilustrují rozdíl mezi Wirthovým a K&R přístupem: Kernighan a Ritchie ve své knize dokonce uvádějí, že když se rozhodovali, udělali si na nějakém vzorku svých programů statistiku a zjistili, že přiřazení je podstatně víc než porovnání na rovnost. Proto zvolili jednodušší symbol pro přiřazení. Naopak Wirth se podle všeho rozhodoval spíš podle logiky a přirozenosti. Takových příkladů se dá najít víc - např. nikoho, kdo se aspoň na chvíli zamyslel nad praktickou stránkou věci, by nemohlo napadnout dát logickým operátorům vyšší prioritu než porovnání; Wirth to očividně neudělal, takže se každý test, zda hodnota leží v intervalu, musí závorkovat.
.
Write/WriteLn a jejich magické "automatické" parametry), ale je jich relativně málo.
Jako jazyk "sám o sobě" není špatný, pokud se použije pro výuku neprogramátorů, ale v opačném případě je tu prbklém právě v té "kočkopsovitosti" - pro ty, co pak budou programovat v něčem jiném (což budou téměř určitě tak jako tak muset), to bude znamenat nutnost odnaučit se zbytečně mnoho věcí.
Je to jako učit se jezdit na tříkolce - je bezpečná a na první pohled má to nejlepší z obou světů, ale budoucí (moto)cyklisti se na ní nenaučí držet rovnováhu a pro automobilisty je to zas příliš podobné kolu.
V Pythone, či Jave sa nikdy nenaučím o smerníkoch, či v C++ nikdy o Lambda výrazoch (v C++0x že vraj budú).No vzhledem k tomu, že drtivá většina výuky C směrníky používá ve smyslu obyčejné reference někam, tak si troufám říct, že se o nich člověk nic moc nenaučí ani v C. BTW: Java RealTime Specification umožňuje přímý přístup k paměti
.
.
Mě osobně ta bezzávorková begin-end syntax přijde krajně nepřehledná.Naprosto jasně: begin znamená začátek, end znamená konec. Na první pohled je z toho zjevné, co to má znamenat. Závorka je jenom obrázek, jehož význam si musíš domyslet.
Begin a end jsou klasická slova, takže mi v kódu dost splývala se zbytkem a bylo to pro mě dost nepřehledné (a na odsazení nezáleželo).Od toho existují editory se zvýrazňováním syntaxe (nebo přesněji existují editory, které zvýrazňovat syntaxi neumí, i když teď mě žádný nenapadá)
Nevidím důvod, proč nyní již od začátku nezačít s nějakým objektově orientovaným jazykem
Nevidím důvod, proč začínat s objektově orientovaným jazykem
Pascal je podle mě má nejhorší syntaxi ze všech jazyků co znám
Ale většina knih i článků o algoritmizaci používá velice podobnou syntaxi.
Osobně si myslím, že pro začátečníka je důležitá jednoduchost (a logičnost) syntaxe a sémantiky.
kterych se da rict ze nemaji konkurenci nemaji s objektovym pristupem mnoho spolecneho, takove openssl, apache, vnitrek linuxu, klasicke unixove nastroje a tak dal.Vnitřek Linuxu je hodně objektově orientovaný. Jenom na to nepoužívá objektový jazyk
class Abc si zatím nevšímejte" vs. "Takhle se definuje třída, takhle se vytváří objekt, toho public static void main si zatím nevšímejte".
Packal je podle mě nejhorší odpad mezi programovacími jazyky. Kdyby nevznikl, mohlo být na školách (a možná i na světě) lépe.
Packal kombinuje nevýhody nízkoúrovňových jazyků (nemá garbage collection, negarantuje konzistentní paměťové reference, podpora pro dynamicky alokované struktury je ubohá, rozumná práce se stringy prakticky neexistuje) s nevýhodami vysokoúrovňových jazyků ((téměř) žádná přímá práce s pamětí, žádná aritmetika pointerů). K tomu přidává další (těžko klasifikovatelné) nevýhody, například nesmyslné indexování polí od 1 a hloupou volací konvenci, která (mimo jiné) předem vylučuje variadické funkce.
Packal vymyslel teoretik, který netušil, jak má jazyk vypadat, a všechno zpackal. Cokoliv je lepší. Všechny ostatní jazyky mají jakousi rozumnou ideu. Drtivá většina jejich nevýhod se dá ospravedlnit výhodami, které z toho plynou. Packal má jen samé nevýhody a na oplátku nenabízí vůbec nic.
například nesmyslné indexování polí od 1
Indexuje se od čísla, které si určí programátor, navíc se může indexovat i výčtovými typy.
Novější Pascaly, co se dnes učí na školách, si v některých věcech polepšily.
Pravda, poznámku ohledně indexování beru zpět. To jsem si spletl s jiným nepovedeným jazykem.
Nevím, které Packaly se dnes učí. Já jsem zažil FPC a GPC. Samozřejmě je pěkné mít v Packalu pointerovou aritmetiku nebo operátory typu +=. Ale není pak lepší prostě místo toho použít C?
Pokud se těmi „novějšími Packaly“ rozumí něco kolem Lazarusu nebo (už dávno mrtvého) Delphi, ani tohle není žádná výhra. O zásadních chybách v návrhu ObjectPackalu by se daly napsat celé stránky. Nemyslím si, že by se něco takového mělo učit.
Ano, myslel jsem nové Delphi případně Delphi Prism. Bohužel ty jazyky nejsou vzájemně kompatibilní.
BTW, přece jen tam s tím indexováním byl nějaký problém, ale týkal se pouze stringů. Pokud si to správně pamatuju, stringy měly maximálně 255 B a na indexu 0 byl byte s délkou stringu. Tudíž string samotný byl indexovaný od 1. Pokud vím, některé implementace byly navržené tak nesmyslně, že všechny stringy kromě konstantních se alokovaly napevno po 256 bytech bez ohledu na skutečnou délku.
V novějších Packalech se samozřejmě objevila jiná reprezentace, která už nesmyslná omezení nemá.
Zase jsem o něco chytřejší
Když už jsme u vkládání do červeno-černých stromů, tak takhle to lze udělat v jazycích, které mají pattern matching (toto je Haskell):
data Color = R | B
data RB a = E | T Color (RB a) a (RB a)
insert :: Ord a => a -> RB a -> RB a
insert x s = T B a z b
where
T _ a z b = ins s
ins E = T R E x E
ins s@(T B a y b) | x<y = balance (ins a) y b
| x>y = balance a y (ins b)
| otherwise = s
ins s@(T R a y b) | x<y = T R (ins a) y b
| x>y = T R a y (ins b)
| otherwise = s
balance :: RB a -> a -> RB a -> RB a
balance (T R a x b) y (T R c z d) = T R (T B a x b) y (T B c z d)
balance (T R (T R a x b) y c) z d = T R (T B a x b) y (T B c z d)
balance (T R a x (T R b y c)) z d = T R (T B a x b) y (T B c z d)
balance a x (T R b y (T R c z d)) = T R (T B a x b) y (T B c z d)
balance a x (T R (T R b y c) z d) = T R (T B a x b) y (T B c z d)
balance a x b = T B a x b
Kód jsem si půjčil ze stránky Red Black Trees