V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
Spolek vpsFree.cz vydal statistiky týkající se distribucí nasazených na serverech členů. V dlouhodobém pohledu je zřejmé, že většina uživatelů z původního CentOS přechází na Rocky Linux. Pozoruhodný je také nárůst obliby distribuce NixOS, která dnes zaujímá třetí místo po Debianu a Ubuntu.
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: