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.
Myslím, že se držíš příliš při zemi a zbytečně se svazuješ vymýšlením syntaxe pro popis. Takováhle věc nebude bez pořádného grafického editoru použitelná tak jako tak.No, napsal jsem to tak, jak bych k tomu pristoupil ja. Myslim, ze pouzit Emacs je schudnejsi nez psat si cele vlastni IDE (existuje takovy podobny pokus pro Clojure, ale ten ma jine cile nez ja). Ale mozna se pletu, mozna to nekdo udela v tom hnusnem Eclipse. Jinak samozrejme nejakou syntax jsem pro ilustraci zvolit musel.
Co si slibuješ od "dotazovacího jazyka v rámci jazyka"?Jde o to, ze bych rad nad daty v pameti pouzival stejne konstrukty, jako nad databazi, a mozna dokonce eliminoval tim potrebu mit treba embedded aplikacni databaze a tak. Druhy duvod je automaticka volba datovych struktur, ktera uz z principu vyzaduje vyssi uroven abstrakce (neni snadne toto delat na nespravne urovni abstrakce, kterou jsou v soucasnosti pouzivane slozene datove typy). Vice (i kdyz asi ne o moc) o tom jeste napisu.
Jde o to, ze bych rad nad daty v pameti pouzival stejne konstrukty, jako nad databazi, [...]Tedy něco jako je LINQ v C# ?
Pokud narazis na to, ze ten navrhovany jazyk pouziva Lispovou syntaxi, pak je to trefa do cernehoNarazel jsem na to, ze zavedeni takove funkcionality v LISPu neni problem, kdezto v C# kvuli LINQu zavadeli treba "var", coz mi u jazyku tohoto typu prijde jako zverstvo.
jak by ta makra interagovala s temi anotacemi. Je to jeden z obtiznych problemuMakra s anotacemi mohou pracovat bez problemu. Z opacne strany je to horsi. Uzivatel by musel pracovat s expandovanymi makry, coz by bylo na ukor citelnosti a srozumitelnosti.
Narazel jsem na to, ze zavedeni takove funkcionality v LISPu neni problem, kdezto v C# kvuli LINQu zavadeli treba "var", coz mi u jazyku tohoto typu prijde jako zverstvo.Uprimne, var mi az tak nevadi, zverstvo by bylo spis tam ten typ muset psat.
Z opacne strany je to horsi. Uzivatel by musel pracovat s expandovanymi makry, coz by bylo na ukor citelnosti a srozumitelnosti.Ano, to je ten problem. Jak anotace relevantni k expandovanemu makru prednest zpet uzivateli? Leda, ze by to makro definovalo nejaky mechanismus, jakym ty anotace slucovat nebo transformovat. Ovsem to by byl zase problem, protoze pokud muzou byt anotace zcela obecne, pak by musely mit take moznost ten mechanismus ovlivnit. Chce to proste vyzkouset ruzne bezne pripady a na zaklade toho analyzovat, jak na to.
Jak anotace relevantni k expandovanemu makru prednest zpet uzivateli? Leda, ze by to makro definovalo nejaky mechanismus, jakym ty anotace slucovat nebo transformovatTohle by mozna slo resit u hygienickych maker. Anotace by byly navazany u pravidel a tak by se resila komunikace makro <-> expandovane makro.
Uprimne, var mi az tak nevadi, zverstvo by bylo spis tam ten typ muset psat.A co prosakování abstrakce? Můžu chtít použít obecnější typ.
(defun add (a^(!+-Type:int) b^(!+-Type:int)) (+ a b))Imho je toto prehladnejsie
function add (int a, int b) { return a + b; }Next-gen jazyk sa musi hlavne dobre citat.
(defun add (a^ b^) (+ a b))Samozrejme, muze se ti nelibit Lispovy zapis, ale ten ma prave tu vyhodu, ze lze tu anotaci umistit k libovolnemu uzlu syntaktickeho stromu (a konzistentne - tudiz je snadne napsat pravidla, ktera umozni tomu IDE to schovat). Sice pises, ze se to musi hlavne dobre cist, ale v tomto smeru jsme uz myslim narazili na limit. Nejde provest dalsi prulom pokud se nejprve neslevi nekde jinde, to je povaha prulomovych technologii.
Stejně jako já tu taky nepíšu o tom co jsem nakonstruoval ale bavím se o CADu...Zkus někdy napsat. Když k tom přidáš fotky, myslím že jednak zlepšíš názor na vlastní osobu a jednak tím ukážeš něco zajímavého.
Vzdyt se staci podivat na jeho stranky..To je něco trochu jiného, než formou článku nějak popsat zajímavý projekt. Programátoři to dělají každou chvíli, tak nevím, proč by to nemohl udělat i strojař.
Jinak ja si myslim, ze jak se snazi financovat vyvoj podpurnych nastroju pro CAD, to je dobra vec.Neříkám opak.
treba v Pythonu jsem hodne casu travil praci s ruznymi adhoc datovymi strukturamiMuzes dat nejaky priklad? Osobne si nedokazu predstavit, jak by me volba dat. struktur kompilatorem pomohla, respektive jak by to realne vypadalo. Vetsinou delam v Jave a vyber datovych struktur je asi tak na 20. miste v seznamu veci, ktere mi delaji problemy.
Nechci, aby to fungovalo pro vsechny datove struktury, ale tak pro minimalne 90% beznych pripaduNedokazu si moc dobre predstavit, jak by to melo fungovat. Protoze z datove struktury se odviji algoritmy. To mi spis prijde realnejsi, aby si prekladac upravoval algoritmy ze znalosti dat a datovych struktur.
Asi jako ty SQL databaze.Toto neni moc dobry priklad. SQL ma pevne dane datove struktury a pak se na to snazi napasovat nejakou kombinaci dejme tomu 10 pevne danych algoritmu, ktere zna. K tomu se pouziva obrovska cerna magie souvisejici s odhadem, jak vypadaji data, jak ktera operace bude probihat, atd. Otazka je, jestli zkusebnim behem jdou sesbirat relevantni data.
(locally (declare (optimize (speed 3))) (defun add (a b) (+ a b)))=>
; in: DEFUN ADD ; (+ A B) ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a NUMBER, not a RATIONAL. ; The second argument is a NUMBER, not a FLOAT. ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a NUMBER, not a FLOAT. ; The second argument is a NUMBER, not a RATIONAL. ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a NUMBER, not a SINGLE-FLOAT. ; The second argument is a NUMBER, not a DOUBLE-FLOAT. ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a NUMBER, not a DOUBLE-FLOAT. ; The second argument is a NUMBER, not a SINGLE-FLOAT. ; ; note: forced to do GENERIC-+ (cost 10) ; unable to do inline float arithmetic (cost 2) because: ; The first argument is a T, not a DOUBLE-FLOAT. ; The second argument is a T, not a DOUBLE-FLOAT. ; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT ; &REST T). ; unable to do inline float arithmetic (cost 2) because: ; The first argument is a T, not a SINGLE-FLOAT. ; The second argument is a T, not a SINGLE-FLOAT. ; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT ; &REST T). ; etc.Špatné optimizace:
(locally (declare (optimize (speed 3) (debug 2))) (defun add2 (a b) (declare (fixnum a b)) (the fixnum (+ a b)))) (add2 most-positive-fixnum 1)=>
The value 4611686018427387904 is not of type FIXNUM. [Condition of type TYPE-ERROR]Bez kontrol:
(locally (declare (optimize (speed 3) (safety 0) (debug 0))) (defun add3 (a b) (declare (fixnum a b)) (the fixnum (+ a b)))) (disassemble #'add3)=> nic nekontrolující a rychlé
; disassembly for ADD3 ; 02E37316: 84042500000021 TEST AL, [#x21000000] ; no-arg-parsing entry point ; 1D: 4801FA ADD RDX, RDI ; 20: 488BE5 MOV RSP, RBP ; 23: F8 CLC ; 24: 5D POP RBP ; 25: C3 RET
the
a declare
? (hmm, to si možná udělám)
Ty hlášky jsou signal-ované noty daného typu, takže není problém je odchytávat a zpracovat - otázka je kam ty deklarace automaticky přidávat (pokud je třeba lambda v letu v casu/condu/ifu v defunu, kam má deklarace přijít?); ale to je problém principiální, který stejně budete muset řešit.
Na ukázce s těmi primitivními typy to vypadá zajímavě1 – ale co složitější struktury? Dejme tomu, že v systému budu chtít evidovat osoby a u nich jejich rodné číslo, jméno, příjmení atd. Jak teď zapíšu funkci, která má jako argument přijímat osobu (a odmítnout třeba zvíře nebo věc)?
A co ten dotazovací jazyk – fungoval by jen nad kolekcemi v paměti nebo i nad nějakým trvalým úložištěm?
[1] i když nevím, jestli bych chtěl tolik svazovat program s ukázkovými daty
Do budoucna mam v planu udelat prekladac, ktery funguje na podobne bazi, co tu navrhujes, s tim rozdilem, ze pokud udela chybnou hypotezu o datovem typu a dostane neodpovidajici data, sam to rozezna a nove prekompiluje kod.Skvele!
Ten napad s ^ a anotacemi se mi libi, asi si jej vypujcim. ;-]Do toho.
Mel by pocitac mit pravo upravovat zdrojovy kod, a jak moc?Tohle je podle me slepa cesta, obzvlast v situaci, kdy vetsinu casu clovek stravi udrzbou stareho kodu. Predstava, ze do toho kodu jeste bude hrabat pocitac, je desiva.
Spatne argumenty nebo vstupy do funkce
Interni logicke chybyVyjimky, jejichz vyvolani znamena chybu v kodu, bych normalne vubec neosetroval. Myslel jsem spis vyjimecne stavy okolniho prostredi, jako prave selhani disku nebo network timeout.
Nebo by mohlo byt mozne pustit program jen jednou, a nechat si zobrazit jen ty casti, ktere se skutecne provedly (tim by se odstranila velka cast kodu pro reseni chybovych stavu).Tohle mi uprimne receno prijde strasne fragilni, mozna ze by to vetsinou fungovalo, ale nebudu mit jistotu. Pripomina mi to programovani stylem ze neco rychle napisu, zkusim jestli to funguje, pokud ne, neco nahodne zmenim, zkusim zase atd.
Nejvic se mi libi jak resi vyjimky Go, pomoci vice navratovych hodnot.Vice navratovych hodnot je samozrejme uzitecna vlastnost. Ale trochu jina nez signaly.
Vyjimky, jejichz vyvolani znamena chybu v kodu, bych normalne vubec neosetroval. Myslel jsem spis vyjimecne stavy okolniho prostredi, jako prave selhani disku nebo network timeout.A kdyz nastane chyba pri zpracovani pozadavku, znamena to, ze se shodi cely server na neosetrenou vyjimku?
Tohle mi uprimne receno prijde strasne fragilni, mozna ze by to vetsinou fungovalo, ale nebudu mit jistotu. Pripomina mi to programovani stylem ze neco rychle napisu, zkusim jestli to funguje, pokud ne, neco nahodne zmenim, zkusim zase atd.Javisti chteji mit porad jistotu.
A kdyz nastane chyba pri zpracovani pozadavku, znamena to, ze se shodi cely server na neosetrenou vyjimku?Tady bych pouzil stejny pristup jako v Jave - tenhle typ vyjimek (v Jave RuntimeException) by programator za normalnich okolnosti neosetroval, ale mel by moznost to udelat. Takze napriklad kontejner ve kterem bezi webova sluzba by tyto vyjimky osetroval.
Ale o tom to prece je - takhle by melo programovani vypadat. Akorat tady ti kompilator da zpetnou vazbu, jestli co jsi napsal dava smysl, takze po tom, co se to vyrobi se to da prohlednout na dalsi mozne chyby.Tak v tomhle se vubec neshodneme
Ja vidim statickou analyzu jako diminishing returns.Staticka analyza je u netrivialnich projektu strasne uzitecna, hlavne pri refaktorovani.
Myslel jsem spis vyjimecne stavy okolniho prostredi, jako prave selhani disku nebo network timeout.Jinak me pripada, ze by ani nebyl problem tyto veci automaticky metodicky resit (aspon tedy v jazyce, ktery umi treba makra apod.). Potiz je v tom, ze vetsinou chceme v techto situacich informovat uzivatele, a musime mu smysluplne sdelit, v jakem stavu se program nachazi, a na jakou prekazku v praci narazil. A prave tohle prevadeni do lidske reci je na tom to pracne; protoze to zadny kompilator sam od sebe neudela (protoze nechape relevantni kontext cele situace).
Tomu pred-prekladu moc nerozumim. Mozna bys to mohl trochu rozvest. Znamena to, ze by se ten zdrojovy kod nejak permanentne poznamenal?Nevím, jestli jsem to pochopil správně, ale myslím, že se zdrojovýk kódem by se nic nedělalo, výsledek by byl analogický např. prohnáním zdrojového kódu v C preprocesorem, kde se expandují všechna makra, tedy až na to, že by se převedla všechna jména z relativcních jmenných prostorů na absolutní (podobně jako je kanonizace cesty v souborovém systíému) a otestovala, jestli jsou unikátní v globálnímu jmennému (nad)prostoru zahrbnujícím všechny použité knihovny a "netřískají se" navzájem. Takže vlastně by to bylo něco úplně jiného než expanze maker preprocesorem v C, ale výsledkem by také nejspíš byl nový sobvor, protože mít ve zdrojáku jména všecho v absolutní podobě by nejen nepohodlné, ale vypadalo to hůř než Win32 API na tripu
Na to přece stačí jmenné prostory a zásada, že každý přidává struktury jen do svých jmenných prostorů, jinak riskuje konflikt, ne?
Nepřijde mi, že by v tom byl nějaký problém – v Javě třeba běžně implementuješ cizí rozhraní nebo rozšiřuješ cizí třídy, ale svůj kód dáváš do svých balíčků.
A taky bych rozlišoval balíčky a moduly. Balíčky vytvářejí hierarchii jmenných prostorů, tříd/rozhraní a zajišťují globální jedinečnost. Modul pak může zastřešovat související funkcionalitu z různých jmenných prostorů a od různých autorů.
Já v tom tedy smysl vidím. Ten jmenný prostor má vlastně dvě části: organizaci/autora a produkt/komponentu:
cz.frantovo.…
).Už jen tohle vyžaduje minimálně dvouúrovňovou hierarchii. Jasně, šlo by sice hierarchii formálně nemít, NS by byl jen textový řetězec oficiálně bez vnitřního členění. A pak by se používala nějaká konvence – třeba oddělovat části podtržítkem. Ale pak by to museli dělat všichni stejně a konvenci dodržovat, aby ti např. IDE mohlo ukazovat hezký strom balíčků a neměl jsi to všechno nasypané na jedné hromadě.
A zvlášť, když se vymýšlí nový jazyk, tak by se to mělo udělat pořádně, mít podporu hierarchie rovnou v něm, nějakým standardním způsobem a ne to tam dodatečně dobastlovat pomocí nějaké konvence – to se hodí leda pro legacy prostředí, kde se na to v době návrhu zapomnělo a teď už to tam pořádně dodělat nejde.
Tiskni
Sdílej: