Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
Byla vytvořena větev gcc-in-cxx, kde se bude sada kompilátorů GCC postupně přepisovat z čistého C do C++. Cílem je zjednodušit kód GCC a usnadnit jeho budoucí rozvoj.
Tiskni
Sdílej:
vim ~/.emacs
A víme, že máme skutečně
turingovsky úplný jazyk bez podmíněného skoku?
Narážíte na Churchovu tezi?
Že jsou TM a while-programy ekvivalentní dokázáno je. Že je každá efektivně vyčíslitelná funkce implementovatelná TM a obráceně nikoliv, protože se jaksi nepodařilo definovat pojem efektivně vyčíslitelný.
Že by každá posloupnost instrukcí byla nutně programem?Já jsem napsal, že každý program je (neprázdnou) posloupností instrukcí, ne že každá posloupnost instrukcí je programem. Navíc když HTML nemá žádnou instrukci, bylo by mi v této debatě tvrzení o každé (neprázdné) posloupnosti instrukcí poněkud na houby.
btw. neplette sem porad ty instrukce... rada programovacich jazyku (i programatoru) se bez nich s prehledem obejde....Programovací jazyk a programátor možná. Ale neobjeví se tam ty instrukce v okamžiku, kdy je ten program prováděn? Jestli se nepletu, tak deklarativní programování znamená, že programátor popíše vlastnosti výsledku a interpret toho programu pak najde postup, jak se k tomu výsledku dobrat. A ten postup je zase posloupnost instrukcí. Z tohoto úhlu pohledu pak HTML je programem, protože prohlížeč převede zdrojový kód (spolu se specifikací a případně doplněním specifikace vývojáři prohlížeče) převede na instrukce, jak stránku zobrazit. Jenže není pak programem už úplně všechno?
Program je posloupnost instrukcí, které má provádět nějaký stroj (nebo třeba člověk), program bez instrukcí nelze sestrojit.prominte, ale ta definice fakt neni stastna... co treba funckionalni programovani, kde je program kompozici funkci, co treba logicke programovani, kde je program mnozinou faktu... to nemluvim ani o onom nestastnem turingove stroji, kde program je mnozina stavu, prechodova funkce a takove ty nesmysly...
prechodova funkce je instrukcevs.
Program je posloupnost instrukcínechci to vytrhavat z kontextu, ale prechodovou funkci u TS muzete chapat jako program, ale porad to bude _funkce_ a ne posloupnost instrukci...
Pokud tedy pojem programování rozšířím z imperativního programování i na deklarativní programování,aha...
Jenomže s takovým rozšířením je program cokoliv, a můžu prohlásit, že kompilátor céčka napíšu třeba ve stromu před barákem. Jenom musím nadefinovat vhodný programovací jazyk, který stromy transformuje na kompilátory.Pokud tedy pojem programování rozšířím z imperativního programování i na deklarativní programování,aha...
zeleny-list <-> mov ax,0 hnedy-list <-> inc ax list-s-housenkou <-> dec ax jabko-s-cervem <-> skoc na jinou vetev jabko-bez-cerva <-> pokracuj dalsim listem
vim ~/.emacs
( LISP - stále nová prvenství již po padesát let.)
...ale je to jazyk, který přivádí lidi do blázince. (Proto ho mám rád.)Toužíš po kamarádech?
Je tam řada věcí, které mají programátorovi usnadnit život, ale něco jim chybí (například: C++ má destruktory a virtuální funkce, ale nemá garbage collector; C++ může vytvářet objekty staticky nebo dynamicky, ale v destruktoru nejde zjistit, který je který; zjišťování typů objektů za běhu je strašně omezené; vícenásobná dědičnost je podporována, ale kdo ji použije, do smrti veselý nebude).Jde to poznat z pointeru
programátor ho musí umět a některé rysy C++ se učí setsakra blběNeni pravda, jenom se u C++ clovek musi ucit princip a ne dusledky. Ale uznavam ze predavani jmenem nesedi kazdemu.
ale nemá garbage collectorNa co taky? Garbage collector je pro jazyk typu C++ naprosta zbytecnost. Na 99,9% pripadu mi staci chytry pointer.
templaty, přetěžování operátorůFatalni dusledky si spis dokazu predstavit u vyjimek a virtualnich funkci. Pomoci template se neda nic zkazit, maximalne zneprehlednit kod a pretezovani operatoru??? K tomu strileni do nohy:
"C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg." - Bjarne Stroustrup
Jde o vlastnosti jazyka jako je (násobná) dědičnost, virtuální metody, které čistě technicky musí někde držet tabulku metod za běhu (paměťová náročnost za běhu), a na druhou stranu snaha o early binding ostatních metod, které zase žerou čas a paměť při překladu.A jak udelas ekvivalentni funkcionalitu v Cecku ty chytraku? Bez tabulky? To bych rad vedel jak. Delka prekladu nikoho netrapi (ano normalni relativne male projekty v C++ se mi prekladaji desitky minut, no a?).
a pokud umite programovat v C++ i v C, tak program z C bude vetsinou i rychlejsiTak to chci videt.
Bavíme se o jazyku nebo o STL ?STL je popsané v ISO C++, takže je součástí jazyka.
Takže fukce void f() v C++ bude pomalejší než funkce void f(void) v C? I když vynechám výjimky (tj jediný důvod proč je binárka větší a možná minimálně pomalejší) ?Když napíšu funkci v C tak, aby zárověň byla i funkcí v C++, tak budou stejně rychlé. V tom případě to C++ ale nepotřebuji, když ho nepoužívám, že.
A teď příklad z praxe. Řekněte mi, jak v čistém C uděléte třeba objekt řetězce s implicitním sdílením dat alá QString z Qt. Možná se vám to podaří, ale jak se s tím bude pracovat ? Na tyto věci je C++ prostě jak dělané a rychlostní penalizace se vám budou dokazovat jen těžce.Samozřejmě, že toto umím naprogramovat. Zadarmo Vám to ale psát nebudu :-P
Ono je to bohužel tak, že složité makrové konstrukce se do C++ dají přepsat jen srovnatelně spletitými templaty, opravdová generika nenahradíte ani jedním.Cyklus napisu pomoci sablon na par radku. U maker to musi byt pres nekolik souboru. A tohle plati pro vetsinu konstrukci.
Co treba takova otevrena struktura, hmm?Co to je? Mozna to znam pod jinym nazvem, ale otevrena struktura mi opravdu nic nerika.
Jinak tim, co jsem psal jsem myslel to, ze program napsany obvyklymi zpusoby v C++ nebude rychlejsi nez ten samy napsany v C.Pak to ale neni argument pro C ale pro C++.
Co to je? Mozna to znam pod jinym nazvem, ale otevrena struktura mi opravdu nic nerika.Otevřená struktura obsahuje otevřené pole.
struct A { char a[]; };Dá se to řešit i jinak, navíc nevím jestli je toto v ISO standardu.
struct A { ... char a[1]; };Tímto jsem získal to samé v bledě modrém. Tento postup dokonce používám, ale otázka je, k čemu se toto normálnímu programátorovi hodí ? Vždyť tuto techniku využije někdo, kdo opravdu ví co dělá a čeho tím dosáhne. Popravdě ani ten předchozí příklad z C [] jsem snad nikde neviděl (a to do zdrojáků čumím pořád).
struct { t* x; };
pripadne niceho struct { t x[1]; };
(semanticky v podstate identicka zalezitost) jak napsal nekdo o par prispevku vys.
Nevim jestli tohle bylo v ANSI C ze ktereho aktualni norma C++ vychazi (mam tady pouze ISO standard), pokud bylo, tak jde o opravdu podivnou zalezitost.
akorat na vas prekladac bude hazet warningy, ze lezete za konec poleCo pouzivate za kompilator? To by se mi docela hodilo.
toto zvetsi samotnou strukturuAno, ale tady se bavíme o přetypování, nebo vytvoření struktury / třídy pomocí malloc(). Jen v málo případech budu vytvářet takovou strukturu na zásobníku, a to se opět dá udělat například pomocí šablony a dědičosti:
// Použít spolu s druhým příkladem template<int N> struct TempA : public A { private: unsigned char _storage[N - 1]; };
akorat na vas prekladac bude hazet warningyTo se mi nikdy nestalo, navíc v C++ přece můžeme napsat getter:
struct A { ... unsigned char _data[1]; inline unsigned char* data() { return _data; } };Velikost můžu vypočítat jako
sizeof(A)-sizeof(unsigned char)
popřípadě si na to napsat inline statickou funkci. Problém vyřešen.
Moje řešení nebude ani pomalejší a ani nebude zabírat víc paměti. Je ekvivalentní tomu z C. Protože C++ tuto možnost nativně neumožňuje, tak jsem si pomohl korektním způsobem a docílil stejné funkcionality.
Jen tak pro zajímavost:)
Tuto techniku co jsem napsal používá například Qt toolkit pro primitivní třídy jako QString, QVector, atd. Všechny jsou implicitně sdílené. Abych mohl porovnat implementaci tak jsem se teď podíval na zdrojáky glib, kde je string definovaný takto:
struct _GString { gchar *str; gsize len; gsize allocated_len; };Z toho vyplívá, že Qt je z hlediska řetězců efektivnější i ve spotřebě paměti i rychlosti (v glib se musí udělat 2x alokace paměti pro vytvoření řetězce). Takže více záleží opravdu na zkušenostech a přemýšlení programátora než na tom, jestli se to píše v C nebo C++. Pokud nedělám knihovnu typu libjpeg nebo dbus, je pro mě C++ jasná volba.
STL je popsané v ISO C++, takže je součástí jazyka.Ale když mi nevyhovuje tak ho snad používat nemusím nebo můžu používat jinou knihovnu, takže toto není argument. To je jako bych napsal, že jazyk C je pomalý, protože knihova XYZ je pomalá nebo špatně napsaná.
Když napíšu funkci v C tak, aby zárověň byla i funkcí v C++, tak budou stejně rychlé. V tom případě to C++ ale nepotřebuji, když ho nepoužívám, že.Jenže ty C++ funkce nejsou v ničem jiné než ty v C. To, že funkce třídy skrývají argument 'this' je snad každému jasné, tak v čem se liší?
Samozřejmě, že toto umím naprogramovat. Zadarmo Vám to ale psát nebudu :-PAle šlo mi o to, jak se vám s tím bude pracovat ? ... Jediné, proč má podle mě jazyk C smysl jsou knihovny typu libpng atd, víme proč... Ale v jiných oblastech jako třeba vývoj GUI aplikace je použítí C šílenost. Všechny ty konstrukce v Gtk alá GObject jsou jen náhražky, které jsou v C++ a dalších jazycích naprosto triviální a běžné (dědičnost).
ifconfig
je v podstatě v pořádku", a které ani sebenázornější argumenty nepřesvědčí o opaku. Jde hlavně o to, aby se tahle nebezpečná teze nevtloukala hned od začátku do hlavy dalším a dalším generacím těch, kdo se to teprve učí. Konzervativci, kteří kvůli svým návykům raději setrvávají u (již devět a půl roku) nefunkčního nástroje, než by věnovali pár minut seznámení se s novými, holt asi budou muset "vymřít".
Většinu té knihy jsem četl (váš příspěvek jsem četl celý).
Spousta lidí používá c++ úplně nesmyslně, což dělá z kódu guláš. To je podle mě reálný problém.
To je IMHO pravda pro každý dostatečně rozšířený jazyk. Ale nevidím to jako problém jazyka, ale problém toho, že se programováním zabývá spousta neumětelů (jako ostatně každou činností, která vypadá trochu lukrativně, a kde poptávka převyšuje nabídku dostatečně kvalifikovaných sil). Kdybych uvažoval jako vy, musel bych dojít k závěru, že počítače jako takové jsou špatné, protože je spousta lidí používá naprosto nesmyslným způsobem.
Pro benchmarky LLVM stačí googlit. Třeba http://lucille.atso-net.jp/blog/?p=430To není zrovna reprezentativní benchmark – je to v podstatě jedna těsná floating-pointová smyčka. Prakticky pro každý kompilátor najdete příklad kódu, který je efektivnější než u konkurence
Přímo na webu LLVM jsou "Nightly Test Results" na adrese http://llvm.org/nightlytest/ Ty ale nejsou moc přehledné.No, hlavně v nich není vůbec nic o rychlosti výsledného kódu, jsou to testy korektnosti překladače.