abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 21:55 | Zajímavý článek

Vláda v pondělí 13. července projednala Výroční zprávu o stavu otevřených dat za rok 2019. Ke stažení je na Portálu otevřených dat (pdf).

Ladislav Hagara | Komentářů: 0
včera 16:22 | Komunita

MojeFedora.cz informuje, že FESCo schválilo návrh, aby se jako výchozí editor v terminálu od Fedory 33 používalo GNU nano. Fedora doteď žádný výchozí editor pro terminál nastavený neměla a nechávala to na jednotlivých programech. Ty často používané, jako třeba git, ale ve výchozím stavu používaly editor vi, který autor návrhu nepovažuje za příliš intuitivní.

Ladislav Hagara | Komentářů: 11
včera 14:22 | Komunita

Dlouhodobá LTS podpora Debianu 8 Jessie vydaného 26. dubna 2015 skončila k 30. červnu 2020. K dispozici je placená rozšířená dlouhodobá podpora ELTS do 30. června 2022. Poslední opravné vydání Debianu 9 Stretch uvolněného 17. června 2017 bude vydáno 18. července 2020. Jeho dlouhodobá podpora je plánována do 30. června 2022. Plánujete-li ji využívat, vývojáři ocení vyplnění dotazníku ohledně této LTS podpory.

Ladislav Hagara | Komentářů: 2
včera 06:00 | Nová verze

Byla vydána nová verze 1.26.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku svém na blogu věnuje Thomas Haller.

Ladislav Hagara | Komentářů: 2
13.7. 13:00 | Zajímavý software

Laboratoře CZ.NIC zveřejnily software DNS Probe. Jeho úkolem je zachycovat DNS provoz na síťovém rozhraní (UDP i TCP), párovat DNS dotazy s příslušnými odpověďmi a exportovat konsolidované záznamy o každé jednotlivé DNS transakci, která se v síťovém provozu vyskytla.

Ladislav Hagara | Komentářů: 0
13.7. 08:00 | Nová verze

Byla vydána verze 2.2.0 svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.

Ladislav Hagara | Komentářů: 2
13.7. 01:11 | Nová verze

Správce oken IceWM (Wikipedie) byl vydán ve verzi 1.7.0. Přehled novinek, vylepšení a oprav na GitHubu.

Ladislav Hagara | Komentářů: 9
12.7. 01:22 | Komunita

Před dvěma lety se Andrew Kelley rozhodl naplno věnovat se svému koníčku, tj. vývoji open source programovacího jazyka Zig (GitHub). Opustil své dobře placené místo v OkCupid a vytvořil si účet na Patreonu. Včera představil nadaci Zig Software Foundation zastřešující propagaci a další vývoj tohoto programovacího jazyka. Podpořit ji lze na GitHub Sponsors (aktuálně 66 % z měsíčního cíle 8 600 $).

Ladislav Hagara | Komentářů: 3
11.7. 22:11 | Nová verze

Byla vydána verze 2.0.10 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Nově využívá nedávno vydaný Free Pascal Compiler (FPC) 3.2.0.

Ladislav Hagara | Komentářů: 13
11.7. 13:00 | Komunita

Letošní konference linuxových instalatérů Linux Plumbers Conference (LPC 2020) proběhne online ve dnech 24. až 28. srpna. Vývojáři Linuxu by měli probírat také podporu programovacího jazyka Rust v linuxovém jádru [Hacker News].

Ladislav Hagara | Komentářů: 0
Používáte některé open-source řešení [protokol] pro šifrovaný instant messaging?
 (22%)
 (31%)
 (4%)
 (11%)
 (17%)
 (5%)
 (13%)
 (24%)
Celkem 350 hlasů
 Komentářů: 39, poslední včera 00:13
Rozcestník

Space : Najděte 10 rozdílů

31.5. 00:46 | Přečteno: 2927× | plky | poslední úprava: 31.5. 12:10

Máme zde další historický milník. Kdo najde 10 rozdílů? :)

I když pro někoho sobota 30.5.2020 nebyla nijak výjimečná, tak pro spoustu lidí byla a je to další milník ve světové historii, byť třeba né tak velký jako např. přistání na měsíci.


Ovládání:

Crew Dragon - Panel Soyuz Panel


Sezení:

Crew Dragon - místa Soyuz - místa


Raketoplán Endeavour

Byla by škoda nehodit sem obrázek i Raketoplánu Endeavour, poslední, který se proletěl (2011).
Space Shuttle Endeavour


Zajímavé linky

Start americké rakety - Falcon 9 a pilotovaný Crew Dragon DM2 (odklad)
Start americké rakety - Falcon 9 a pilotovaný Crew Dragon DM-2
Horizons mission - Soyuz: launch to orbit
SpaceX Simulator
heavens-above.com
stellarium-web.org
kosmonautix.cz
Why does the SpaceX droneship camera cut out?


Závěr

Na obrázcích je Sojuz MS-09 (rodina) a Dragon 2 (Crew Dragon).
Spousta lidí toto bere jako USA vs Rusko. Nebo to spousta lidí vnímá tak, že Musk je Bůh a další část lidí, která mu přeje neúspěch. Já to tak nevnímám, zajímají mně jen technologie a jejich pokrok.

Zdar Max

PS: Tak co, kdo sledoval start a průběh letu? A co na to říkáte?

       

Hodnocení: 100 %

        špatnédobré        

Anketa

Váš názor na Crew Dragon?
 (70 %)
 (40 %)
 (35 %)
 (25 %)
 (48 %)
Celkem 40 hlasů

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Gréta avatar 31.5. 00:55 Gréta | skóre: 24 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů

si myslim že rozdílů je víc než 10 :D :D ;D

Everyone dies but not everyone lives - William Wallace ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗNo lives matter!!!!
31.5. 01:42 Zdenek 'Mst. Spider' Sedlak | skóre: 38 | blog: xMstSpider
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nevidim rozdil - manici mackajici se v nesmyslu pohanenem extra vybusnym svinstvem.

Smutny, ze jsme se za padesat let nikam poradne neposunuli.

Ale hlavne, ze mame svetelny vlacky. Pokud si budu chtit prohlidnout hvezdy, muzu si postavit vlastni raketu a podivat se z vesmiru, pac kvuli zavirovane obloze od SpaceSex uvidim velky H.

Max avatar 31.5. 02:04 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Posunuli jsme se od joysticku k do značné míry automatické raketě. Optimalizace na motorech také proběhla. Vylepšený systém recyklace částí rakety a věcí okolo. A optimalizace nákladů je hodně slušná. Celkově to má slušný přínos a urychlí to posun kupředu.
Je samozřejmě jasné, že to nemůže mít rychlý vývoj jako třeba věci v IT, kde každý rok se něco objeví.
Zatím asi nebudou mít v dopravě velkou konkurenci, ale nepřijde mi, že by toto byl primární Muskův cíl. Jinými slovy, asi nehrozí, že ten vývoj usne podobně jako u Sojuzů.
Vypadá to, že Čína je s vývojem také pozadu, takže SpaceX se asi dnešním dnem dostalo do čela. Uvidíme, co bude.
Zdar Max
Měl jsem sen ... :(
31.5. 04:04 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Optimalizace? Akorát že nemá tolik mrtvých jako Nedělin: https://www.novinky.cz/zahranicni/amerika/clanek/prototyp-nove-rakety-spacex-vybuchl-na-testovaci-rampe-40325948 :-/

Sojuz je sice popelnice stará přes půl století, ale funguje spolehlivě. I když létání do Vesmíru bych si také představoval jinak, ale to může být tím že jsem kdysi přečetl hodně sci-fi.

A s tím "vývojem" v IT to nepřeháněj, kolik z těch nových věcí co se každý rok objeví přežije aspoň jednu lidskou generaci? Většina toho co se dnes používá pochází ze sedmdesátých a osmdesátých let, akorát to žere milionkrát víc výkonu a paměti!
31.5. 05:57 kvr
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Sojuz je sice popelnice stará přes půl století, ale funguje spolehlivě. I když létání do Vesmíru bych si také představoval jinak, ale to může být tím že jsem kdysi přečetl hodně sci-fi.
To bude asi tím. Zákon zachování energie a rovnice kolem máme pořád stejné a na přímém spálení ropného produktu s kyslíkem moc co optimalizovat není (na rozdíl třeba od auta, kde je pořád nějaká mechnika, dobré promíchání paliva apod, proti tomu je raketa jednoduchá brute force). Takže hlavní posun je v tom, že dokážeme lépe automatizovat a případně to monstrum navigovat, aby si v přesném pravém úhlu sedlo zpátky na zem. Teoreticky bychom měli mít díky výrobním procesům taky vyšší spolehlivost, což tedy možná občas nevypadá, ale to je spíš dáno tím, že se o to víc tlačí na pilu...

Dopravit dané množství paliva na Mars bude asi největší oříšek pro to, abychom tam dokázali dopravit člověka. Tedy s tím, že by se ještě vrátil, což jako požadavek třeba ještě zrelaxujou... Ideální by bylo tam dotáhnout minimum a postavit životaschopnou základu, ale to je na několik generací nebo mnohem vyzrálejší robotiku. Jak navíc zjistili Čínani minulý rok, rostliny ve vesmíru velmi rychle chcípnou a táhnout s sebou pár pytlů brambor na celý rok či víc nebude úplně efektivní... Pomíjím zcela předpoklady jako diskutabilní podmínky k životu apod.

PS: Teď jsme s dětma začali číst staré ABC komixy (Galaxie, Vzpoura mozků) a jo, je docela úsměvné se vrátit k tomu, jaké pohledy tehdejší sci-fi literatura měla (třeba - tak si tu soustavu obletíme ještě jednou a při tom téměř online rozhovor :-) ).
BWPOW avatar 31.5. 07:26 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Raketove palivo sa bude dat bez problemov vyrobit priamo na Marse, postaci na to energia, lokalne zdroje uhlika a nejaky cas. Podla mna uplne najhorsie na dopravenie bude zradlo pre marsonautov. Ak sa tam nahodou objavia naozaj pouzitelne a dostupne zdroje vody, tak by to vsetko vyrazne ulahcilo, kedze voda je pomerne tazka, neda sa stlacit, takze stale zabera velky objem, meni skupenstvo a pri tom dokaze znicit nadrze. Da sa recyklovat, ale stale jej treba dopravit obrovske mnozstvo.
Prisiel som, videl som, hmm ... bwpow.eu
31.5. 07:29 Odin1918 | skóre: 5 | blog: Valhalla
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jaky ma smysl clovek na mesici ci marsu? Kdyz uz se tam coat, neni lepsi poslat jen robotickou sondu? Co zvladne clovek a robot ne?
BWPOW avatar 31.5. 08:27 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ked uz sa bavime o zmysle a vynechame fatalisticky pohlad, kedy vlastne nic nema zmysel, tak trvale osidlenie na viac ako 1 planete ma pre ludstvo vyznam prezitia.

To, ze tam pride zopar ludi, pohraju sa v piesocku a poletia domov samozrejme nema samo o sebe vyznam. Ale je to dalsi krok ku trvalemu osidleniu. Zem skor ci neskor caka katastrofa (asteroid, supervulkan, covid-88) a preto je treba redundanciu.

Taktiez niektori ludia maju radost z elegantnych inzinierskych rieseni roznych problemov, ktore s takou cestou suvisia.
Prisiel som, videl som, hmm ... bwpow.eu
PepaSFI avatar 31.5. 09:38 PepaSFI | skóre: 7 | blog: zlodej_casu
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
co zvládne člověk a robot ne? No tak nějak všechno.
Jediný správný stav mysli je úžas. Jediný správný stav srdce je radost.
Max avatar 31.5. 11:27 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Člověk zvládne základní věci 1000x rychleji a trochu složitější věci zvládne jen člověk (třeba když se něco rozbije, člověk to opraví, ale sonda se sama neopraví). Se podívej, jak dlouho trvá jen komunikace ze Země s nějakými sondami. Navíc dlouhodobý pobyt lidí ve vesmíru v ochranném pásmu Země (na ISS) už známe a Měsíc je další level.
Zdar Max
Měl jsem sen ... :(
31.5. 11:43 Branislaw
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
ale sak na Mesiaci sme uz vraj boli pred 50 rokmi...
Max avatar 31.5. 12:04 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jak to souvisí s dlouhodobým pobytem a labem?
Zdar Max
Měl jsem sen ... :(
31.5. 12:23 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Dokáže dnešní technika dovézt lidi na Měsíc a zpátky, udržet je při životě a zásobovat během několikaměsíčního pobytu? Vypadá to že ještě hůř než před půl stoletím, jestli vůbec. Asimov o něčem podobném psal v Nadaci.
BWPOW avatar 31.5. 12:27 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Odpoved na tvoju otazku zalezi aj od toho, ake velke riziko si ochotny podstupit. Kedysi sa s tym ludia nesrali a hlavne rusi zabijali kozmonautov ako na beziacom pase. Aj amici vedeli fajne ludi usmazit, ked bolo treba. Dnes uz ludia nemaju zaludok na smrt, takze to cele ide trochu debilnou cestou, ale stale to aspon trochu postupuje dopredu.
Prisiel som, videl som, hmm ... bwpow.eu
31.5. 12:51 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
SSSR: 4

USA: 14

Pukud započítáš i pozemní "události, tak tam ten Nikulin bezpečně vede, ale bez něj mají Američani i na zemi všechno největší :-D
1.6. 11:03 kol-ouch
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ono se vůbec těžko srovnává roskosmos a nasa - od doby co skončil závod o měsíc a smetli ze stolu N1, tak roskosmos v podstatě jen taxikaří na orbitu - nic jako raketoplán nemají a neměli (ok, BYL tady jednou bez posádky letící bezmotorový buran...)

Odečti z těch čísel ztráty z Columbie a Challengeru (protože cccp/Rusko nemělo, nemá a bůh ví jestli někdy bude mít nic podobnýho) a ta čísla ti vyjdou trochu jinak...

Fluttershy, yay! avatar 4.6. 01:00 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
[reakce na vlákno]

Tak například u toho delšího pobytu byť jen na oběžné dráze víme, jaké to má dopady na lidský organismus. Už jenom adaptace těla na odlišnou gravitaci. V tomhle kontextu se vážně bavit o nějakém cestování na Mars, natož zpět – šílenství.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
vencour avatar 4.6. 08:09 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Dobývání Nového světa za Kolumba se jevilo tehdy také jako šílené.
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
Fluttershy, yay! avatar 4.6. 10:08 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Genocida skutečně šílená je.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
4.6. 12:09 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Mozna slo o zoufaly pokus Evropanu zbavit se nabozenskych fanatiku. :-)
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
JiK avatar 4.6. 14:25 JiK | skóre: 8 | blog: Jirkoviny | Virginia
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Genocida skutečně šílená je.
Ty predkolumbovske civilizace sice hromadne vyvrazdovaly sve zajatce a sousedy, ale delali to kvuli sve vire, to vy slunickari snad podporujete, tak bud trochu tolerantni, ne?
4.6. 15:36 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nóóó... Tak na to, aby si člověk všiml toho prudkýho poklesu množství původní populace v Americe IMO není potřeba bejt sluníčkář. Vzhledem k tomu, že hlavní příčinou byly Evropany dovezený nemoci, je možné sáhodlouze filosoficky debatovat, jak moc se za to dá Evropanům dát odpovědnost. Nicméně vzhledem k tomu, že se rudokožcům zjevně po příjezdu Evropanů úplně dobře nedařilo a že s nimi Evropani neměli zrovna dvakrát slitování, tak to davkolovo zhodnocení v zásadě moc nadhodnocený asi nebude...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Fluttershy, yay! avatar 4.6. 16:01 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nemoci bych do toho nepletl. Evropané se jali dělat cílené etnické čistky, otrokářství,…

JiKovo tvrzení, že „oni to dělali taky“, není omluva, nýbrž výmluva, a to na mentální úrovni mateřské školky.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
9.6. 12:49 Marian
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nicméně vzhledem k tomu, že se rudokožcům zjevně po příjezdu Evropanů úplně dobře nedařilo a že s nimi Evropani neměli zrovna dvakrát slitování
Rozumný člověk se dokáže z historie poučit. Možná byli mezi indiány sluníčkáři, kteří podporovali přijímání migrantů (v tomto případě bělochů) a hlásali toleranci - bohužel přicházející migranti k nim tolerantní nebyli, možná byli indiáni příliš slabí, aby té invazi dokázali čelit. Tak jako tak dopadli špatně.

Snažme se, abychom my jednou nedopadli jako ti indiáni. Protože přicházející invazivní druhy k nám nebudou tolerantní, nebudou s námi mít slitování.

My máme sice proti indiánům výhodu, že jsme výrazně vyspělejší civilizace, ale to neznamená, že bychom byli mimo nebezpečí. Zvlášť pokud tu máme aktivní pátou kolonu.

Nemá smysl dávat rovná práva někomu, kdo rovnost neuznává a kdo se nad nás chce povyšovat. Tohle je zhoubný sebevražedný přístup. Je jedno, jestli je to černoch, muslim, Rus nebo Číňan. Oni nepřicházejí proto, aby se stali Čechy, Němci nebo Američany atd. Oni přicházejí proto, aby obsadili nové území, podrobili si původní obyvatelstvo a žili stále tak, jak jsou zvyklí (jen materiálně lépe), a naopak svůj pohled na svět vnutili ostatním. Kdyby chtěli žít jako my, tak budou číst české knihy, vařit česká jídla a zavedou si ve své zemi politický a ekonomický systém podobný tomu českému. To ale nedělají, protože to není jejich cílem. Naši toleranci a vstřícnost nevnímají jako naši ctnost, ale jako naši slabost a příležitost, jak nás porazit, obsadit naše území a přisvojit si naše bohatství.
Fluttershy, yay! avatar 9.6. 13:50 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nemá smysl dávat rovná práva někomu, kdo rovnost neuznává a kdo se nad nás chce povyšovat.
To vidím, že nějakou rovnost neuznáváš, když píšeš „přicházející invazivní druhy“.

Takže, proč by měl – podle vlastní úvahy – mít rovná práva tady „Marian“?
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
9.6. 15:42 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Přijde americký prezident za nejstarším a nejmoudřejším indiánským náčelníkem do rezervace na poradu: "Řekni mi, moudrý náčelníku, jakým otázkám bych měl věnovat největší pozornost?"

"Na tvém místě imigrační politice, my jsme to svého času značně podcenili!"
https://www.novinky.cz/domaci/clanek/brusel-znovu-chysta-povinne-kvoty-bezencu-cesko-proti-40326946
Dalibor Smolík avatar 4.6. 15:58 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Byli astronauti, kteří si nechali posílat video ze Země, jak dopadá tužka na stůl, aby si připomněli gravitaci.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
31.5. 12:22 _
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
to "vraj" je napresdrzku, pokud je to provokace, nebo na umisteni do ustavu pro debily :)
31.5. 12:42
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
tak si tu prez drzku daj a umiestni sa do ustavu pre ludi bez kritickeho myslenia... na Mesiaci sme sa vraj pred 50 rokmi prehanali na autach teraz ledva doletime na ISS a este je z toho obrovsky hype... Sojuzy lietaju na ISS rutinovane...
31.5. 12:55 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Možná to bude tím, že ten Sojuz byl padesát let rutinovaně řízený stále stejným analogovým počítačem a vačkovým sekvencérem. Když to funguje, nesahej na to ;-)
Max avatar 31.5. 13:34 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
No tak Sojuz doznal také značného vývoje, zas tak moc bych mu nekřivdil ;-).
Zdar Max
Měl jsem sen ... :(
31.5. 14:03 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ale jo, i ten číslicový počítač už nejméně dva roky má. A Buchanku také dost vylepšili :-)
Max avatar 31.5. 13:33 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
"...ledva doletime na ISS..."

Otestovat si modernější technologie na kratších trasách nepovažuji za ubohost nebo neschopnost doletět dál. Měsíc nebyl donedávna moc v hledáčku, protože se vše zaměřovalo na výstavbu vesmírných stanic jako ISS.
Měsíc je v plánu až nyní. A né, není ten plán tak krátkozraký, jak by si kdo myslel, ale bude více druhů lodí, které budou přepravovat astronauty a jiné věci v určitých trasách. Jinými slovy, bude jiná loď na cestu na orbitu a jiná, co bude dopravovat astronauty a náklad z orbity na Měsíc. Tato vesmírná loď pak nepotřebuje tepelné štíty, bude dotankovávána na orbitě atd.

Oproti stavu před 50 lety jde tedy o nasazení moderních technologií, automatizace, eliminace lidské chyby, co největší snížení nákladů atd.
Dřív to bylo o tom, dostat se tam za každou cenu nehledě na peníze.
Zdar Max
Měl jsem sen ... :(
31.5. 14:00 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ono to s těmi penězi zase nebylo tak hrozné, celý projekt Apollo prý stál méně než v USA utratili za rok na kosmetiku. A ty vynálezy a technologie se potom mnohokrát zaplatily.
31.5. 16:34 _
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To může říct jenom chlap. Asi by Američané řvali, kdyby každé roidině vzali půl platu na kosmický výzkum.
31.5. 16:56 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Spíš Američanky :-D

Ale kdyby se to rozložilo do celé jedné dekády, tak by to nebylo zase tak strašné.

On ten vesmírný výzkum vlastně ani není nějak moc drahý, pár let zpátky byl celý roční rozpočet NASA stejně velký, jako náklady na každý jeden den války v Iráku. Ale to je holt otázka priorit.
1.6. 19:52 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Raketove palivo sa bude dat bez problemov vyrobit priamo na Marse, postaci na to energia, lokalne zdroje uhlika ...
Tie zdroje uhlíka budú vo forme čierneho uhlia alebo ropy?
Josef Kufner avatar 1.6. 20:59 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jako CO₂ do metanu.
Hello world ! Segmentation fault (core dumped)
BWPOW avatar 1.6. 22:55 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
WAT? Co tak atmosfera?
Prisiel som, videl som, hmm ... bwpow.eu
Max avatar 31.5. 12:03 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To se celkem pleteš. Vývoj a optimalizací raketových motorů je celá řada a stále jde vývoj dopředu.
Trochu by ti mohlo něco nastínit toto video : Je Raptor kráľom raketových motorov?
Zdar Max
Měl jsem sen ... :(
31.5. 12:19 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Každý kohout chválí svůj ocas. ;-)

S hodnocením bych počkal aspoň deset let. Až přejde hype.
Max avatar 31.5. 12:24 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nepochopils. Chtěl jsem tím odkazem jen říci, že vývoj a posun v raketových motorech je a je stále co zlepšovat, nic víc. Tzn. reagoval jsem jen na "...na přímém spálení ropného produktu s kyslíkem moc co optimalizovat není...".
Zdar Max
Měl jsem sen ... :(
31.5. 12:38 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Já reagoval přímo na ten odkaz. Třeba u automobilových motorů se to spalování optimalizuje už sto let, a pořád to ještě není to pravé.
31.5. 12:43 Nie som robot
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
chcelo by to na kvapku benzinu prejst 100 km...
31.5. 12:56 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Buď budeš mít nízké emise nebo nízkou spotřebu. Oboje najednou nejde.
Max avatar 31.5. 13:14 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Chyba lávky je už jen to, že toto tvrdíš. Možná to nejde nyní, ale za 15 let to platit nemusí. Vývoj predikovat moc nejde ;-).
Zdar Max
Měl jsem sen ... :(
31.5. 13:20 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jako že by vznikla nějaká nová chemie nebo se změnilo složení zemské atmosféry? :-P

Euro6 doháníš spalováním močoviny, zkus si dát frťana. Blížící se Euro7 mě dost děsí.
Max avatar 31.5. 13:42 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ty se asi považuješ za vševědoucího, co zná všechny možnosti v tomto odvětví. Já takovou slepou vírou nedisponuji.
V HydePark civilizace se nositel Nobelovky (myslím, že to byl Gérard Mourou, ale možná se pletu) vyjádřil v tom smyslu, že vědci nepřicházejí na převratné objevy tak, že by empiricky a matematicky došly k výsledku, ale zjednodušeně řečeno stylem pokus omyl. Prostě si řeknou, že to zkusí takto, jak se to asi bude chovat a 1000x nic a na 1001 najednou něco objeví.
Zdar Max
Měl jsem sen ... :(
31.5. 14:11 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Vševědoucí? Ale to zdaleka ne, vím toho dost na to, abych si dokázal uvědomit jak málo toho vím. takže také vím jak to s těmi vynálezy je, třeba že žárovka vznikla 70 roků před Edisonovým patentem.

Jenom doufám, že co se pohonů aut týče, tak těch nic za sebou máme už aspoň 500 :-/
1.6. 12:41 -
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Za 15 let nebudou ropná auta existovat.
Blaazen avatar 1.6. 13:14 Blaazen | skóre: 23 | blog: BL
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To tu budou jen elektromobily nabíjené z uhelných elektráren a zámořské lodě na mazut.
1.6. 13:46 _
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Uhelky tu budou jen pokud technozpatecnici jako ty budou blokovat jadernou energetiku.
Blaazen avatar 1.6. 15:58 Blaazen | skóre: 23 | blog: BL
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Což o to, já jádro podporuju. Jen aby to ještě někdo uměl za rozumnou cenu postavit. Odkaz.
Blaazen avatar 1.6. 16:08 Blaazen | skóre: 23 | blog: BL
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Sorry, on má ten podcast hoďku a třičtvrtě. Prostě je o tom, že firmy jako Westinghouse nebo francouzská Areva jsou v úpadku a všechny stavby v Evropě se prodražují a o léta protahují. A obecně se staví málo.
Bystroushaak avatar 2.6. 01:18 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Což o to, já jádro podporuju. Jen aby to ještě někdo uměl za rozumnou cenu postavit. Odkaz.
Když už jsme u těch offtopiců, tak nevím jestli jste zachytili že poslední dobou najednou existují "vysokoteplotní" (resp. ne tak nízkoteplotní) nízkonákladové supravodiče (HTS). Například REBCO páska. Což mělo mimo jiné za následek vznik hned několika startupů na fůzní energii, protože s tímhle jediním vynálezem je najednou možné dělat silnejší magnety než má ITER na podstatně menší ploše a za zlomek ceny (Iter je v toroidních cívkách nějakých 12 Tesla, některé startupy co jsem tak koukal dávají kolem 20 Tesla). Konkrétně třeba Tokamak Energy (například tady).

Pak se poslední dobou hodně mluvilo o aneutronické (aneutroní?) fůzi: Radical hydrogen-boron reactor leapfrogs current nuclear fusion tech, to mi přijde naprosto fascinující, protože to jako jeden z mála zdrojů energie nepotřebuje elektromagnetické generátory na konverzi energie (a k tomu přidružené parní stroje jako třeba u jádra), ale rovnou z toho leze elektřina.
2.6. 05:12 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Střídavá? Protože se stejnosměrnou se to hodí jen na malý lokální zdroj.
xxxs avatar 2.6. 09:45 xxxs | skóre: 19 | blog: vetvicky
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
"Protože se stejnosměrnou se to hodí jen na malý lokální zdroj."

mozes to vysvetlit?
BWPOW avatar 2.6. 11:01 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Max avatar 1.6. 14:16 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Na základě čeho tak usuzuješ? Osobně si myslím, že reál může být až tak někdy kolem 2050. Tzn., za 30 let.
A to platí jen pro vyspělé země.
Zdar Max
Měl jsem sen ... :(
1.6. 15:13 -
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Už teď je to nesmyslný anachronismus. Snad brzy přijde zákaz.
Fluttershy, yay! avatar 4.6. 01:14 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Průměrné stáří aut v Česku je nějakých 15 let. Vzhledem k úrovni příjmů a způsobu organizace společnosti nejde počítat s tím, že by si lidé jen tak pořídili elektromobil – nebo autem přestali jezdit úplně. Přechod aspoň na plyn je ale na místě. Firemní flotily mezitím na elektro přejdou a dost možná se rozšíří i komunitní sdílení.

Na druhé straně, takoví Kubánci pod americkými sankcemi spravují mnohem starší auta (u kterých to ale ještě jde) a fungují; je to jedna z nejúspěšnějších společností co do udržitelnosti.

Taky může přijít urychlení jako ropné krize ze 70. let, které automobilový trh výrazně proměnily. A to včetně těch zákazů – jako např. výrazné omezení maximální rychlosti v USA.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
Bystroushaak avatar 31.5. 23:00 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
a na přímém spálení ropného produktu s kyslíkem moc co optimalizovat není (na rozdíl třeba od auta, kde je pořád nějaká mechnika, dobré promíchání paliva apod, proti tomu je raketa jednoduchá brute force).
SpaceX zrovna dělá těch optimalizací docela hodně a taky mají jeden z nejlepších poměrů váha/tah.
Dopravit dané množství paliva na Mars bude asi největší oříšek pro to, abychom tam dokázali dopravit člověka.
Proto má Starship / Raptor létat na metan, který se dá vyrobit na místě vytažením oxidu uhličitého z atmosféry.
PepaSFI avatar 1.6. 19:17 PepaSFI | skóre: 7 | blog: zlodej_casu
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
asi největší pokrok je v tom že ty motory jdou opakovaně spolehlivě spouštet a jde jim regulovat tah ve velkém rozsahu, až asi na 50%. Což se sice může zdát jako banalita ale ono to je docela problém. Raketový motor je hned po jádru nejšílenější zdroj síly, vlastně je to takový částečně kontrolovaný výbuch, který se nedá nějak moc tahat za nohu. Funguje to v celkem úzkém rozmezí a když se to rozladí, buď to scípne nebo bouchne.
Jediný správný stav mysli je úžas. Jediný správný stav srdce je radost.
Max avatar 31.5. 11:16 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
IT se za posledních x let hodně transformovalo. Rozvoj internetu, AI, schopnosti software (modely, hry, animace, přechod na ssd, masivní multicore, ohebné displeje, masivní přechody na čím dál tím lepší LCD like technologie atd.), přechody na mobilní platformy. Posun ve výkonu je obrovský a každý rok, dva pěkně roste a spotřeba se snižuje. To pak např. umožnilo rozvoj AI v automobilové, letecké aj. dopravě.

To, že se "počítač" stále jmenuje "počítač" a "procesor" se stále jmenuje "procesor" neznamená, že tam ten vývoj není velký. To jen ty jsi si stanovil taková kritéria, aby byla co nejvíce obecná a nebylo v tom vidět nic konkrétního. Podle tvé mentality bychom pak mohli říci, že lidstvo se za posledních 20000 let vůbec nikam nepohnulo, protože stále dýcháme kyslík.
Zdar Max
Měl jsem sen ... :(
31.5. 12:14 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jo, tranformovalo. Sítě byly mezi opravdovými počítači, ne dětskými hračkami jako Altair a ZX Spectrum, zcela běžné od začátku osmdesátých let, masivní multicore řídil Buran, ohebné displeje sice jdou ohnout, ale už ne narovnat. Zbytek je pouze rozvoj starých technologií, a hlavně zlevnění dané masovou výrobou. AI je stejně blbá jako před třiceti lety, jenom pracuje s miliardkrát většími objemy dat. Jak dobře funguje v letecké dopravě ukázal Boeing 737 MAX. Mezi lidi by to pustil jen Mengele. Snížila se spotřeba, dnešní top PC žerou už jenom pětkrát víc než ta z půlky osmdesátých let, zvýšil se jejich výkon, ale kancelářské programy běží pomaleji než na 286kách. A z Internetu, sloužícího k šíření vědomostí, se stal uřvaný lunapark blikající všudypřítomnými reklamami, který můžeš nosit v kapse. Viz Neználek na Měsíci, kapitola Ostrov hlupáků. Můžeš tomu říkat transformace, ale není to evoluce. Spíš naopak.

Nechci hodnotit jak daleko jsme se posunuli za posledních 20000 let, protože vědecké teorie vytvořené na základě kusých archeologických nálezů jsou z větší části něco mezi fantasy a pohádkami pro děti, a každých pár let se mění stejně tak jako obsah učebnic Občanské výchovy, ale kam jsme se posunuli za poslední 2000 let, které jsou podstatně lépe zdokumentované, je zřejmé: https://www.youtube.com/watch?v=fM4etrRq_AE

Holt jsem v tomhle skeptik. Ale možná je to právě tou sci-fi, kterou jsem tenkrát hltal, prostě si pod slovem pokrok představuji něco jiného. Znáš tohle? http://a.da.mek.sweb.cz/novotny.f/lomzv.htm
Max avatar 31.5. 12:26 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nikdo neříká, že nové technologie přinášejí jen samá pozitiva. Ty argumentuješ jen zobecňováním a zápory a nedokážeš si připustit jediný klad. Nemyslím si, že je to úplně zdravý pohled.
Zdar Max
Měl jsem sen ... :(
31.5. 12:44 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Je to pohled brýlemi zkušeností. Z optimizmu jsem prostě vyrostl. A ani mě se to moc nelíbí.

Ano, snažím se zobecňovat, abych se neupínal k zářícím neonům. Za nimi je toho totiž k vidění mnohem víc, třeba skládka odpadků. A starých vysvícených neonů.

A přečti si tu povídku, je tak dobrá, že tenkrát nesměla vyjít knižně :)
Max avatar 31.5. 13:12 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To nejsou zkušenosti, ale silný pesimismus, ve kterém se utápíš.
Zdar Max
Měl jsem sen ... :(
31.5. 13:24 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Realizmus, ten je ještě horší.

Pesimista se totiž obává že to špatně dopadne, zatímco realista už bezpečně ví, že je to velé úplně v (_!_) :-D
Max avatar 31.5. 13:44 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pokud jsi schopen vidět jen to nejhorší, jsi pesimista a vsugerovávat si něco jiného ti nepomůže ;-).
Zdar Max
Měl jsem sen ... :(
31.5. 14:05 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ale kdepak, já naopak i na tom nejhorším dokáži najít něco dobrého. Třeba Hitler docela hezky maloval :-D
Fluttershy, yay! avatar 16.6. 19:53 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Třeba Hitler docela hezky maloval :-D
Moc ne.

Ale Hitler je ten chlapík, který zabil Hitlera. 👍
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
31.5. 22:51 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To není ani pesimismus. Říká se, že optimista je člověk s nedostatkem informací, ale Radovan ty informace právě taky nemá. Jednoduché mentální cvičení: jak dlouho by vám v 70. letech trvalo postavit e-shop nebo službu pro streamování videa? A to po vás nebudu chtít budovat celosvětovou informační sít, jen připojit pár paneláků a ukázat, jak jste se ve srovnání s dnešními standardy poprali s kryptografií, fulltextovým vyhledáváním, škálovatelností v případě expanze nebo spotřebou elektřiny.

Doporučuji každému si to (alespoň mentálně) vyzkoušet. Možná si pak najednou začnete cenit těch graduálních bezvýznamně-inženýrských vylepšení, když zjistíte, že ten moderní hardware je na tom se spotřebou a výkonem jaksi jinde, že se ten výkon dá ještě ušetřit použitím lepších datových struktur nebo algoritmů (úplně namátkou mě napadá HAMT – Bagwell, 2000), že není nutné uživatelská rozhraní skládat úplně od začátku, ale lze se opřít o samozřejmosti jako je IBM Common User Access, 1987, že to není nutné programovat v prapůvodní děsivé implementaci C a kód ručně optimalizovat, že se lze opřít o teorii ohledně distribuovaných systémů (např. OCC – Kung & Robinson, 1981) a tak dále.
31.5. 23:25 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jedna informace mi opravdu schází: kolik lidí v sedmdesátých letech potřebovalo e-shop nebo službu pro streamování videa?

Tenkrát byl vrchol informační technologie tištěný katalog Quelle s nulovou spotřebou energie.

A jinak tam jmenuješ věci z osmdesátých let ;-)
31.5. 23:56 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jedna informace mi opravdu schází: kolik lidí v sedmdesátých letech potřebovalo e-shop nebo službu pro streamování videa?
Kolik lidí v 15. století potřebovalo jezdit na kole?
Tenkrát byl vrchol informační technologie tištěný katalog Quelle s nulovou spotřebou energie.
Nebyl bych si tak jistý, že na tisk a distribuci tištěného katalogu se spotřebuje méně energie než by se spotřebovalo distribucí a konzumací elektronickou cestou. Tady třeba neberou v potaz servery a síťovou infrastrukturu, kde se to blbě počítá, ale ten rozdíl ve prospěch elektroniky jim vyšel tak velký, že je nepravděpodobné, že by to celková energie spotřebovaná na distribuci po vydělení počtem distribuovaných stránek převážila na opačnou stranu.
A jinak tam jmenuješ věci z osmdesátých let ;-)
Ano, některé. To znamená věci, které v těch 70. letech vynalezeny ještě nebyly. Obdobně by bylo možné hledat příklady z libovolné jiné následující dekády.
1.6. 04:54 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Spotřebuješ na výrobu toho katalogu víc energie a surovin než na výrobu notebooku?

Podle toho, kolik reklamních letáků tu máme skoro každý den ve schránkách, určitě ne :-)
1.6. 06:00 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
~23,8 kJ na zobrazení stránky (při 4,340 GJ na výrobu, pěti letech a 100 stránkách denně). Po přičtení k 5,4 kJ spotřebovaných při tříminutovém čtení té stránky, se kterým tam kalkulují, to je pořád míň než těch 150 kJ u papíru.
1.6. 17:21 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
V tom případě by ty letáky mělo urychleně řešit ministerstvo životního prostředí. A velmi brutálně reagovat ;-)
4.6. 10:38 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To by bylo fajn no, dost mě vysírá, jak toho mam furt plnou poštovní schránku.

No jinak docela tě Bherzet setřel mam dojem :-D
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
4.6. 16:18 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pouhý dojem. Zkus si to přepočítat a přidat tam pár opominutých údajů. Například recyklaci.
4.6. 16:38 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nebo distribuci těch letáků...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
4.6. 17:04 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
A na distribuci elektrické energie, kterou ten leták vůbec nepotřebuje :-P

No, vypadá to že asi shodneme na jediné věci, že ty letáky by se měly zakázat.
31.5. 14:50 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Tebou zvolene priklady jsou fascinujici.
masivní multicore řídil Buran
Masivni multicore pocitace se na zapadnim trhu pouzivaly (komoditne) uz v sedmdesatych letech.
Viz Neználek na Měsíci, kapitola Ostrov hlupáků
Zkontroluj kalendar! Mame rok 2020 a argumentovat detskou, tezce propagandistickou knizkou z padesatych let pusobi prinejmensim hodne komicky.
Zbytek je pouze rozvoj starých technologií, a hlavně zlevnění dané masovou výrobou.
Ono to uz tak byva, ze se veci postupne vyviji.
AI je stejně blbá jako před třiceti lety, jenom pracuje s miliardkrát většími objemy dat.
Ac termin AI nemam rad, chtel bych podotknout, ze to, co dela AI dostatecne chytrou, jsou prave ty miliardkrat vetsi objemy dat, jejichz zpracovani by nebylo mozne bez zasadniho vyvoje v dalsich oblastech. Takze rict "jenom" je nemistna bagatelizace. Schvalne si vezmi bezny pocitac z roku 1990 a zkus na nem trenovat neuronovou sit, ... ale ne, nebudeme to komplikovat bude stacit, kdyz na tom pocitaci budes schopen prehrat mp3 soubor.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
31.5. 15:10 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ona je to komunistická agitka jenom na povrchu, musíš hlouběji. Původní podoba Neználka nebyla určená dětem, to je jenom kamufláž, chránící autora před jistým gulagem. Sám nejlépe věděl co píše...

Ano, pamatuješ jak se v padesátých/šedesátých letech překračoval plán a kvalita nahrazovala kvantitou? Mohl sis třeba koupit oblek s nepřišitým rukávem, ale bylo to na 105%. Budovalo se a rozvíjelo. Tak se dnes neuronové sítě dostaly na úroveň čerstvě vylíhnutého chrousta.

A kdo umí, ten umí: https://www.youtube.com/watch?v=eM3yp7U59e0 ;-)
31.5. 15:30 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ona je to komunistická agitka jenom na povrchu, musíš hlouběji.
Snazis se pekne... ale na povrchu je to knizka pro deti, pod povrchem je tezka komunisticka propaganda a pod tim je jeste neco, co pochopi jen ti nejosvicenejsi...

Ano, pamatuješ jak se v padesátých/šedesátých letech překračoval plán a kvalita nahrazovala kvantitou?

Nepamatuju, nejsem duchodce.
Tak se dnes neuronové sítě dostaly na úroveň čerstvě vylíhnutého chrousta.
Sice pochopils tajemstvi ukryte v Neznalkovi, ale to, co jsem psal, jsi v lepsim pripade nepochopil, v horsim ani neprecetl.
kvalita nahrazovala kvantitou
V pripade strojoveho uceni nefunguje dichotomie mezi kvalitou a kvantitou, ale kvantita je faktor urcujici kvalitu.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
1.6. 09:58 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Neználek na měsíci, ze z té série dost vymyká.
31.5. 20:28 marbu | skóre: 30 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Řekl bych, že třeba vývoj v hardware a miniaturizace je pro nasazení ve vesmíru docela zásadní: ty řídící počítače jsou mnohem menší, lehčí a mají menší spotřebu. Takže i když např. již to zmiňované plně automatizované dokování Sojuzu s Mirem nebo plně automatický let Buranu bylo možné vyvynout pro hardware 80. let, dnes tu samou funkcionalitu jde nacpat do mnohem menších, a tím pádem výrazně levnějších věcí.
I think warning here is a bug. There is no point in being so cool in a cold world.
1.6. 14:00 j
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Az na to, ze presne tahle to nefunguje ...

Kdybys o tom neco vedel, tak ve vesmiru je vyrazne vetsi zareni nez na zemi, a to jaksi zpusobuje, ze prave ta miniaturizovana elektronika tam nefunguje (nebo nespolehlive).

Kupodivu se presne z tohodle duvodu pokud vim jeste stale vyrabi i386. Protoze ty chipy nemaji jeste tak velky problem a vykonostne naprosto bohate staci (najdi si, s cim letelo apolo, kazdy hodinky jsou vykonejsi).

Pricemz cena v tomhle ohledu je zcela marginalni, nikoho nezajima. Jediny co kazdyho zajima je hmotnost. Protoze cena dopravenyho kg je presne to, co se prakticky vubec nijak nemeni.

---

Dete s tim guuglem dopice!
Max avatar 1.6. 14:19 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Těžko říci, jak velký reál to dnes je. Přecijen, na ISS dlouhou dobu měli a možná ještě mají Thinkpady.
Zdar Max
Měl jsem sen ... :(
2.6. 10:37 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To jo, jenže na práci, kde nevadí, když se to kousne. Pochybuju, že by tím řídili kritické systémy.
Quando omni flunkus moritati
1.6. 14:24 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Kupodivu se presne z tohodle duvodu pokud vim jeste stale vyrabi i386. Protoze ty chipy nemaji jeste tak velky problem a vykonostne naprosto bohate staci

No, mozna pred deseti lety.
Protoze cena dopravenyho kg je presne to, co se prakticky vubec nijak nemeni.
Doporucuji nastudovat treba: The Recent Large Reduction in Space Launch Cost
Commercial launch has reduced the cost to LEO by a factor of 20.
Fakt nemeni...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
1.6. 16:01 marbu | skóre: 30 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Kdybys o tom neco vedel, tak ve vesmiru je vyrazne vetsi zareni nez na zemi, a to jaksi zpusobuje, ze prave ta miniaturizovana elektronika tam nefunguje (nebo nespolehlive).
Jo, pro použití ve vesmíru je třeba řešit odolnost proti kosmickému záření, a tak se často musí extra navrhnout a vyrobit stejný čip odolný proti radiaci. Stejně tak je pravda, že na spoustu řídících funkcí není nějaký extra výkon vůbec třeba.

To že se často používá starší hardware je ale také dáno jak tím, že délka vývoje družice/lodě/rakety je většinou poměrně dlouhá, tak tím že náročnost vývoje a testování hardware se zvýšenou odolností proti radiaci jej prodražuje, a tak se nevyplatí hned vyvíjet novou generaci.
Kupodivu se presne z tohodle duvodu pokud vim jeste stale vyrabi i386. Protoze ty chipy nemaji jeste tak velky problem a vykonostne naprosto bohate staci (najdi si, s cim letelo apolo, kazdy hodinky jsou vykonejsi).
Speciální "space grade" i386 mají v řídícím počítači na ISS, ale neznám novější věc, co by takové 386 používala. Curiosity rover z roku 2011 má v sobě BAE RAD750, který je na trhu od roku 2001.
Pricemz cena v tomhle ohledu je zcela marginalni, nikoho nezajima.
V momentě kdy navrhnete hardware družice a pak zjistíte, že by šlo něco málo ušetřit na hardware to smysl fakt nemá. Ale když vezmete v potaz současné možnosti, může vám z toho vyjít nový typ použití, který by dříve nešlo kvůli příliš težkému počítači realizovat. Ať už je to přistání 1. stupně rakety Falkon 9, různé kubesaty, komerční družice pro snímání Země nebo třeba ty velké soustavy družic pro poskytování internetu z nízké oběžné dráhy.
I think warning here is a bug. There is no point in being so cool in a cold world.
1.6. 19:58 MadCatX
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Kolega "j" zase chytrý jak rádio. Třeba Falcon 9 žádné speciální zodolněné elektronické součástky nemá. Počítače autopilota mají nějaké tuctové x86 dvoujádro, kontroléry řídících komponent používají PPC. Na každém ze třech pilotujících počítačů se vykoná každý řídící povel paralelně a porovná se výsledek. Totéž udělají kontroléry servomotorů trysek a dalších zařízení, které AP ovládá. Tím se zaručí dostatečná redundance a korekce chyb, aniž by se musel použít drahý specializovaný hardware. Právě využití jednoduše dostupných a běžných dílů je jeden z důvodů, proč je celý SpaceX program ekonomicky efektivní.
1.6. 23:09 j
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Takze o vom vis lautr hovno, coz ti nebrani o tom zvanit, ze? Mas k tomu neco nebo tu jen tak blejes?

---

Dete s tim guuglem dopice!
1.6. 23:22 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
S těmi silnými výrazy bych byl opatrný.
SpaceX uses multiple redundant flight computers in a fault-tolerant design. Each Merlin rocket engine is controlled by three voting computers, each of which has two physical processors that constantly check each other. The software runs on Linux and is written in C++.[66] For flexibility, commercial off-the-shelf parts and system-wide radiation-tolerant design are used instead of rad-hardened parts.[66] Each stage has stage-level flight computers, in addition to the Merlin-specific engine controllers, of the same fault-tolerant triad design to handle stage control functions. Each engine microcontroller CPU runs on a PowerPC architecture.[67]
   – https://en.wikipedia.org/wiki/Falcon_9
SpaceX uses an Actor-Judge system to provide triple redundancy to its rockets and spacecraft. The Falcon 9 has 3 dual core x86 processors running an instance of linux on each core. The flight software is written in C/C++ and runs in the x86 environment. For each calculation/decision, the "flight string" compares the results from both cores. If there is a inconsistency, the string is bad and doesn't send any commands. If both cores return the same response, the string sends the command to the various microcontrollers on the rocket that control things like the engines and grid fins.

The microcontrollers, running on PowerPC processors, received three commands from the three flight strings. They act as a judge to choose the correct course of actions. If all three strings are in agreement the microcontroller executes the command, but if 1 of the 3 is bad, it will go with the strings that have previously been correct. The Falcon 9 can successfully complete its mission with a single flight string.
   – https://space.stackexchange.com/questions/9243/what-computer-and-software-is-used-by-the-falcon-9
1.6. 23:24 MadCatX
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Začni třeba tady a zbytek si vygoogli.
31.5. 20:10 marbu | skóre: 30 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Posunuli jsme se od joysticku k do značné míry automatické raketě.
Tady bych jen dodal, že dokování malé lodě/kapsule s velkou stacionární stanicí bylo plně automatizované vždycky. Poprvé to řešili Sověti, kteří v 80. letech vyvynuli systém KURS pro dokování Sojuzu se stanici Mir, kdy už předchozí metodu, která počítala s pomocným natočením samotné stanice, nešlo kvůli velikosti stanice použít. Manuální systém řízení TORU byl zamýšlen jen jako záloha pro případ selhání automatického systému.

Když se rozpadl SSSR a ukázalo se, že KURS je plně ve vlastnictví Ukrajiny, Rusové zkusili otestovat jak by fungovalo manuální dokování s použitím TORU při běžném provozu, aby nemuseli Ukrajině plalit za licenci než by si vyvinuli náhradu. Což skončilo kolizí a málem to vedlo k evakuaci stanice, takže příště se již zase používal automatický systém.
I think warning here is a bug. There is no point in being so cool in a cold world.
1.6. 13:53 j
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ehm ... ani ne.

Plne automaticky lital uz Gagarin. Ve skutecnosti tam vsechny ty ovladaci prvky davali jen proto, aby cvicene opicky (posadka) byly spokojene.

A co se provedeni tyce, tak mechanicky tlacitko je o par radu spolehlivejsi vehement, nez patlaci obazovka. Chtel bych videt, co by se asi tak s tou obrazovkou delo pri nejakych 10+G.

Jo a ty sojuzy ze za tech 50 let taky pomerne dost zmenily, a ve skutecnosti, co myslis, kde ze musk bere motory?

---

Dete s tim guuglem dopice!
1.6. 14:17 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Chtel bych videt, co by se asi tak s tou obrazovkou delo pri nejakych 10+G.
Asi nic zasadniho a vlastne ta otazka je irelevantni, protoze nebude nikdo schopen ji ovladat.
co myslis, kde ze musk bere motory?
Ze by si je sam vyvijel a vyrabel? Pletes si to s ULA.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
3.6. 20:01 ehmmm
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ze vam vstupuju do diskuze.

Netusite, kolik G mel Armostrong na Gemini 8?

A co se tzka automatikz, tak myslim, ze napr. od Tereskovove se vyzadovala alespon nejaka minimalni spoluprace, aby mohla pristat?
Blaazen avatar 3.6. 21:16 Blaazen | skóre: 23 | blog: BL
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nevím, ale viděl jsem rozhovor s pilotem Gripenu. Říkal, že mu anti-G oblek pomůže tak o 1,5G a zbytek je trénink. Zde (asi prvních osm minut je o přetížení a dýchání).
PepaSFI avatar 4.6. 18:52 PepaSFI | skóre: 7 | blog: zlodej_casu
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
teď nevím jestli Těreškovová musela něco ovládat, například spustit nějakou přistávací sekvenci ve správnou chvíli ale ono se to kosmidlo nějak moc nedalo řídit. To přistání bylo vlastně takové " když se trefíme na kontinent bude to dobrý". Ostatně i dnes je to docela drsná jízda na pekelným tobogánu.

Každopádně zrovna Těreškovová je dobrý příklad, ona na svou nekázeň málem doplatila, moc nechybělo a urazila by si hlavu. Tenkrát ještě neuměli kabinu ubrzdit na přijatelnou rychlost a proto kosmonaut přistával samostatně na svém padáku. A protože katapultáž není žádná sranda, musí se přesně dodržet postup, zaujmout přesně určenou polohu v křesle. A protože tkadlena Těreškovová neměla zkušenosti a kázeň bojového pilota, při katapultáži něco udělala blbě a dostala ránu do helmy, takže ji pak fotili jen z jedné strany aby nebyla vidět modřina přes půl ksichtu. že si pak po přistání posvačila s vesničany, čímž znehodnotila lékařské a biologické údaje, to už je jen drobná chybička.
Jediný správný stav mysli je úžas. Jediný správný stav srdce je radost.
GeoRW avatar 31.5. 07:08 GeoRW | skóre: 13 | blog: GeoRW | Bratislava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Tak, ked v tom chcu vozit turistov, tak to musi nejako vypadat :-)
"This is to be taken with a grain of salt." ACBF - Advanced Comic Book Format
1.6. 11:53 bsdbest
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
tri modre obrazovky zrejme naznacuju, ze pocitaju hlavne s mladsimi generaciami
31.5. 07:27 Odin1918 | skóre: 5 | blog: Valhalla
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Fandim jim, ale na druhou stranu nechapu vubec snazeni cloveka letat do vesmiru a udrzovat tam stanici. Clovek tim prekracuje urcitou hranici. Neni nic dobreho snazit se koukat panu bohu do oken. Na jednu stranu chteji vlady lidem zakazovat auta, na stranu druhou maji snahu letat k iss a na mesic a cert vi kam. Kdyby se radeji zamerili na vedecky vyzkum na zemi. Nebo kdyby vlady radeji nedelali nic, tim by udelali nejlepe.
31.5. 09:08 pavele
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Proč vznikl linux - nějaká vláda snad pomáhala a platila vývoj?

Proč byl dobyt severní pól? Vždyť tam nic není.

Kolik lidí umřelo, než se zjistilo, které houby jsou jedlé?

Kolik lidí umřelo na otravu rostlinami, než zjistili, k čemu se dají použít na léčení?

Proč se dobrovolně nechal někdo infikovat borelií z komárů, chtěl snad umřít na žlutou horečku?

Proč se snažili dosáhnout dna Mariánského příkopu? Jediné, co za to mohli získat, byla smrt.

Proč se horolezci snaží vylézt na horu K3? Vždyť je tam nic nečeká.

Snažíš se říct, že bychom měli sedět za pecí, poslouchat nadřízené a do úmoru pracovat? :-) Znáš betrizaci od Stanislawa Lema? :-)

Proč? Protože tam ta hora je, protože ten měsíc tam je, nebýt výše uvedeného, dodnes bychom jedli kořínky, léčili se vyháněním zlých duchů.

Co na tom nechápeš? O všem rozhodují peníze. S výjimkou nadšenců, kteří táhnou ten pokrok vpřed.

Vždyť i dnes seženeš peníze na kdejakou pytlovinu na crowdfundingovém portálu, ale "důležité" projekty (třeba bezpečnostní knihovny pro šifrování) skomírají na peníze...
PepaSFI avatar 31.5. 09:32 PepaSFI | skóre: 7 | blog: zlodej_casu
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
jsou jen dvě věci, co posouvají pokrok kupředu. Jedna je bláznovství nadšených pošuků a druhá je šílenství zločinných pomatenců. Prostě to buď vymyslí a po spoustě útrap a neúspěchů postaví magor co si nedá říct že to nejde, že nikdo rozumný by přece neryl do země aby tam zapích rostlinku a čekal půl roku než vyroste, když je lepší sedět na haluzi a žvejkat bobule a doufat že přes zimu nechcípnu. Nebo to postaví někdo protože musí, za vynaložení obrovských nákladů a snažení, protože musíme udělat větší klacek než mají ti za kopcem protože nám sem chtějí vlézt a když je nepraštíme po hlavě tak nám všecko sežerou.
Jediný správný stav mysli je úžas. Jediný správný stav srdce je radost.
31.5. 11:45 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
jsou jen dvě věci, co posouvají pokrok kupředu. Jedna je bláznovství nadšených pošuků a druhá je šílenství zločinných pomatenců.
Tak tohle ukládám do archivu, protože jsi to vystihl dokonale.
Gréta avatar 31.5. 11:37 Gréta | skóre: 24 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů

si jako myslim že člověk má vodjakživa právo vobsazovat ve vesmíru novej lebensraum pro svuj volkerschaft ;D ;D

Everyone dies but not everyone lives - William Wallace ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗNo lives matter!!!!
31.5. 09:26 dqqw
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Vsechno dotekove. Je problem to mackat v aute za normalni jizdy.

Pri reentry, za 10g, otresech a rotaci to musi byt sranda to obsluhovat. Ale urcite tam maji par her, ktere si mohou zahrat po pristani :-))
BWPOW avatar 31.5. 09:47 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
  1. Preto je to vsetko automatizovane a myslienka je, ze obsluha by do toho nemala vobec zasahovat
  2. Najdolezitejsie komponenty maju aj fyzicke ovladanie
Dolezite je aj to, aby nemali okolo seba tisic roznych zobrazovacov vsetkeho mozneho, ale mali vsetko vzdy vo svojom zornom poli a "taby" si vedia prepnut aj tlacidlami na sedadle.
Prisiel som, videl som, hmm ... bwpow.eu
31.5. 10:29 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
V podstatě nic nového. Upřímně řečeno, v přítomnosti lidského elementu na orbitě nevidím žádný smysl. A blouznění o expanzi na jiné planety, jen vyvolává planou naději, že se skupina vyvolených bude mít kam přesunout, až ti nejrůznější inženýři lidských duší učiní zemi definitivně neobyvatelnou.
31.5. 11:11 _
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jsi prostě už stará senilní konzerva, bez fantazie a relevance pro budoucnost.
31.5. 12:28 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Rád ti tuhle budoucnost přenechám. Nech se laskavě vystřelit co nejdřív.
31.5. 13:17 _
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Však nám ji již brzo přenecháš, o tom není pochyb.
31.5. 13:33 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ty se už nech co zahrabat vrstvou hlíny, už na to tobě nezáleží.
31.5. 13:57 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
???
31.5. 14:27 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
!!!

Svět patří mladým.
31.5. 14:49 Nie som robot
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
svet patri zlym!
Max avatar 31.5. 11:35 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Já ten smysl vidím velký, urychluje to vývoj. Zatím nemáme stroje a AI na takové úrovni, aby dokázaly nahradit člověka. Jedna malá závada a je konec, přitom člověk by to dokázal opravit relativně rychle. Takže člověk na orbitě, na Měsíci a i jinde je zatím stále důležitý a dlouhou dobu ještě bude. A nedělám si iluze, že schopná autonomní AI tu bude do 500 let. Ještě zbývá hodně pokroku, aby se vylepšil hw (výkon, napájení, ochrany před zářením, sensory apod.) a i sw.
Stačí se podívat na automobilový průmysl, kdy asi nastane doba plného AI a bezvolantových aut? Ano, něco už je, ale je to stále v režimu test a jezdí na stále stejným místě (jedno město).
Zdar Max
Měl jsem sen ... :(
31.5. 12:31 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nevím, ale řekl bych, že náklady na vystřelení boxu se sadou nových družic budou řádově mnohem nižší, než na vystřelení cca 2x 100 kg živé váhy + nezbytné příslušenství.
Max avatar 31.5. 13:11 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Samozřejmě, ale člověk za rok zvládne to, co robot za dvacet. A pak jde s tím i ruku v ruce vývoj cestování pro lidi.
Zdar Max
Měl jsem sen ... :(
1.6. 10:02 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
JO. Neškodilo by, kdyby někteří jedinci přispívající do zdejších diskuzí odcestovali co nejdřív. (viz výše)
1.6. 22:59 j
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Myslis jako zapichnout vlajku a sebrat par sutru? Na Mesici byl JEDINY vedec. Vsechno ostatni byli vojaci, ktery tam leteli jen a prave kvuli zapichnuti ty vlajky a porizeni fotek.

Ve skutecnosti je libovolnej automat radove uzitecnejsi a radove levnejsi.

Cestovani lidi je hovadina i v podobe cest do prace. Specielne v situaci, kdy nejmin 50% z nich stejne sedi nekde v kanclu. Meziplanetarni cestovani je pak velehovadina. Minimalne dokud nebudem schopny na ten Mars doletet v radu jednotek dnu max.

Ostatne, zajimavy, ze se prave v souvislisti s timhle startem nejak pozapomelo, ze prave amici davaji od ISS ruce pryc a nechteji dal platit dalsi provoz. Pritom bez provozu staly stanice mnohem vetsich rozmeru se jaksi ani na Mesic neda nic moc dopravit.

Dokonce je to tak, ze pokud by na mesici mel byt nejaky trvaly provoz, tak je treba velka stanice i u nej.

---

Dete s tim guuglem dopice!
Max avatar 2.6. 00:39 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Bagatelizace a zesměšňování pro mně nejsou žádné argumenty ani cesta k nějaké rozumné diskusi.
Zdar Max
Měl jsem sen ... :(
2.6. 12:48 drnest | skóre: 10
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů

Jéčko, to je jak rádio Jerevan :-D

"amici davaji od ISS ruce pryc a nechteji dal platit dalsi provoz"

Ano je to pravda jen s drobnými rozdíly. Nejsou to amíci, ale rusové a nejedná se o ISS, ale o budoucí stanici Gateway u Měsíce.

NASA nastínila blízkou i vzdálenější budoucnost ISS
31.5. 11:48 Nie som robot
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
31.5. 11:53 Nie som robot
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Max avatar 31.5. 12:05 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Měl jsem sen ... :(
31.5. 17:30 marbu | skóre: 30 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Docela mě překvapilo, že rozhraní pro ruční řízení, které včera a dneska testovali, nejen vypadá (to jsem čekal, navíc to tam mají přímo napsané) ale se i ovládá úplně stejně jako na jejich webové hře simulující dokování s ISS, tj. pomocí stejných gui tlačítek zobrazených na tom dotykovém displeji. Skoro jsem čekal, že tam někde mají nějakou sadu joisticků nebo tlačítek.
I think warning here is a bug. There is no point in being so cool in a cold world.
Max avatar 31.5. 18:01 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ano, je to simulátor, takže to vypadá stejně. Tlačítka tam mají pro nějaké kritické věci, ale nevím, pro co všechno.
Zdar Max
Měl jsem sen ... :(
31.5. 19:21 marbu | skóre: 30 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jako jo, akorát jsem si do včerejška představoval, že mezi ty kritické věci patří nějaký emergency joystick (který je někde schovaný, případně sada tlačítek) pro manuální řízení lodi. Ale ono to v reálu vypadá uplně stejně jako když si spustíš ten simulátor na tabletu.

Dobře je to vidět např. na obrázcích z článku NASA astronauts successfully pilot SpaceX’s Crew Dragon spacecraft manually for the first time.
I think warning here is a bug. There is no point in being so cool in a cold world.
Josef Kufner avatar 31.5. 19:34 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ono mají nouzová tlačítka – jsou to ty řádky pod displeji. Prý to je jen pro případ, že by se porouchaly ty displeje. Asi ve vesmíru není problém mít ruce na dotykovém displeji a při startu a přistání je to jedno. Také bych očekával nějaký joystick na křesle, ale ten simulátor jsem si na velkém dotykovém displeji zkoušel a je to docela v pohodě.
Hello world ! Segmentation fault (core dumped)
BWPOW avatar 31.5. 19:57 BWPOW | skóre: 23 | Kosice
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Aj na ruckach sedadiel su tlacidla, ktorymi sa daju vykonavat niektore zakladne operacie, hlavne bezpecnostneho charakteru + vysielanie a prijimanie audia atd. Skusam to googlit, lebo pred casom som o tom cital skvely clanok, ale teraz google vyhadzuje akurat hromadu komercneho hype bordelu, takze to neviem najst.
Prisiel som, videl som, hmm ... bwpow.eu
1.6. 02:37 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Skoro se až nechce věřit, že vzlétly z téhle země. Tohle by mohlo přerůst v občanskou válku, v kombinaci s COVIDem americkou ekonomiku totálně zdecimovat a stáhnout do recese zbytek světa…

RIP Floyd.
1.6. 03:21 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Sorry, viděl jsem nějaké další záznamy a změnil jsem názor. Tohle je občanská válka. Demonstrace je příliš mírné označení na to, co se tam děje.
1.6. 04:57 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jestli na tu Národní gardu a vojenskou policii začnou střílet, tak možná bude. Ale zatím je to jenom bordel jako v osmašedesátém: https://politikus.ru/uploads/posts/2020-05/1590918306_2020-05-31-11.44.29.jpg
1.6. 10:08 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Tak to je vážně úlet. Pri nic za nic asi toho "něžného obra" nezakleknul. Podle toho co jsem četl spolu kdysi pracovali v nějaké bezpečnostní agentuře, takže ho nejspíš dost dobře znal na to, aby mu z toho krku neslezl. Ten černoch nebyl žádné neviňátko. Kdyby se skutečně snažil sekat po návratu z basy dobrotu, tak by nedopadl jak dopadl.

Celá ta záležitost dokazuje pouze to, kam to dotáhla přehnaná hyperkorektnost v USA. A výsledkem bude pouze to, že to nažene další voliče do Trumpovy náruče. Bílé i černé.
1.6. 10:15 Zdenek 'Mst. Spider' Sedlak | skóre: 38 | blog: xMstSpider
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Zkus někoho požádat, ať ti deset minut klečí na krku - pokud to přežiješ, o čemž silně pochybuji, můžeš napsat blog o adekvátních donucovacích prostředcích.

A to píši jako člověk, co by při pohledu na rabující plebs sáhl minimálně po gumových projektilech. Minimálně.
1.6. 10:36 luky
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Preliminary results from the official autopsy found no indication that Floyd died of strangulation or traumatic asphyxia, but that the combined effects of being restrained, underlying health conditions, including coronary artery disease and hypertensive heart disease, and potential intoxicants in his system likely contributed to his death
1.6. 12:15 Zdenek 'Mst. Spider' Sedlak | skóre: 38 | blog: xMstSpider
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Takže kdyby přijeli, rychle ho sebrali, nedělali divadlo na mobily, tak to přežil a nemuseli mít plebs na ulici, že jo
1.6. 12:23 luky
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Tak oni ho chteli rychle sebrat, ale nejdriv meli problem ho z jeho auta vytahnout a pak zas do dalsiho auta nacpat. To je i duvod, proc skoncil na zemi vedle auta - nechtel do nej nastoupit.
1.6. 11:02 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Nemyslím, že by někoho žádal o to aby mu klečel na krku. Myslím si, že tomu mohl předejít tím, že by mu na ten krk nikdo zakleknout nemusel.

Nevím jak se celá ta záležitost sběhla. Ani to nehodlám zjišťovat. Ale je to už minimálně podruhé, co se stal záminkou k tomu aby černoušci začali dělat bordel smrtelný úraz černého darebáka, ke kterému přišel při výkonu svého povolání.
1.6. 11:04 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
A než se tady začnou ozývat zdejší magoři podotýkám, že mám mezi černoušky řadu přátel a ti mají na věc podobný náhled jako já.
1.6. 11:41 _
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Loool, nejsem rasista, mám za kámoše černochy. Nejsem sexista, mám i kamarádky. Nejsem xeonofob, nakupuji u větrošů ve večerce.

To ti už dneska nikdo nežere, to fungovalo možná tak dekádu z5. Najdi si jinou výmluvu.
1.6. 16:08 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Největší hovada která jsem v životě potkal nebyla ani mezi cikánama, ani mezi černochama, ani mezi asiaty, s nimiž jsem strávil docela dost času. Ale mezi čechy, co se přesně tak jako ty tupě usoudili, že ten, kdo má na hlavě číro, nebo je vyholený, nebo se jinak vymyká jejich chápání světa, musí být nutně rasista. Zákeřné zbabělé brněnské svině, které neváhaly ze zálohy zaútočit na nic netušícího kámoše z kolejí jen proto, že na něj ukázal prstem zamindrákovaný majitel, když jsem byl zrovna na hajzlu.
1.6. 17:47 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Největší hovada která jsem v životě potkal nebyla ani mezi cikánama, ani mezi černochama, ani mezi asiaty, s nimiž jsem strávil docela dost času.
Ja vim, nejsi rasista, ale ... presto o lidech uvazujes na zaklade jejich vnejsich vlasnosti.

Dosad si misto toho jiné vlasnosti a (mozna) uvidis, co za hloupost pronesls.
Největší hovada která jsem v životě potkal nebyla ani mezi modrookýma, ani mezi černovlasýma, ani mezi zrzkama, s nimiž jsem strávil docela dost času.
Nebo
Zákeřné zbabělé brněnské svině, které neváhaly ze zálohy zaútočit
vs.
Zákeřné zbabělé židovské svině, které neváhaly ze zálohy zaútočit

Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
1.6. 19:03 luky
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ja vim, nejsi rasista, ale ... presto o lidech uvazujes na zaklade jejich vnejsich vlasnosti.
Tak spousta vlastnosti je alespon castecne ovlivnena genetickou vybavou. Dobre je to videt u psu, kde mezi jednotlivymi plemeny jsou znacne rozdily v charakteru.
1.6. 23:53 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pokud tohle tvrdíš o lidech, jsi rasista :-D
2.6. 00:25 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Lidi se cíleně nešlechtí. Což neznamená, že rozdíly neexistují, ale pro jejich dostatečně přesný opis je potřeba významně složitější model než je většina lidí schopna pochopit, neřku-li sestrojit a z paměti spočítat, takže je vesměs lepší jim říct, ať se o to ani nepokoušejí a s těmi pojmy raději vůbec nepracují, protože závěry, které jinak produkují, je pak bolestivé poslouchat.
2.6. 09:28 -
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Brva kůže je vlastnost jako každá jiná. Tedy obdobné rozdíly lze očekávat u mnoha na první pohled neviditelných vlastností. To je biologická realita.

Zbytek je politika.
3.6. 14:00 podlesh
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Brva kůže je vlastnost jako každá jiná. Tedy obdobné rozdíly lze očekávat u mnoha na první pohled neviditelných vlastností. To je biologická realita.
Ne, není. Různé vlastnosti se chovají různě a hodně dlouho trvalo než dokázali biologové najít alespoň nějaká pravidla (Mendel natrefil na obzvláště jednoduchý případ).
Zbytek je politika.
Ano. Jakmile někdo použije termín "biologická realita", můžeme si být na 99.9% jisti že se jedná o čistou politiku.
2.6. 11:07 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Zajímalo by mě, kde se ve vás bere to přesvědčení, že černoušci a jiné, pro nás exotické skupiny nehovoří o nás zrovna tak. A pokud to neuráží mne, nechápu proč by to mělo urážet je.

Mimochodem, na rozdíl od vašeho příkladu jsem použil konkrétní označení dle lokace a chování, nikoliv dle etnické příslušnosti a schématu založeného na nějakém obecně zažitém stereotypu, jako jste ve svých příkladech uvedl vy. V tom je ten zásadní rozdíl.

Rasismus je sám o sobě neutrální. Nebezpeční jsou ti, co si ho berou do ruky jako klacek aby mohli páchat násilí na jiných. A je úplně jedno, jakou mají barvu pleti. V USA možná šikanujou černochy, ale v JAR je situace zcela opačná a tady o tom neštěkne ani pes, aby snad náhodou na něj někdo neukázal prstem.
2.6. 11:47 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Myslím, že to označení platí nejvíce na vás... schvalovat zabití člověka s předpokladem, že to byl kriminálník, i když sám přiznáváte, že nevíte, jak se celá událost seběhla, to normální člověk neudělá.
Quando omni flunkus moritati
2.6. 13:02 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Vy jste nepoučitelný. Opět si vymýšlíte a překrucujete co jsem napsal, protože jsem o žádném schvalování ani nepípl. Jenom jsem poukázal na to, že ten člověk nebyl bezúhonný, a k tomu aby se ocitnul v té situaci svým dílem přispěl. A taky jsem podotknul že to není poprvé co černoušci zneužívají úmrtní černocha, který šel svému štěstíčku naproti, k tomu aby mohli dát průchod vlastní nenávisti.

Zajímavé je, že u jiné skupiny, jako např. hispánci, v případě že policie sejme podobného typa z jejich řad, takovým způsobem nedemonstrují.

3.6. 01:16 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
takže ho nejspíš dost dobře znal na to, aby mu z toho krku neslezl. Ten černoch nebyl žádné neviňátko. Kdyby se skutečně snažil sekat po návratu z basy dobrotu, tak by nedopadl jak dopadl.

Takže zároveň obhajujete ten postup (znal ho dobře, aby z něj neslezl), ale zároveň to neschvalujete. To je trochu rozpor, ne?
černocha, který šel svému štěstíčku naproti
Což je vám jasné na základě toho, že nevíte, jak se celá událost seběhla.
hispánci, v případě že policie sejme podobného typa z jejich řad, takovým způsobem nedemonstrují.

To je docela chyba, protože policie nikde není od toho, aby někoho "sejmula"
Quando omni flunkus moritati
1.6. 12:17 Zdenek 'Mst. Spider' Sedlak | skóre: 38 | blog: xMstSpider
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
No jo no, kdyby se všichni chovali jak mají, na co by byla policie. Kdyby byly v pr* ryby... prostě ten zásah podělali a na konci je mrtvý člověk a plebs v ulicích.

Mimochodem plebs dělá problémy bez ohledu na barvy pleti - v USA, v Evropě, všude... Tak proč jim dávat záminku.
Max avatar 1.6. 12:36 Max | skóre: 68 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Podle mně klečením na krku dotyčného nedusil. Aby ho dusil, musel by mu klečet na krku zepředu, nebo by musel klečet z druhé strany, kde má tepnu (to by ho ale nedusil, ale rychle uspal).
Pokud se tedy černoch dusil, tak jen kvůli tomu, že někdo seděl na něm a měl přimáčklý hrudník. To pak člověk může s velkou snahou mluvit, ale je to vysilující a postupně už nebude moci roztáhnout plíce a udusí se.

Jak moc je přimáčknutí hrudníku vážné bylo ověřeno několikrát. Stačí být ve výkopu a být zavalen po prsa hlínou a než vás vyhrabou, udusíte se.
Zdar Max
Měl jsem sen ... :(
1.6. 12:40 kol-ouch
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Prdel je, že nemusíš být ani moc hluboko zasazený - když tě to blbě a rychle chytí, tak ti zvýšený krevní tlak (ze zmáčklých cév) škubne něco v hlavě, nebo v srdci a je vymalováno. Viděl jsem dokumentaci k případu, kdy byl borec zavalený do pasu a nedal to
1.6. 13:18 Zdenek 'Mst. Spider' Sedlak | skóre: 38 | blog: xMstSpider
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Dobrá poznámka - podle některých údajů na něm klečeli 3 nebo 4.
3.6. 16:14 Seržant
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Podle mně klečením na krku dotyčného nedusil. Aby ho dusil, musel by mu klečet na krku zepředu, nebo by musel klečet z druhé strany, kde má tepnu (to by ho ale nedusil, ale rychle uspal). Pokud se tedy černoch dusil, tak jen kvůli tomu, že někdo seděl na něm a měl přimáčklý hrudník.
Takže by asi moc nepomohlo, kdyby ten policajt neměl koleno na jeho krku? Přitom tohle bylo asi nejvíc kritizované. Otázka je, jak pachatele zneškodnit, aniž by se mu něco stalo. Obávám se, že nějaké riziko nehody tady bude vždycky. Zvlášť když je pachatel velký a agresivní, případně i nadrogovaný. Jestli nesedíte jen u počítačů a jestli jste se někdy s někým poprali, tak musíte vědět, že odhadnout správnou míru použité síly je těžké. V podstatě vždycky se tu člověk pohybuje na tenkém ledě - na rozhodování má minimum času, pracují emoce, nemáte kompletní informace a stejně se musíte nějak rozhodnout, např. neznáte zdravotní stav toho druhého, zároveň nevíte, jestli nemá v kapse nůž nebo jinou zbraň, jestli vás nebude chtít pokousat nebo poškrábat, jestli vás tak nenakazí nějakou nemocí atd. Jasně, nejlepší je se tomu fyzickému střetu vyhnout, ale když jste policajt, tak ty fyzické střety jsou nedílná součást vaší práce. Měla by být snaha to množství nehod minimalizovat, ale stejně tu zbude nějaké nenulové riziko. A kdo ho má nést? Podle mého spíš ten, kdo se rozhodl páchat trestnou činnost a pak navíc dělat problémy při zatýkání. Byla to jeho volba. Nemyslím si, že by riziko měl nést daňový poplatník, oběť trestného činu nebo policista, který má za nevalný plat zajišťovat naši bezpečnost a vymahatelnost zákonů.
3.6. 16:57 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Podle mě se zdejší mudrlanti co toho policajta odsuzují naposledy prali někdy ve školce, jestli vůbec. Takže o té situaci nemají reálnou představu.
Bystroushaak avatar 3.6. 23:24 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Podle mě se zdejší mudrlanti co toho policajta odsuzují naposledy prali někdy ve školce, jestli vůbec. Takže o té situaci nemají reálnou představu.
Jakou reálnou představu? Vždyť jsou tam na něj tři, zavražděný černoch leží na zemi s rukama spoutanýma za zády a prosí policajta ať mu sleze z krku, že nemůže dýchat („PLEASE, PLEASE, I can't breathe“), předtím než volá svojí mámu a následně je udušen k smrti. Tam žádné „praní“ neprobíhá, a předtím s nimi spolupracoval. Policajt co ho zabil tam přijel až po jeho zatčení, až když je dávno po všem a jediné o co šlo je ho naložit do auta. A z těch videí je docela jasně vidět, že nekladl žádný odpor, ale zakopl (podruhé, poprvé asi deset minut předtím), když ho vedli do auta z obrubníku do silnice.

Jako kdyby se to stalo třeba při zatýkání, nebo kladení odporu, tak prosím, asi by tam byl nějaký prostor pro spekulace. Tohle je natočené z asi pěti různých uhlů několika lidmi a minimálně dvěma bezpečnostními kamerami, když vynechám policejní kamery co nosí na rameni. Každý kdo má deset minut času se může sám podívat jak to bylo a že policii tou dobou nehrozilo naprosto žádné nebezpečí a doslova tam klečí na neozbrojeném, odpor nekladoucím občanovi, zatímco ignorují slušné prosby ať ho nedusí, a zároveň zděšené varování okolostojících, že ho očividně dusí k smrti.

Tady je to vidět jasně: https://www.youtube.com/watch?v=fGVjnhm51Rg&bpctr=1591221007

A tady máš deset dalších uhlů a videí: Udělejte si obrázek sami: Takhle probíhal policejní zákrok na černocha Floyda.
4.6. 10:03 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
K tragédii se v Minneapolisu začalo schylovat v pondělí 25. května minutu po 20. hodině místního času během telefonátu prodavače z večerky na tísňovou linku 911. Náctiletý mladík za kasou policisty informoval o tom, že Floyd mínil zaplatit cigarety dvacetidolarovou bankovkou, která je zřejmě padělaná, a zboží odmítá vrátit. Hlásil také to, že muž je opilý.

Z přepisu záznamu telefonátu na policii, který na svém webu zveřejnila mimo jiné místní televize Fox 9, vyplývá, že mladík policisty dále informoval, že „po muži chtěl cigarety zpátky, ten to ale odmítl, zdá se být hrozně opilý, mimo sebe a nechová se slušně“.
Děkuji. Obrázek jsem si udělal.

Vy naprosto opomíjíte fakt, že chybí záznam, na kterém by bylo vidět za jakých okolností se dostal mimo to auto a co se při tom sběhlo.
4.6. 10:58 prqek | blog: prqek
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ty zase máš jasno v tom, co se dělo, že jo? To, že policie někoho usmrtí, by v civilizovaná společnosti měla být vyjímečná záležitost. Z tvých argumentů mám pocit, že by ti nevadilo, kdyby to bylo při kdejakém zatýkání. Nebo se pletu?
4.6. 11:30 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Z tvých argumentů mám pocit, že by ti nevadilo, kdyby to bylo při kdejakém zatýkání. Nebo se pletu?
Těžko říct, ještě před nějakou dobou se p. Kapica rozčiloval nad šikanou ze strany PČR, jak se chová strašně brutálně že nutí nosit lidi roušky v lese.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
5.6. 11:07 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Vůbec mě nepřekvapuje, že vy ten diametrální rozdíl nevnímáte.

Člověk bez roušky na volném prostranství žádný zákon neporušuje – porušuje pouze nelogické a nesmyslné vládní nařízení.

I kdyby se při tom na hlavu stavěl, je to každému jedno a nepředstavuje žádné ohrožení. Pouze vaše chorá mysl, vybičovaná nesmysly které se na ni valí ze všech stran, v něm vidí zdroj nákazy – bez ohledu na fakt, že je ten člověk zcela zdráv.

A vy takového člověka dáváte do stejné roviny s osobou, která se pod vlivem neznámé látky chovala nevypočitatelně, odmítla nejenom zaplatit jinou bankovkou, ale i vrátit zboží. Zcela evidentně odmítla následovat pokyny policistů a evidentně byla i agresivní – i z těch záběrů, které k dispozici jsou je zřejmé že rozhodně nebyl jklidný jak habešánek, když skončil na zemi zakleknutý třemi policajty.

Styďte se! Ale hlavně si na to vzpomeňte, až podobná existence jednou bude někde na ulici ohrožovat vás!
5.6. 11:22 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Člověk bez roušky na volném prostranství žádný zákon neporušuje
To sotva. Jestli existuje zákon, který vládě umožňuje takové nařízení vydat, téměř určitě v něm bude stanovena povinnost se tím nařízením řídit.
porušuje pouze nelogické a nesmyslné vládní nařízení.

To je pouze váš nesmyslný názor.
bez ohledu na fakt, že je ten člověk zcela zdráv
Ano, vy máte křišťálovou kouli a přesvědčení. My ostatní do budoucnosti nevidíme, takže to, že je ten člověk teď, když se s ním potkávají jiní, zcela zdráv, holt můžeme poznat až za několik dní poté.
Ale hlavně si na to vzpomeňte, až podobná existence jednou bude někde na ulici ohrožovat vás
Možná vám to z nějakého důvodu nedochází, ale mezi "nedělat nic" a "pomalu a brutálně zabít člověka" je docela velký počet akceptovatelných možností. Například použití donucovacích prostředků v přiměřené míře, dokud podezřelý klade odpor.
Quando omni flunkus moritati
5.6. 12:31 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
bez ohledu na fakt, že je ten člověk zcela zdráv
Jo jo, takových už bylo, co byli "zcela zdrávi", u kterých se pak po tejdnu ukázalo, že už 14 dní v sobě nosí virus... Ale to tobě zřejmě nemá smysl vysvětlovat, ten koncept inkubační doby jsi zřejmě nepochopil ani napoprvé, ani po n-té...
A vy takového člověka dáváte do stejné roviny s osobou, která se pod vlivem neznámé látky chovala nevypočitatelně, odmítla nejenom zaplatit jinou bankovkou, ale i vrátit zboží.
Nic takového můj komentář neobsahuje.

Já jen považuju za morbidně zábavný tvůj přístup, kdy když se jedná o tebe v naší zemi, tak i žádost policie nosit roušku považuješ za šikanu, zatímco když se jedná o nějakého černocha na jiným kontinentě, tak mu můžou klidně šlápnout na krk.
Ale hlavně si na to vzpomeňte, až podobná existence jednou bude někde na ulici ohrožovat vás!
Podobný existence mě už ohrožovaly. Samozřejmě chci, aby v takovým případě policie zakročila, ale rozhodně nechci, aby tomu člověku na místě klekli na krk a zabili ho. Nejsem psychopat. Stydět by ses měl především ty, jestliže takovej postup schvaluješ.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
7.6. 11:11 Darth Phantom | skóre: 18 | blog: Kelvin_Fitnick | Doma
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Zdar. Jsem se chtěl zeptat, zdali jsi již dočista nezpičovatěl pilnou četbou a2alarmu a dalších komunistických kolibáčovin. Když se tak jen mimochodem dívam na tu patičku :-)
Tahle patička nemá hlavu ani patu
7.6. 21:23 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Koukám, že své oblibené činosti "vymyslim si, co krályk čte, a pak mu to zkritizuju" ses stále nevzdal. Nejdřív čtu Respekt, pak čtu Reflex, teď čtu A2larm... Zajímalo by mě, co budu číst příště, asi Annu proletářku :-D

Asi sis toho nevšim, ale patička neodkazuje A2larm, nýbrž wikipedii.

Kdybych jednoho krásnýho dne měl takovýho volnýho času, že bych mohl číst aspoň polovinu toho, co podle tebe čtu, to by byla paráda...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
7.6. 22:11 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ten článek v patičce je tendenční. Napřed tvrdí:
Líčí, jak jeho předci vypalovali husté křoviny v okolí každé farmy, aby tak vytvořili pás území, který případné plameny zastaví.
A vzápětí za husté křoviny patrně považuje vzrostlé stromy:
V současné době je takové vypalování křovin nemyslitelné. Deník The Sydney Morning Herald informoval o případu 71letého důchodce Johna Davida Chia, který nechal ze svého území odstranit 74­ vzrostlých stromů. Ekologičtí aktivisté se zděsili a celá věc putovala k soudu. Ten sice uznal Chiův argument, že měl obavy z požáru, a proto chtěl území vyčistit, přesto mu uložil vysoký peněžitý trest. V rozsudku konstatoval, že došlo k velké újmě na životním prostředí.
Prostě prémiové informace.
8.6. 06:16 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jak to znělo v originálu? Nešlo náhodou o "thick bush"?
8.6. 12:37 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ono je to úplně jedno, protože problém je už v tom, že to tvrzení, že se málo pálilo (ať už thick bush nebo něco jinýho), je vycucaný z prstu. Pálilo se minimálně stejně jako v minulosti, případně víc. Ale prostě někdo to zřejmě potřeboval na někoho hodit a 'ekoteroristi' byli po ruce.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Blaazen avatar 4.6. 12:59 Blaazen | skóre: 23 | blog: BL
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Mně to z těch videí úplně jasné nepřijde. Navíc práce policisty je relativně riziková. Spíš mě zajímají ty dvě pitvy s opačným výsledkem. Někdo lže...
4.6. 16:34 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
A co když lžou obě? Jediný jistý fakt je, že policie v USA někoho zavraždí každou chvíli, a stává se že když polda zastaví auto a uvidí za okénkem "černou hubu", tak začne střílet rovnou. Nedávno proběhla kampaň se samolepkami na auta, kde řidiči prosili policisty aby je nezabíjeli.

Ano, práce policisty je riziková. Ale když ve statistikách uvidím za rok jednoho policajta zabitého zločincem, a tisíc policajty postřílených civilů, z nichž většina nespáchala žádný zločin a polovina šla prostě okolo, zrovna když si tihle psychopati hráli na kovboje, tak mě napadne že tam je něco sakra špatně!

Takže napětí, způsobené policejní brutalitou a beztrestností jejích pachatelů, rostoucí celé dlouhé roky, teď prostě překročilo mez a explodovalo. V tuhle chvíli už počet zraněných policistů a dalších "pomahačů režimu" jde do stovek, z toho postřelených jsou minimálně desítky. Občanská válka to není, ale pouliční určitě.

Mezitím v bohatých čtvrtích vznikají silně vyzbrojené domobrany, a jestli se zapojí i ty, už by se to za občanskou válku do jisté míry považovat dalo. Zatím je to jenom mírná forma povstání spodiny. Plus rabování obchodů - symbolu bohatství vyšších vrstev a napadání kanceláří CNN - symbolu provládních lží.
5.6. 15:04 xxx
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
CNN - symbolu provládních lží
Videl si vubec behem posledniho tydne alespon jednou titulku CNN?
Fluttershy, yay! avatar 5.6. 15:29 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Plete si Faux News (natož OAN) a CNN. To druhé je „pouze“ korporátní establishment.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
6.6. 15:14 xxx
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Neplets si nahodou zatykani s BDSM? Tam safeword skutecne je.

Myslet si, ze se policajti vzdaj prevahy nad 120kg chlapem jen proto, ze se zatykany konecne zklidnil, je fakt naivni. Tezko poznaj jestli si dal pauzu, neb uz to mysli vazne. Stejne tak myslet si, ze je dojme "I can't breath". To zrejme tvrdi kazdej zakleknutej. Ostatne zakleknuti je bezny postup i u nas. Docela mne prekvapilo, ze vcetne chokehold, ktery nekde v USA uz nesmi pouzivat (jen narizeni, ne zakon), je u nas legalni. Co se tyka zaznamu, tak fakt nevim jestli se branil, nebo jestli ho chlapci jen nebyli schopni vyndat/nandat z/do auta. Zarazejici je, ze je ani nerozhodi pritomnost tech okolostojicich. Skoro bych rekl, ze jedou podle nejakych guidelines.

No holt se tam budu s 1000 mrtvymy v dusledku zatykani nad tim trochu zamyslet. Proces jeste bude zajimavy. Z 3rd degree murder udelali 2nd degree murder. Tedy z neceho co odpovidalo spis nedbalostnimu TC udelali umyslny TC. Tak bude zajimavy jak mu umysl dokazou. Uz ted jsou stiznosti, ze casto to k odsouzeni ani nedojde.

Holt maji v USA asi ponekdu tvrdsi pristup. Jsem sice rad, ze ho tady nemame. Na druhou stranu to ale znemena, ze kdyz ti udelaj ve vesnici technoparty, tak si muzes tak akorat uzivat duneni, protoze proti technarum uz dneska nikdo silou nezasahne. Nakonec mozna v USA dosahnou te vytouzene spravedlnosti, ze afroamericana nikdo nesebere. BTW od demokratu z NYC uz zaznelo, ze chteji aby bezduvodne volani 911 kvuli afroamericanum byl hatecrime.
JiK avatar 8.6. 15:48 JiK | skóre: 8 | blog: Jirkoviny | Virginia
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
tak soudruzi v minneapolisu uz se rozhodli zrusit celou policii

Dal jsem popkorn do mikrovlnky a tesim na pozorovani dalsiho levelu budovani "lepsich zirku uz dnes" z rukou socialistickeho starosty a guvernera.
Fluttershy, yay! avatar 8.6. 16:02 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Yeah, good. Okay.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
8.6. 17:17 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
tak soudruzi v minneapolisu uz se rozhodli zrusit celou policii

Dal jsem popkorn do mikrovlnky a tesim na pozorovani dalsiho levelu budovani "lepsich zirku uz dnes" z rukou socialistickeho starosty a guvernera.
To já taky. Jsem zvědav, jak to tam dopadne. Může to být dobrý i špatný. Ale moc nadějí tomu nedávám, přecijen, řeč je o USA, kde (aspoň mi to tak přiadá) jsou švihlí skoro všichni nalevo, napravo, všude...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Fluttershy, yay! avatar 8.6. 19:52 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Klídek. Nebylo by od věci poslechnout/přečíst si, co říká např. ten Alex Vitale. To je vcelku selský rozum (při pohledu z Evropy).

Když jediné, co máš, je kladivo, všechno vypadá jako hřebík.

Místo zdravotnického, sociálního,… personálu dostaneš pendrek a lidi postižené závislostí, bezdomovectvím,… prostě vytlučeš dopryč. (To je ještě ten mírnější případ, pak šílenosti typu „killology“).

Takže co třeba to dělat jináč…?
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
1.6. 15:18 bigBRAMBOR | skóre: 34
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pri nic za nic asi toho "něžného obra" nezakleknul. Podle toho co jsem četl spolu kdysi pracovali v nějaké bezpečnostní agentuře, takže ho nejspíš dost dobře znal na to, aby mu z toho krku neslezl. Ten černoch nebyl žádné neviňátko

tak zatim co majitelka te agentury si neni jista jestli se nekdy v agenture potkali, ty vis ze ho nejspis znal dost dobre na to aby mu z krku neslezl, zajímavé.

Kdyby se skutečně snažil sekat po návratu z basy dobrotu, tak by nedopadl jak dopadl.

Aneb, to je bratr toho zavraždeného, to bude asi taky pěknej lump :-D
1.6. 16:00 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Co tady meleš o bratrovi?! Nějakým způsobem se na tom místě ocitnul. A pro nic za nic na něj ti policajti asi taky neskočili.
3.6. 07:33 bigBRAMBOR | skóre: 34
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
o bratrovi? skoda, neznas ceske narodni poklady, ale to se neda nic delat. Kecas blboste, kdo se octnul na nejakem mi ste se tam neoctnul nahodou a proto se nemuze divit co se mu stalo. To jsou kecy, fakt jsem prekvapenej tohle slyset od dospeleho cloveka. Ta holka si taky za znasilneni muze sama, podivejte se jak se obleka :-D
3.6. 08:19 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jestli někdo kecá blbosti, tak seš to ty. Zamysli se laskavě nad příkladem co jsi uvedl.

Srovnávat oběť znásilnění s polapeným pachatelem trestného činu může jen úchyl, který ztratil pojem o tom za jakých okolností se ztrácí nárok na slušné zacházení. - Ne. Není to na základě barvy kůže, jak se černoušci snaží podsunout. Je to za předpokladu, že uděláš něco protizákonného. V tom je ten rozdíl mezi situací v níž se ocitá oběť znásilnění, a situaci v níž se ocitá přistižený pachatel trestného činu!
3.6. 09:49 prqek | blog: prqek
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ten rozdíl je zhruba srovnatelný s rozdílem mezi přiměřeným spacifikováním toho pachatele a jeho zabitím.
3.6. 10:02 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To snad nemyslíš vážně?! Ty srovnáváš úmyslný trestný čin s nešťastnou náhodou?!

Podle dostupných informací ten zesnulý Floyd nebyl ve stavu kdy byl zcela nevypočitatelný! Zrovna v pondělí jsem jel z Karláku metrem na Zličín a v něm seděl podobný týpek. Nevím jestli byl opilý, pod vlivem drog, nebo magor, ale každý se raději klidil z cesty. Seděl jsem, vyhýbal se přímému očnímu kontaktu, protože to bývá u podobných jedinců nejčastěji příčinou výbuchu agresivity a celou cestu byl ve střehu. Dotyčný si něco mumlal, semtam se pokoušel navazovat hovor s těmi co si ho při nástupu nevšimli a nestihli prchnout. A občas si "jen tak" bouchnul, tak že bylo ihned jasné, že by to s jeho pacifikací nebylo tak snadné. Vše se obešlo bez incidentu a na Zličíně ho zřejmě vybrali – nezajímal jsem se o jeho další osud. Spěchal jsem na bus. Ale přísahám, že pokud by se o něco pokusil, tak by nejspíš dopadnul jak ten Floyd.
3.6. 10:23 prqek | blog: prqek
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Asi jsem nešikovně vyjádřil. Tvrdím, že podobně jako je blbost tvrdit, že žena může za to, že byla znásilněna, protože byla vyzývavě oblečená, je velmi podobná blbost tvrdit, že ten člověk může za to, že byl zabit, protože je podezřelý ze spáchání trestného činu (tedy ne obecně, u některých činů by blbost nebyla, ale někdo tu zmínil, že šlo o falešné bankovky, tam to blbost je). Nesrovnávám činy jako takové, ale nesmyslnost těch zdůvodnění. Ta je zhruba srovnatelná.
3.6. 10:51 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To moje zdůvodnění rozhodně nesmyslné není.

Pokud dělám věci, které jsou v rozporu se zákonem, musím počítat s následky, které mohou být i tragické. To platilo vždy!

Nemohu v žádném případě souhlasit s honem na toho policistu, jelikož je rozdíl mezi útokem sprostého vraha kterého k útoku na oběť nikdo nenutí a útokem policisty, který je nucen do konfliktu jít ať chce nebo nechce, protože je to jeho povinnost.

Stalo se, ale mohl si za to sám Floyd. Bohužel. Jenže o to v současné době jak se zdá vůbec nejde. Tahle nešťastná událost byla jen dlouho očekávanou záminkou pro další vlnu násilí ze strany frustrované černošské menšiny na které se hodlají svézt do Bílého domu demokraté, co nebyli schopni Trumpa porazit ve volbách.
3.6. 11:19 prqek | blog: prqek
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Když se žena oblékne vyzývavě, tak musí počítat s tím, že vzbudí pozornost mužů. Ovšem znásilnění je zcela nepřiměřená a nepatřičná pozornost. Když někdo páchá trestnou činnost, musí počítat s následky. O tom není sporu. Ovšem zabití jako následek placení falešnými bankovkami (pokud to tak bylo), je také zcela nepatřičné a napřiměřené. Pokud mu na tom krku klečel několik minut a měl kolem sebe několik dalších kolegů, tak to těžko lze považovat za nehodu.

To, že současná situace je důsledkem dlouhodbého napětí, je zřejmé. Ovšem přístup typu, že si za to může sám, protože je to krimináník, to napětí moc nesníží.
3.6. 18:25 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
+1
3.6. 11:58 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
s polapeným pachatelem trestného činu
Pachatelem trestného činu je člověk, který byl za ten trestný čin pravomocně odsouzen. Do té doby je to podezřelý.
Quando omni flunkus moritati
3.6. 13:05 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pachatel je ten kdo něco páchá (přítomný čas). Ten kdo něco spáchal (čas minulý) a byl za to odsouzen (také čas minulý), je odsouzený. Podezřelý (přítomný čas) je ten, kdo vypadá že nic nespáchal (čas minulý) či nepáše (čas přítomný), ale existují určité indicie že spáchat mohl, nebo by mohl.

Takže Floyd sice byl podezřelý, který by mohl po uvolnění ze zakleknutí policisty napadnout, ale zároveň byl i pachatelem, který spáchal přestupek a zcela evidentně se choval nestandartně, takže ho policisté museli zakleknout.

Podle toho co zachytila kamera předtím, tak to vůbec nevypadalo, že se situace později vyhrotí. Zcela chybí situace jak se Floyd dostal do toho policejního vozu, ze kterého se pak pokoušel uniknout. A pak následoval asi 5 minutový interval, během kterého nikdo žádné video, které by situaci objasnilo, netočil. Ale tipnul bych, že se Floyd opět pokusil utéct, takže jim nezbylo nic jiného než aby ho zaklekli. Podle všeho byl sjetý a v důsledku toho taky zkolaboval. Což ostatně potrdila i pitva.

Floyd asi nebyl zrovna vzorný otec, a docela by mě zajímalo, kdo objednal a zaplatil tu soukromou pitvu když měl zesnulý potřebu platit za cigára falešnou dvacetidolarovkou a informací. Jeho bývalá žena s dětmi které horaného dětství neviděly to asi nebyla. A ta současná na to taky nevypadá. Takže to vypadá na zcela účelový kalkul s cílem získat do ruky papír, kterým půjde ještě více rozvášnit davy.
3.6. 16:42 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pachatel je ten kdo něco páchá (přítomný čas)
Ale pachatel trestného činu, což jste napsal, je pouze člověk odsouzený za trestný čin, protože o tom, jestli je nějaký čin trestným činem, rozhoduje soud. Ne policajt.
Ale tipnul bych, že se Floyd opět pokusil utéct, takže jim nezbylo nic jiného než aby ho zaklekli.

Ano, policie má právo použít donucovacích prostředků, ale pouze v míře nezbytně nutné, to nejspíš platí tady i tam. A u takového úmrtí určitě věci neproběhly tak, že člověk se vzpíral a najednou byl mrtvej. O co, že tam byla fáze, kdy přestal komunikovat a ztratil vědomí, což je okamžik, ve kterém použití donucovacích prostředků nutné není. A pak se ukáže, jestli se jedná o profesionální policisty, nebo o násilnické darebáky, kteří by bez uniformy pravděpodobně skončili dřív či později za mřížemi sami.

Pokračovat v používání donucovacích prostředků za situace, kdy podezřelý ztratil vědomí, je jednoznačně pochybení na straně zasahujících policistů a měly by z toho být vyvozeny důsledky. A protože pravidelně nejsou (tam i tady), tak tam situace opakovaně přeroste v protesty a násilnosti.

Což samozřejmě vy nejste schopen pochopit, protože dokud něco takového nepostihne vás, tak je to v pořádku. Zcela v souladu s definicí psychopata.
Quando omni flunkus moritati
3.6. 16:55 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Pochybuji, že policajt, který je ve stresu zvládá kontrolovat životní funkce přišlápnutého typa, který se mu pokoušel pláchnout.

Jak už jsem vám několikrát opakoval – jsem realista, a proto mne něco podobného s největší pravděpodobností nepostihne.

A to že zrovna vy sympatizujete s darebáky mě taky nepřekvapuje.
3.6. 17:28 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
jsem realista, a proto mne něco podobného s největší pravděpodobností nepostihne.
Tak jistě, životní postoje rozhodně mají vliv na to, jestli se někdy dostanete do konfliktu s policií. Třeba až budete svým typickým pseudologicky-hulvátským způsobem nějakému vysvětlovat, že nemusíte nosit roušku.
A to že zrovna vy sympatizujete s darebáky mě taky nepřekvapuje
U vás není překvapením, že se argumentaci snažíte strhnout do roviny "sympatizování s darebáky". A to pořád platí, že o případu víte prd a nemůžete vědět ani to, jestli dotyčný byl darebákem (a platil falešnou bankovkou úmyslně) nebo obětí (a platil falešnou bankovkou, kterou předtím dal někdo jemu.)

Nicméně ne, nejde o sympatizování s darebáky, jde jenom o to, že v případě, že bych se buď někdy do nějakého konfliktu s policií dostal, nebo potřeboval jejich pomoc - a ono prostě někdy stačí být na špatném místě ve špatnou dobu, což je něco, co vy si zásadně nepřipouštíte - tak chci, aby v té uniformě byl profesionál a ne nějaká vypatlaná sadistická mlátička.
Quando omni flunkus moritati
3.6. 18:35 Aleš Kapica | skóre: 50 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
O mne si nemusíte dělat starost. Do konfliktu s policií jsem se nikdy nedostal a z jiných konfliktů vybruslil aniž bych skončil s monoklem na oku, či zlomenými žebry. Takže ten můj přístup bude nejspíš jiný, než vám generuje vaše chorá hlava na základě selektivního čtení.

O případu máme dost informací na to, abych si troufnul prohlásit, že si mohl dotyčný sám za to, že skončil jak skončil. A rozhodně nebyl čistý jak lilium, poněvadž kdyby byl, tak by touhle dobou žil a na tomhle serveru by po něm neštěkl pes.
3.6. 22:01 Radovan
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jak do toho zapadá střelba policistů na reportéry?
4.6. 01:01 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
O mne si nemusíte dělat starost. Do konfliktu s policií jsem se nikdy nedostal a z jiných konfliktů vybruslil aniž bych skončil s monoklem na oku, či zlomenými žebry.
A z toho má vyplývat, že tomu tak bude i dál?
O případu máme dost informací na to, abych si troufnul prohlásit, že si mohl dotyčný sám za to, že skončil jak skončil.
Jo, třeba to, že člověk, který ho zabil, je teď bývalý policista. Ale chápu, že postup toho člověka, který někomu pro jistotu klečel na krku ještě přes půl minuty po tom, co ho zabil, vám vyhovuje. Povahou si pravděpodobně budete dost podobní.
rozhodně nebyl čistý jak lilium, poněvadž kdyby byl, tak by touhle dobou žil
A hele, argumentace kruhem, tuhle formu logického klamu jste tu už dlouho nepředvedl.
Quando omni flunkus moritati
⧠ A = 0 avatar 5.6. 09:13 ⧠ A = 0 | skóre: 10 | blog: Technokratovo_zrcadlo | Helsinki
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Podezřelý
Tohle slovo je důkazem, že právníci/policajti neumějí česky, a že lecjaká blbost se uchytí, když ji budete opakovat dost dlouho. (Správně by mělo být podezřený.)
Nevolte zmrdy.
5.6. 09:41 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ovdovělý, osiřelý, …?

Spíš bych pocitově řekl, že být podezřený je vlastnost podezřelého.
5.6. 09:46 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ah, už asi chápu co myslíš. Asi by mohla být lehká nuance mezi podezřele se chovající osobou a osobou podezřenou z trestného činu (která podezřelá být vůbec nemusí).
6.6. 12:18 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
No, kameny bych moc neházel. V IT máme podobné "blbosti", například v programovacích jazycích se používá termín "ukazatel" místo správného "ukazovatel"!
6.6. 19:23 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Ukazatel je normální slovo, se kterým se můžeš setkat i fyzicky (turistický ukazatel).
6.6. 22:21 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
Jo, i ten by měl být ukazovatel, protože ukazuje pořád, nedokonavě.
xkucf03 avatar 7.6. 11:23 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů

A skutečně ukazuje pořád? Co takový nullptr, co NullPointerException nebo dangling pointer?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
7.6. 21:25 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Space : Najděte 10 rozdílů
To záleží na tom, jestli se jedná o jazyk s miliardovou chybou, nebo o slušně navržený jazyk ;-)

</bait>
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 7.6. 22:13 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše NullPointerException a miliardová chyba?

Mluvit o „miliardové chybě“ je sice populární, ale z vlastní zkušenosti můžu říct, že tyhle chyby představují jen naprostý zlomek problémů, které se při vývoji softwaru řeší. Dokonce ani junioři s tím nemívají moc problémy a čas tráví úplně jinými chybami než debugováním NullPointerů nebo podobnými věcmi.

Možná je to trochu zkreslené tím, že dělám v Javě, která sice NullPointerException má, ale jinak je to poměrně bezpečný jazyk. Nicméně mi nepřijde, že by to v Céčku nebo C++ bylo výrazně horší.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
7.6. 23:52 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Možná je to trochu zkreslené tím, že dělám v Javě, která sice NullPointerException má, ale jinak je to poměrně bezpečný jazyk.
Nejsem natolik javista, abych mohl říct, jak moc to je/není problém v rámci ekosystému. Určitě jsem se s tim nejednou setkal. Minimálně mi to ale přijde jako naprosto zbytečná komplikace. Mít by-default nullovatelné reference má pouze nevýhody a žádné výhody. Když chce někdo někde mít možnost stavu "absence hodnoty", tak od toho jsou přece optional typy. V C/C++ nullable pointers ještě víceméně dávají smysl, protože to jsou nízkoúrovňový jazyky (minimálně v některých kontextech a pokud člověk nechce dělat to co Rust, tak moc nezbude nic jinýho), ale co to dělá ve vysokoúrovňovém staticky a silně typovaném jazyce, jako je Java, to nechápu. A přitom není nutný to řešit rovnou třeba borrow checkerem, jako má Rust, IMO by celkem stačil přístup jako má třeba Kotlin nebo TypeScript, kde prostě by default ta reference null být nemůže, protože to je to, co člověk ve většině případů chce...
Nicméně mi nepřijde, že by to v Céčku nebo C++ bylo výrazně horší.
V C/C++ je to IMO problém zcela jednoznačně, a to jak z osobní zkušenosti, tak se dá vykoukat i něco třeba ze statistik CVE apod... Koneckonců vzpomeň na segfault, co jsi před časem řešil, to byla taky dangling reference...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
8.6. 00:36 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Mně se líbí, jak to má C#. Foo nullovatelné není, Foo? ano. U nullable typů tě kompilátor nutí ten null ošetřit.

Ještě elegantnější by možná bylo nemít null vůbec a místo něj definovat pro každý typ prázdnou instanci. Ale ono to vypadá hezky u kolekcí, kde to jde zrovna přirozeně, ale už ne tak u čehokoliv jiného, kde by to v praxi skončilo vyhazováním UnsupportedOperationException a padáním za běhu stejně jako v případě NPE.
8.6. 12:49 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Mně se líbí, jak to má C#. Foo nullovatelné není, Foo? ano. U nullable typů tě kompilátor nutí ten null ošetřit.
Takhle to mají Kotlin a TypeScript (ačkoli ten má trochu divnou syntaxi).

U toho C# tomu úplně nerozumim, tam se to asi nějak měnilo s novými verzemi? Na wikipedii píšou:
Most object access is done through safe object references, which always either point to a "live" object or have the well-defined null value
A mimichodem, mají tam i ten boxing, jak jsme se o tom dohadovali v minulý diskusi :-D
Boxing is the operation of converting a value-type object into a value of a corresponding reference type.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
8.6. 22:53 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Já C# moc neumím, dělal jsem v něm naposledy před několika lety a jen krátce. Ale co jsem teď vydestiloval z rychlého googlení, tak:
  • ve starších verzích C# (před verzí 8) platilo to, co jsem psal, pouze u hodnotových typů (např. int), ostatní reference jsou nulovatelné defaultně (a tedy nedává smysl psát T?, protože už T je nulovatelný, pokud to není hodnotový typ)
  • od 8. verze jsou reference defaultně nenulovatelné a to, co jsem psal, platí obecně
Viz demo. Ideone používá Mono (gmcs 5.20.1), ale nějak se mi nedaří vygooglit, jakou verzi jazyka tahle verze podporuje. Každopádně to ještě nebude C# 8, protože Test? tam nefunguje a píše to:
prog.cs(25,3): error CS0453: The type `Test' must be a non-nullable value type in order to use it as type parameter `T' in the generic type or method `System.Nullable<T>'
Compilation failed: 1 error(s), 0 warnings
Co znamená ten citovaný výrok z Wikipedie netuším.
20.6. 22:01 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Boxing is the operation of converting a value-type object into a value of a corresponding reference type.
Co znamená ten citovaný výrok z Wikipedie netuším.
Heh, při zpětném pohledu nějak nevím, co mi na tom tvrzení nebylo jasné. Přesně takhle je to i v té Javě: hodnotový typ (např. int) se boxuje do referenčního typu (např. Integer).

Čtu teď předchozí diskuzi a asi už chápu, kde vzniklo nedorozumění. Pokud Rust má jiné hodnotové typy, které nutně nejsou primitivy, ale stejně to nejsou referenční typy (např. struktura složená z primitiv, která může mít libovolnou velikost), tak je nutné buď to boxovat, aby to šlo napasovat do univerzálně zkompilovaného nativního kódu, a nebo to kompilovat pro každou kombinaci typů znovu. A nebo to možná vyřešit ještě nějak jinak.

Mně zmátlo, že když jsi psal:
Generika v Rustu nefungují jako v Javě, ten overhead boxingu generických věcí by byl nepřijatelný.
Tak jsem to pochopil tak, že v Javě mají generika nějakou zásadní spojitost s boxováním. Mají jen u primitivních typů. Všechny ostatní typy jsou referenční, takže se boxování řešit nemusí. Pokud v Rustu ty referenční typy nejsou tak časté, nebo whatever, a muselo by se boxovat častěji, tak ten overhead by mohl být nepřijatelný. Chápu a souhlasím.
20.6. 22:02 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
*mě
20.6. 22:44 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Yup, a v C++ je to taky tak...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
8.6. 14:47 prqek | blog: prqek
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Ještě elegantnější by možná bylo nemít null vůbec a místo něj definovat pro každý typ prázdnou instanci.
Tak by potom místo NullPointerException byla EmptyInstanceException. Když data nejsou k dispozici ve chvíli, kdy jsou potřeba, tak je to spíš problém algoritmu a ne jazyka. Nebo mi něco uniká a moje představivost je příliš omezená tím, že píšu hlavně v C? Koneckonců v tom C nevidím ani tak problém v tom, že ten pointer může být null (to se celkem dobře detekuje), ale že může mít jakoukoli hodnotu, to pak začíná legrace.
Josef Kufner avatar 8.6. 19:47 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Nebo mi něco uniká a moje představivost je příliš omezená tím, že píšu hlavně v C?
Ano. Pokud máš funkci f(Foo x), tak x nikdy nebude ani prázdné, ani null, protože při volání funkce překladač vynutí, aby tam bylo Foo. Prostě nepůjde napsat f() ani f(null).

Pokud budeš mít funkci g(Foo? x), tak půjde napsat g(new F()), nebo g(null), ale nepůjde g(). Pokud budeš mít g(Foo? x = null), tak projde i g().

Pak je ještě takový hezký případ g(Foo x = null), kdy neprojde g(null), ale projde g(). Tedy pokud parametr je uveden, tak nemůže být null, v těle funkce se to chová stejně jako g(Foo? x = null).

Konkrétní možnosti, syntaxe a detaily se mezi různými jazyky mírně liší, ale co jsem poslední dobou potkal, tak to všude funguje dosti podobně.
Hello world ! Segmentation fault (core dumped)
xkucf03 avatar 8.6. 20:33 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tak by potom místo NullPointerException byla EmptyInstanceException. Když data nejsou k dispozici ve chvíli, kdy jsou potřeba, tak je to spíš problém algoritmu a ne jazyka.

Měl by existovat kontrakt, který říká, jaké jsou vstupní předpoklady, co se čeká od výstupu a jak by to mělo fungovat uvnitř. Část toho kontraktu se vyjádří pomocí signatury metod – a zbytek je potřeba napsat do komentářů nebo specifikace. Součást toho kontraktu je i to, které parametry (nebo na druhé straně části výstupu) jsou povinné a které nepovinné. A je hezké mít na úrovni jazyka prostředky pro vyjádření, co je povinné a co ne. (např. v relačních databázích máme NOT NULL, cizí klíče a další integritní omezení)

Ty chyby jsou pak souhrou dvou okolností – v jazyce ty prostředky chybí, takže není možná strojová kontrola, a zároveň programátor nedodržel kontrakt. Tzn. považoval za povinné něco, co dle zadání může chybět, nebo naopak nenaplnil něco, co dle zadání mělo být přítomno vždy a ostatní s tím počítali.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
9.6. 07:51 prqek | blog: prqek
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Chápu, že to donutí programátora psát hezčí kód. Ten přístup C# nebo sql se mi celkem líbí. Java to taky má clekem pěkně - když ten pointer není null, tak se dá spoléhat na to, že ukazuje na něco platného. V C to neplatí, ale beru to jako daň za jeho nízkoúrovňovost. U C++ mi to přijde takové překombinované (ale to víceméně celý jazyk).

Šlo mi o to
... nemít null vůbec a místo něj definovat pro každý typ prázdnou instanci.
Přijde mi, že tohle nic nevyřeší, jen přejmenuje. Když data nejsou k dispozici, a přitom jsou potřeba sebelepší jazyk nebo pojmenování to nezachrání.
9.6. 08:47 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
U těch kolekcí to smysl dává a dokonce přesně z tohoto důvodu v Javě existují věci jako Collections.emptyList() a podobné. Existují operace, které jsou zcela legitimní i nad prázdnou kolekcí (součet prvků, …). Existují operace, které nikoliv: například (občas odůvodněné) prasárničky ve stylu map.get(MAGIC_KEY).call(). Ale i v tomto případě ta garance validní, seč prázdné, mapy ušetří pečlivému programátorovi jednu podmínku (nemusí ověřovat, že mapa není nulová a obsahuje MAGIC_KEY, nýbrž právě a jen, že obsahuje MAGIC_KEY).

Já bych s Frantou úplně nesouhlasil, že ten null (resp. typový systém, který ho nebere v potaz) nepředstavuje vcelku podstatný problém. Ono ani tak nejde o ty chyby jako spíš o to, že to zdržuje, vede na zbytečné duplicitní kontroly atd. A pokud se člověk rozhodne odstranit zbytečnou komplexitu a psát minimalistický kód, ve kterém je opravdu jen to nezbytné, tak si kope lvovou jámu, do které dříve nebo později on nebo někdo jiný spadne (až si zapomene přečíst dokumentaci a ten null někam omylem pošle).
9.6. 10:40 prqek | blog: prqek
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tohle chápu, teda aspoň myslím, že chápu :) Jen mi přijde, že zavedení EmptyInstance to neřeší, protože podobně jako nějaké operace nelze provést nad null, tak budou určitě operace, které nelze provéšt nad EmptyInstance. Null je jen jedna z nevalidních hodnot, které se dají někam omylem poslat. Nicméně je pravda, že když jazyk umožňuje nějak omezit použití null, tak to může mnoha problémům zabránit.
10.6. 02:03 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
No, jak jsem psal v předchozím komentáři:
Ale ono to vypadá hezky u kolekcí, kde to jde zrovna přirozeně, ale už ne tak u čehokoliv jiného, kde by to v praxi skončilo vyhazováním UnsupportedOperationException a padáním za běhu stejně jako v případě NPE.
Přes ty kolekce se velmi často nějak iteruje a nevadí, pokud jsou prázdné. Co by teda mohlo vadit je, že v Javě se ve standardní knihovně nerozlišují mutable a immutable typy těch kolekcí. Pokud do metody, která do té kolekce něco přidává, pošleš Collections.emptyList(), spadne to za běhu. Musel by existovat ImmutableList, který by byl subsetem Listu, a který by používal všude, kde se pouze čte. V prvním případě by se jako výchozí typ mohla recyklovat pořád stejná neměnná prázdná instance, ve druhém případě by se vytvořila pokaždé nová.

Ale určitě to neřeší všechny případy, jak jsem psal už výše.
8.6. 13:53 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
co to dělá ve vysokoúrovňovém staticky a silně typovaném jazyce, jako je Java, to nechápu
Ja to chapu, Java je proste stary jazyk. Coz by nevadilo, ani by mi nevadilo, ze v ni momentalne musim psat, co mi vadi asi nejvic je to, ze se kolem me ruzni lide tvari, jako ze to je vrchol pokroku.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 8.6. 20:45 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?

Nevím jestli myslíš mne, neberu si to nijak osobně, ale odpovím. Nikdy jsem tu nepsal, že by Java byla dokonalá. Ostatně ani dokonalý jazyk neexistuje. Ale celkem často tu píšu, že Java je pro určité použití nejlepší volba. A za tím si stojím. Ono totiž nezáleží jen na samotných vlastnostech jazyka, nejde jen o kód – do té pomyslné rovnice, na základě které se rozhoduje, vstupuje mnohem víc proměnných.

Nejlepší volba != dokonalost nebo vrchol pokroku.

A taky jak jsem psal nedávno v blogu:

Řada problémů a selhání v IT nemá technické nýbrž společenské příčiny

Přijde mi, že řada lidí optimalizuje na nesprávném místě. Ono je sice celkem přirozené, že se programátoři hádají o programovacích jazycích, knihovnách, frameworcích… ale často by více pomohlo ten čas trávit jinak a optimalizovat jiné části vývojového procesu, komunikaci mezi lidmi nebo vztahy se zákazníkem. Pozoroval jsem i lidi, kteří byli frustrovaní z toho, že se jim vývoj nedaří, že jsou jako tým neefektivní… pak se upnuli k nějaké nové technologii, slibovali si od ní, že vyřešení jejich problémy… a nestalo se vůbec nic, akorát vyplýtvali hodně času na zavádění změny, ale vývoj byl pořád neefektivní, protože příčina byla někde jinde.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Fluttershy, yay! avatar 16.6. 20:20 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Ono je sice celkem přirozené, že se programátoři hádají o programovacích jazycích, knihovnách, frameworcích… ale často by více pomohlo ten čas trávit jinak a optimalizovat jiné části vývojového procesu, komunikaci mezi lidmi nebo vztahy se zákazníkem. Pozoroval jsem i lidi, kteří byli frustrovaní z toho, že se jim vývoj nedaří, že jsou jako tým neefektivní… pak se upnuli k nějaké nové technologii, slibovali si od ní, že vyřešení jejich problémy… a nestalo se vůbec nic, akorát vyplýtvali hodně času na zavádění změny, ale vývoj byl pořád neefektivní, protože příčina byla někde jinde.
Zrovna tuším JS dřív psal o pojetí organizace společnosti jako technologie (bylo to v nějakém dávné „diskuzi“ tuším o alternativách ke kapitalismu).

Třeba agile je v tomhle smyslu „technologie“… a je kolem ní taky vcelku cargo kult.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
xkucf03 avatar 8.6. 20:23 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
V C/C++ je to IMO problém zcela jednoznačně … V C/C++ nullable pointers ještě víceméně dávají smysl, protože to jsou nízkoúrovňový jazyky …

Tak problém to bude větší, než v Javě, to ano, ale jednak nemyslím, že by byl až tak fatální, že bych to musel takhle prožívat a dělat kolem toho nějaká skandální prohlášení typu „billion dollar mistake“ – a jednak, jak sám píšeš, jsou to nízkoúrovňové jazyky a tam se pracuje přímo s pamětí, takže ukazatel tam dává smysl (a přirozeně pak může ukazovat i na adresu nula nebo na adresu, kde je něco jiného, než programátor očekával, protože udělal chybu).

Koneckonců vzpomeň na segfault, co jsi před časem řešil, to byla taky dangling reference...

Jestli myslíš ten regulární výraz, tak to považuji v první řadě za nedostatek dokumentace (nebo jsem špatně četl, ale spíš bych řekl, že to tam není dost dobře popsané). Tam se totiž nepracovalo se surovým ukazatelem, ale s objektem, u kterého jsi mohl mít pocit, že ho máš normálně ve své lokální proměnné a sám si řídíš jeho životní cyklus… a on přitom kdesi uvnitř obsahoval ukazatele na jiný objekt, což nebylo na první pohled zřejmé ani intuitivní, a tenhle objekt měl jiný životní cyklus (mohl skončit dřív). Tzn. je to spíš otázka návrhu – byla tam závislost mezi objekty, která nebyla na první pohled zřejmá a asi ani moc zdokumentovaná. Když jsem nad tím zpětně přemýšlel, tak to celkem dává smysl implementované tak, jak to je – akorát tohle člověk většinou rozklíčuje až zpětně, na první pohled to moc zřejmé není. Alespoň ne pro javistu :-)

ale co to dělá ve vysokoúrovňovém staticky a silně typovaném jazyce, jako je Java, to nechápu

Jak jsem psal, v praxi to není nějak velký problém. Každý máme nějakou tu humornou historku, jak jsme ladili záhadný NullPointerException, ale z celkového času stráveného vývojem je to nepodstatný zlomek. On už jen GC eliminuje velkou část problémů (které mohou nastat třeba v tom C++, pokud se tam používají surové ukazatele a ne ty chytré).

Co se týče čistoty návrhu jazyka, to je věc jiná. Tady souhlasím, že striktně nenulové reference (a následně řešení na úrovni nějakých Optional objektů) by byly možná lepší… ale vezmi v úvahu rok vzniku Javy a zpětnou kompatibilitu. Schůdnější je řešení na úrovni volitelných anotací a kontroly nějakým frameworkem nebo IDE. Viz třeba Avoid Check for Null Statement in Java nebo @Nullable and @NotNull.

Zajímavé je dát si tuhle otázku do kontextu diskuse dynamické vs. statické jazyky. U těch dynamických nemáš vůbec jisté, jaký typ v proměnné budeš mít, a běžně programy v době běhu padají na tom, že metoda nebo proměnná neexistuje. Tzn. ne že by v proměnné chyběla hodnota (null), ale on tam chybí úplně ten „slot“ (proměnná či metoda), ve kterém by něco mělo/mohlo být.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Josef Kufner avatar 8.6. 20:30 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
To není o tom, zda je jazyk dynamický nebo statický, ale o tom, jak schopný je jeho typový systém. Například typový systém Typescriptu podchytí věci, o kterých si C++ může nechat jen zdát.
Hello world ! Segmentation fault (core dumped)
9.6. 00:10 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tak problém to bude větší, než v Javě, to ano, ale jednak nemyslím, že by byl až tak fatální, že bych to musel takhle prožívat a dělat kolem toho nějaká skandální prohlášení typu „billion dollar mistake“
Hm, nedělal jsem ani jsem nehledal vyloženě nějakou statistiku / odhad a je pravda, že "billion" (ie. miliarda) je vysoký číslo, ale třeba ty částky, co se nabízejí v různých Pwn2Own soutěžních a podobně jsou taky dost slušně vysoký. Samozřejmě tam nejde zdaleka jen o memory management, nicméně ten je toho poměrně podstatnou součástí.
Jestli myslíš ten regulární výraz, tak to považuji v první řadě za nedostatek dokumentace (nebo jsem špatně četl, ale spíš bych řekl, že to tam není dost dobře popsané). Tam se totiž nepracovalo se surovým ukazatelem, ale s objektem, u kterého jsi mohl mít pocit, že ho máš normálně ve své lokální proměnné a sám si řídíš jeho životní cyklus… a on přitom kdesi uvnitř obsahoval ukazatele na jiný objekt, což nebylo na první pohled zřejmé ani intuitivní, a tenhle objekt měl jiný životní cyklus (mohl skončit dřív).
To je IMO stále stejný problém - programátor chce, aby na nějakém místě v kódu byl vždy validní pointer/reference (v tomhle případě v tom match objektu) a když tohle nemůže vyjádřit typovým systémem, tak to musí dát do dokumentace, na což může zapomenout nebo to nepopsat dost jasně (jako se stalo v tvým případě).

V podstatě jsou aktuálně dvě možnosti, jak se to dá řešit: Buď Použít GC + nejlépe non-nullable referenci (protože match objekt nad nullovou referencí nejspíš moc nemá smysl), anebo v případě, že GC nechceš nebo nemůžeš použít, tak zbývá jen jíst cestou Rustu, tj. přidat k té referenci typovou informaci. Viz Match<'t> - ten generickej parametr 't reprezentuje lifetime toho původního stringu, na kterým je ta věc závislá, je to přesně to chybějící vyjádření té závislosti, o které mluvíš. Vevnitř je ten objekt to samé jako v tom C++, navíc tam je jen ta typová informace, kde ten parametr 't se propaguje k té referenci na ten původní string.
Zajímavé je dát si tuhle otázku do kontextu diskuse dynamické vs. statické jazyky.
Jo, to mě taky napadlo, chtěl jsem i něco takového původně připsat - v zásadě ty implicitně nullovatelné reference mi přijdou jako fíčura dynamicky typovaných jazyků (proto mi to nepřijde na místě ve staticky typovaným jazyce).
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
9.6. 00:24 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
v zásadě ty implicitně nullovatelné reference mi přijdou jako fíčura dynamicky typovaných jazyků (proto mi to nepřijde na místě ve staticky typovaným jazyce)
BTW: Párkrát jsem si dělal srandu, že zatímco celý softwarový průmysl řeší, jak odstranit null a sám vynálezce tohoto konceptu si sype popel na hlavu a označuje ho za tu „billion dollar mistake“, tak se široké adopce dočká jazyk, který nemá jeden, ale tři typy reprezentující nic (null, undefined a NaN, který v JavaScriptu může vypadnout i z operací nad nečíselnými typy).
9.6. 20:46 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
ale co to dělá ve vysokoúrovňovém staticky a silně typovaném jazyce, jako je Java, to nechápu.
Protože Java není vysokoúrovňový jazyk! Je to nízkoúrovňový jazyk srovnatelný s C.

Ta klasifikace je výrazně zkreslena tím, že Java je nízkoúrovňový jazyk pro platformu JVM, která nemá fyzickou (hardware) reprezentaci (i když plány byly, nicméně Sun a jeho plány...). Pokud se podíváme na JVM bytekód, tak je na první pohled patrné jak je samotný jazyk triviální.

Pravda, v posledních několika verzích se i Java významně posunula nahoru, ale pořád to není ono.

A co se týče silné typovosti, tak je to celkem slabota :-)
9.6. 21:48 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Protože Java není vysokoúrovňový jazyk! Je to nízkoúrovňový jazyk srovnatelný s C.
A valka je mir.
Ta klasifikace je výrazně zkreslena tím, že Java je nízkoúrovňový jazyk pro platformu JVM
A kdyz Javu prelozim pomoci gcj nebo graalu do nativniho kodu, bude to uz vysokourovnovy jazyk?
Pravda, v posledních několika verzích se i Java významně posunula nahoru, ale pořád to není ono.
Z pohledu urovne abstrakce, kterou jazyk nabizi, a to je to, co dela onu vysku jazyka, byl posledni posun u verze 5 z roku 2004, kdy se zavedly generika a anotace (coz je zatim relativne nedocenena vlasnost). Pak by jeste slo uvazovat o verzi 8 (rok 2014), kdy pribyly lambda-vyrazy, ale ty nenabizi nic jineho nez to, co uz s jazykem slo delat pred tim. Jen se to da pouzivat pohodlneji. Ostatni upravy z posledni doby jsou drobnosti pro pohodlnejsi programovani, ale jazyk na vyssi uroven (z pohledu abstrakce) neposunuji.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Bystroushaak avatar 10.6. 00:38 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Z pohledu urovne abstrakce, kterou jazyk nabizi, a to je to, co dela onu vysku jazyka, byl posledni posun u verze 5 z roku 2004, kdy se zavedly generika a anotace (coz je zatim relativne nedocenena vlasnost). Pak by jeste slo uvazovat o verzi 8 (rok 2014), kdy pribyly lambda-vyrazy, ale ty nenabizi nic jineho nez to, co uz s jazykem slo delat pred tim. Jen se to da pouzivat pohodlneji. Ostatni upravy z posledni doby jsou drobnosti pro pohodlnejsi programovani, ale jazyk na vyssi uroven (z pohledu abstrakce) neposunuji.
Proč prvně reaguješ sarkasticky na podleshe a pak tvrdíš v podstatě to samé co on?
10.6. 03:05 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Proč prvně reaguješ sarkasticky na podleshe a pak tvrdíš v podstatě to samé co on?
Protoze to netvrdim. Za prve je absurdni, aby se uroven jazyka posuzovala podle toho, co ten jazyk bude provadet.

Za druhe je to otazka miry, jak moc je jazyk nizko nebo vysoko urovnovy.

Podlesh manipulativne predefinovava pojmy, "aby mu to vyslo", ale Java je spise vysokourovnovy jazyk, vzhledem k tomu, jak ma reseny objekty, vyjimky, reflexi a dalsi veci. Na co jsem v tom odstavci primarne reagoval je veta: "Pravda, v posledních několika verzích se i Java významně posunula nahoru,". Coz neni pravda, protoze v poslednich verzich vazne nedoslo k pridani dalsich vyssich urovni abstrakce, ale to z Javy nedela nizkourovnovy jazyk.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Bystroushaak avatar 10.6. 11:29 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Protoze to netvrdim. Za prve je absurdni, aby se uroven jazyka posuzovala podle toho, co ten jazyk bude provadet.
„Úroveň jazyka“ budiž, „úroveň abstrakce“ mi absurdní teda nepřijde. Pokud můžeš vzít dva jazyky, dát je vedle sebe (například jsi v obou programoval) a jasně vyhodnotit který z nich ti přijde „vysokoúrovňovější v použité abstrakci“, tak s tím nevidím žádný problém. Jestliže se takhle dokáže shodnout víc lidí, tak není důvod proč to nepoužívat v běžném mluveném jazyce jako „vysokoúrovňovější“.
Podlesh manipulativne predefinovava pojmy, "aby mu to vyslo", ale Java je spise vysokourovnovy jazyk, vzhledem k tomu, jak ma reseny objekty, vyjimky, reflexi a dalsi veci. Na co jsem v tom odstavci primarne reagoval je veta: "Pravda, v posledních několika verzích se i Java významně posunula nahoru,". Coz neni pravda, protoze v poslednich verzich vazne nedoslo k pridani dalsich vyssich urovni abstrakce, ale to z Javy nedela nizkourovnovy jazyk.
Pokud si dám na jednu stranu python, common lisp, nebo třeba smalltalk a na druhou javu, tak sorry jako, java je z hlediska abstrakce, použitých konstrukcí a programátorské pohodlnosti nízkoúrovňový jazyk. Což není hejt na javu, ale konstatování faktu, ke kterému jsi se dostal taky. Ostatně kdyby to tak nebylo, tak se nikdo ani nenamáhá s tím že by ty ostatní jazyky používal, když jsou zároveň typicky pomalejší než java.

Na Javě je „vysokoúrovňové“ asi tak to, že má GC a objekty. To (nebo alternativu) má ale dneska kde co. Čímž nechci popírat vyspělost java platformy, jen poukázat na to, že pokud ti jde o abstrakci, tak java nějak zazáří asi jen ve srovnání s C/C++.
Fluttershy, yay! avatar 10.6. 11:48 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
To bude tím, že si „úroveň“ vykládá každý jinak.

Jestli je Java nízkoúrovňová, co jsou pak jazyky symbolických adres? Bezúrovňové?
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
Bystroushaak avatar 10.6. 12:12 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Jestli je Java nízkoúrovňová, co jsou pak jazyky symbolických adres? Bezúrovňové?
Ještě víc nízkoúrovňové, stejně jako je třeba C víc „nízkoúrovňovější“ než java? To že java má nějakou úroveň nedělá assemblery bez úrovně, ostatně pořád tam máš ty symbolické adresy (goto návěští), ke kterým se počítají jmp skoky automaticky a na pozadí se děje překlad, který často podporuje například makra a tak.
To bude tím, že si „úroveň“ vykládá každý jinak.

Já tvrdím že existuje všeobecně vnímaná jednodimenzionální úroveň hierarchie „programátorské abstrakce*“, která není na koncích uzavřená**. Na téhle hierarchii můžeš subjektivně umisťovat jazyky a pak je porovnávat. Přijde mi, což samozřejmě taky může být čistě subjektivní, že mezi programátory panuje docela shoda ohledně porovnání jazyků***. Například prakticky každý se shodne na tom, že java je „výšeúrovňovější“ než C. C je „výšeúrovňovější“ než assembler. Mno a z druhé strany, „python“ je „výšeúrovňovější“ než Java, „common lisp“ je „výšeúrovňovější“ než python a tak podobně. Nějaké fuzzy otázky jsou tak leda jestli je třeba Java „výšeúrovňovější“ nebo „nízkoúrovňovější“ než C#. Nebo Python vs Ruby.

* O tom byla původní diskuze a podle mě je to v praxi naprosto jednoduše rozhodnutelné z hlediska toho jak moc je to pro programátora abstraktní, efektivní a produktivní. Java například nemá ani operátor na porovnání stringu (a vůbec operator overloading), což abstraktní není.

** Stejně tak i čistý machine code typicky expanduje na nějaký mikrokód v procesoru, a i ten mikrokód expanduje na hardware. A hardware taky používá abstrakce. I jazyky jako VHDL používají abstrakce.

*** Například když se bavím u nás ve firmě s ostatními lidmi z týmu u nás ve firmě, tak o té hierarchii vědí, aniž bych o tom s nimi mluvil. Například i ženská, co přešla na programátorku z ekonomického oddělení, kde předtím plánovala budget o téhle hierarchii ví, přestože jinak nemá formální vzdělání v programátorském oboru, jen si prostě vyzkoušela různé věci.
Bystroushaak avatar 10.6. 12:15 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Já tvrdím že existuje všeobecně vnímaná jednodimenzionální úroveň hierarchie „programátorské abstrakce*“, která není na koncích uzavřená**. Na téhle hierarchii můžeš subjektivně umisťovat jazyky a pak je porovnávat. Přijde mi, což samozřejmě taky může být čistě subjektivní, že mezi programátory panuje docela shoda ohledně porovnání jazyků***. Například prakticky každý se shodne na tom, že java je „výšeúrovňovější“ než C. C je „výšeúrovňovější“ než assembler. Mno a z druhé strany, „python“ je „výšeúrovňovější“ než Java, „common lisp“ je „výšeúrovňovější“ než python a tak podobně. Nějaké fuzzy otázky jsou tak leda jestli je třeba Java „výšeúrovňovější“ nebo „nízkoúrovňovější“ než C#. Nebo Python vs Ruby.
Nějak jsem nedokončil tu myšlenku;

Pokud tohle uznáváš, tak pak záleží, kde se relativně na té ose pohybuješ. Pokud se pohybuješ někde u C, tak jasně, java ti bude připadat vysokoúrovňová. Pokud se pohybuješ u lispu, tak asi jen těžko.
10.6. 13:07 Radovan
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
A céčkaři se s lispaři shodnou na tom, že Java je sračka :-D
10.6. 17:26 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Já tvrdím že existuje všeobecně vnímaná jednodimenzionální úroveň hierarchie „programátorské abstrakce*“, která není na koncích uzavřená**.
Hmm, s tim bych tak úplně nesouhlasil.

Pokud jde o ten dolní konec, tak to je celkem dobře definovaný: Začíná to Céčkem a pokračuje přes assembly apod. Vlastnosti jsou celkem jasný: absence abstrakcí, manuální správa paměti, řešení OS- nebo HW-specific věcí, možnost dosažení brutálního výkonu apod.

Pokud jde o ten horní konec, tak ten je IMO naprosto totálně mlhavě definovanej a reálně není jednodimenzionální, ale větví se do spousty různých rovin. Vezměme si jako příklad třeba už jen ten blbej memory-management: Je vysokoúrovňovější GC, nebo ownership-borrowing á la Rust? Z "bežného" pohledu by se asi řeklo, že GC, protože umožňuje pohodlné použití, člověk nemusí nic řešit, pointery/reference prostě vždy ukazují na validní data. Což v Rustu sice taky, ale člověk musí skákat krz obruče, aby si objekty pokládal do správných hierarchií a správně všechno propojil, aby ho kompilátor neposlal do řiti. Navíc Rust je, řekněme, ideologicky zaměřený na nižší úroveň. Takže bychom řekli, že je nízkoúrovňovější (a tak se většinou zařazuje). Ovšem z jinýho pohledu to může být jinak: GC je v konceptuálně v podstatě dost primitivní věc. Je to víceméně brute-force řešení, který začlo bejt slušně použitelný až po desetiletích, kdy bylo na problém potřeba házet jak lopatou stále vyšší výpočení výkon a optimalizace. Oproti tomu ownership-borrowing je založený ma poměrně vymakaném formálním modelu, který mimo jiné jako vedlejší efekt přinesl možnost provably-correct concurrent přístupu ke sdíleným datům, což neumí ani jazyky považované tradičně za velmi vysokoúrovňové (nebo pouze v omezené míře). Takže otázka, který z těch přístupů je vysokúrovňovější, IMO není jednozančná a záleží, jak se na to člověk dívá a jaký preferuje tradeoffs.

Podobný příklad může být třeba to, že Java a C# se považují za vysokoúrovňovější než C++, ale např. nemají imutabilní reference, což je v silně typovaným jazyku celkem užitečná vlastnost. Taky mělo C++ dříve lambda funkce než Java (i když je pravda, že v Javě bylo asi trochu snažší to workaroundovat).

Podobnej je taky třeba obecně rozpor mezi dynamicky a staticky typovanými jazyky. Je vysokoúrovňovější Haskell, nebo Lisp? Touhle otázkou by mohl odstartovat brutální flamewar, který by se nejspíš ničeho nedobral :-D
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Bystroushaak avatar 11.6. 01:35 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Z větší části s tebou souhlasím. Hodně jsem to zjednodušil vzhledem k tomu konkrétnímu tématu. Samozřejmě, že k té ose abstrakce je možné přidávat spoustu dalších dimenzí odpovídajících na otázku „z hlediska čeho?“, ala abstrakce syntaxe, abstrakce patternů, abstrakce správy paměti, abstrakce ..
10.6. 22:12 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Pleteš dohromady míru pohodlnosti v podobě syntaktických cukrů a úroveň abstrakce, což není nutně totéž.

Nemyslím si, že je zápis a == b implicitně abstraktnější než a.equals(b) nebo equals(a, b) nebo == a b. Pokud tě ten jazyk odstíní, odabstrahuje od nějakého detailu – např. ti umožní napsat a == b bez starosti o to, zda má proměnná a hodnotu null – pak v tom ohledu abstraktnější je. A pakliže v Javě programátoři v některých případech záměrně píší Yoda-style ("abc".equals(s)) právě a jen proto, aby jim to nespadlo na výše diskutované NPE, pythonní porovnávání stringů vyjde z tohoto srovnání abstraktněji.

Obdobně tak dědičnost nebo generické programování odstíní programátora od starosti o to, s jakým konkrétním typem pracuje, a umožní mu svoje řešení zobecnit. Python umožňuje dosáhnout stejné úrovně abstrakce, ale tím, že neposkytuje žádné garance, ve výsledku tu abstrakci spíš ubírá. Duck-typing je vadný koncept: reálně se mi v Pythonu stává, že nevím, jaký typ mám někam poslat, ani jaké má mít vlastnosti, a musím se tím zaobírat mnohem víc než v Javě.

Pro zcela konkrétní příklad: jaký typ očekává metoda set_color(self, color) z matplotlib? Z dokumentace ani signatury metody není patrné, že očekává HTML-like string ve tvaru "#rrggbb". Absentující dokumentace je sice vinou projektu, ale jazyk mi zde neposkytuje žádný dodatečný komfort pro rozřešení této nejasnosti. Čisté, automatické a bezmyšlenkovité řešení v Javě by spočívalo v definování třídy Color s několika přetíženými konstruktory, kde by patrně i bez dodatečného popisu bylo možné několika rychlými experimenty pochopit, jaké hodnoty jsou očekávány na vstupu. To by současně odstranilo potřebu onen string parsovat na straně jedné a generovat na straně druhé. Proto absenci statického typování reálně považuji za ztrátu abstrakce asi podobně jako kdyby jazyk nerozlišoval jména parametrů.

Je to ale pření se o milimetry, zatímco před námi jsou kilometry neprobádaného prostoru. Ve všech současných jazycích se reálně programuje skoro stejně a zkratky, které poskytují ty „vyšší“ jazyky, jsou pořád jen trochu lepší lopaty, které se o něco méně lámou. Jak abstraktní je přemýšlet nad tím, v kolika vláknech můj program poběží a řešit z toho vyplývající problémy? Jak abstraktní je řešit serializaci a deserializaci dat?

Nedosahujeme zatím ani zdaleka úrovně abstrakce lidského jazyka, potažmo schopností lidské mysli. Přít se o to, jestli je jeden z mnoha těch tuctových jazyků, co jsou na trhu, abstraktnější než druhý, je až na absolutní nesmysly typu „Java je nízkoúrovňový jazyk srovnatelný s C“, vlastně směšné. Ostatně, ani náš způsob používání spotřební elektroniky příliš abstraktní není. Přizpůsobili jsme se strojům, protože lepší zatím postavit neumíme.
Bystroushaak avatar 11.6. 01:32 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Pleteš dohromady míru pohodlnosti v podobě syntaktických cukrů a úroveň abstrakce, což není nutně totéž.
Nutně ne, ale dost často ano. Programovací jazyk je uživatelský interface, a uživatelský interface který mi neumožňuje dělat pokročilé věci je z mého pohledu méně efektivní a abstraktní.
Nemyslím si, že je zápis a == b implicitně abstraktnější než a.equals(b) nebo equals(a, b) nebo == a b. Pokud tě ten jazyk odstíní, odabstrahuje od nějakého detailu – např. ti umožní napsat a == b bez starosti o to, zda má proměnná a hodnotu null – pak v tom ohledu abstraktnější je. A pakliže v Javě programátoři v některých případech záměrně píší Yoda-style ("abc".equals(s)) právě a jen proto, aby jim to nespadlo na výše diskutované NPE, pythonní porovnávání stringů vyjde z tohoto srovnání abstraktněji.
Tak samozřejmě, že samotný operátor == více abstraktní zas tak o moc není, ale já jsem zmiňoval celý operator overloading, tedy že můžeš využívat operátory pro svoje potřeby. To už abstraktní je. Například se tím dají dělat věci jako path, což je podle mého názoru hodně abstraktní věc.
Obdobně tak dědičnost nebo generické programování odstíní programátora od starosti o to, s jakým konkrétním typem pracuje, a umožní mu svoje řešení zobecnit. Python umožňuje dosáhnout stejné úrovně abstrakce, ale tím, že neposkytuje žádné garance, ve výsledku tu abstrakci spíš ubírá. Duck-typing je vadný koncept: reálně se mi v Pythonu stává, že nevím, jaký typ mám někam poslat, ani jaké má mít vlastnosti, a musím se tím zaobírat mnohem víc než v Javě.
Tak tam to typování prostě cpi, ne? Já poslední dobou mypy trochu používám na osobních projektech, třeba teď jsem to použil v generátoru mého blogu. A už to má support přímo v pythonu.
Pro zcela konkrétní příklad: jaký typ očekává metoda set_color(self, color) z matplotlib? Z dokumentace ani signatury metody není patrné, že očekává HTML-like string ve tvaru "#rrggbb". Absentující dokumentace je sice vinou projektu, ale jazyk mi zde neposkytuje žádný dodatečný komfort pro rozřešení této nejasnosti. Čisté, automatické a bezmyšlenkovité řešení v Javě by spočívalo v definování třídy Color s několika přetíženými konstruktory, kde by patrně i bez dodatečného popisu bylo možné několika rychlými experimenty pochopit, jaké hodnoty jsou očekávány na vstupu. To by současně odstranilo potřebu onen string parsovat na straně jedné a generovat na straně druhé. Proto absenci statického typování reálně považuji za ztrátu abstrakce asi podobně jako kdyby jazyk nerozlišoval jména parametrů.
Jako tohle beru, ale jednak je blbě pojmenovaná signatura té metody, kdy se parametr nemá jmenovat color, ale něco jako rgb_hexstring, pak taky to má mít docstring. Hlavně ten argument ale úplně opomíjí, že i v javě můžeš mít hovnokód, že tam tu color budeš hledat půl dne, což jsem si zažil nejednou když někdo neumí OOP a pak lepí patterny úplně blbě. Takže typový systém tě před hovnokódem sám od sebe neubrání.
Je to ale pření se o milimetry, zatímco před námi jsou kilometry neprobádaného prostoru. Ve všech současných jazycích se reálně programuje skoro stejně a zkratky, které poskytují ty „vyšší“ jazyky, jsou pořád jen trochu lepší lopaty, které se o něco méně lámou. Jak abstraktní je přemýšlet nad tím, v kolika vláknech můj program poběží a řešit z toho vyplývající problémy? Jak abstraktní je řešit serializaci a deserializaci dat?
Si zkus něco čistě funkcionálního.
Nedosahujeme zatím ani zdaleka úrovně abstrakce lidského jazyka
Což je imho dobře, ne špatně, i když to tak na první pohled nemusí třeba vypadat.
potažmo schopností lidské mysli
Tohle je takové dost nicneříkající. Například lispy jsou populární právě tím, že si je různí pologéniové přiohnout ke svému obrazu a pak jsou v nich absurdně efektivní, až na to že ten kód už nikdy nikdo nepochopí a je nekompatibilní s úplně celým zbytkem světa. Forth to samé.
Přít se o to, jestli je jeden z mnoha těch tuctových jazyků, co jsou na trhu, abstraktnější než druhý, je až na absolutní nesmysly typu „Java je nízkoúrovňový jazyk srovnatelný s C“, vlastně směšné.
Eh, ani moc ne. Například to přímo souvisí s efektivitou.
11.6. 03:28 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Například se tím dají dělat věci jako path, což je podle mého názoru hodně abstraktní věc.
Nope. Zápis Path("bar") / "foo.txt" fakt nepovažuji za abstraktnější než os.path.join("bar", "foo.txt"). Je to úplně totéž. Musíš vědět, že pracuješ s typem Path, že je pro něj přetížený operátor /… Jak se to liší od situace, kdy musíš vědět, že existuje funkce join, která dělá totéž a akceptuje stejné argumenty (operandy)? Z hlediska uvažování programátora je to úplně totéž, s jedním podstatným rozdílem: přetěžování operátorů tímto způsobem je neskutečná prasárna a do projektu bych si to nikdy nepustil. Přejmenovat funkci na dopředné lomítko, protože „cesty přece obsahují dopředná lomítka!“ (na některých platformách, that is… zdravím do Microsoftu), bez ohledu na to, že všude jinde se infixově zapsaným lomítkem provádí dělení, pouze ubírá na čitelnosti. Takový kód produkují akorát lidi, co si zrovna přečetli tutoriál, jak se ten krutopřísný operator overloading používá a mají potřebu všem ukázat, že to jako umí. S abstrakcí to nemá společného vůbec nic. Je to syntaktický cukr, a to extrémně neužitečný a dementní syntaktický cukr. Možnost volat obecně kterékoliv metody infixově by mohla být, dejme tomu, užitečná, ale zase komplikuje čtení kódu (jednou a.b(c), podruhé a b c) a jak říkám, určitě nepřidává žádnou další abstrakci.
Tak tam to typování prostě cpi, ne? Já poslední dobou mypy trochu používám na osobních projektech, třeba teď jsem to použil v generátoru mého blogu.
S typováním nemám problém primárně ve svém kódu, ale v cizím kódu. Jak sám píšu, chybějící dokumentace je vinou projektu, ale jazyk neposkytuje žádné vodítko a reálně vyžaduje větší pátrání a přemýšlení na mé straně. Viz argument s názvy… argumentů. Efektivně za důkaz abstrakce, potažmo její absence, považuji to, jak moc nad něčím musím přemýšlet místo toho, aby to bylo magicky vyřešeno za mě, nebo to šlo snadno odhadnout. Kdybych měl někde pointer na pár bajtů v paměti a nevěděl, jak je mám interpretovat, ale místo toho jsem na to musel přijít z nějakých externích zdrojů a pak to zkusit spustit a doufat, že už to teda bude fungovat, bude to srovnatelně hloupé jako programovat v jazyce s volitelným typováním, které komunita považuje převážně za zbytečné a které pokud náhodou někdo používá, může si do něj psát v podstatě cokoliv v závislosti na tom, jestli používá nebo nepoužívá statický analyzér, který ho vypíčuje. a: str = 5 je v Pythonu validní kód a pokud někdo podobnou stupiditu udělá v argumentu a nesjede si to tím volitelným checkerem, bude ten checker pak hlásit chybu v mém kódu.
Což je imho dobře, ne špatně, i když to tak na první pohled nemusí třeba vypadat.
Abstrakce znamená, že nad něčím – co v danou chvíli považuješ za detaily – nepřemýšlíš. Někde si takový luxus samozřejmě dovolit nemůžeš, nebo to musíš nějak dořešit později (např. testováním).
Například lispy jsou populární právě tím, že si je různí pologéniové přiohnout ke svému obrazu a pak jsou v nich absurdně efektivní, až na to že ten kód už nikdy nikdo nepochopí a je nekompatibilní s úplně celým zbytkem světa.
Tak ono pracovat s kódem, jedním konkrétním, bajt po bajtu, taky není moc abstraktní, že.
Například to přímo souvisí s efektivitou.
Takže pokud vytvořím dialekt existujícího jazyka, který bude někde na úrovni Ostrajava nebo překladů C do češtiny hromadou #define, a svoláváním „focus groups“ cíleně vyšlechtím takovou syntaxi, která bude nejefektivnější z hlediska rychlosti zápisu, tak je možné, že bude abstraktnější než ten původní jazyk?

Je těsnopis abstraktnější než normální písmo?
11.6. 03:33 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Nebo jednou b(a, c), podruhé a b c, ale to je detail.
11.6. 10:29 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Například se tím dají dělat věci jako path, což je podle mého názoru hodně abstraktní věc.
Nope. Zápis Path("bar") / "foo.txt" fakt nepovažuji za abstraktnější než os.path.join("bar", "foo.txt"). Je to úplně totéž. Musíš vědět, že pracuješ s typem Path, že je pro něj přetížený operátor /… Jak se to liší od situace, kdy musíš vědět, že existuje funkce join, která dělá totéž a akceptuje stejné argumenty (operandy)?
IMO to úplně totéž není. Ta syntaxe s infix operátorem líp podporuje řetězení, tj. a / b / c. Obecně ty 'lepší' syntaxe pak třeba umožňují method chaining nebo (ještě abstraktněji) tacit programming ...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 04:09 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
os.path.join("a", "b", "c", "d"), příp. v cyklu místo path /= filename by bylo path = os.path.join(path, filename). Stejně abstraktní.
12.6. 05:12 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Podle me se s Bystroushaakem mijite v diskusi, protoze to spatne vysvetluje. Syntakticky cukr opravdu neni abstrakce, ten tu abstrakci jen umoznuje vyjadrit podobnym jazykem.

Tou skutecnou abstrakci v tomto konkretnim pripade je definice cesty jako samostatneho typu. Takze misto "cesta/k/memu/souboru", coz je retezec (a neni zcela zrejme, ze jde o cestu a jake jsou jeji slozky), muzeme psat Path("cesta") / "k" / "memu" / "souboru", coz prave vyuziva te abstrakce, ze cesta je typ. Takze to skutecne neni abstraktnejsi nez os.path.join("cesta","k","memu","souboru"), ale je to (IMHO) citelnejsi, protoze ta abstrakce nam umoznuje zapsat to jazykem, ktery uz zname (tradicni zapis cesty). A zaroven ten jazyk zna i interpret Pythonu (narozdil od te puvodni cesty, o ktere vi jen to, ze je retezcem), coz je prave pointou vytvoreni te abstrakce.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
12.6. 07:25 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Já si nemyslím, že je to v tomto případě čitelnější, ale souhlasím s tebou v tom, že zápis s typem je abstraktnější (i čitelnější) než zápis, kde si ho musíš domýšlet. Je to trochu paradox a zdůrazňuji slovo musíš, protože kdybychom typ znát nepotřebovali a jazyk nás naopak nutil s ním pracovat, bylo by to projevem absence abstrakce.
xkucf03 avatar 12.6. 14:45 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Přetěžování operátorů

Tou skutecnou abstrakci v tomto konkretnim pripade je definice cesty jako samostatneho typu. Takze misto "cesta/k/memu/souboru", coz je retezec (a neni zcela zrejme, ze jde o cestu a jake jsou jeji slozky)

Souhlasím, že místo obecných typů (řetězce, čísla) je lepší používat skutečné typy, které vystihují tu podstatu (např. jméno souboru je něco jiného než jméno osoby) a ne jen implementační detail (někde uvnitř je to oboje textový řetězec1). Ale tohle dělá třeba i Java nebo C++.

Ten typ pak může mít specifické metody, které s ním souvisejí (a které by u univerzálního textového řetězce nedávaly smysl). Ale jestli to jsou metody nebo přetížené operátory, to už není zásadní rozdíl.

muzeme psat Path("cesta") / "k" / "memu" / "souboru" … citelnejsi, protoze ta abstrakce nam umoznuje zapsat to jazykem, ktery uz zname (tradicni zapis cesty)

Když např. v shellu zadám ls "/etc" / "passwd", tak to udělá něco úplně jiného, než ls /etc/passwd, takže to není moc funkční analogie a takové věci mohou být i dost matoucí.

Nevím, jestli je to čitelnější. Tady bych si sice správně tipnul, že to spojuje cesty, ale jinde jsou přetížené operátory svým způsobem obfuskace.

Přetížený operátor ušetří psaní pár znaků těm, kteří ten konkrétní operátor mají nastudovaný, ale všem ostatním, ztíží porozumění kódu.

Když jsem se naučil přetěžovat operátory v C++, tak jsem nadšeně předělal pár metod ve svém kódu na operátory… a pak jsem se nad tím zamyslel a předělal to zase zpět, protože to nebylo prokazatelně lepší. Bylo to jen „chytřejší“ a „pokročilejší“ a dělalo mi to radost z toho, co jsem se zrovna naučil. Ale to jsou vlastnosti, které ostatní programátory nezajímají a mají pro ně nulovou nebo spíš zápornou hodnotu. Oproti tomu v Javě je snadnější udržet tyhle pudy a kreativitu na uzdě a psát „nudný“ kód, který „jen“ dobře slouží.

V některých případech přetěžování operátorů využití má a může to vést na elegantní kód – ale s mírou, s rozmyslem a někdy je méně více.

Co se týče studia nového/neznámého kódu, tak většina IDE umí proklik na definici metody. Ale kolik jich umí proklik na definici operátoru. Ještě těžší je to při vyhledávání na internetu: zkus si do vyhledávače zadat název jazyka či knihovny a názvu metody – máš velkou šanci, že najdeš, co potřebuješ. Ale zkus si do vyhledávače zadat název jazyka či knihovny a lomítko, závorku, plus nebo hvězdičku…

[1] i když cesty k souborům jsou spíš pole bajtů, ale to teď nechme stranou

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
12.6. 10:36 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
os.path.join("a", "b", "c", "d"), příp. v cyklu místo path /= filename by bylo path = os.path.join(path, filename). Stejně abstraktní.
Furt nesouhlasim ;-)

Zaprvý, tiše jsi přidal požadavek na variadický funkce, což je taky abstrakce (je to abstraktnější než non-variadická funkce) a ne všechny jazyky ji podporují. Třeba v C++ nebo Rustu uděláš jen tu variantu s infix operátorama (resp. v C++ jde využít C-čkovou podporu pro variadický funkce, ale je to z pohledu C++ hnusný / považuje se za antipattern).

Zadruhý, ta varianta s operátorem je IMO abstraktnější proto, že ten typ path obsahuje informaci, že podporuje operaci / , čehož může využívat abstrahovaný kód (např. skrz duck typing v dynamickejch jazycích a skrz vtables a/nebo generika ve staticky typovanejch). Je pravda, že zrovna u path to asi nemá úplně význam, ale obecně ano. Samozřejmě implementace operátoru je pouze syntax sugar pro member funkci, takže to je stejně abstraktní, ovšem standalone funkce je méně abstraktní, protože neumožňuje polymorfismus (resp. minimálně v pythonu a dalších běžných jazycich ne, v jiných jazycích to může být jinak).
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 11:02 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
No, já jsem nepřidal požadavek na nic. Ono je těžké bavit se o výšce abstrakce jednoho konkrétního jazykového konstruktu, když osamoceně jaksi nedává smysl bez toho jazyka okolo. Ale tady jsme primárně srovnávali Javu a Python, jak tomu ostatně bývá v diskuzích v tomto osazenstvu naším dobrým zvykem, a ty volitelný počet argumentů podporují oba.

Ano, informaci o typem podporovaných operacích asi lze považovat za abstrakci (ačkoliv tu informaci jde získat i odjinud a pak by to fungovalo i pro uživatelem definované operace, ne jen ty definované knihovnou, a navíc u toho nehrozí kolize [tak moc jako u jednoho sdíleného jmenného prostoru], takže…). Je to nicméně nezávislé na tom, jak se ta operace jmenuje (jestli je dopředné lomítko validní název, nebo nikoliv) a zda ji lze volat infixově.

S polymorfismem souhlasím, ale to je opět řešitelné samotným typem a nezávislé na přetěžování operátorů.
Bystroushaak avatar 11.6. 14:14 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Nope. Zápis Path("bar") / "foo.txt" fakt nepovažuji za abstraktnější než os.path.join("bar", "foo.txt"). Je to úplně totéž.
Tak doslova to není úplně totéž, že. A pointa byla v tom že abstraktní feature je oprátor overloading jako takový. Knihovna path může vést na abstraktnější kód, není to ale nutně vždy, v tom máš pravdu.
Z hlediska uvažování programátora je to úplně totéž, s jedním podstatným rozdílem: přetěžování operátorů tímto způsobem je neskutečná prasárna a do projektu bych si to nikdy nepustil. Přejmenovat funkci na dopředné lomítko, protože „cesty přece obsahují dopředná lomítka!“ (na některých platformách, that is… zdravím do Microsoftu), bez ohledu na to, že všude jinde se infixově zapsaným lomítkem provádí dělení, pouze ubírá na čitelnosti. Takový kód produkují akorát lidi, co si zrovna přečetli tutoriál, jak se ten krutopřísný operator overloading používá a mají potřebu všem ukázat, že to jako umí. S abstrakcí to nemá společného vůbec nic. Je to syntaktický cukr, a to extrémně neužitečný a dementní syntaktický cukr. Možnost volat obecně kterékoliv metody infixově by mohla být, dejme tomu, užitečná, ale zase komplikuje čtení kódu (jednou a.b(c), podruhé a b c) a jak říkám, určitě nepřidává žádnou další abstrakci.
To mi přijde jako poněkud vyhraněné tvrzení, ale vesměs jsem líný ti to rozporovat. Jinak já dost často přetěžuji například operátor sčítání (resp. magic method __add__()), pro sčítání nějakých komplexnějších věcí. Například jsem to použil na funkci, co agreguje nějaká data z databáze a výsledný kód byl mnohem, mnohem přehlednější než to co tam bylo předtím.
Jak sám píšu, chybějící dokumentace je vinou projektu, ale jazyk neposkytuje žádné vodítko a reálně vyžaduje větší pátrání a přemýšlení na mé straně.
Jo. A jak jsem psal, já s tebou vesměs souhlasím. V poslední době jsem na tohle částečně změnil pohled, ale v podstatě jsem nějaké optional typování používal vždy, jen to bylo v dosctringu (to mi hlídá IDE/editor odedávna).

Ono to možná bude znít hrozně, ale osobně jsem se naučil prostě kliknout na metodu a přesměrovat se na její zdroják (pycharm to umí dobře i na stdlib a tak dál), takže se prostě v těhle případech kouknu přímo na implementaci.
Efektivně za důkaz abstrakce, potažmo její absence, považuji to, jak moc nad něčím musím přemýšlet místo toho, aby to bylo magicky vyřešeno za mě, nebo to šlo snadno odhadnout.
To částečně souvisí s abstrakcí, ale hlavně s predikovatelností chování. Což záleží na tvém .. backgroundu (pozadí? sumě zážitků a očekávání).
Kdybych měl někde pointer na pár bajtů v paměti a nevěděl, jak je mám interpretovat, ale místo toho jsem na to musel přijít z nějakých externích zdrojů a pak to zkusit spustit a doufat, že už to teda bude fungovat, bude to srovnatelně hloupé jako programovat v jazyce s volitelným typováním, které komunita považuje převážně za zbytečné a které pokud náhodou někdo používá, může si do něj psát v podstatě cokoliv v závislosti na tom, jestli používá nebo nepoužívá statický analyzér, který ho vypíčuje. a: str = 5 je v Pythonu validní kód a pokud někdo podobnou stupiditu udělá v argumentu a nesjede si to tím volitelným checkerem, bude ten checker pak hlásit chybu v mém kódu.
Mno, tak v něm nedělej, ne? Jako když ti něco očividně nevyhovuje, tak proč se tím trápit?
Takže pokud vytvořím dialekt existujícího jazyka, který bude někde na úrovni Ostrajava nebo překladů C do češtiny hromadou #define, a svoláváním „focus groups“ cíleně vyšlechtím takovou syntaxi, která bude nejefektivnější z hlediska rychlosti zápisu, tak je možné, že bude abstraktnější než ten původní jazyk?
Ne. Neplatí to tak, že co je efektivní, je zároveň i abstraktní. Jen že co je abstraktní bývá často efektivní.
Je těsnopis abstraktnější než normální písmo?
Například jazyk je abstraktní, protože skoro všechno v něm má několik významů, sarkasmů, ironií a kde čeho a běžně se k nim neuvádějí jejich definice. Ty se předpokládají že má člověk v hlavě, nebo je pochytí z kontextu. Díky tomu se můžou lidi domlouvat krátkými modulovanými skřeky a stavět na tom civilizaci.

Těsnopis může být abstraktnější než normální písmo, pokud to není jen tupá substitce, ale například začneš abstrahovat celé věty, které pak zapíšeš jedním klikyhákem a jen do toho doplníš proměnné, nebo si v něm například začneš definovat slova, která ani neexistují v jazyce, který zapisuješ.
12.6. 04:09 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Mno, tak v něm nedělej, ne? Jako když ti něco očividně nevyhovuje, tak proč se tím trápit?
V Pythonu jsem pro některé úlohy výrazně efektivnější než např. v té Javě, ale to nemá nic společného s úrovní abstrakce.
Například jazyk je abstraktní, protože skoro všechno v něm má několik významů, sarkasmů, ironií a kde čeho a běžně se k nim neuvádějí jejich definice.
V tom ale abstrakce nespočívá. Abstrakce spočívá ve zjednodušení nebo zobecnění. Můžu říct, že jsem někam jel a soustředit se na podstatu sdělení, např. na skutečnost, že jsem viděl krávu. Je jedno odkud kam jsem jel, jaký dopravní prostředek jsem k tomu použil a jestli jsem krávu spatřil levým nebo pravým okem nebo oběma současně. Nemusím nad tím vůbec přemýšlet, a přesto se o tom můžu bavit.

Pokud při programování potřebuji provést konkrétní operaci nad konkrétními proměnnými konkrétního typu, je z hlediska abstrakce opravdu úplně, ale úplně irelevantní, jestli metodu ztělesňující danou operaci zavolám nebo nezavolám infixově a jestli může nebo nemůže obsahovat takové nebo makové znaky. To je přece úplně absurdní. 2.*(3) ve Scale není méně abstraktní než infixový zápis 2 * 3.

Co je opakem něčeho abstraktního? Něco konkrétního. Volání metod / a join je stejně konkrétní a zvolená notace na tom opravdu nic nezmění.
Bystroushaak avatar 12.6. 13:01 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
V Pythonu jsem pro některé úlohy výrazně efektivnější než např. v té Javě, ale to nemá nic společného s úrovní abstrakce.
Ale? A s čím tedy?
V tom ale abstrakce nespočívá. Abstrakce spočívá ve zjednodušení nebo zobecnění. Můžu říct, že jsem někam jel a soustředit se na podstatu sdělení, např. na skutečnost, že jsem viděl krávu. Je jedno odkud kam jsem jel, jaký dopravní prostředek jsem k tomu použil a jestli jsem krávu spatřil levým nebo pravým okem nebo oběma současně. Nemusím nad tím vůbec přemýšlet, a přesto se o tom můžu bavit.
Eh. Myslím že jsme se nepochopili, ale nezajímá mě to dost na to abych se do téhle diskuze pouštěl.
xkucf03 avatar 12.6. 15:37 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Ale? A s čím tedy?

Co třeba dostupnost knihoven nebo návodů na webu? Jsou určité domény, kde je Python velice módní a ty knihovny a návody tam existují – zatímco třeba v Javě nebo Lispu by sis je musel programovat sám. O úrovni abstrakce jednotlivých jazyků to ale nevypovídá vůbec nic.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
12.6. 16:04 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Jo, knihovny taky.
12.6. 16:02 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Ale? A s čím tedy?
Prostě efektivita zápisu. Kdo umí dobře používat sed nebo awk, taky v něm jistě bude efektivnější než kdyby své filtry a příkazy zapisoval v jiném jazyce, který sice má třeba stejné možnosti, ale ukecanější syntaxi. To neznamená, že třeba Perl je nejabstraktnější jazyk.

xkucf03 avatar 12.6. 15:31 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tak doslova to není úplně totéž, že. A pointa byla v tom že abstraktní feature je oprátor overloading jako takový. Knihovna path může vést na abstraktnější kód, není to ale nutně vždy, v tom máš pravdu.

Nepopírám, že přetěžování operátorů je (někdy) užitečné. Ale stále moc nechápu, proč máš potřebu to spojovat s úrovní abstrakce. Jestliže můžu zavolat jednu metodu, stejně jako můžu zavolat ten operátor, tak mi to přijde jako pořád ta samá úroveň abstrakce. Nebo můžu s přetíženým operátorem udělat něco, co bych s metodou/funkcí nemohl?

Dovedu si představit nízkoúrovňovou knihovnu, kde se to jen hemží přetíženými operátory, ale pracuje se tam s nízkoúrovňovými typy a implementační detaily ti tam prosakují na povrch. A dovedu si představit vysokoúrovňovou knihovnu, kde jsi od těch implementačních detailů hezky odstíněný a můžeš se souviset na svoji obchodní logiku (tzn. vyšší úroveň abstrakce), přestože se tam používají „jen“ metody.

Ono to možná bude znít hrozně, ale osobně jsem se naučil prostě kliknout na metodu a přesměrovat se na její zdroják (pycharm to umí dobře i na stdlib a tak dál), takže se prostě v těhle případech kouknu přímo na implementaci.

Pokud musíš zkoumat implementaci, abys mohl použít nějakou knihovnu, tak je něco špatně. V jazyku, nástrojích, chybějící dokumentaci…

Vyvíjet tímhle způsobem je špatné resp. neefektivní. Mezi programátory jednotlivých částí by mělo ležet rozhraní (kontrakt), za které se nemusejí dívat. A na své straně od té pomyslné zdi, si každý může dělat, co chce, a má svobodu měnit svoje implementační detaily. Pokud se musíš dívat na kód toho druhého a vyvíjíš podle něj, tak si buď zaděláváš na problémy (tvůj kód přestane v budoucnu fungovat) nebo jemu bereš svobodu měnit implementační detaily (on se bude snažit zachovat zpětnou kompatibilitu i za cenu, že to nebude efektivní nebo mu to přidělá práci).

Související pojem: clueless.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
12.6. 15:40 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Nepopírám, že přetěžování operátorů je (někdy) užitečné. Ale stále moc nechápu, proč máš potřebu to spojovat s úrovní abstrakce. Jestliže můžu zavolat jednu metodu, stejně jako můžu zavolat ten operátor, tak mi to přijde jako pořád ta samá úroveň abstrakce.
No, vysvětlení, který mě napadá, je, že jazyky, který nemaj přetěžování operátorů (Java, Go,...) typicky operátory mají, ale ty operátory jsou hardcodovaný jen pro nějakou množinu jazykem definovaných typů.

Tzn. definice těch operátorů není abstraktní, ale "magická", tj. např. integer prostě má magicky vlastnost, že u něj funguje infix +.

Oproti tomu jazyky s možností definovat operátory obsahují abstraktní koncept definice operátorů, tj. sémantika opetároů je v nich zobecněná na víc než jen úzkou množinu "vyvolených" typů. Jak moc, to je otázka konkrétního jazyka. (V Haskellu to je abstrahováno ještě o třídu výš než třeba v Pythonu, C++, Rustu...)
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 16:38 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Z hlediska programátora je ti jedno, jestli sečtení dvou čísel volá nějakou metodu, nebo je to jen pravidlo nějak uměle našroubované zvenku.

Z hlediska návrhu jazyka je čistější a elegantnější to zobecnit, to máš pravdu.
xkucf03 avatar 11.6. 15:17 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tak samozřejmě, že samotný operátor == více abstraktní zas tak o moc není, ale já jsem zmiňoval celý operator overloading, tedy že můžeš využívat operátory pro svoje potřeby. To už abstraktní je. Například se tím dají dělat věci jako path, což je podle mého názoru hodně abstraktní věc.

V čem je to abstraktnější než volání vhodně pojmenovaných metod? Přijde mi to jen jako syntaktický cukr. Ano, může být někdy příjemný, ale že by to byla vyšší úroveň abstrakce? Tam přece záleží víc na obsahu (co člověk řeší) než na formě.

Co se týče přetěžování operátorů, nemám na to úplně vyhraněný názor. Když se použije správně, tak to může být elegantní, ale na druhé straně to zvyšuje složitost jazyka a kódu a klade vyšší nároky na programátora. Ale tak je to v podstatě se vším (anotace, generika, lambda funkce atd.).

Tohle je takové dost nicneříkající. Například lispy jsou populární právě tím, že si je různí pologéniové přiohnout ke svému obrazu a pak jsou v nich absurdně efektivní, až na to že ten kód už nikdy nikdo nepochopí a je nekompatibilní s úplně celým zbytkem světa.

+1

Podobně na tom může být C++, když to někdo přežene se šablonami, přetěžováním operátorů atd. Oproti tomu omezenější jazyky jako Java ti nedávají tolik prostoru ke „kreativitě“ a nutí tě psát standardní kód, kterému budou ostatní rozumět. Chápu, že ne každému to vyhovuje a přijde mu to třeba moc omezující, ale pro týmovou spolupráci a podnikový software je to správná volba.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Fluttershy, yay! avatar 11.6. 15:22 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Oproti tomu omezenější jazyky jako Java ti nedávají tolik prostoru ke „kreativitě“ a nutí tě psát standardní kód, kterému budou ostatní rozumět. Chápu, že ne každému to vyhovuje a přijde mu to třeba moc omezující, ale pro týmovou spolupráci a podnikový software je to správná volba.
Where Did Software Go Wrong?
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
xkucf03 avatar 11.6. 16:23 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?

Kolibáčobot náhodně sypající odkazy… Jestli k tomu sám nemáš co říct, tak raději neříkej nic.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Fluttershy, yay! avatar 12.6. 16:40 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tak náhodně, že se náhodou trefil k tématu. Co je pravděpodobnější?
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
12.6. 17:18 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
No jo, ok, ale je dobrý - určitě vzhledem k tomu, že ten text je celkem dlouhej - zmínit (klidně krátce), čím je to k diskusi relevantní...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 17:22 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
+1
Fluttershy, yay! avatar 12.6. 18:11 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Ale už ve třetím odstavci se píše
It is impossible to separate software from the human and historical context that it is situated in. Code is always addressed to someone. As Structure and Interpretation of Computer Programs puts it, “programs must be written for people to read, and only incidentally for machines to execute” (Abelson et al. 1996). We do not write code for our computers, but rather we write it for humans to read and use. And even the purest, most theoretical and impractical computer science research has as its aim to provoke new patterns of thought in human readers and scholars—and these are formulated using the human-constructed tools of mathematics, language, and code.
Zbytek to rozvíjí. Ono to hlavně vyžaduje víc se zamyslet.

Pokud bych z toho měl extrahovat nějaký úryvek, pak
Here we see the way in which voices mediate our action—how does Go mediate the way in which we write and think about code? Jussi Pakkanen, creator of the Meson build system, called the mediating aspect of voices shepherding: “It’s not what programming languages do, it’s what they shepherd you to.” Shepherding, or mediational means, are “an invisible property of a programming language and its ecosystem that drives people into solving problems in ways that are natural for the programming language itself rather than ways that are considered ‘better’ in some sense” (Pakkanen 2020). We internalize the voices of our social relations, and these voices mediate or shepherd our action. Every time we dive into a codebase, speak with a mentor, take a course, or watch a conference talk, we are deliberately adding new voices to the little bag of voices in our mind. This is not purely a process of consumption: in internalizing voices, we form counter-words, mentally argue with them, and ventriloquize them through our own work—in a word, we engage in a dialogue.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
11.6. 16:34 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Oproti tomu omezenější jazyky jako Java ti nedávají tolik prostoru ke „kreativitě“ a nutí tě psát standardní kód, kterému budou ostatní rozumět.
Hm, tohle je takovej věčnej argument Javistů a nově taky Gočkařů (z nichž část odsuzuje z tohohle důvodu dokonce i generika), ale přijde mi, že v praxi to nefunguje. Specielně v tý Javě se vývojáři sice nemůžou vyřádit (tolik) s třeba šablonama, operator overloadingem nebo podobně, ale o to víc se rádi vyřádí s šílenými OOP hiearchiemi, přeabstrahovanými interfacy a návrhovými vzory. Z toho pak vznikaj hromady abstraktních továren, singletonů, visitorů, bridgů, proxy objektů, fasád a dalších šíleností. A specielně podnikový software mi přijde se v tomhle celkem vyžívá. Je to všechno jen ne jednoduché. Tím nechci říct, že návrhový vzory by se vůbec neměly používat, jde mi o to, že to chce nějakou rozumnou míru, kterou v Javě často vývojáři absolutně nedodržujou a návrhovzorujou do bezvědomí.

No takže suma sumárum můj dojem je, že s kreativitou programátorů se na úrovni jazyka nic moc nedá dělat...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 04:58 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tím nechci říct, že návrhový vzory by se vůbec neměly používat, jde mi o to, že to chce nějakou rozumnou míru
Souhlasim s tebou. Ale podle me by se nemely pouzivat vubec. Podle me zakladni vada myslenky "navrhovych vzoru" je v tom, ze - narozdil od jinych abstrakci - se proste neobtezujeme pocitaci vysvetlit, jak ten navrhovy vzor vypada.

Definovat funkci (nebo proceduru) znamena pocitac neco naucit (coz je neco, co me fascinovalo ve 3.tride, kdy jsem se zacal ucit Karel jako jeden z prvnich programovacich jazyku, a definoval funkci "vlevo vbok" jako posloupnost 3x "vpravo vbok"). Zavolat funkci je pak vlastne jako pocitaci vysvetlit "vzpomen si, jak jsem te naucil f(x), a udelej to". Funkce jsou v programovani hlavni mechanismus, ktery mame pro vytvareni abstrakci (a matematicky se pak da ukazat, ze staci jako jediny - viz lambda kalkulus).

Navrhove vzory tuhle vlastnost nemaji. Mozna to jsou abstrakce, ale ty zustavaji v mozku programatora. Pocitaci nevysvetlime, co je tou abstrakci, ktera se skryva za prislusnym navrhovym vzorem. A protoze pro nas jako pro programatora ten pocitac neni partnerem, vysledny kod se vzory je mene citelny. Takze napriklad ja bych mohl mit navrhovy vzor v jazyce Karel, pokud chces udelat to same zrcadlove, napis vsude 3x vpravo vbok, kde je 1x vpravo vbok. To je sice uzitecna pomucka, ale prakticky dost necitelna. Kdyz uvidim blok kodu s timto navrhovym vzorem, budu si muset vybavit, ze nekdo pouzil tento vzor, a snazi se provest symetrickou operaci. Zatimco pokud si definuji funkci "vlevo vbok" a vzorem pak bude, zavolej "vlevo vbok" misto "vpravo vbok", pak bude mnohem jasnejsi, co jsem chtel rict. (Muzeme to pak jeste zobecnit a definovat funkci vyssiho radu "zrcadleni", ktera to nahrazeni provede sama od sebe, a tim se vzor zcela zaobali do funkcni abstrakce.)

Pointa je, ze ty funkce, ktere definuji tu abstrakci, jsou neco, cemu pocitac rozumi. Muzeme si napriklad nechat zjistit, v jakem kontextu se dana funkce (abstrakce) pouziva, coz jde u vzoru velmi tezko. (Navrhovy vzor je asi jako dvojsmysl v mezilidske komunikaci - nerikame primo, co si myslime, a doufame, ze to druha strana - programator co to po nas bude cist - pochopi tak, jak jsme zamysleli.)

Shrnuto, pokud maji byt navrhove vzory uzitecnym jazykem, v kterem komunikujeme jako programatori, musi pocitac tomu jazyku porozumet. A to se stane jen tak, ze je zahrneme do nejake abstrakce, ale v ten moment se z nich (typicky) stanou "jen" knihovni funkce, prestanou byt "vzorem".
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
12.6. 07:25 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
O tom návrhové vzory nejsou. Podělím se o konkrétní příklad, kde jsem použil továrnu.

Byla jednou jedna třída a v té si žila jedna malá, ale důležitá metoda, která něco dělala. A dělala moc složité věci, milí programátoři! Tak složité, že by bylo tuze nepraktické dělat je v té metodě přímo. :o A tak si na pomoc zvala úplně novou instanci jiného objektu, kterou si k tomuto účelu sama vytvářela.

A pak přišel čas na jednotkové testování. A najednou byl problémeček! Vůbec nebylo zjevňoučké, jak otestovat jen přidanou hodnotu této metůdky, a ne znovu testovat i vše, co dělá ten druhý objekt. :o

A pak přišel pan továrník a postavil továrnu, která ten objekt pro metůdku vyráběla, a v testu postavil druhou továrnu, která tam posílala nějaké namockované objekty, a všichni byli tuze spokojení. A jestli se neutovárnovali, tak tam továrnují dodnes!

(Ve světě funkcí: funkce f dostává funkci g jako argument místo aby ji volala přímo. Stejný problém, principielně stejné řešení. V Javě to znamenalo prostě přidat továrnu jako field, inicializovat lambdou/anonymní třídou na return new RealObject(…), v oné metodě místo new RealObject(…) volat factory.newInstance(…) a v testu si tam poslat jinou vlastní továrnu, která vytváří jiný objekt. Cca 5 řádků kódu navíc.)
12.6. 08:12 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Vubec nechapu pointu tvoji polemiky. Zrovna tovarna je dobry priklad zbytecneho navrhoveho vzoru. Pridat si argument do funkce prece neni tezke.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
12.6. 08:19 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Pointa byla, že přidat si argument do funkce je použití toho návrhového vzoru. Tady jediný rozdíl byl v tom, že jsem to nechtěl mít v argumentu přímo té funkce (metody), ale funkce, která ji produkuje (třída, ve které se nachází), abych ty argumenty nemusel předávat pokaždé znovu.
12.6. 08:47 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Mozna jsem se spatne vyjadril. Kdyz jsem napsal "navrhove vzory by se nemely pouzivat vubec", tak jsem myslel obecne v programovani. Je samozrejme mozne, ze tvuj konkretni jazyk (Java) nema dostatecne vyrazove prostredky, jak se nekterym vzorum vyhnout, a pak je to zel nevyhnutelne (asi jako v tom assembleru), lec neprehledne.

Myslim, ze to bezdecne vystihl Bystroushaak, kdyz ti napsal, zkus si to v nejakem ciste funkcionalnim jazyce. (Mimochodem, tesi me, ze dal na moji radu a jal se funkcionalni programovani vice studovat.)

Jde o to, ze alternativy z funkcionalnich jazyku vrhaji dost pochybnosti na tovarnu jako uzitecny navrhovy vzor. Bud jsou ty uziti trivialni, nebo dusledkem spatneho navrhu, nebo absenci schopnosti Javy zachazet s funkcemi.

Pokud ma byt smyslem vzoru lepsi komunikace, pak neni vubec jasne, co je v tvem pripade komunikovano a proc. Ze se nechces predavat s argumentem? Ve funkcionalnich jazycich, co znaji currying, je to jasne hned, nepotrebujes ten vzor.

Ale to je asi moje druha vytka v rade vetsine navrhovych vzoru, ze je to terminologie navic, ktera casto vice zamlzuje nez osvetluje. Myslim, ze by jsi byl schopen slovy popsat, co delas, i bez pouziti slova tovarna, a vyslo by to kratsi a citelnejsi. Asi jako ten operator "/" na cestach, o kterem jsme se bavili vys.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
12.6. 10:01 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Je samozrejme mozne, ze tvuj konkretni jazyk (Java) nema dostatecne vyrazove prostredky, jak se nekterym vzorum vyhnout, a pak je to zel nevyhnutelne (asi jako v tom assembleru), lec neprehledne.
Prostě jednou potřebuju vytvářet takové objekty, jindy makové, tak je vytvářím nepřímo nějakou funkcí, kterou si vytáhnu někam do argumentů. Dtto kdybych potřeboval volat různé funkce (a ne vytvářet objekty). Jak bys to dělal jinak?
Myslim, ze to bezdecne vystihl Bystroushaak, kdyz ti napsal, zkus si to v nejakem ciste funkcionalnim jazyce.
V průběhu let jsem okrajově koketoval s LISPem, Haskellem, Scalou a nejčerstvěji Erlangem. Myslím si, že jsem s principy funkcionálního programování dobře obeznámen, byť věci jako monády a teorie typů jsou pro mě velkou neznámou a mám v úmyslu se k tomu vrátit.
Bud jsou ty uziti trivialni, nebo dusledkem spatneho navrhu, nebo absenci schopnosti Javy zachazet s funkcemi.
Pokud jsou triviální, tak už se jim nesmí říkat návrhové vzory?

Jinak Java de facto má high-order funkce a i před jejich zavedením v roce 2014 šlo programovat podobně, jen ten kód byl hnusnější a delší.
Ze se nechces predavat s argumentem?
Ale já ho předávám. Považuji za podružný detail, že ho předávám o scope výše. Klidně bych to mohl posílat té metodě přímo a pořád bych mluvil o továrně.
Myslim, ze by jsi byl schopen slovy popsat, co delas, i bez pouziti slova tovarna, a vyslo by to kratsi a citelnejsi.
Praktické zkušenosti z práce, kde návrhové vzory mimochodem nebyly nijak populární a používaly se extrémně střídmě (čti: správně), svědčí o opaku.
12.6. 10:59 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Ale to je asi moje druha vytka v rade vetsine navrhovych vzoru, ze je to terminologie navic, ktera casto vice zamlzuje nez osvetluje. Myslim, ze by jsi byl schopen slovy popsat, co delas, i bez pouziti slova tovarna, a vyslo by to kratsi a citelnejsi. Asi jako ten operator "/" na cestach, o kterem jsme se bavili vys.
+1

Tvůj původní komentář + tohle je velmi dobrá suma důvodů, proč návrhové vzory jsou z většiny šum.

Bherzet zřejmě není dostatečně kovaný javista, kdyby byl, tak by v tom příkladu výše popsal nejenom že používá TOvárNU, ale taky DepeNDenCY INjeCTion / INverSIoN oF COntrOL a možná ještě nějakou další vatu...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 11:40 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Dependency injection samozřejmě používám a než jsem napsal pár hovnokódů a s tím patternem se seznámil, fakt mi to nepřišlo zjevné. Těmi zkušenostmi bych si musel projít stejně, samotná znalost patternu samospásná není, ale je dobré ten problém umět pojmenovat, domluvit se na nějaké štábní kultuře atp. Říct, že závislosti předáváme přes settery, je určitě úspornější než to obšírně vysvětlovat.

Mně přijde, že tu lidi jsou buď strašně otrávení, což chápu, protože – na rovinu – po celém dni programování v práci si člověk prostě chce spíš hrát s něčím pěkným a mít z toho kódu radost a ne řešit „korporátní hovna“, a nebo měli smůlu na totální idioty, kterým návrhové vzory nacpali do hlavy na VŠ, ale protože neměli žádné zkušenosti, cpali to všude úplně nesmyslně hlava nehlava. Což se bohužel děje, ale to není vina těch patternů.
12.6. 15:20 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
a nebo měli smůlu na totální idioty, kterým návrhové vzory nacpali do hlavy na VŠ, ale protože neměli žádné zkušenosti, cpali to všude úplně nesmyslně hlava nehlava. Což se bohužel děje, ale to není vina těch patternů.
Z mýho pohledu, oboje. Vina patternů jako takových to určitě není.

IMO vina je především v kultuře okolo Javy. Ale říct nějak konkrétně, přesně, formálně, v čem přesně je ten problém, to mi nejde. Ono totiž ostatní jazyky, i když jsou třeba těžce abstraktní, taky mají něco jako patterny. Z Javy si člověk může dělat srandu kvůli AbstractFactoryVisitorSingletonům, z Haskellu zase kvůli Zygohistomorfickým prepromorfismům že :-D Ale jinak třeba currying nebo monády jsou taky v zásadě patterny...

IMO ty problémy, které nejsou sice speficiký pro Java kulturu, ale jsou v ní silný, jsou:
  • Označení patternů je vymyšlený tak, aby se líbilo manažerům a/nebo lidem, co programování znaj jen částečně. Říct "zrefaktoroval jsem to tak, že tu věc instancuje objekt poslaný zvenku" prostě zdaleka není tak cool, jako říct "přešel jsem na řešení využívající továrnu, která je dependency-injektována pomocí setteru". Při tom druhém každý manažer zvlhne a pochválí se s ostatními, jak jsou jejich vývojáři produktivní a znalí.
  • Nízký obsah informace. Továrna nebo setter/getter jsou celkem triviální koncepty, rozhodně v porovnání třeba s curryingem nebo monádami.
  • Design patterns občas slouží jako attire, prostě kdo je zná a umí, ten patří do klubu těch správných programátorů. Pokud si myslíš, že přehánim, tak ne, fakt jsou lidi, kteří jsou schopni posuzovat programátoský schopnosti někoho podle toho, jestli má nabiflovaný patterny.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 16:39 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Nevím. Pro mě je to prostě o znalosti, jak řešit určité problémy, a o terminologii pro usnadnění komunikace, abych se nevyjadřoval jako tatar. Např. dependency injection se často používá v kombinaci s nějakým frameworkem, které jsou sice taky jakože fuj, ale reálně to dokáže ušetřit kód a že holt občas to někdo přežene a pak tráví půlku pracovní doby debugováním svých obřích XML konfiguráků je asi tak relevantní jako si v diskuzi o tom, jestli cikání můžou být normální, stěžovat, že někomu ukradli kolo, a je dobré mít výrazový prostředek pro to, že framework předává závislost metodě (injektuje do setteru). Ony se ty slova jinak dost opakují a tohle to občas dost usnadní. Vysloveně stěžejní to není, zkušenosti to nenahradí a pro poměřování pindíků to není úplně nejrelevantnější metrika, protože každý, kdo umí programovat, kterýkoliv běžný pattern pochopí za 3,5 vteřiny, ale svůj smysl to má.

Jsou to v podstatě best-practices a i zkušený programátor může objevit nový pattern, který mu umožní dát jeho kódu lepší štábní kulturu. Osobně jsem třeba rád, že listenery se v Javě jmenují prostě listenery a až na vesměs odůvodnělé výjimky si lidi nevytváří vlastní názvosloví, byť chápu, že ty endorfiny a radost ze sexy elegantního kreativního kódu už tam pak prostě nejsou.
12.6. 17:29 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
a je dobré mít výrazový prostředek pro to, že framework předává závislost metodě (injektuje do setteru)
No, mě právě zatím nikdo moc nepřesvědčil, že to fakt dobré je (resp. vidim to tak, že asi z 20% max)...
protože každý, kdo umí programovat, kterýkoliv běžný pattern pochopí za 3,5 vteřiny, ale svůj smysl to má
Jestli dokážeš libovolnému javistovi (apod., ono třeba u c/c++ to nebude o moc jinak) vysvětlit monádu (i s implikacemi) tak, aby to pochopil za 3.5 sekundy, tak bys měl dostat nějakou cenu za pedagogiku ;-)
Osobně jsem třeba rád, že listenery se v Javě jmenují prostě listenery a až na vesměs odůvodnělé výjimky si lidi nevytváří vlastní názvosloví
Meeeeeh. Asi by mě nemohlo zajímat míň, jestli se tomu říká "listener" nebo "handler" nebo nějak jinak. Beztak je to stejně nejspíš zas jen glorifikovaná lambda...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 18:02 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
No, mě právě zatím nikdo moc nepřesvědčil, že to fakt dobré je (resp. vidim to tak, že asi z 20% max)...
Whatever. Každopádně k tomu jsou ty patterny určené a přesně tak je používám.
Jestli dokážeš libovolnému javistovi (apod., ono třeba u c/c++ to nebude o moc jinak) vysvětlit monádu (i s implikacemi) tak, aby to pochopil za 3.5 sekundy, tak bys měl dostat nějakou cenu za pedagogiku ;-)
Nedokážu, ale monáda úplně nepatří mezi patterny, které jsem měl na mysli. OK, špatně jsem ten výčet zúžil.
Asi by mě nemohlo zajímat míň, jestli se tomu říká "listener" nebo "handler" nebo nějak jinak.
Handler není úplně špatný název, ale přesto je lepší mít ty názvy jednotně. Já ten kód taky budu číst, možná budu používat našeptávání v IDE nebo něco grepovat. Je ustálené tomu v určitých kontextech říkat listener a klást na ostatní (a později i sebe samého) pasti v podobě náhodně pozměněného názvosloví se těžce racionálně obhajuje, zvlášť je-li daný adept s tím názvoslovím seznámen. Podobné záchvaty kreativity jsou jednou z nejzákeřnějších věcí, jaké lze na projektu provádět.
Beztak je to stejně nejspíš zas jen glorifikovaná lambda...
Začalo se to používat v době, kdy si Java o lambdách mohla nechat zdát. Lambdou je možné implementovat jen listenery s právě jednou metodou.
xkucf03 avatar 12.6. 21:29 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
IMO vina je především v kultuře okolo Javy.

Nejvtipnější je, že tohle nejvíc prožívají lidi, kteří v Javě neprogramují a nemuseli by se nějakou javovskou kulturou vůbec trápit :-)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
12.6. 21:36 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Já to na druhou stranu chápu. Já taky nedělám v JavaScriptu a když vidím, co páchají za zvěrstva na nevinných počítačích, dělá se mi nevolno.

Jinak JS1 i oryctolagus v Javě AFAIK občas dělají.
12.6. 21:40 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
No, tak to je spíš důsledek... Jinak bez zkušenosti s Javou nejsem, dělal jsem dřív i nějakou Javu v rámci zaměstnání (byť teda ne moc).

Jinak zkoušels už Kotlin?
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 12.6. 22:25 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Označení patternů je vymyšlený tak, aby se líbilo manažerům a/nebo lidem, co programování znaj jen částečně. Říct "zrefaktoroval jsem to tak, že tu věc instancuje objekt poslaný zvenku" prostě zdaleka není tak cool, jako říct "přešel jsem na řešení využívající továrnu, která je dependency-injektována pomocí setteru". Při tom druhém každý manažer zvlhne a pochválí se s ostatními, jak jsou jejich vývojáři produktivní a znalí.

Potkal jsem v různých firmách už hodně manažerů, ale co jsou to návrhové vzory, věděl asi tak jeden1 nebo dva. Projektové2 manažery tyhle implementační detaily nezajímají, snad neřeknu nic moc důvěrného, ale oni nevnímají konkrétní slova a konkrétní problémy, i když se to před nimi probírá na poradě, je to pro ně jen šum, ale vnímají (více či méně) dobře různé neverbální a podprahové signály a dokáží vycítit, jestli je dotyčný na dobré cestě (tzn. bude to hotové včas nebo s akceptovatelným zpožděním) nebo zda je dotyčný v koncích a neví kudy kam (dodání je v nedohlednu a manažer to bude muset vysvětlovat zákazníkovi). Jestli budeš používat odborné termity nebo tomu budeš říkat familiárně a s humorem třeba šelmostroj, je celkem jedno.

Nízký obsah informace. Továrna nebo setter/getter jsou celkem triviální koncepty

Těch návrhových vzorů je mnohem víc, továrna patří k těm jednodušším. Ale nikdo netvrdil, že návrhové vzory jsou nějaká raketová věda. To snad ale ty koncepty nediskvalifikuje natolik, aby nemohly mít vlastní název.

prostě kdo je zná a umí, ten patří do klubu těch správných programátorů. Pokud si myslíš, že přehánim, tak ne, fakt jsou lidi, kteří jsou schopni posuzovat programátoský schopnosti někoho podle toho, jestli má nabiflovaný patterny

S tímhle se dá asi celkem souhlasit. Tohle taky nemám rád. Ale to je obecně o lidském přístupu – jestli jednáš s ostatními přátelsky a konstruktivně nebo se chceš na ně vytahovat a shazovat je. Taky jsem zažil některé dost nesnesitelné programátory.

(předpokládám, že mluvíš o osobním kontaktu – při tom vzdáleném a textovém může působit jako namyšlený kretén každý druhý, to si člověk nesmí tak brát :-)

[1] bývalý programátor resp. dělal projekťáka a zároveň s tím pořád programoval
[2] ty vyšší to nezajímá už vůbec

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
12.6. 23:59 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Taky jsem zažil některé dost nesnesitelné programátory.

předpokládám, že mluvíš o osobním kontaktu
Jo. Je možný, že jsem měl prostě jen smůlu... To asi nemůžu úplně vyloučit.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 12.6. 19:20 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
ale taky DepeNDenCY INjeCTion / INverSIoN oF COntrOL a možná ještě nějakou další vatu...

Kéž by se tuhle „vatu“ naučilo používat víc programátorů. Stromy závislostí by pak nemusely být tak pekelné.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
12.6. 20:27 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Kéž by se tuhle „vatu“ naučilo používat víc programátorů.
Tou "vatou" myslim něco jinýho, než ten princip, který je pod tim (a který může opravdu bejt užitečnej).
Stromy závislostí by pak nemusely být tak pekelné.
Tomu moc nerozumim - ty řešení, co tam popisuješ, ten strom naopak zvětšují (přibývaj tam různý adaptéry atd.), ne? A specielně třeba relační roury jsou, relativně k vlastnímu kódu, který něco dělá, jeden z nejsložitěji strukturovaných projektů, co znám...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
12.6. 22:17 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
ty řešení, co tam popisuješ, ten strom naopak zvětšují (přibývaj tam různý adaptéry atd.), ne?
Tohle mi vadi taky, to pridavani veci, aby se to pry zjednodusilo a zprehlednilo. Jde to proti Occamove britve. A ty navrhove vzory casto slouzi k obhajobe takoveho pristupu.

Ja chapu, ze se lide pokousi psat snadno udrzovatelny kod. Ale fundamentalne prave myslim, ze porusenim Occamovy britvy k tomu nepovede, naopak.

Mam proste rad DRY KISS.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 12.6. 23:06 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?

Chápu, že je to dlouhé1, ale když budeš mít někdy čas, tak si to zkus přečíst celé. Těmto otázkám se tam věnuji, i tomu, že přidání kódu (navýšení komplexity) na jednom místě může vést k většímu snížení komplexity někde jinde a tím pádem celku.

[1] i když knihy jsou řádově delší a lidi je taky čtou

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
15.6. 15:01 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Asi by bylo lepsi vzit si konkretni priklad. Driv jsem si taky myslel, ze to uplne vzdycky nejde, snizit jak slozitost i mnozstvi kodu, ale od doby co jsem se naucil trochu funkcionalne v Haskellu si to nedovedu predstavit. A stal jsem se obhajcem DRY.

Samozrejme, neco jineho je napsat veci mene abstraktne proste proto, aby to bylo jednodussi na cteni. To je ale jina situace nez kterou resi patterny; muzeme se pak bavit o tom, kolika radkum kodu odpovida jedna indirekce, za ucelem citelnosti.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 15.6. 15:34 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?

Bohužel ani nevím, na co reaguješ. Zkus citovat z toho článku, s čím polemizuješ.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
15.6. 16:10 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Rikam, ze by to chtelo ukazat na konkretnim priklade, proc podle tebe ma smysl, aby velikost kodu narostla za ucelem zjednoduseni cele veci.

Treba ted mi tady kolega udelal jednu vec (podobnou jak pise Bherzet) kvuli testovani - vyrobil tridu, ktera vola vsechno to, co uz implementuje jina trida, akorat ma interface, takze se da mockovat. Takze novy kod - spousta funkci, ktere jen volaji tu samou funkci nekde jinde, proste indirekce. A pak pouzil DI s tou novou tridou, a tak dale.

Vsechno kvuli tomu, ze v Jave nemohu priradit interface existujici tride. V Haskellu by se tohle vyresilo snaz - proste bych udelal typovou tridu a definoval bych tu existujici tridu jako jeji instanci. (A vlastne by se to ani delat nemuselo, protoze cela ta zalezitost pro kterou jsme to delali tady by se dala v Haskellu vyresit jeste mnohem jednoduseji.)

Tim chci ukazat, ze treba takova uzitecna blbost, kterou Java neumi - priradit novy interface existujici tride - zpusobuje, ze se lidi mnohem vic nadrou (a potrebuji DI). Pritom neni hned zrejme, ze by bylo uzitecne, aby to jazyk umel, a ze to neprinasi zadnou nevyhodu.

(A proto je tak dulezite ty "vzory" formalne matematicky zkoumat, protoze v tom formalnim zkoumani se odpovi na podobne otazky.)
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 15.6. 16:14 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?

Jak jsem psal výše, chce si to přečíst ten článek. Jsou tam i konkrétní příklady.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 15.6. 16:17 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?

P.S. S Javou to nemá nic společného, ty příklady jsou v Céčku – schválně, aby bylo jasně vidět, že k tomu žádný zvláštní jazyk nepotřebuješ. Tohle je otázka návrhu/architektury, ne konkrétního jazyka a implementačních detailů.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
15.6. 17:27 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
Tohle je otázka návrhu/architektury, ne konkrétního jazyka a implementačních detailů.
Jenže vlastnosti jazyka celkem hodně ovlivňujou architekturu.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
15.6. 17:33 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: NullPointerException a miliardová chyba?
V Javě máš nějakou architekturu. V C++ bude o něco jiná (ačkoli Java architektura se tam dá trochu emulovat, viděl jsem takové pokusy v raných relpipes). V Rustu by byla jiná podobným způsobem jako v C++, ale ještě o něco dál a směrem k ML. V Haskellu by byla masivně jiná.

IMO tvoje znalosti ohledně architektury jsou Javou ovlivněné o dost víc, než si uvědomuješ...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 15.6. 17:57 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Modulární architektura, závislosti, DI/IoC

Opravdu doporučuji se podívat na ty příklady z praxe, ať máš představu, o čem mluvím.

Jde o úplně obecné principy, které lze implementovat v libovolném jazyce (zrovna ty příklady jsou všechny v C), s Javou to nemá nic společného.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
15.6. 19:22 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Opravdu doporučuji se podívat na ty příklady z praxe, ať máš představu, o čem mluvím.
Uhh... Já to četl. Myslel jsem si, že se v podvlákně bavíme o DI/IoC (jako sub-počátek beru #543). DI/IoC je IMO o architektuře kódu. To, co tam popisuješ ohledně toho Postfixu et al. je prostě modulární/plugin architektura software. Nevim, jestli došlo ve vlákně k nedorozumění, nebo jestli plugin architektuře říkáš DI/IoC. Pokud to druhé, tak samozřejmě ti to nemůžu a nebudu brát, ale z mého pohledu to je přesně instance kontrafibulace.

Co se týče modulární architektury, odpověděl bych na tuhle otázku:
Někteří lidé jsou až posedlí čísly 80 a 20 a snaží se je napasovat na všechno. Já nebudu tvrdit, že 80 % uživatelů používá 20 % funkcí softwaru (a každý jiných 20 %). Ta čísla se budou případ od případu lišit, nicméně pravda je taková, že ne všichni uživatelé používají všechny funkce. Proč by tedy měli být zatěžováni (nebo dokonce ohrožováni v případě bezpečnostních chyb) komplexitou částí, které nepoužívají?
Odpověď je: Protože to je jednodušší pro uživatele i programátora a nemusí to vůbec ničemu vadit. Tvoje námitky proti monolitické architektuře jsou z mého pohledu vesměs slabé. Co se týče té bezpečnosti, očekávám, že software jako Postfix bude napsaný tak, že části, který nejsou nakonfigurovaný, se nebudou spouštět. A i kdyby autoři vyhodnotili, že je to rizikové, můžou tu modularizaci provést interně (tj. nemuset stabilizovat a exponovat plugin API). Tím nechci říct, že by Postfix měl být monolitický. Ta jejich architektura mi celkem dává smysl a souhlasim, že to je celkem pěkný. Ale nepovažuju to (zřejmě narozdíl od tebe) za Jedinou Správnou Cestu. Takováhle architektura má nezanedbatelnou režii pro programátora, pro maintainery balíčků i pro uživatele. IMO není možný tohle prezentovat jako univerzální řešení vhodné pro software obecně. Může to dávat smysl a nemusí. Osobně by mi nejspíš nijak nevadilo, kdyby ta věc byla monolitická nebo o něco monolitičtější.

Přijde mi, že prosazuješ modularizaci do úplného bezvědomí i tam, kde to nepřináší prakticky žádný výhody (nebo jen teoreticky).
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 17.6. 20:47 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Tvoje námitky proti monolitické architektuře jsou z mého pohledu vesměs slabé. Co se týče té bezpečnosti, očekávám, že software jako Postfix bude napsaný tak, že části, který nejsou nakonfigurovaný, se nebudou spouštět.

To jen doufáš. Jistotu ale nemáš a navíc se to může kdykoli změnit, aniž by sis toho všiml. Stačí chyba (nebo záměr) na jediném řádku a najednou se to začne chovat úplně jinak. Na druhé straně tu máš koncepty jako formální verifikace1 (často adorované právě přívrženci funkcionální víry). To je trochu extrém, ke kterému se většina softwaru nikdy nedopracuje (ani to není potřeba), ale to, co říkám já – tzn. nepřibalovat k softwaru nepotřebné nesmysly, které nepoužíváš – to je takový dobrý základ, kterým se dá začít. A myslím si, že by to měla být běžná praxe i pro takový ten řádový „konzumní“ software. Jestli to pak posuneš dál a budeš to nějak matematicky/formálně ověřovat, to už je na tobě – ale osekat ty nepoužívané části je víceméně podmínka nutná. Jinak bys taky mohl verifikovat až do skonání světa a nikdy by ses nedobral konce.

[1] BTW: co říkáš na seL4?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
17.6. 23:28 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
To jen doufáš. Jistotu ale nemáš a navíc se to může kdykoli změnit, aniž by sis toho všiml. Stačí chyba (nebo záměr) na jediném řádku a najednou se to začne chovat úplně jinak.
Ano, chyba (nebo zlý záměr) se samozřejmě může kdykoli objevit. To se stává.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 15.6. 17:52 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Modulární architektura, závislosti, DI/IoC

Ani moc ne – z toho pohledu, o kterém mluvím (na úrovni modulů nebo spolupracujících systémů) na programovacím jazyce nezáleží, je to víceméně nepodstatný implementační detail.

Asi s JS1 mluvíte o jiném DI resp. o jiné úrovni a utápíte se v detailech na úrovni nějakých interních tříd + do toho promítáte nějaké osobní křivdy (kdy vás někdo šikanoval s tím, že máte mít v nějaké interní třídě setter místo přímého volání konstruktoru atd.). Neříkám, že na tomhle úplně nezáleží, i tohle se dá dělat lépe nebo hůře, ale z pohledu toho seriálu o komplexitě a toho DI/IoC, o kterém tu mluvím, je tohle nedůležité.

Možná narážíte i na tenhle problém:

Dalším důvodem, proč dochází k navýšení komplexity je paradoxně snaha ušetřit si práci. A nemluvím tu o nějaké lenosti, kdy vývojář vynechá nějaké kroky nebo něco zanedbá. Mluvím o situaci, kdy vývojář naopak něco přidává – s dobrým úmyslem, že to ušetří práci.

Tohle je citace z druhého dílu, který jste ale asi nečetli.

Ano, jsou různé detaily, kdy vývojáři s dobrým úmyslem něco přidávají ale navenek to nemá žádný efekt a akorát to zvyšuje komplexitu toho kódu uvnitř. Taky tam píšu, že se má rozlišovat interní rozhraní a externí API:

Z hlediska komplexity je tedy dobré u interních rozhraní psát kódu co nejméně a nepouštět se do žádných velkých akcí – to může jít i proti různým doporučením ohledně správného objektového návrhu. Např. místo pěti tříd můžeme napsat dvě metody, které se dohromady vejdou na jednu obrazovku. Mnoho abstrakcí zde můžeme vynechat, můžeme chodit zkratkami…

U veřejných rozhraní bychom si naopak na správném návrhu měli dát záležet – a to i za cenu toho, že kódu bude víc. Veřejná rozhraní zasluhují nejvíce úsilí a pečlivosti…

Nicméně tenhle seriál jsem psal mj. proto, abych nemusel vést pořád dokola ty samé diskuse – v zásadě všechny odpovědi na tyhle otázky tam jsou. Pokud máš k něčemu připomínky, tak ocituj příslušnou část a rád ti odpovím.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
16.6. 08:17 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Asi s JS1 mluvíte o jiném DI resp. o jiné úrovni a utápíte se v detailech na úrovni nějakých interních tříd
Nevim, na jake jine urovni bychom o tom meli mluvit, kdyz ty (puvodni) patterny jsou definovane na urovni trid. To, co rozebiras v tech svych clancich je trochu jina diskuse, o zavislostech mezi knihovnami a moduly. Tady by se Java IMHO taky dala vylepsit, treba v Haskellu lze u kazdeho modulu explicitne rict, ktere funkce a datove typy z nej chceme externalizovat (a jsou tedy soucasti rozhrani). V Jave se to v ramci package dela dost nesikovne.
do toho promítáte nějaké osobní křivdy
Ah, to je klasicky argument typu "jsi ateista, tedy mas spatnou zkusenost s Jezisem". Nejde o to, jestli me nekdo takto sikanoval, nebo ne, ale o to, jestli to ma smysl delat nebo ne. Ja proste nechci delat veci, protoze mi to nekdo rekl, ale chci rozumet tomu, proc je ma smysl delat. A plati to i naopak - to ze me nekdo k necemu nekdy nutil jeste neznamena, ze ta vec je spatna.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 16.6. 09:57 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Nevim, na jake jine urovni bychom o tom meli mluvit, kdyz ty (puvodni) patterny jsou definovane na urovni trid. To, co rozebiras v tech svych clancich je trochu jina diskuse, o zavislostech mezi knihovnami a moduly.

Třídy jsou pouze prostředek, jak dosáhnout nějakého řešení/návrhu. Smyslem je ale to, abys mohl mít např. databázový ovladač nezávislý na aplikaci a mohl spojení do konkrétní DB do aplikace injektovat (nebo ho v ní vyhledat nějakým tím Service locatorem). Nebo abys mohl mít několik implementací šifrovacích knihoven, a pak si konfigurací jednu vybrat. Stejně tak lze ten princip využít na úrovni byznys logiky. Obecně jde o nějaké injektování nebo vyhledávání právě závislostí. Zda je to implementované formou tříd a rozhraní nebo třeba formou ukazatelů na céčkovské funkce předaných v nějaké struktuře, to je celkem nepodstatný implementační detail.

Zda tyhle principy má smysl aplikovat i v útrobách programu, v neveřejných zákoutích jeho kódu, to je otázka. Má to svoje pro a proti. V článku se tomu věnuji v kapitole Rozlišování veřejného API a interních rozhraní.

Tady by se Java IMHO taky dala vylepsit, … V Jave se to v ramci package dela dost nesikovne.

V Javě máš např. OSGi, kde krásně rozlišíš, které části mají být exportované jako veřejné API, a které tvoří neveřejnou implementaci. Možná ti vadí, že to není přímo součástí Javy a je to „jen“ nějaký framework třetí strany. Já ale považuji naopak za důkaz flexibility Javy to, že nad ní lze takový framework vytvořit, aniž by se musel měnit samotný jazyk. Nicméně od Javy 9 je přímo její součástí systém modulů a i samotná Java platforma se víc modularizuje (konečně).

Ale v zásadě se lze obejít i bez takových nadstaveb a modulárních systémů. Běžné je např. to, že uděláš dva JARy, v jednom máš jen rozhraní a v druhém jen implementaci. Ty závislosti pak vypadají takto:

[aplikace] ---> [API] <--- [implementace]

Jako uživatel toho API tedy dostaneš malý JAR obsahující pár rozhraní či tříd, typicky bez nějakého spustitelného kódu (abstraktní rozhraní), a na něj se napojíš. Jako implementátor toho rozhraní dostaneš taky toto abstraktní rozhraní a implementuješ ho.

Pokud jako programátor dostaneš za úkol implementovat modul do nějakého velkého systému, nemusíš se potýkat s jeho komplexitou a na svůj počítač si stáhneš jen to malé abstraktní API. Stejně tak, když budeš mít za úkol zavolat službu nějakého velkého systému. Od té komplexity jsi odstíněný rozhraním a místo toho velkého systému si můžeš napsat simulátor nebo vlastní implementaci, která bude výrazně jednodušší a bude řešit jen tu malou část, která tě zajímá. S komplexitou toho původního velkého systému přijde do styku jen ten, kdo se rozhodl ho provozovat a tuhle práci ti zadal – ten si pak na svém prostředí pouští integrační testy a provozuje to v produkci.

Ah, to je klasicky argument typu "jsi ateista, tedy mas spatnou zkusenost s Jezisem". Nejde o to, jestli me nekdo takto sikanoval, nebo ne, ale o to, jestli to ma smysl delat nebo ne.

Vycházím jen z toho, co tu ty a Králík píšete – historky o kontrafibulátorech nebo kolegovi, který přidává „nesmyslná“ rozhraní.

Jestli něco takového má nebo nemá smysl si netroufám hodnotit – musel bych vidět konkrétní kód a znát kontext. Obecně můžu jen připomenout tu kapitolu Rozlišování veřejného API a interních rozhraní odkázanou výše.

Co se týče jednotkových testů, tak tam záleží, jak si ten program strukturujete a jak si organizujete práci. Obecně říkám, že testy ověřují shodu implementace se zadáním. Pokud na nějaké úrovni detailu zadání definované není, tak je otázka, zda a jak to vůbec má smysl testovat. Pokud ten test toho detailu chceš mermomocí napsat, tak tě to nutí to zadání definovat, což může být dobré (nebo taky zbytečné). Stejně tak tě ten jednotkový test může donutit upravit návrh tříd, což opět může být dobré (nebo zbytečné).

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
16.6. 11:11 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Podivej, ty v podstatě prosazuješ Javu, v tom je jádro problému (*). Resp. javovskou architekturu, idiomy, terminologii. Argumentuješ tím, že přece to není Java, že stejné principy platí i jinde - ne neplatí a ano je to furt Java. Respektive samozřejmě můžeš psát "Javu" v jiným jazyce, což je trochu případ relational pipes. Teď jsem na to koukal a je to takový mix Javy a C++ (což je taky daný tím, že Java a C++ jsou relativně blízko, nicméně tu Javu v tom fakt vidim na některých místech dost jednoznačně, i když musim uznat, že se to od začátku zlepšilo).

Jinde platí jiné principy, jiná terminologie, jiné idiomy. Myslim si, že masivně podceňuješ, jak moc jiné to může být. Kdybys raději místo psaní blogů sáhodlouze velebících DI/IoC ten čas vrazil do naučení se nějakýho úplně jinýho jazyka, a to včetně terminologie, idiomů a principů k tomu patřících, tj. nejen jak do toho narvat Javu, tak už bychom se dávno v těch diskusích někam posunuli. Netočili bychom se stále jenom na "Tohle je propagace Javy" - "Ne není, jen říkám, že <javovský idiom XY> je zcela obecný a měl by ho používat všechen software".

(*) a taky částečně Debian-based linux.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 16.6. 11:31 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC

Tak tobě musel nějaký javista fakt hodně ublížit, přebrat holku nebo tak něco :-) Jestli tyhle myšlenky odmítáš přijmout „od javisty“ tak v tom článku najdeš i citace lidí, kteří nemají s Javou vůbec nic společného, ale říkají to samé. Já k tomu pak dodávám:

Když mluvíme o abstraktních rozhraních, IoC nebo DI, může to někomu znít jako zavádění jakýchsi novot a snaha dělat věci jinak… ve skutečnosti je to ale návrat k dávným tradicím a dodržování postupů, které byly správné odjakživa.

Kromě těch klasických unixových praotců, máš pak dole v příloze i článek od Niklause Wirtha, autora Oberonu – a i ten ti k tomu řekne:

Indeed, the most demanding aspect of system design is its decomposition into modules. Each module is a part with a precisely defined interface that specifies imports and exports.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
16.6. 12:12 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Tak tobě musel nějaký javista fakt hodně ublížit, přebrat holku nebo tak něco :-) Jestli tyhle myšlenky odmítáš přijmout „od javisty“ tak v tom článku najdeš i citace lidí, kteří nemají s Javou vůbec nic společného, ale říkají to samé.
Já ale s tou myšlenkou absolutně nemám problém. Určitě existuje spousta velmi pěkného SW navrženého s touhle architekturou. Například tuším že Qt Creator je taky hodně modularizovaný (ačkoli asi jen interně, není to exponováno).

Problém mam s tím, když se tohle prosazuje za jedinou správnou cestu a všechno ostatní se prohlásí za horší. To je prostě akorát fundamentalismus.

Tohle:
ve skutečnosti je to ale návrat k dávným tradicím a dodržování postupů, které byly správné odjakživa.
je jak z nějaký náboženský příručky.

Já jsem tu myšlenku samozřejmě dávno přijal (modulární architektura opravdu není žádná novinka), ale pouze jako jednu z více různých možností jak strukturovat software, která má nějaké výhody a nevýhody. Nevim, proč bych měl mít problém s dobře napsaným monolitickým SW jenom proto, že někde někde řekl, že modules are good, mmkay.

To samý to tvoje pojetí komplexity, to taky není něco, s čím by se dalo souhlasit na obecné rovině (existuje mnoho různých druhů/pojetí komplexity). Není to o tom, že bych nesouhlasil s tvojí myšlenkou komplexity jako takovou a měl ji za nepřijatelnou. Je to validní myšlenka, validní metrika, která je pro svůj účel velmi dobře použitelná. Nepřijatelné je pro mě prohlášení tvého pojetí komplexity za univerzálně pravdivé a relevantní pro všechen software pod sluncem.
Kromě těch klasických unixových praotců, máš pak dole v příloze i článek od Niklause Wirtha, autora Oberonu
Meh. Unixová filosofie je velmi vágně definovaná a v podstatě každý její fanoušek si z toho vytáhne to, co se mu líbí a interpretuje nějakým svým způsobem. A opět platí, že to je jen jeden pohled na problém. Jsou tu taky praktické záežitosti. Všimni si, kde skončil Linux a kde Hurd.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 16.6. 13:56 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Problém mam s tím, když se tohle prosazuje za jedinou správnou cestu a všechno ostatní se prohlásí za horší. To je prostě akorát fundamentalismus.

To jsi nepochopil nebo nečetl ten článek. Viz kapitola Kdy použít kterou variantu.

Není to o tom, že bych nesouhlasil s tvojí myšlenkou komplexity jako takovou a měl ji za nepřijatelnou. Je to validní myšlenka, validní metrika, která je pro svůj účel velmi dobře použitelná. Nepřijatelné je pro mě prohlášení tvého pojetí komplexity za univerzálně pravdivé a relevantní pro všechen software pod sluncem.

Kterou metriku myslíš? Viz kapitola Co je to komplexita? Je tam zmíněno mnohem víc aspektů než jen počítání řádků. Trochu z toho mám pocit, že se chytáš jen klíčových slov, ale ve skutečnosti nečteš.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
16.6. 14:11 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC

To jsi nepochopil nebo nečetl ten článek. Viz kapitola Kdy použít kterou variantu.

...
Čím více času a úsilí jsme do vývoje programu investovali a čím hodnotnější software jsme vytvořili, tím víc bychom se ho měli snažit odstínit od jeho okolí.
...
U hodnotnějšího softwaru bychom měli směřovat k variantě č. 4 (alternativně č. 6):
Aha. Takže jiný možnosti je možný použít, akorát to pak není hodnotný software. Got it.
Kterou metriku myslíš? Viz kapitola Co je to komplexita? Je tam zmíněno mnohem víc aspektů než jen počítání řádků. Trochu z toho mám pocit, že se chytáš jen klíčových slov, ale ve skutečnosti nečteš.
Myslim si, že čtu relativně dobře, v podstatě tam operuješ pouze s objemem kódu (v několika obměnách).
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 17.6. 20:45 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Aha. Takže jiný možnosti je možný použít, akorát to pak není hodnotný software. Got it.

Viz #686

Myslim si, že čtu relativně dobře, v podstatě tam operuješ pouze s objemem kódu (v několika obměnách).

Máš to v tom textu i vyznačené tučně. Kromě počtu řádků tam je cyklomatická složitost, závislosti, struktura/architektura, pestrost a různorodost technologií…

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Fluttershy, yay! avatar 16.6. 20:12 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
To je ten shepherding.
Science advances one funeral at a time. (Max Planck, parafráze) ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗCHAZ
16.6. 22:16 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Resp. javovskou architekturu, idiomy, terminologii. Argumentuješ tím, že přece to není Java, že stejné principy platí i jinde - ne neplatí a ano je to furt Java.
Aha, proto se s těmi idiomy setkáváme přinejmenším ještě v PHP [1], C# [2], C++ [3, 4], D [5], JavaScriptu [6, 7], tvém milovaném Rustu [8], Go [9, 10], těžce funkcionálním antikontrafibulačním Haskellu [11] a zkrátka obecně kdekoliv v softwarovém inženýrství. Nebo, inženýrství… Stěží bychom hledali lepší ukázku toho, proč to inženýrská disciplína ve skutečnosti není, než tuto diskuzi, která je plná ignoranství a absolutní neschopnosti odprostit se od své osobní zaujatosti vůči jedné technologii.

František má občas poměrně radikální názory na to, které postupy jsou správné, a s jeho hodnocením sanity/insanity ne zcela souhlasím, nicméně aspoň se snaží k tomu přistupovat objektivně.

Já nikomu nezazlívám, že už prostě po celém dni programování v práci na tohle nemá náladu a potřebuje taky trošku zapojit tu kreativnější hemisféru, znám to sám. Ale chce si to pak vyjasnit, o čem se teda bavíme.
17.6. 00:35 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Aha, proto se s těmi idiomy setkáváme přinejmenším ještě v PHP [1], C# [2], C++ [3, 4], D [5], JavaScriptu [6, 7], tvém milovaném Rustu [8], Go [9, 10], těžce funkcionálním antikontrafibulačním Haskellu [11] a zkrátka obecně kdekoliv v softwarovém inženýrství.
To je slušnej seznam, ale přesto nejsem impressed. To, že existuje nějaká knihovna pro jazyk XY celkem nic moc neznamená. Stejnětak existují knihovny zaměřené na funkcionální programování třeba pro JavaScript, pro Javu atd. Jaká je ale pravděpodobnost že se setkáš s pojem DI/IoC v Java ekosystému oproti jiným jazykům? Pravděpoobně bude v mnoha případech o dost jiná.

Beru to v případě třeba PHP nebo C#, tam se s tim člověk asi taky dost setká. Případně do nějaký míry taky C++.

Haskell bohužel není tak úplně antikontrafibulační, jen je kontrafibulační zase trochu jiným způsobem, viz
František má občas poměrně radikální názory na to, které postupy jsou správné, a s jeho hodnocením sanity/insanity ne zcela souhlasím, nicméně aspoň se snaží k tomu přistupovat objektivně.
Máš tam typo: s/objektivně/objektově/ ...

Ne, takhle, objektivní přistup si představuju o dost jinak, objektivní by bylo popsat různé přístupy a srovnat jejich pro a proti, ne kázat o správném přístupu, navíc poměrně dost 'opinionated' formou.
než tuto diskuzi, která je plná ignoranství a absolutní neschopnosti odprostit se od své osobní zaujatosti vůči jedné technologii.
Ne vůči technologii. Vůči kultuře, a tam skutečně mám ten názor, že je s ní něco špatně. Snažim se vysvětlit co, ale zřejmě špatně / marně.

Jeden z těch problémů je něco jako zakonzervování pohledu na abstrakce. Tys jinde v diskusi nakousl exceptions. To je celkem dobrý příklad:

Kdysi v C/C++ jsem prasil error handling všlijak hlava nehlava. Pak mi různí lidé (mj. i tady na abc) a různé tutoriály objasnily výhody výjimek, koncept exception safety apod. Nějakou dobu jsem byl spokojen a pilně vytvářel hierarchie exception tříd, zajišťoval exception safety, házel a chytal výjimky atd. O dost později jsem se trochu seznámil s prvky FP v ML jazycích a zjistil jsem, že ADTs mi pro error handling vyhovují o dost líp. Výjimky teď považuju za mechanismus se sporným přínosem. Co z toho plyne? Že ADTs jsou nejvíc nejlepší? Aktuálně je preferuju, ale mají taky nějaké svoje problémy a hlavně už mam tu zkušenost toho omylu s výjimkami, a tedy vím, že úplně stejně se můžu mýlit i v případě ADTs. Tzn. je to pouze nějaký aktuální stav poznání, který se může v budoucnu změnit, můžu zjistit, že existuje nějaký jiný mechanismus X lepší než cokoli, co jsem doposud znal. Taky se asi může stát, že třeba v nějakým jazyku narazim na výjimky (třeba nějak jinak integrovaný do jazyka) a bude mi to připadat jako dobrý řešení.

No a tohle platí taknějak o všem: Všelijaké další abstrakce v jazycích, OOP, FP, další paradigmata, architektura softwaru, sdílené knihovny, správci balíčků a repozitáře, operační systémy atd. (Bystroushaak má v tomhle ohledně OS pravdu, byť osobně nejsem nadšenec do třeba Selfu et al.)

No a u Javy, resp. Java kultury mi přijde, že jde proti tomuhle: Místo objevování nových abstrakcí má víceméně stále ty stejné, které konzervuje, standardizuje, s výjimkou sem tam nějaké nové verze, která přinese čerstvý vzduch, ale to se až tak často nestává. A to samé se týká i architektury software. Samozřejmě ono to má svůj dobrý důvod, není možný software neustále přepisovat a tam, kde se používá Java, je určitý konzervatismus typicky potřeba. Bohužel to ale má ten vedlejší efekt na tu kulturu. Je to jak říkáš - nějaké objevování nových horizontů se pak děje v lepším případě až po práci, v horším (a to mi přije, že je bohužel časté) ani to ne.

Což mi připomíná, že bych asi taky někdy v dohledný době si zas měl vyzkoušet něco jinýho (než aktuální Rust). Kdybyste někdo měl typ na zajímavý jazyk, dejte vědět. (Před časem jsem např. koukal na LunaLang, ale bohužel to úplně nenaplnilo očekávání.)
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
17.6. 01:33 _
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Což mi připomíná, že bych asi taky někdy v dohledný době si zas měl vyzkoušet něco jinýho (než aktuální Rust). Kdybyste někdo měl typ na zajímavý jazyk, dejte vědět. (Před časem jsem např. koukal na LunaLang, ale bohužel to úplně nenaplnilo očekávání.)
White space (doporučuji postahovat kompilátory a dokumentaci, než to smažou)
17.6. 02:32 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Puvodne jsem se nechtel do teto diskuze uz zapojovat, obzvlast, kdyz uz v minulosti jsme to resili. A ten zaver byl priblizne ten, ze ti nevadi ani tak ty navrhove vzory, ale to, ze to ma nejake pojmenovani.
Ne vůči technologii. Vůči kultuře, a tam skutečně mám ten názor, že je s ní něco špatně. Snažim se vysvětlit co, ale zřejmě špatně / marně.
A ted se to ukazuje v plne krase, kdy brojis proti nejake kulture, coz je pojem, ktery nezavedls a ani zavest nejde, ale je to dokonaly slamenny panak, do ktereho se da sit hlava nehlava. Takze je jasne, ze diskuze na toto tema s tebou opravdu nemuze mit rozumne rozuzleni.
Jaká je ale pravděpodobnost že se setkáš s pojem DI/IoC v Java ekosystému oproti jiným jazykům?
Dost vysoka, ale ve FP se tomu bude rikat funkce vyssiho radu. Sakra, a neni funkce vyssiho radu taky kontrafibulace?
No a u Javy, resp. Java kultury mi přijde, že jde proti tomuhle: Místo objevování nových abstrakcí má víceméně stále ty stejné, které konzervuje, standardizuje, s výjimkou sem tam nějaké nové verze, která přinese čerstvý vzduch, ale to se až tak často nestává.
Feature, not a bug. Stejne jako technicke kresleni pouziva +/- desitky let zavedene postupy s minimem novych prvku, v muzeu moderniho umeni najdes kresby mnohem kompaktnejsi s bohatsimi vyrazovymi prostredky. Rozdil je v tom, ze v prvnim pripade tomu bude rozumet temer kazdy, v druhem pouze par zasvecenych.

A jeste poznamka k navrhovym vzorum.

Nekolikrat tu odkazovals na pouzivani idiomu a nejspis je povazujes za standardni (nijak spatnou) zalezitost. Avsak navrhove vzory v OOP nejsou nic jineho nez idiomy, ktere se pouzivaji pro reseni standardnich problemu, neni proto duvod se na ne divat pres prsty. Vsimni si, ze idiomy mohou trpet stejnymi problemy, jake s JS1 shledavate u navrhovych vzoru. Muze se z nich stat cargo cult, tj. jsou pouzivany, i kdyz to v dane situaci neni treba, jsou dusledkem omezene abstrakce jazyka, tzn. pokud by jazyk byl dostatecne abstraktni, idiom by byl nahrazen necim jinym a jiz by nebyl idiomem.

Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
17.6. 09:02 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
A ted se to ukazuje v plne krase, kdy brojis proti nejake kulture, coz je pojem, ktery nezavedls a ani zavest nejde, ale je to dokonaly slamenny panak, do ktereho se da sit hlava nehlava.
No dobře, ale jak to chceš udělat jinak? Měla by kultura okolo třeba programovacího jazyka dostat poslaneckou imunitu a kritika bude zapovězená, protože ji nemůžeme exaktně definovat? Viz taky ten odkaz na shepherding co posílal davkol...
Dost vysoka, ale ve FP se tomu bude rikat funkce vyssiho radu. Sakra, a neni funkce vyssiho radu taky kontrafibulace?
Nevim, jestli zrovna "funkce vyššího řádu", ale jako jo, může to tak být, v diskusi už jsem linkoval zygohistomorfické prepromorfismy, což je kontrafibulace jak prase. (V komentáři jsem ten odkaz měl taky, za tim "viz", ale nějak to vypadlo.)
Stejne jako technicke kresleni pouziva +/- desitky let zavedene postupy s minimem novych prvku, v muzeu moderniho umeni najdes kresby mnohem kompaktnejsi s bohatsimi vyrazovymi prostredky. Rozdil je v tom, ze v prvnim pripade tomu bude rozumet temer kazdy, v druhem pouze par zasvecenych.
No, ale fór je v tom, že poslední vývoj v jazycích ukazuje, že ty koncepty do mainstreamu probublávají. Jednu chvíli tomu rozumí tomu pouze pár zasvěcených, pak to někdo naimplementuje do Javy nebo C++, a za chvíli o tom masy píšou nadšené blogy :-D
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
17.6. 11:24 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
No dobře, ale jak to chceš udělat jinak?

Tak predne by bylo vhodne nazyvat veci spravnymi jmeny. Tim, ze kritizujes navrhove vzory, architekturu, atd. by jeden nabral dojmu, ze se jedna o technickou diskuzi, kde se da dobrat toho, ze neco je dobre, spatne na zaklade argumentu. Ale ve skutecnosti kritizujes jen tu kulturu, coz jednak znamena, ze neni jasne, co presne to je a vuci cemu se vymezujes, a za druhe to nema obecnou platnost.
Nevim, jestli zrovna "funkce vyššího řádu", ale jako jo, může to tak být
V tom pripade je cela diskuze absurdni, protoze tobe asi opravdu vadi, ze lidi davaji vecem nazvy (aby se mezi sebou domluvili). Kdyz se oprostime od programovacich jazyku, treba pojem "sarkasmus" je to taky kontrafibulace.

Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
17.6. 12:32 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
V tom pripade je cela diskuze absurdni, protoze tobe asi opravdu vadi, ze lidi davaji vecem nazvy
Ano, v podstatě to tak je, resp. slyšel jsem tomu říkat "too much terminology". Myslim si - a je pravda, že to je pouze osobní názor - že to přispívá ke vzniku cargo cultů.

Samozřejmě ta úroveň, co je ještě ok a co už je moc terminologie je taky subjektivní. V kontextku mimo Javu mi například trochu vadí termit 'RAII', který působí jako celkem náhodný shluk písmem. Někteří lidi se to snaižli vyřešit zkratkou CADRe, což ale je skoro to samé. Nevim ale, co s tim, takže to zatim používám...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
18.6. 00:34 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Odpor ke lpění na zbytečných, dílčích detailech chápu. Je důležitější chápat problém než z rukávu tupě vysypat stovky slovíček, ale neumět si dát jedna a jedna dohromady. Z člověka může vyrůst špičkový programátor, aniž by kdy přišel do styku s cizím kódem vyjma standardní knihovny a manuálu k tomu kterému jazyku. Tak jako šachy můžeš hrát sám proti sobě, můžeš se poučovat z chyb, které jsi natropil ve vlastních programech – a po nějaké době si začít všímat určitých vzorců.

Souhlasil bych s tebou, kdybys řekl, že zkušenosti jsou důležitější a nedají se zcela nahradit znalostí design patternů.

Souhlasil bych i v tom, že vtloukání návrhových vzorů do hlav začínajících programátorů (např. na školách), je spíše kontraproduktivní, protože ti lidé neznají a nemohou znát problémy, k jejichž řešení jsou ty věci určeny. Pak produkují kód, ve kterém se snaží těm problémům předcházet, aniž by uměli posoudit, jestli ty problémy skutečně hrozí a jestli naopak nevytváří problémy jiné.

Ale pak je tu komunikace a pokud se nebavím s někým, kdo 10 let programoval svou offline LISP machine ve sklepní kóji, odkud neviděl ani denní světlo, ani jiný zdrojový kód, natož jiné programátory, tak předpokládám, že nějaké základní pojmy pochytil. Ostatně ty sám ty zde zmiňované továrny nebo dependency injection velmi dobře chápeš a kdybych tak na tebe promluvil v práci, bez problémů bychom si rozuměli. A ano, domluvili bychom se i bez toho – po pár dnech/týdnech obšírného skládání slůvek bychom dokonvergovali k nějaké nové, projektově-specifické terminologii, která by účel plnila stejně tak dobře.

To, že se prostě určitá terminologie uchytila v širším společenství než je jedna firma, podle mě není samo o sobě nijak na škodu. A ano, nepříliš překvapivě tam budou nějaké odchylky a lidé okolo jednoho jazyka budou uvažovat v terminologii, která se k tomu jejich jazyku lépe hodí. Na té nejbanálnější úrovni se to projevuje zařazováním klíčových slov z programovacího jazyka do toho lidského: viz např. final (Java) vs. const (C++).

To ale neznamená, že jedna jazykově-preferovaná terminologie hned postrádá jakoukoliv relevanci v jazyce jiném. Jednak, jak jsme si ukázali, se např. s tou dependency injection setkáváme opravdu všude možně, jednak ten problém je opravdu natolik obecný, že v nějakých obdobách bude existovat v každém jazyce a maximálně se mu bude říkat nějak jinak. Nepředpokládám, že bych se s pojmem dependency injection setkával při přechodu na standardní LISP, ale jsem si naprosto jistý, že problém, k jehož řešení je ta dependency injection určena, bych řešil pořád a to pravděpodobně velmi, velmi podobným způsobem.

Co vypadá jako velký rozdíl při celodenním čumění do zdrojáku a uvažování v konstruktech programovacího jazyka je malý a zanedbatelný rozdíl z pohledu mírně abstraktnějšího. Pořád budu řešit problém: „Modul X závisí na modulu Y. Při testování modulu X nechci testovat modul Y.“ A ať si to zaonačím jakkoliv, pořád to skončí tak, že modulu X budu podstrkovat jiný modul než Y.
18.6. 12:02 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
To, že se prostě určitá terminologie uchytila v širším společenství než je jedna firma, podle mě není samo o sobě nijak na škodu. A ano, nepříliš překvapivě tam budou nějaké odchylky a lidé okolo jednoho jazyka budou uvažovat v terminologii, která se k tomu jejich jazyku lépe hodí. Na té nejbanálnější úrovni se to projevuje zařazováním klíčových slov z programovacího jazyka do toho lidského: viz např. final (Java) vs. const (C++).
To je velmi dobrý příklad problému, o kterým se tu bavíme.

final v Javě a const v C++ není to samý, ani trochu. Ten rozdíl mezi nimi je "jednoduchý": const se aplikuje rekurzivně, final ne. Tenhle zdnánlivě banální rozdíl má ale obrovské důsledky. Vede na koncept const-correctness v C++, což ovlivňuje celá veřejná API knihoven, o vnitřním uspořádání nemluvě. A když přejdeme od C++ k Rustu, tak zjistíme, že tenhle "banální" rozdíl může mít ještě mnohem větší implikace - je to nutná podmínka pro Rustovskou paměťovou bezpečnost a eliminaci race conditions, což je něco, bez čeho by ten jazyk vlastně vůbec neměl smysl.

Tenhle "drobný" rozdíl tedy významně ovlivňuje architekturu software a mimo jiné i celé invarianty, které nějaký program má (tj. třeba že je race free).

Z mého pohledu je asi nejdůležitější to, že tyhle rozdíly ovlivňují způsob, jakým člověk o architektuře přemýšlí.

Prohlásit final jen za trochu jinou terminiologii pro const je právě ta ignorance některých Java programátorů, která mě štve. To je podobný jako s tím že "funkce je objekt", v podstatě to je cílený vyignorování rozdílů a hlavně jejich implikací, které ale můžou být opravdu dalekosáhlé.

IMO to, jak tu s Frantou dáváte jazyky "do latě" je jen trochu zvláštní způsob, jak říct, že jsou turingovsky úplné. Což je pravda a je pravda, že tím pádem může člověk v Javě udělat principielně to samé jako v Haskellu a naopak. Ale problém je, že tahle argumentace nikam nevede, protože to bychom pak všichni nepoužívali ani Javu ani C++ ani Haskell, nýbrž nějaký Turing tarpit. Což ale zřejmě naprostá většina programátorů nechce, tudíž zjevně ty rozdíly nějakým způsobem podstatné jsou.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 18.6. 21:00 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
final v Javě a const v C++ není to samý, ani trochu

Přijde mi, že jsi tu do diskuse zatáhl zase nějaká „traumata z dětství“. Tvrdil tu snad někdo, že finalconst jsou to samé? Podobný nešvar se v téhle diskusi vyskytuje na více místech – podsouváš ostatním něco, co neřekli, a pak proti tomu argumentuješ, případně argumentuješ proti nějaké své představě „javovské kultury“.

IMO to, jak tu s Frantou dáváte jazyky "do latě" je jen trochu zvláštní způsob

Já už nevím, jak ti to jinak říct (viz #633, #651, #656). Zkus se o tedy o softwarové architektuře pobavit s nějakým architektem ve svém okolí a zjistit, jak moc ho zajímají implementační detaily tvého jazyka a jak moc ho zajímají vztahy mezi nějakými většími celky. Chápu, že tyhle pojmy nejsou úplně přesně definované, nicméně architekturou se obvykle myslí pohled na informační systémy z větší dálky, s větším nadhledem – zatímco to, o čem mluvíš ty je spíš návrh (vnitřku) nějaké jedné komponenty.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
18.6. 22:18 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
nicméně architekturou se obvykle myslí pohled na informační systémy z větší dálky, s větším nadhledem
To samozřejmě chápu.
zatímco to, o čem mluvíš ty je spíš návrh (vnitřku) nějaké jedné komponenty
Ano, ale to jsou spojené nádoby. To se snažím říct už asi desítky komentářů - a uvedl jsem i konkrétní příklady - že ty úrovně abstrakce jsou navázjem propojené. Neexistuje non-leaky abstrakce. Implementační detaily jazyka ovlivňují i tu archiketuru z dálky. Samozřejmě programátoři mají snahu ty implementační detaily skrýt, abstrahovat, atd., ale to je snaha, která v podstatě nikdy tak úplně nefunguje, vždy je to jen z nějaký části.

Ty zřejmě tohle odmítáš / nebereš na vědomí / nechápeš / nevim, v čem je problém.
Zkus se o tedy o softwarové architektuře pobavit s nějakým architektem ve svém okolí a zjistit, jak moc ho zajímají implementační detaily tvého jazyka a jak moc ho zajímají vztahy mezi nějakými většími celky.
To se děje celkem běžně. Zrovna nedávno jsem spolupracoval s člověkem v roli architekta na portování jednoho celkem propracovanýho Python systému do Rustu. Implementační detaily v tom hrály poměrně podstatnou roli a ano, mají vliv na high-level architekturu výslednýho frameworku.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Bystroushaak avatar 18.6. 22:31 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
případně argumentuješ proti nějaké své představě „javovské kultury“
Ten zbytek stranou; co jiného asi tak může dělat? Javovská kultura existuje. To myslím víme asi všichni. Tak jako každý kultura, i tahle je pro každého o něčem trochu jiném, protože má trochu jinou osobní zkušenost. Pokud člověk není zrovna nějaký student té kultury, který by systematicky šel a snažil se zmapovat v čem přesně spočívá, tak nikdy z principu nemůže kritizovat něco jiného, než tu svojí představu té kultury. Kterou hádám jakožto její člen vnímáš podstatně jinak, než jak to vnímají ostatní, pro které to není každodenní chleba.

Já jsem například dělal v javě celou vysokou školu, tři roky jsem psal i malé utility, na které se mnohem víc hodí něco jiného, jen v javě. Když jsem přecházel (zpět) na python, tak jsem naprosto nechápal, jak v něm někdo může programovat. Vždyť to nemá ani kontrolu typů! Měl jsem tendenci si s sebou tahat styl návrhu a očekávání z javy a trvalo mi roky se to odnaučit.

Myslím, že bych mohl namalovat nějaký abstraktní obraz, něco jako Platónova kočka od Veroniky Vřešťálové;

Obraz by nesl spousty nápisů v CammelCase, se spoustou buzzwordů a jmen patternů různé v cloudu po stranách. Spolu s javovským java -jar, okořeněným frustrací z instalace různých JDE JDK SE a JMC třípísmenných zkratek někde na oracle.com, když jen chceš aby ten program v javě co sis stáhl běžel. A uprostřed by bylo tělo člověka, viděné v obrysu IDE obsahujícím patnáct souborů needitovatelných v normálním editoru, sto padesát protected a final deklarací, které tě nenechají na pochybách, že je to industry grade javaman, žádná lopata. Každý jeho smysl by z něj koukal obalený vygenerovanýmy settery a gettery. Každá končetina připojena přes patřičné rozhraní, plně zaměnitelná za jakoukoliv jinou přes správné patterny. Z jeho vnešené SUNní tváře na tebe hledí zlé oči s logem Oracle. Postava stojí na zemi, která je z bližšího pohledu tvořená XML konfigurací.

A asi bych mohl pokračovat. Přitom ani nejsem hater, naopak se chci k javě vrátit kvůli graalvm.
xkucf03 avatar 18.6. 22:42 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
případně argumentuješ proti nějaké své představě „javovské kultury“

Ten zbytek stranou; co jiného asi tak může dělat?

Třeba napsat vlastní zápisek do blogu na téma: „Moje názory na javovskou kulturu a tak vůbec“. Ale proč to cpát do všech diskusí, kde se vyskytl alespoň jeden člověk programující v Javě?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 18.6. 23:24 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Kterou hádám jakožto její člen vnímáš podstatně jinak, než jak to vnímají ostatní, pro které to není každodenní chleba.

Sice znám Javu víc zevnitř (než třeba Pythonista nebo Haskellista dívající se na Javisty skrz prsty) a je to můj „každodenní chleba“, ale přesto se nepovažuji za nějakého příslušníka kmene javistů. Java je sice jazyk, který často používám a mám o něm docela dobré mínění, ale sám sebe považuji za softwarového inženýra. Ono vlastně i to, za co mi zákazníci platí a co u nich velkou část dne dělám, je něco jiného, než psaní kódu v Javě. I když se budeme bavit jen o programování, tak velkou část práce jsem udělal v SQL, což je zase úplně jiné paradigma. Ale velkou část dne ani žádný kód nepíšu a je to spíš o návrhu rozhraní, architektuře, analýze. Dělal jsem třeba implementaci ISO 8583 (protokol pro platební karty – komunikaci s bankomaty a obchodníky) nebo napojení na ČNB. Tam ani nevíš, v jakém jazyce jsou ty systémy naprogramované a píšeš to podle specifikace. U těch karet jsem si musel napsat i vlastní simulátor, protože jsme dlouho neměli ani přístup na testovací prostředí, ale už bylo potřeba vyvíjet. Pak jsem třeba dělal jeden projekt, kde se programovalo v Pascalu… jakkoli to zní hrozně, byla to zajímavá práce a zkušenost. Ale ten programovací jazyk na tom byl to nejméně podstatné. Ty velké informační systémy jsou složené z mnoha částí, psaných v různém čase různými lidmi/firmami v různých jazycích, často ani nevíš v jakých… přesto to musí fungovat dohromady a mít nějaký řád, nějakou strukturu.

Takže proto se asi na věc dívám trochu jinak, mám ty priority/zaměření někde jinde a abstrahuji od některých věcí, které někdo jiný bude považovat za naprosto kruciální :-)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
19.6. 01:41 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Takže proto se asi na věc dívám trochu jinak
My uz asi s Kralykem nevime, jak ti to vysvetlit, abychom se neopakovali - ty se na veci nedivas jinak, protoze ti chybi rozhled. To my se na ne divame jinak.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 19.6. 11:18 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC

Tohle už hraničí s náboženským fanatismem. Já tu psal z legrace o „příslušnících funkcionální víry“, ale ono to asi vážně tak bude.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Bystroushaak avatar 19.6. 12:48 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Meh. Z mé zkušenosti:

Když ti N lidí tvrdí něco, co se ti zdá jako blbost, tak je samozřejmě možné, že ty máš ten jediný správný názor, ale pravděpodobnější je, že máš prostě špatný uhel pohledu. Zákeřné na tom je, že ti to ani nedochází (we don't know what we don't know).

Možná bys tomu měl zkusit dát šanci.
Josef Kufner avatar 19.6. 14:39 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Zrovna software je obor, kde se ty blbosti vyskytují docela často. Není to tak dávno, kdy Singleton byl opěvovaný návrhový vzor a funkcionální programování bylo považováno za teoretickou hračku.

Chybějící rozhled je celkem častý nedostatek, ale zas na druhou stranu se stává, že něco nejde a pak přijde někdo, kdo neví, že to nejde a udělá to.
Hello world ! Segmentation fault (core dumped)
19.6. 19:39 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Pochopit ve zdejší diskuzi, co kdo vlastně tvrdí, vyžaduje netriviální množství výpočetního výkonu. IMHO „Návrhové vzory a terminologie okolo nich svůj smysl mají, byť nadužívání samozřejmě škodí, a ne vždy ukazují na nedostatek jazyka a ne vždy s jazykem vůbec souvisí“ a dál asi nemám sílu.
19.6. 09:04 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Dělal jsem třeba implementaci ISO 8583 (protokol pro platební karty – komunikaci s bankomaty a obchodníky) nebo napojení na ČNB. Tam ani nevíš, v jakém jazyce jsou ty systémy na programované a píšeš to podle specifikace.
Týhle brandži nerozumim, takže se můžu mýlit, ale není tohle daný prostě tim, že ty věci jsou od sebe hodně oddělený, např. protože komunikujou po síti / nějakým spojení?
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Bystroushaak avatar 19.6. 12:43 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Ono vlastně i to, za co mi zákazníci platí a co u nich velkou část dne dělám, je něco jiného, než psaní kódu v Javě. I když se budeme bavit jen o programování, tak velkou část práce jsem udělal v SQL, což je zase úplně jiné paradigma. Ale velkou část dne ani žádný kód nepíšu a je to spíš o návrhu rozhraní, architektuře, analýze. Dělal jsem třeba implementaci ISO 8583 (protokol pro platební karty – komunikaci s bankomaty a obchodníky) nebo napojení na ČNB. Tam ani nevíš, v jakém jazyce jsou ty systémy na programované a píšeš to podle specifikace. U těch karet jsem si musel napsat i vlastní simulátor, protože jsme dlouho neměli ani přístup na testovací prostředí, ale už bylo potřeba vyvíjet. Pak jsem třeba dělal jeden projekt, kde se programovalo v Pascalu… jakkoli to zní hrozně, byla to zajímavá práce a zkušenost. Ale ten programovací jazyk na tom byl to nejméně podstatné. Ty velké informační systémy jsou složené z mnoha částí, psaných v různém čase různými lidmi/firmami v různých jazycích, často ani nevíš v jakých… přesto to musí fungovat dohromady a mít nějaký řád, nějakou strukturu.
Jo, no a? Já jsem dělal taky spoustu implementací backendů a různých napojování, většinou v pythonu (ano, už jsem taky napojoval cobolové api). Zákazníky skutečně většinou nezajímá v čem to bude, to zajímá mě. Tvoje pointa je, že tebe to nezajímá a přijde ti to nepodstatné a obecně nezajímavé, ale tak to podle reakcí v téhle diskuzi vážně není. Můžeš si myslet, že je to nevyspělost ostatních, kteří neprogramovali nějaké úžasné enterprise bankovní api, ale faktem je, že tohle je většinou denním chlebem i spousty dalších lidí.
19.6. 19:39 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Ten zbytek stranou; co jiného asi tak může dělat?
Např. držet se k tématu. Uznávám, že je to složité, protože už delší dobu sám netuším, jaké téma zdejší diskuze vlastně je. Ale měl jsem za to, že o tom, jestli návrhové vzory můžou nebo nemůžou mít své opodstatnění, a intenzivní klikání na tlačítko Výše mě dostalo k #476: „Ale podle me by se nemely (návrhové vzory, pozn. redakce) pouzivat vubec“.
19.6. 21:35 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Ale měl jsem za to, že o tom, jestli návrhové vzory můžou nebo nemůžou mít své opodstatnění
A pochopil jsi aspon co jsem navrhoval za alternativu? Aby ty jim odpovidajici abstrakce byly implementovany primo v jazyce (nebo jeho knihovnach).
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
19.6. 21:46 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Samozřejmě, že pochopil. Ale nemyslím si, že je to vždy lepší, pokud je to vůbec možné. Viz třeba #670 a #673.
19.6. 19:38 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Ne, není to dobrý příklad problému, o kterém se bavíme, protože:

1. Nikdo netvrdil, že final a const jsou zaměnitelné;

2. Ten příklad jsem zvolil jen jako ukázku původně klíčových slov, které můžou probublat do běžné mluvy.

Pomocí final i const je možné deklarovat konstantu. Tam, kde se liší, to chování srovnávat logicky nemůžeš (v C++ se pomocí const nedá udělat neměnitelná třída, k tomu od C++11 slouží rovněž final, a naopak v Javě pomocí final nemůžeš vyznačit metodu nemodifikující vnitřní stav objektu, ani vytvořit immutable referenci).
17.6. 11:03 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Puvodne jsem se nechtel do teto diskuze uz zapojovat, obzvlast, kdyz uz v minulosti jsme to resili. A ten zaver byl priblizne ten, ze ti nevadi ani tak ty navrhove vzory, ale to, ze to ma nejake pojmenovani.
Můj takeaway je, že prostě nejsem schopen to srozumitelně vykomunikovat :-/
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
17.6. 12:26 JS1 | skóre: 2 | blog: intuition_pump
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Avsak navrhove vzory v OOP nejsou nic jineho nez idiomy, ktere se pouzivaji pro reseni standardnich problemu, neni proto duvod se na ne divat pres prsty.
Muzeme tem vzorum rikat idiomy, ostatne tak se tomu v zasade rikalo predtim, nez si nekdo vzpomnel na Christophera Alexandera. Ale to co mi na tom vadi, a s cim Kralyk souhlasi, je to, ze bychom se meli snazit se tech idiomu zbavit, abstrahovat je (samozrejme, ucelem neni code golf - pokud je to idiom na jeden radek, tak se tech par znaku snese; coz je ostatne i filozofie treba Pythonu, pokud lze neco docilit kombinaci 2-3 funkci, nema smysl, aby pro to byla samostatna funkce v knihovne), a pokud mozno tedy naucit pocitac, aby jim porozumel. A myslim oba argumentujeme, ze to zvysi citelnost a srozumitelnost.
Lidstvo má již jen 11 let, aby odvrátilo nejhorší důsledky klimatické katastrofy. Podpořte hnutí Limity jsme my!
xkucf03 avatar 17.6. 20:45 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Viz #545
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
17.6. 06:07 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
To, že existuje nějaká knihovna pro jazyk XY celkem nic moc neznamená.
Tak je to docela slušný ukazatel toho, že to opravdu jsou obecné koncepty.
Ne, takhle, objektivní přistup si představuju o dost jinak, objektivní by bylo popsat různé přístupy a srovnat jejich pro a proti, ne kázat o správném přístupu, navíc poměrně dost 'opinionated' formou.
V těch článcích, co tu linkoval, jsem zahlédl nějaké srovnání grafů závislostí dvou projektů a tak. Mně přijde, že optika programovacích paradigmatů, kterou se na to díváš, je relevantní jen při uvažování nad algoritmy. Ty architektonické problémy to nijak výrazně neovlivní. Jestli si v Javě někam injektuju objekt, nebo v Haskellu funkci vyššího řádu, jak poznamenává deda.jabko, je v principu úplně totéž.

Jediné, co mě napadá jako problém „vygenerovaný“ Javou je, že třeba když si uděláš Parser jako stavovou třídu, tak pak v kódu musíš dělat parserFactory.newInstance(source).parse(); a řešit tam továrnu místo prostého parser.apply(source); a předání rovnou toho parseru (jako funkce). A přesně tak by se to – naprosto přirozeně – vyřešilo ve funkcionálním jazyce. Funkce vezme funkci, aplikuje ji, „obohatí“ výsledek (resp. jej dále zpracuje) a ten vrátí.

Jenže to není tak jednoduché. Stačí, aby se z té „ošklivé stavové třídy“ používala víc než jedna metoda, a rázem se situace obrátí: zatímco při tom objektovém přístupu mám pořád jednu továrnu, která vyrábí jeden objekt – a ten už má všechny metody zabalené v sobě, tak při tom funkcionálním bych musel každou volanou funkci „indirektovat“ (nejspíš přesouvat do parametrů, nebo prostě jinak umožnit modifikovat ten scope tak, aby na ty skutečné funkce neviděly), ručně. A to i v případě, že ty které funkce nepotřebuji mockovat, resp. se spokojím s „prázdným“ chováním takového mocku. To je typický příklad věcí se side-effecty (I/O), které mohou například vygenerovat chybu: chci podstrčit nevinný objekt, nad kterým lze volat metody jako deleteAllLocalFiles() bez rizika újmy na duševním zdraví. Při funkcionálním přístupu bych místo jednoho takového objektu předával 10 různých funkcí, nebo…

Nebo by ten jazyk musel mít podporu meta-programování. Pak bych v testu řekl: „Vytvoř mi derivát této funkce, ve kterém všechny volání jiných funkcí budou nahrazena za volání prázdných funkcí, a tuto zderivovanou funkci zavolej“. Všimněme si jedné důležité věci: meta-programování potřebu továrny, alespoň tedy pro diskutovaný příklad, neodstraňuje jen za předpokladu funkcionálního paradigmatu, ale i toho objektového. Jen bych místo volání funkcí nahrazoval vytváření instance. Dnes na to musím myslet dopředu a do kódu si vkládat „zadní vrátka“.

Takže když si to shrneme.

* Kdybychom měli Konečně Ten Správný Jazyk (tm), obešli bychom se – alespoň teoreticky – bez továren? Zřejmě ano.

* V jazyce, který takové meta-programování nepodporuje, na to musíme myslet dopředu a do kódu vkládat buď továrny, nebo parametry, kterými umožníme průběh programu později ovlivnit.

Co říct závěrem. Java takové – a i daleko šílenejší – meta-programování podporuje již od své šesté verze. Nějak se to pro tyto účely neujalo a nejspíš je k tomu dobrý důvod. A nebo nás tato budoucnost teprve čeká…
17.6. 10:15 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Tak je to docela slušný ukazatel toho, že to opravdu jsou obecné koncepty.
Když to nikdo nepoužívá? Ale pomůžu ti: V Rustu se celkem hodně používá Builder pattern, dokonce (!) to kdysi i bylo v dokumentaci (ty informace tam už nejsou dnes úplně aktuální). Takže v zásadě ano, mohl bys říct, že tohle se týká i ostatních jazyků a že to je obecný princip atd.

Jenže. Jednak to tak úplně obecné není, např. motivace pro použití tohohle v Rustu často je ownership, což je něco, co třeba v Javě vůbec nenastane. Možná řekneš, že to je detail, což je do jistá míry pravda, nicméně to je něco, co celkem dost ovlivňuje architekturu např. API. No a jednak IMO je tam kulturní rozdíl; lidi to míň protežují, víc je to štve (protože se to musí psát většinou ručně), víc si uvědomují, že se v podstatě jedná o hack, který je způsobený tím, že Rust moc nepodporuje parciální inicializaci (nebo nešikovně), nemá currying apod. Resp. takový je můj dojem. Možná jsem jen naivní, možná z toho bude za chvíli stejný cargo cult jako v OOP jazycích...
Jenže to není tak jednoduché. Stačí, aby se z té „ošklivé stavové třídy“ používala víc než jedna metoda, a rázem se situace obrátí: zatímco při tom objektovém přístupu mám pořád jednu továrnu, která vyrábí jeden objekt – a ten už má všechny metody zabalené v sobě, tak při tom funkcionálním bych musel každou volanou funkci „indirektovat“ (nejspíš přesouvat do parametrů, nebo prostě jinak umožnit modifikovat ten scope tak, aby na ty skutečné funkce neviděly), ručně.
Tady moc nerozumim, co chceš říct, ale třeba v tom haskellu můžou na indirekci (více) funkcí sloužit typeclasses...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
17.6. 10:50 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Java takové – a i daleko šílenejší – meta-programování podporuje již od své šesté verze.
A aby se neřeklo, tak jsem vykouzlil demo.

Produkční kód, ve kterém předstíráme, že APIAdapter dělá nějaké hrozné věci a nedá se na něj v testu spoléhat:
public class App {
    public static String getAPIStatusDesc(String url) {
        return new APIAdapter(url).isRunning() ? "available" : "unavailable";
    }

    public static class APIAdapter {
        public APIAdapter(String url) {
            //
        }

        public boolean isRunning() {
            return false;
        }
    }
}
Test:
public class AppTest {
    private static final String TEST_URL = "https://api.example.com/ping";

    @Test
    public void testGetAPIStatusDesc() throws Exception {
        assertEquals("available", Meta.derivative(App::getAPIStatusDesc)
            .replaceInstantiation(APIAdapter.class, /*new APIAdapter(null) {
                    @Override
                    public boolean isRunning() {
                        return false;
                    }
                }.getClass()*/ MockHandler.class)
            .build()
            .invoke(TEST_URL));
    }

    public static class MockHandler extends APIAdapter {
        public MockHandler(String url) {
            super(url);
        }

        @Override
        public boolean isRunning() {
            return true;
        }
    }
}
Třídu Meta postovat radši ani nebudu, protože je to jen narychlo splácaný proof-of-concept a ta instrumentace je děsivá. Nicméně, pár poznámek:

* Za běhu vytvářím novou třídu, do které nakopíruji zdrojovou metodu; nad touto metodou se pak provádí transformace; volání se provádí klasicky reflexí.

* Přeložit referenci na metodu na [třídu; jméno metody] se ukázalo jako velmi obtížné; ačkoliv dekompilátor si s tím poradí hravě a ta informace je někde v bajtkódu ukrytá, mně se s tím nechtělo srát a hardwirenul jsem to do toho kódu natvrdo (takže ten parametr App::getAPIStatusDesc je ve skutečnosti pro okrasu a obecně mi to nefunguje; možná by se v praxi muselo zadávat App.class, "getAPIStatusDesc").

* Anonymní třídou nelze nahrazovat proto, že nově vytvořená třída (do které jsem modifikovanou metodu vložil) k ní neměla přístup. Mělo by to jít vyřešit naklonováním té anonymní třídy nebo úpravou jejích modifikátorů, ale opět to není něco, co se mi chtělo v tuto chvíli řešit.

* Pokud by si s tím někdo dal práci a vyřešil všechna úskalí, která jsou s takto agresivní instrumentací spojená, metaprogramování v Javě by mohlo působit vcelku přirozeně. Přesto si myslím, že ty továrny jsou ve výsledku tak nějak jednodušší.
17.6. 11:09 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
V těch článcích, co tu linkoval, jsem zahlédl nějaké srovnání grafů závislostí dvou projektů a tak. Mně přijde, že optika programovacích paradigmatů, kterou se na to díváš, je relevantní jen při uvažování nad algoritmy. Ty architektonické problémy to nijak výrazně neovlivní. Jestli si v Javě někam injektuju objekt, nebo v Haskellu funkci vyššího řádu, jak poznamenává deda.jabko, je v principu úplně totéž.
Ach jo. Tohle tady prosazuje Franta taky furt :-/ TL;DR není to totéž a ano, ovlivňuje to výrazně architekturu. Program v Javě, v Pythonu, v Rustu, v C++, v Haskellu, ve Smalltalku prostě bude architektovaný jinak. Celý. Se s tim smiř :-D

Jasně, může hledat analogie a šroubovat více či méně krkolomná přirovnání. Můžeš říct, že DI je vlastně "to samý" co funkce vyššího řádu. Můžeš říct, že checked exceptions jsou vlastně "to samý" jako probublávání ADTs nahoru callstackem pomocí try opetátoru. Můžeš říct, že hodnoty + k nim asociované funkce jsou vlastně "to samý" jako objekty. Ale jsou to taková hodně povrchní přirovnání, která IMO nemají žádný smysl v praxi, protože v praxi prostě bude ten software architektovaný jinak. Je to jako říct, že vlak, raketoplán a ponorka jsou vlastně to samé, protože maj nějaký motory a nějak se říděj a přesunujou někoho z místa A do B apod. Ano, jsou tam společné rysy, ale inženýring tý věci bude pokaždý o dost jiný, bude zohledňovat jiný kritéria atd.

Já tenhle argument zcela upřímně nechápu. Proč je pro javisty tak nepřijatelná myšlenka, že v jiným jazyce se věci prostě strukturují jinak, a to třeba i na úrovni celýho SW?
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
17.6. 11:32 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Proč je pro javisty tak nepřijatelná myšlenka, že v jiným jazyce se věci prostě strukturují jinak, a to třeba i na úrovni celýho SW?
A to je vec, ktera me toci. Tato generalizace absolutne neni na miste a prijde mi to trochu jako takovy programatorsky rasismus, kdy na zaklade anekdotickych zkusenostech vyvozujes obecne zavery. Nebo se tim, ze clovek programuje v Jave, z nej stava nejake zruda, ktera neni schopna myslet nikdy jinak?
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
17.6. 12:26 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
A to je vec, ktera me toci. Tato generalizace absolutne neni na miste a prijde mi to trochu jako takovy programatorsky rasismus, kdy na zaklade anekdotickych zkusenostech vyvozujes obecne zavery. Nebo se tim, ze clovek programuje v Jave, z nej stava nejake zruda, ktera neni schopna myslet nikdy jinak?
No, takhle: Bherzet s Frantou tady v podstatě píšou, že rozdíly mezi jazyky jsou jen nějaké implementační detaily někde v algoritmech, že architektura je stejná a v podstatě existuje Jedna Správná Architektura™. To není nějaké moje osočení nebo nesnášenlivost, Franta doslova píše, že U hodnotnějšího softwaru bychom měli směřovat k variantě č. 4 (alternativně č. 6).

Je opravdu tak divné, když s timhle mam problém a myslim si, že hodnotný software může mít všelijaké různé architektury a není na místě ho shazovat jen pro to, že nepoužívá nějaký GoF pattern? Mně to přijde absurdní!

Co se týče zobecnění tohohle na 'java kulturu', tak tam máš možná pravdu - přiznávám, že nemam např. tvrdou statistiku o tom, že by tohle javisti dělali obecně hodně. A ano, striktně vzato to mam na základě anecdotal evidence. Přijde mi, že těch případů jsem zažil celkem hodně a nejsem jediný, kdo má tu zkušenost, ale samozřejmě nemůžu vyloučit že jsem měl smůlu a/nebo to je observation bias a/nebo nějaký mem. Omlouvám se případným javistům, kteří tohle nedělají.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 17.6. 20:44 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
bychom měli směřovat

Přečti si ta slova ještě jednou, raději nahlas. Slyšíš to? Směřovat někam, neznamená, že to tak musí být hned. A bychom měli neznamená, že to tak musí být za všech okolností.

V podstatě všichni si stěžují na nedostatek programátorů. Firmy je (nás) musí přeplácet. U komunitních/neziskových projektů zase narůstají seznamy chyb/požadavků, na které nikdo nemá čas. A na druhé straně ale neustále vzniká obrovské množství kódu, píše se znova a znova ten samý software. Duplikuje se práce, i když ty rozdíly jsou minimální nebo žádné.1

Částečně je to přirozené a žádoucí. Z toho chaosu, kmitání a náhodných změn může evolucí vzniknout něco lepšího. Zároveň lidi se chtějí nějak kreativně realizovat. Ale je otázka, jestli toho chaosu a živelného vývoje není příliš. Já si myslím, že trochu ano.

Je evidentní, že IT nějaký problém má a že by se to dalo dělat líp. Příčiny zmíním dvě: 1) nízká granularita 2) malá obecnost. Příliš mnoho funkcionality v jednom nedělitelném balíku má jednak negativní dopady na bezpečnost a výkon atd. (viz Proč komplexita představuje problém?) a jednak vede k tomu, že ostatní si raději napíší nový software, který má jen určitou podmnožinu funkcí, místo toho, aby použili ten stávající. Malá obecnost má stejný důsledek – místo toho, aby lidí použili stávající software, tak vytvoří nový podobný, který dělá něco málo uvnitř jinak, ale z velké části duplikuje původní program.2 A protože lidi plýtvají čas na téhle duplicitní práci, nezbývá jim pak kapacita na užitečnější věci.

Ano, nemá smysl hnát věci do extrému. Stejně jako může nastat paralýza analýzou, tak může nastat i paralýza příliš velkou obecností nebo příliš velkou granularitou.3 Nicméně troufám si tvrdit, že většina IT oboru nebo jeho průměr je daleko pod tím bodem, kdy granularita nebo obecnost začíná představovat problém.

Proto se snažím ostatní inspirovat k tomu, aby svůj software (a potažmo celý obor) posouvali postupně po malých krůčcích tímhle směrem. Od toho si slibuji, že bude postupně narůstat počet případů, kdy si řekneš, že tentokrát žádný nový software psát nemusíš a použiješ4 již existující. To ti uvolní ruce, abys mohl např. zvyšovat kvalitu a spolehlivost softwaru nebo abys mohl tvořit něco nového užitečného, na co jsi dosud neměl čas, co nemělo prioritu.

[1] Najdeš i případy, kdy deset, dvacet, třicet… let starý software funguje líp než ten dnešní – jen bohužel není kompatibilní s aktuálními verzemi knihoven nebo OS (místo portování a údržby raději někdo napsal novou, horší a méně zralou verzi téhož).
[2] na úrovni kódu by se to dalo přirovnat k absenci generického programování a situaci, kdy někdo napíše pět podobných tříd pro pět různých typů zpracovávaných objektů; Ale jak už tu poněkolikáté opakuji, v téhle diskusi se nebavím primárně o úrovni kódu a nějakých tříd či funkcí, ale o vyšší systémové úrovni, o větších celcích, aplikacích, komponentách, systémech…
[3] viz Volba vhodných závislostí a odstavec začínající: „Na druhé straně ale nelze říct, že čím menší knihovny, tím lépe.“
[4] protože ten existující má jednak dostatečně malou granularitu, abys mohl použít jen tu malou část, kterou potřebuješ a nebyl zatěžován nadbytečnou komplexitou (což by tě jinak tlačilo k tomu, napsat si radši vlastní software), a jednak je dostatečně obecný, aby vyhovoval tvým potřebám (tzn. jde ho parametrizovat konfigurací nebo do něj jde např. injektovat nějaká malá na míru napsaná část softwaru, která upraví jeho chování pro tvůj specifický případ)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
18.6. 00:34 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
rozdíly mezi jazyky jsou jen nějaké implementační detaily někde v algoritmech, že architektura je stejná
Ne mezi jazyky – mluvil jsem o paradigmatech. Viz #670, lépe už to vysvětlit asi nedokážu.

Např. memory management skladbu programu samozřejmě ovlivní značně. Ale ovlivní ji z relativně přízemního pohledu, který nemá mnoho společného s abstraktními patterny, které zde diskutujeme. Dependency injection můžu uplatnit klidně i v assembleru. Pro účely testování si napíšu preprocessor, který v kódu nahradí call foo za call bar. ;-)
a v podstatě existuje Jedna Správná Architektura™
To jsem nikde neřekl. Existují postupy, o kterých lze bez příliš dlouhých úvah a diskuzí říct, že jsou prostě špatné, nebo alespoň horší než jiné, ale existují i postupy, které jsou srovnatelně dobré a není jasné, který z nich je lepší, resp. podle jaké metriky to rozhodnout.
To není nějaké moje osočení nebo nesnášenlivost, Franta doslova píše, že U hodnotnějšího softwaru bychom měli směřovat k variantě č. 4 (alternativně č. 6).
Uvedený článek jsem nečetl a tedy jsem ho nemohl ani hodnotit. Co jsem četl a (i zde) otevřeně kritizoval bylo Sane software manifesto. Myslím si, že Franta má rozsáhlé zkušenosti (alespoň tak na mě jeho příspěvky a texty působí) a ví co dělá, a že podstatná část toho, co říká, má smysl a opodstatnění, ale protože nejsem přesvědčen o tom, že bez konformity s manifestem je každý software automaticky insane, s manifestem se neztotožňuji. Frantovi jsem vytýkal, že manifest by podle mě neměl být výčet norem, ale emotivnější pojednání, které strhne čtenáře na svou stranu, ozřejmí nějaké elementární myšlenky a koncepty, ale spíše povzbuzuje vlastní kritické uvažování na straně čtenáře (a zákonitě tedy i odchylky) než diktuje podmínky, které je z velké části nutné bezvýhradně splnit.

Nicméně ve spoustě věcí jsou mi jeho názory a postoje velmi blízké.
hodnotný software může mít všelijaké různé architektury a není na místě ho shazovat jen pro to, že nepoužívá nějaký GoF pattern
To je trochu slaměný panák. Jednak to tu AFAIK nikdo netvrdil, jednak alespoň ve své argumentaci jsem se soustředil primárně na skutečnost, že určité problémy vedou na určitá řešení a těm řešením se dávají nějaké názvy.

Pokud bychom se bavili konkrétně třeba o tom, že místo dependency injection taky můžu používat singletony, ve kterých si podmínkou zjistím, jestli jsem v testu, a když ano, tak se budou chovat jinak, tak ano, považuji to za hovnokód. Všichni hovnokód občas píšeme a máme k tomu různé důvody, ale je dobré aspoň vědět, v čem jsou úskalí takového přístupu, za jakých podmínek to začne neúměrně komplikovat život apod.
java kulturu
Mně přijde, že to v podstatě vůči ničemu, o čem jsme se bavili, není relevantní. Spin-off diskuzí z výroku JS1, že design patterny by se neměly vůbec používat, jsme si ukázali, jaký je smysl např. továren a kde mají své opodstatnění a za jakých podmínek by bylo možné se bez nich obejít – přičemž obě alternativní řešení, která jsem zmiňoval, budou mít své vlastní výhody a nevýhody.

To, že někdo může design patterny používat špatně, zbytečně atd. je „hezké“ a bezesporu se to děje v míře větší než malé, ale moc nevím, k čemu by byl poznatek, kdo to páchá nejvíc a nejčastěji, s ohledem na to, že AFAIK to tu nikdo neobhajuje.

18.6. 11:10 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Např. memory management skladbu programu samozřejmě ovlivní značně. Ale ovlivní ji z relativně přízemního pohledu, který nemá mnoho společného s abstraktními patterny, které zde diskutujeme.
A já ti říkám, že má. Jako příklad jsem uvedl Builder pattern v Rustu, který je ovlivněn memory managementem / neexistencí automaticky nullovatelných typů / nepodporou parciální inicializace struktur. Nebejt toho, tak se nejspíš nepoužívá, resp. zdaleka ne tolik.

Pokud ti to pořád přijde jako příliš detaily úroveň zaostření, tak můžeš vzít v úvahu třeba generika v C++ a Rustu, jejichž vlastnosti přímo ovlivňují např. práci s dependencemi (header-only knihovny v C++, generický kód serizalizovaný do metadat v knihovnách v Rustu a z toho plynoucí implikace pro třeba stabilitu ABI apod.)

Přijde mi, že tohle je klasický omyl javistů (omlouvám se dědovi.jabkovi - některých javistů), totiž že existuje non-leaky abstrakce. Reálně žádná non-leaky abstrakce neexistuje.
Pro účely testování si napíšu preprocessor, který v kódu nahradí call foo za call bar. ;-)
DI/IoC se v assembleru dělá pomocí call %rax ;-) Akorát teda na tebe lidi píší v assembly budou asi koukat maličko divně, když tomu tak řekneš...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
18.6. 12:49 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
A já ti říkám, že má.
Možná ještě lepší příklad: Vem si například ten Frantovo pattern č. 4 ("Díky IoC (inversion of control) se zbavíme přímé závislosti programu na knihovně/adaptéru. Program závisí jen na rozhraní – o napojení konkrétní implementaci se nestará, protože to za něj řeší běhové prostředí.").

Jak tohle udělám v C++ nebo Rustu s knihovnou, která exportuje pouze nebo primárně generický kód? Odpověď je, že nijak. Resp. ne bez shifting the goalpost, tzn. např. bys musel zavést předpoklad, že ten program se při změně implementace závislosti překompiluje nebo bys musel generický kód vydělit do vlastního modulu, což efektivně znamená přestat používat tu závislost jako generickou.

Oproti tomu v Javě, alespoň co já vim, tohle nebude problém, protože má type-erasure generika.

Takže najednou implementační detail generik ti způsobuje změny v tom, jak přistupuješ k závivlostem a třeba efektivně i v tom, jak ten software zabalíčkuješ.

A přitom bys taky klidně mohl říct, že generika v Javě, v C++ a v Rustu jsou "vlastně to samý". Což jsou. Až na případy, kdy nejsou :-D
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 18.6. 21:20 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC

V C/C++ se podobným způsobem často používají surové ukazatele – void* – typicky někam (knihovně) předáš callback nebo ukazatel na libovolnou strukturu, který pak zase někde jinde dostaneš, přetypuješ si ho zpátky a zavoláš si ho jako funkci nebo s ním pracuješ jako s tou svojí strukturou. Je to ideální příklad na použití generik, ale jak vidíš, tenhle návrhový vzor se po desetiletí používá i v jazycích, které generika nemají nebo ve kterých jsou šablony, které zrovna v některých situacích nejdou použít. V Javě za tebe tu typovou kontrolu řeší kompilátor, v Céčku si na to musíš dát pozor sám, takže s tím máš trochu víc práce, může to zvyšovat chybovost, ale v principu ten program může fungovat stejně (a taky tak běžně programy fungují).

Aby ti ty surové ukazatele nestrašily v kódu aplikace, tak bys v tom hlavičkovém souboru definujícím rozhraní musel mít i trochu logiky – dělal bys tam nějaká ta přetypování a typovou kontrolu. Pak tam budeš mít jedno rozhraní (s generiky/šablonami) vystavené směrem k aplikaci a druhé, které budou implementovat jednotlivé knihovny resp. jejich adaptéry.

Když se zamyslíme nad smyslem a použitím generik: Proč by někdo (knihovna) měl dostávat data/objekty, jejichž typ nezná? (dost možná knihovna vznikla nezávisle a dříve než daný typ, který pak přes generika bude dostávat) Odpovědi jsou v zásadě dvě: a) knihovnu nezajímá, co je uvnitř těch objektů, nijak s nimi nepracuje, jen je skladuje nebo pak posílá někam dál nebo nám je jinudy vrací zpět… a my chceme mít typovou kontrolu; b) knihovna kromě toho s objekty i nějak pracuje – a pak tu máme nějak definovanou množinu vlastností, které ten objekt má splňovat (např. mít nějaké metody), což vede k tomu, že tu máme nějaké předem definované rozhraní nebo předka, které ty objekty implementují/dědí.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
18.6. 22:06 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Je to ideální příklad na použití generik
Wat? Co má void pointer společnýho s generiky? Ten mnou zmiňovaný příklad to vůbec nijak neřeší. Možná by sis to měl přečíst ještě jednou?
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
18.6. 23:05 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Aha, já už asi zhruba chápu, co myslíš. To, že v některých specifických situacích jde generika nahradit hnusným způsobem void pointery. Ale to neřeší případ, který mam na mysli, nemůžeš tímhle způsbem realizovat static dispatch (z definice).
Pak tam budeš mít jedno rozhraní (s generiky/šablonami) vystavené směrem k aplikaci a druhé, které budou implementovat jednotlivé knihovny resp. jejich adaptéry.
Prosím pokračuj a přibliž, jak tohle bude fungovat v C++. Dejme tomu, že závislost, kterou používám v programu, poskytuje následující funkci:

float average<T>(const std::vector<T> input);

která předpokládá, že typ T má metodu .compute_float(). Pro každou položku vektoru si zavolá právě jednou .compute_float() a vrátí průměr. Mohly by existovat různé implementace, např. naivní versus paralelní. (Nechme teď prosím stranou, že to je takový hrozně zjednodušený příklad, nechci tady psát nějaký matice nebo něco.)

Jak by se tady měla aplikovat tebou popsaná technika?
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
18.6. 23:10 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
float average<T>(const std::vector<T> input);
lol, zmatlal jsem C++ a Rust a zapomněl na referenci. Správně to mělo být samozřejmě takhle:

template <class T> float average(const std::vector<T>& input);
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 18.6. 23:39 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC

A co dostanu, když ti to naprogramuji?1 :-) Mám v hlavě rozmyšlený postup, ale nechce se mi to teď psát. Asi až zítra…

[1] mohl by sis třeba přejmenovat větev v gitu na java_je_boží nebo tak něco

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
18.6. 23:49 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
A co dostanu, když ti to naprogramuji?
Osvícení. Ale jen když nebudeš švindlovat, tj. např. nahrazovat const std::vector<T>& input něčim jako const std::vector<T*>& input nebo podobně... API se nesmí změnit (je to dependence, takže ho ani změnit nemůžu).
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
xkucf03 avatar 19.6. 00:10 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC

Ty sis sám vybral variantu č. 4, ve které máš jednak spolupracujícího autora knihovny (píše adaptér v [A+K]) a rozhraní [R] si píšeš buď ty jako autor programu nebo někdo jiný s vědomím, že to rozhraní bude stát v samostatném balíčku a někdo ho bude nezávisle implementovat a někdo používat. A nakonec ty píšeš program [P], který můžeš upravovat. Co zachovám, je tedy interní rozhraní knihovny uvnitř [A+K], ale i to by se dalo měnit, protože [A+K] je jeden balíček psaný jedním autorem. Více zítra, jestli se k tomu dostanu…

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
19.6. 00:23 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Můžeš si to vyzkoušet pro všechny ty varianty a porovnat si to, je mi to celkem jedno. Možná jsem neměl napsat osvícení, ale spíš opak, protože minimálně v některých případech to bude hnusné. Anebo se případně podívat na nějakou reálnou např. maticovou/lingebra knihovnu, kde je žádoucí těsná vazba, to bude asi lepší než jakýkoli příklad, který tu vymyslim...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
19.6. 19:39 Bherzet | skóre: 13 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
IMHO mluvil o něčem jiném. Když budeš mít v C++ rozhraní (R):
template <typename T>
void min(T a, T b);
a ve svém kódu (P) definovaný vlastní typ s přetíženými operátory < a >, tak není možné poskytnout implementaci (A+K), aniž by tato byla zkompilována přímo proti tvému kódu (P).
19.6. 20:24 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Modulární architektura, závislosti, DI/IoC
Přesně tak. Resp. ono by to teoreticky šlo nějak ohackovat, u toho average() by sis mohl spočítat rozdíly umístění v tom vektoru a vytáhnout z toho pointer na tu funkci a podobně, ale bylo by to těžký napsat skutečně korektně, bylo by to dost hnusný a stejně by byla fůra logiky v tom headeru. To samý tvůj případ