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í
×
dnes 15:44 | Nová verze

Byla vydána nová major verze open source komunikačního softwaru Jami (Wikipedie, GitLab). Její název je Free as in Freedom. Dřívější názvy projektu Jami byly SFLphone a následně Ring.

Ladislav Hagara | Komentářů: 0
dnes 00:33 | Zajímavý projekt

Společnost MNT Research má v plánu na Crowd Supply spustit kampaň na podporu open source notebooku MNT Reform. Vývoj notebooku lze sledovat na Mastodonu.

Ladislav Hagara | Komentářů: 4
dnes 00:11 | Zajímavý software

Chcete si zahrát víceuživatelský tetris v terminálu? Stačí spustit ssh netris.rocketnine.space. Na straně serveru běží netris. Zdrojové kódy v programovacím jazyce Go jsou k dispozici pod licencí GPLv3.

Ladislav Hagara | Komentářů: 0
včera 19:44 | Nová verze

Po čtyřech měsících vývoje od vydání verze 4.10 byla vydána nová verze 4.11 svobodné náhrady proprietárních BIOSů a UEFI coreboot (Wikipedie). Na vývoji se podílelo 130 vývojářů. Provedli 1630 změn. Přidána byla podpora pro 25 mainboardů.

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

Byla vydána verze 1.6.0 emulátoru terminálu Terminology (GitHub) postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

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

Vydání verze 1.0 svobodného multiplatformního vektorového grafického editoru Inkscape se blíží. Registrovaní uživatelé mají možnost hlasovat o obrázku, který bude zobrazován v okně O Inkscapu. Vybírá se ze 124 návrhů.

Ladislav Hagara | Komentářů: 8
včera 10:55 | Nová verze

Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. V první desítce se nic nezměnilo. Nejvýkonnějším superpočítačem zůstává superpočítač Summit. Nejvíce superpočítačů v TOP500 má Čína (228). Český superpočítač Salomon klesl na 375. místo. Další přehledy a statistiky na stránkách projektu. V aktuálním žebříčku GREEN500 (GFlops/watts) superpočítač Summit klesl na 5. místo.

Ladislav Hagara | Komentářů: 3
včera 02:00 | Zajímavý článek

V novém příspěvku na blogu Purismu se můžete dočíst, jak pokračoval vývoj softwaru Librem 5 v říjnu. Vývojáři optimalizovali linuxové jádro a ovladače pro snížení spotřeby telefonu. Mezi další změny patří lepší integrace mezi aplikacemi pomocí knihovny libfolks, byly přidány nové funkce klávesnice, nastavení, shellu, kompozitoru a opraveno plno chyb.

okias | Komentářů: 3
včera 01:55 | Nová verze

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Cybersecurity 2019 by Packt. Všech 22 videokurzů a elektronických knih věnovaných kybernetické bezpečnosti od nakladatelství Packt lze koupit za 15 dolarů. Peníze lze libovolně rozdělit mezi nakladatelství Packt, neziskovou organizaci Arthritis Foundation a Humble Bundle.

Ladislav Hagara | Komentářů: 0
18.11. 23:22 | Zajímavý článek

Ben Cox v článku Jak psát ovladače nepodporovaných USB zařízení pro uživatelský prostor ukazuje, jak reverzním inženýrstvím dospěl k vlastnímu ovladači userspace-vga2usb pro převodník a frame grabber Epiphan VGA2USB LR s již nepodporovaným linuxovým ovladačem od výrobce.

Fluttershy, yay! | Komentářů: 0
Jaké hodinky nosíte (nejčastěji)?
 (24%)
 (6%)
 (16%)
 (54%)
Celkem 268 hlasů
 Komentářů: 27, poslední dnes 17:56
Rozcestník

Prokleté programování

2.9.2016 16:35 | Přečteno: 3900× | Ostatní | poslední úprava: 2.9.2016 16:33

Naučím se programovat, mohl bych začít třeba s tím Céčkem, když je v něm napsaný Linux, řekl jsem si před několika lety a koupil si pár knížek. Předpokládal jsem, že při troše snahy bych snad mohl být dobrý programátor a případně si vydělat i nějaké peníze. A tak jsem se naučil syntaxi, ukazatele, struktury, uniony, ale pak jsem zjistil, že vlastně nejsem schopen nic složitějšího naprogramovat, protože nevím jak. Začal jsem se tedy učit algoritmy a datové struktury (spojové seznamy, zásobníky, fronty, binární stromy atd.), zkoumal jsem zdrojové kódy jednoduchých aplikací v GTK+, různé kalkulačky, textové editory nebo tetris, pošilhával jsem po i C++ a Pythonu, abych byl schopen je aspoň číst. Ale přesto jsou moje programovací schopnosti stále minimální, je to docela frustrující.

Takže programování není vůbec snadné a jsem dalek toho, abych třeba napsal nějakou aplikaci pro Linux nebo nějak vylepšil jádro, nicméně i nadále zůstanu v C, přechod na jiný jazyk by nic nevyřešil, a mimoto kernel a GNU budou potřebovat programátory v C, protože hrozí jejich nedostatek, vzhledem k tomu že v dnešní době hodně mladých lidí začíná už rovnou objektově s C++ a Pythonem.

Ale abych z toho programování taky něco vymáčkl, začal jsem se učit HTML, CSS, PHP a MySQL, po tvorbě stránek je určitě větší poptávka než po kalkulačce v GTK+ :-) Doteď jsem oblast webu ignoroval, předpokládal jsem, že si něco vydělám psaním knih, akorát jsem zjistil, že napsat knihu je ještě těžší než programování, protože programovat můžete vždycky a navíc se můžete opakovat, ale na to, abyste napsali dobrou knihu, potřebujete vymyslet kvalitní a originální příběh, a to se člověku podaří jen několikrát za život, v lepším případě. Bez promyšleného příběhu píšete naprázdno a je to ztráta času.


Jazyk C - zajímavé knihy

Učebnice jazyka C, Herout
Programovací jazyk C, Ritchie, Kernighan
The Practice of Programming, Kernighan, Pike
Secure Coding in C and C++, Seacord

Advanced Topics in C, Kalicharan
Algorithms in C, Sedgewick
C Interfaces and Implementations, Hanson

Advanced Programming in the UNIX Environment, Stevens, Rago
Understanding the Linux Kernel, Bovet, Cesati
Linux Kernel Development, Love
Linux Device Drivers, Corbet, Rubini, Kroah-Hartman

Foundations of GTK+ Development, Krause

Compiler Design in C, Holub

Unix xv6 (Unix v6 přepsaný do ANSI C, běžící na x86)


Dost knih je možné najít přes google v pdf.        

Hodnocení: 62 %

        špatnédobré        

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

Komentáře

Diskuse byla administrátory uzamčena

2.9.2016 17:13 Skutečný programátor
Rozbalit Rozbalit vše Re: Prokleté programování
Učíš se špatně, naprogramuj si pro sebe něco, co se ti hodí (já začínal jako dítě u 2D her) a na to napři celou svou energii. Pouč se z chyb a začni něco dalšího, opakuj ad nauseam, za pár let budeš použitelný.
2.9.2016 17:45 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Webu a PHP se drž. Je to jednodušší, je poptávka a lidi jsou zvyklí na nízkou kvalitu kódu ;-) Navíc se můžeš chytnout nějakého redakčního systému, třeba Drupalu, a stavět na něm. Napsat nějaké malé rozšíření je snažší, než stavět celou aplikaci na zelené louce. A hlavně to bude už od začátku něco dělat.
Hello world ! Segmentation fault (core dumped)
3.9.2016 17:56 Agent | HC city
Rozbalit Rozbalit vše Re: Prokleté programování
Taky bych drupal...
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
4.9.2016 13:31 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Webu a PHP se drž. Je to jednodušší, je poptávka a lidi jsou zvyklí na nízkou kvalitu kódu ;-) Navíc se můžeš chytnout nějakého redakčního systému, třeba Drupalu, a stavět na něm. Napsat nějaké malé rozšíření je snažší, než stavět celou aplikaci na zelené louce. A hlavně to bude už od začátku něco dělat.
Spíš než PHP bych mu doporučil node.js a react. Není toho zas tak moc, co se musí naučit a lidi mu utrhají ruce (už asi čtvrt roku hledáme JS programátora a prostě nejsou).
4.9.2016 17:19 radix
Rozbalit Rozbalit vše Re: Prokleté programování
Ale jsou, jen asi nabizite malo penez, nudnou praci a tak ...
4.9.2016 23:53 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Popravdě řečeno nevím přesně, kolik nabízíme, ale podle zbytku firmy bych řekl, že v tomhle problém nebude. Co se týče nudy, tak nevím, nemůžu posoudit. V podstatě jde o web, kde bude pár (desítek) různých živě updatovaných grafů, uživatelské přihlašování a tím to (zatím) asi hasne. Nejspíš to není žádný extra odvaz, ale taky to není práce na dlouhé měsíce. Když dělají javascripťáci weby, tak při tom jinde mají zábavu?
7.9.2016 17:54 palo
Rozbalit Rozbalit vše Re: Prokleté programování
Kvalitni js programatori beru min 20€ / hodina tu na zaostalom Slovensku takze predpokladam ze u vas je to este viac.
7.9.2016 18:07 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Jo, to předpokládám taky tak nějak. Rozhodně tu nebude ten problém, že by na programátora firma neměla peníze.
8.9.2016 16:03 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Předpokládat je nesmysl. A troufám si říct, že spousta velmi slušných programátorů v různých jazycích pracuje hluboko pod 90kKč měsíčně a momentálně nevím o veřejné nabídce zaměstnání jako vývojář za 80k-90k v ČR. Neříkám, že to nějak aktivně sleduju, ani neříkám, že to taková práce nejde najít, ale rozhodně bych tomu neříkal běžná dostupnost.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.9.2016 16:40 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Taky je asi dobré říct, že se nemá jednat o trvalou práci, ale o krátkodobější spolupráci asi tak do konce roku.
8.9.2016 20:07 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Tak kontrakt by měl hodit trochu víc než stálá práce, to je fakt, ale pak má smysl to dělat spíše na živnost než na smlouvu na dobu určitou, a tak jsou podle zvyku trochu jiné sazby.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
4.9.2016 18:32 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Spíš než PHP bych mu doporučil node.js a react.
Uhh. Prostředí Node.js je imho dost nepřívětivé. Callback hell a tak. Třeba Python + Flask mi přijde mnohonásobně příjemnější...
4.9.2016 18:40 radix
Rozbalit Rozbalit vše Re: Prokleté programování
Python a flask ale neni web scale.

Jinak ke callback hellu se pridal jeste promise hell, generator hell a nejnovejsi async/await hell a vsechny mozne konverze mezi nimi. To je pak krasa s tim pracovat.
5.9.2016 10:01 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Python a flask ale neni web scale.
Z čeho tak usuzuješ? Ne, že bych nevěřil, ale stejně by mě zajímaly nějaký podklady... Třeba s PyPy/gevent bych čekal, že by to jít mohlo... Když vezmu v úvahu, co dokázal fujsbuk vymlátit z přiblblého PHP...
5.9.2016 18:17 radix
Rozbalit Rozbalit vše Re: Prokleté programování
Byl to spis pokus o vtip. Asynchronni model z node.js maji ted snad vsechny relevantni platformy. Asynchronni model ma sve vyhody v urcitych specifickych pripadech, ale vetsinou je to overkill, ktery pridava vic problemu nez resi ...
4.9.2016 23:54 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Uhh. Prostředí Node.js je imho dost nepřívětivé. Callback hell a tak. Třeba Python + Flask mi přijde mnohonásobně příjemnější...
Souhlasím. Co se mě týče, tak to vnímám stejně (až na ten flask, preferuji bottle).

Šéf má ale docela pochopitelné námitky, co se týče jednotnosti backendu webu a frontendu (=stačí ti jeden programátor co zná dobře JS). Pak taky ty různé vymoženosti, jako třeba automatické validace dat na obou stranách jedním kódem, živý transport dat z backendu na frontend a různé další vymoženosti. V pátek u nás byl „školit“ člověk, co stojí za este a měl docela dobré pointy proč použít JS na obou stranách.
5.9.2016 08:16 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Prokleté programování
docela dobré pointy proč použít JS na obou stranách

Čo konkrétne?

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
5.9.2016 09:01 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Tak asi můžeš sdílet třeba kód pro validaci dat, nicméně mně osobně přijde, že nevýhody Node.js to rozhodně nevyváží...

IMHO by to měl management pojmout tak, že potřeba dalšího jazyka není pro nové zaměstnance nevýhoda, ale naopak výhoda - "Naučíme tě Python, to je pro tebe dobré".
5.9.2016 09:20 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Prokleté programování

O tej validácii som to čítal veľa krát. Pekne sa to počúva, ale v praxi najčastejšie potrebujem validovať:

  • aby pole nebolo prázdne (required atribút pre input, takže žiadna js validácia pre klienta)
  • e-mail (input type="email", zase žiaden js)
  • kontrola voči databáze (duplicity a iné pravidlá, tu sa zdieľať kód nedá pretože nepošlem celú db klientovi)
  • validácia vstupnej masky (väčšinou regex a zase sa zaobídem bez js)
  • kontrola kvality hesla

Z toho na čo som si spomenul by som zdieľal kód len v jednom prípade.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
5.9.2016 10:03 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
A pak ještě pár komplikovanějších pravidel, jako třeba když zaškrtneš, že fakturační adresa je jiná než dodací, tak ji musíš vyplnit. Nebo že datum začátku musí být dřívější než datum konce. Tohle HTML formuláře bez JS neumí, ale zas je to pár věcí, které lze implementovat obecně a pak zapnout pomocí data atributů.

Nakonec pak ale stejně tu validaci máš ještě jednou v modelu. Tedy formulář na klientovi odchytí zjevné blbosti, formulář na serveru odchytí třeba i trochu méně zjevné blbosti, ale konečné slovo má stejnak až model, který detekuje právě věci jako duplicity v databázi nebo neplatné reference na jiné entity.
Hello world ! Segmentation fault (core dumped)
5.9.2016 11:08 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Prokleté programování

Ja som na túto dvojitú validáciu rezignoval ;) V posledných projektoch všade kopírujem svoju dirty implementáciu ktorá počas vypĺňania formulára posiela serializovaný formulár na server a dostáva naspäť výsledok validácie, takže na klientovi mám minimum kódu. Aktuálne sa to snažím izolovať, učesať a zverejniť na githube ako django app.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
5.9.2016 11:21 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
+1, imho dobrý přístup, pro naprostou většinu webových aplikací je ta komunikace se serverem stejně nutná k funkčnosti a plnohodnotná validace se vším všade se na klientu stejně neprovede...
5.9.2016 19:53 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Pokud se to zkombinuje s HTML5 validací pro podchycení trivialních případů (require, mail, čísla, datumy), tak je to asi nejlepší řešení.
Hello world ! Segmentation fault (core dumped)
5.9.2016 11:16 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
IMHO většina těhle věcí se dá pojmout JSON schematy, který se dají použít na serveru i klientu v různých jazycích.
5.9.2016 19:51 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Nedá. JSON schema neumí vyjádřit vztahy mezi políčkama. Ale jinak je použití JSON schema dobrý nápad a na sopustu věcí se skvěle hodí.
Hello world ! Segmentation fault (core dumped)
5.9.2016 22:29 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Prokleté programování
Většina platforem obsahuje interpret JavaScriptu/ECMAScriptu, takže se člověk nemusí omezovat na JS a psát v něm celou aplikaci.

A pro ty validace mi stejně přijde nejlepší deklarativní zápis (případně nějaký jednoduchý jazyk), který připojíš k popisu entit a ze kterého si vygeneruješ jednou DDL skript pro databázi, jednou třídy a validace pro server a potřetí třídy a validace pro klienta. Když např. zvýšíš velikost textové poznámky z 200 na 1000, přepíšeš to jen na jednom místě a přegeneruješ.
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
5.9.2016 22:46 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Bean Validation – Java
Pro představu, jak se to dělá v Javě: Deklaruješ to jen jednou – zvalidovat to pak na serveru i klientovi je práce pro framework, ne pro programátora. Je to rozšiřitelné, dají se v tom dělat i kontroly přes víc polí.
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
6.9.2016 09:48 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Bean Validation – Java
Mně se na těhle frameworcích typu GWT neblíbí dvě věci:

1) Je to naprostý blackbox, člověk se musí spolehnout, že framework udělá Správnou Věc™

2) Neznám je dopodrobna, ale interakce nebo nedej bože integrace s nějakým větším vlastním JS klientským kódem a 3rd party JS knihovnami bude nejspíše dost PITA. Na posledním webovém projektu jsem potřeboval minimálně cytoscape, raphael a leaflet + dost vlastního kódu... Bych musel používat nebo i vytvářet bindingy do Javy, teď ty bindingy budou mít limitace... Trochu drbání se nohou za uchem...
6.9.2016 23:17 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Bean Validation – Java
Mluvíš o Bean Validation nebo o Vaadinu?

Bean Validation je standard, otevřená specifikace a od implementací jsou zdrojáky, je to svobodný software – žádná černá skříňka to není. Je to rozšiřitelné, můžeš si snadno psát vlastní anotace/validátory, když ti nestačí ty výchozí.

Vaadin je opět svobodný software, do všeho se můžeš podívat. Existují rozšíření a komponenty psané externími vývojáři, takže to zjevně rozšiřovat a napojovat na další software jde. Zrovna i ten Raphael tam někdo napojil – JustGage. Integraci s JavaScriptem to samozřejmě podporuje (bez toho by nešlo napsat ani ty standardní komponenty, které jsou součástí Vaadinu), viz např. Integrating HTML and JavaScript in Vaadin 7.
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.9.2016 00:02 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Bean Validation – Java
Mluvíš o Bean Validation nebo o Vaadinu?
Vaadin, příp. GWT...
Zrovna i ten Raphael tam někdo napojil – JustGage.
To je jen nějaká komponenta napsaná pomocí Raphel... Můj případ byla SPA aplikace pracující s Cytoscape (různě do něj sype data, mění, atd.), což zahrnovalo také rozšíření do Cytoscape - renderer používající Raphael a vlastní layout engine. Aplikace od serveru požadovala pouze vhodné REST API.

Uvádim to jako příklad, kdy použití jedné technologie na serveru i klientu nepomůže, resp. není vlastně ani možné.
5.9.2016 11:07 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
IMHO by to měl management pojmout tak, že potřeba dalšího jazyka není pro nové zaměstnance nevýhoda, ale naopak výhoda - "Naučíme tě Python, to je pro tebe dobré".
Tak teoreticky. V praxi není nikdo na python, ani na javascript, ani s ochotou se učit nový jazyk. Už jsme zkoušeli lovit na vysokých školách, s tím že ten člověk nemusí umět skoro nic, jen naprosté základy a zbytek se/ho nějak doučí(me) a stejně nic. Spíš bych řekl, že když lidi slyší, že se budou muset naučit něco nového, tak nejsou nadšení.

Za dva měsíce se nám ozvali tři lidi. Jeden byl vyhořelý učitel programování, který měl na githubu ukázky kódu, ze kterých bylo jasné, že vůbec nechápe, o co jde a sám si sjíždí základní tutoriály. Kdyby nebyl z druhé strany republiky, nebo se chtěl přestěhovat, tak by ale stejně dostal šanci*. Druhý poslal kód zjevně slepený z stackoverflow, kde jsou namíchané anglické a české názvy a v 120 řádkách to má podle linteru 180 chyb a ještě k tomu nejde spustit (doslova nejhorší kód, co jsem kdy viděl). Třetího studenta ze Slovenska jsme vzali na poloviční úvazek (to chtěl on, jde studovat v Praze VŠ).

Já z toho mám tak nějak zmixované pocity. Na jednu stranu jsem docela rád, protože to zvyšuje mojí cenu na trhu práce, na druhou stranu mi přijde dost zvláštní to takhle vidět. Výhoda asi je, že v příští práci si budu moct víc diktovat a taky budu brát jen větší libůstky a nepřijde mi, že na to nemám, když jsem teď viděl situaci na vlastní oči.

*Kdyby uměl programovat, tak by asi nebyl ani problém pracovat z domova, ale učit někoho na dálku základy, to fakt ne.
5.9.2016 15:19 pavelx
Rozbalit Rozbalit vše Re: Prokleté programování
Nechci ti kazit radost, ale co umis tak exkluzivniho, ze si tak veris? Python, ok, a dal?
5.9.2016 15:43 meč pravdy
Rozbalit Rozbalit vše Re: Prokleté programování
Nic neumí, jen vysává státní rozpočet a hojí si tu ego pošramocené špatným svédomím a nezkušeností.
5.9.2016 16:47 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Pracuju pro zcela soukromou firmu o 25 lidech na zcela soukromém projektu.
5.9.2016 16:48 meč pravdy
Rozbalit Rozbalit vše Re: Prokleté programování
Už tě vykopli, jo?
5.9.2016 16:54 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
4/10, would not get mad
5.9.2016 17:32 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Už tě vykopli, jo?
Ne, časem se to stalo moc lehké a rutinní a už mě to nebavilo.
5.9.2016 15:58 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Na současném trhu práce toho zase tak moc nepotřebuješ.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
5.9.2016 17:20 Agent | HC city
Rozbalit Rozbalit vše Re: Prokleté programování
To je možná pravda o to je tristnější, že mnozí nejsou ochotni naučit se ani to málo.
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
5.9.2016 17:25 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Nechci ti kazit radost, ale co umis tak exkluzivniho, ze si tak veris? Python, ok, a dal?
Celá moje pointa byla, že na současném trhu práce je tak masivní poptávka, že si můžu říct o víc, i když mám pocit, že třeba nic víc neumím. Zkušenosti mi totiž ukázaly, že zatím všichni, koho jsem potkal jsou na tom podstatně hůř a říkají si o víc.


Jinak pokud by tě to fakt zajímalo a protože to funguje i jako reklama na mě:

Umím python a jeho ekosystém a mám v tom 9 let amatérské praxe, z toho 3 roky komerční praxe jako programátor (předtím jsem dělal na řešení poruch jednoho českého ISP, takže se vyznám i v sítích a síťování na nějaké víc než základní úrovni). Dělal jsem pro několik firem a taky několik zakázek na IČO (=samostatná práce od návrhu po implementaci).

Většina zdrojáků je na netu, tak se všichni můžou podívat. Když píšu, že umím celý ekosystém, tak tím myslím vytváření balíčků (+ OS balíčků), psaní extenzivní dokumentace ve sphinxu, testování. K tomu mám 2 a něco roku zkušeností se stavěním Microservices architektury na RabbitMQ, zkušenosti s SQL (oracle, postgre, mysql, používám ORM) a NoSQL databázema (mongo, ZODB). Z frameworků bottle, asyncio a brython.

Většinou dělám backendové aplikace, které fungují v rámci microservices, nebo taky RESTu, podle toho co chce klient/zaměstnavatel. Nějaké ty github statistiky.

Poslední dobou si hraju s Lispem, Smalltalkem a Selfem, ale zkušenosti mám taky s JS (ble), C na mikrokontrolerech, D a tak. Blbosti jako Basic, PHP, Javu a C#, VHDL, vyhlášku 50 a elektro většinou do životopisu ani nedávám, nebo uvádím na úrovni čtení zdrojového kódu, i když je většinou umím líp a dělal jsem v nich desítky různých projektů, některé z nich opensource. Dělat v nich ale nechci, protože proč, když jsou na světě příjemnější věci.

Mám taky 2 roky zkušenosti s prací v distribuovaném teamu po republice a nedělá mi problém se dálkově koordinovat (i teď máme půl teamu v Ostravě), nebo pracovat pár týdnů sám o sobě. I když si připadám jako junior, tak většinou fakticky dělám věci na seniorní pozici, protože prostě seniora sehnat těžce a když už nějakého máme, tak většinou umí python hůř než já a je většinou přeučený z něčeho jako C, nebo Java, takže můj hlas má určitou váhu.

Zatím nikdo, kdo si mě najímal/platil si nestěžoval, naopak mi poměrně pravidelně dohazují další práce. Z toho taky plyne moje povědomí o tom jaký je na trhu hlad, protože to teď mám z obou stran, kde na jedné musím práce aktivně odmítat, což by byla zajímavá zkušenost, nebýt toho, že lidi volaj mobilem, a na druhé straně chodím k pohovorům jako technický konzultant a mám možnost mluvit s uchazeči a taky vidět jejich práci.

Osobně sám sebe vnímám jako juniora a vím, že se mám ještě hodně co učit, dost na poli algoritmizace a taky architektury software. O práci se ale v dohledné době (2-5 let) fakt nebojím. I kdyby náhodou všechno programování vyschlo, tak se dokážu učit a adaptovat a prostě půjdu někam dál. Třeba psát články (za to mě občas lidi taky platí), nebo dělat něco v elektronice / elektrice.
6.9.2016 01:57 Agent | HC city
Rozbalit Rozbalit vše Re: Prokleté programování
A máš vůbec čas si občas zaš*ustat?
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
6.9.2016 10:28 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Máš zájem, jo?
6.9.2016 15:30 Agent | HC city
Rozbalit Rozbalit vše Re: Prokleté programování
Jestli tvoje baba strádá, klidně zaskočím :-)
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
6.9.2016 16:20 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Tak proti gustu žádný dišputát. Ona bude ráda. Vnoučata na ní nemají čas a dcery na ní serou. Až budeš v Karlových varech, tak dej vědět, můžeš třeba nakoupit cestou, aby to na stará kolena nemusela tahat do třetího patra sama.
7.9.2016 01:13 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: Prokleté programování
Na nas ses prekvalifikovanej. Nam by snad stacil i nekdo kdo vi co je malloc, a chapal jak funguje sitova maska.
Please rise for the Futurama theme song.
7.9.2016 01:50 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
7.9.2016 07:57 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
:-D

Požadavky: clicking, double-clicking a malloc(). calloc() výhodou.
5.9.2016 10:02 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
až na ten flask, preferuji bottle
Ze zvědavosti: V čem je bottle lepší? (bottle neznám)
5.9.2016 10:49 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Je menší a jednodušší. Doslova jsem přečetl celý zdroják a pochopil ho, když jsem v něm opravoval nějaké chyby. Přijde mi tak nějak hackovatelnější. Jinak je to hodně podobné, až skoro stejné.
5.9.2016 11:18 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Ok, mně se na Flasku líbilo flask-restful, což dost eliminuje boilerplate pro rest apis...
5.9.2016 11:33 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Já jsem si kdysi vyráběl něco lehce podobného (bottle-rest).
5.9.2016 18:24 radix
Rozbalit Rozbalit vše Re: Prokleté programování
Šéf má ale docela pochopitelné námitky, co se týče jednotnosti backendu webu a frontendu (=stačí ti jeden programátor co zná dobře JS).
To muze byt vyhoda u velmi jednoduchych aplikaci, ale tim to tak konci. Nejvic me fascinuje myslenkovy pochod "budeme mit JS na backendu, takze nam backend budou moct psat i frontendisti". Frontend/backend jsou uplne jine skillsety, ktere zasahuji daleko dal nez jen vcelku jednoduse naucitelny programovaci jazyk.
5.9.2016 18:54 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Do jisté míry. Ono je dobré říct, že backendem se tu myslí tak leda nějaká komunikace na microservices v AMQP za tím, případně trocha databáze. Celý zbytek je v pythonu a je poměrně rozsáhlý a komplikovaný, ten web je na tom jen taková faseta a pozlátko zobrazující pár eye candy pro zákazníky.
4.9.2016 14:23 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Web a Vaadin
Když už web, tak doporučuji se podívat na Vaadin. Umožňuje abstrahovat od problémů komunikace mezi prohlížečem a serverem, od všech těch webových pa-technologií a různých bastlů (web původně nebyl určen k tvorbě aplikací a přirozeně se na to moc nehodí).

Píšeš v jednom jazyce, ale to není nejdůležitější – důležitější je to, že píšeš jen jednou, na serveru, a o komunikaci s prohlížečem a vykreslování se stará framework – část tvého kódu přeloží do JavaScriptu a přenese ho do prohlížeče, co se týče dat, tak posílá jen změny, obsluhuje události… síťově je to dost efektivní. Snadno se tam posílají i zprávy ze serveru – např. se aktualizuje nějaká hodnota v databázi a/nebo přijde přes JMS a ty ji chceš dostat ke klientovi – prostě ji jen nastavíš jako hodnotu pole resp. jakékoli UI komponenty (jako by to byla desktopová aplikace a vše běželo na jednom počítači, v jednom procesu) a o přenos po síti a vykreslení se nemusíš starat.

Nevýhodou je, že Vaadin je poměrně velký – ale je to asi jako když na desktopu použiješ Qt, místo abys používal nízkoúrovňové funkce Xorg nebo nějakou minimalistickou GUI knihovnu a všechno si řešil sám.

Podle mého jsou frameworky tohoto typu jediná cesta, jak dělat webové aplikace a zachovat si při tom duševní zdraví – tedy pokud to má být něco většího a nechceš zešedivět z neustálého ručního kontrolování, jestli na sebe klient a server pasují, a z psaní duplicitního kódu a rozčilování se nad webovým balastem, který se tu jen nabaluje přes dvacet let bez nějaké vize a řádu.
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
4.9.2016 14:48 sad
Rozbalit Rozbalit vše Re: Web a Vaadin
Chtěl bych si založit živnost na tvorbu webu, takže se raději držím prověřených a dobře podporovaných technologií, a pokud to bude možné, budu se snažit vyhnout i JavaScriptu, snad PHP a MySQL budou stačit.
4.9.2016 16:12 kančík
Rozbalit Rozbalit vše Re: Web a Vaadin
tak pokud si vše budeš dělat sám, tak ti málokdo bude koukat pod ruce a bude to jedno, ale jakmile by ses chtěl někde nechat zaměstnat, tak tě neznalost moderních technologií může pěkně kousnout do zadku. On třebas ten node.js se dá zvládnout levou zadní, když se "programátor", resp. kodér na webu JS nebál jako čert kříže
2.9.2016 17:56 Jardík
Rozbalit Rozbalit vše Re: Prokleté programování
To nic, já taky dodnes neumím programovat. Umím číst kód a umím ho zapisovat. Když mi to někdo celé navrhne a řekne jak má co šlapat, tak to jsem schopen napsat (ale to už si skoro pak můžou napsat sami). Můj problém je, že postrádám takové to myšlení, nebo to zase rychle zavrhnu, protože mi to přijde nedokonalé.
2.9.2016 22:00 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Na to je dobrá knížka The Art of Unix Programming.

Ono vůbec programování je mix mnoha oborů na několika úrovních abstrakce. Když to vemu odspodu, začíná to číslicovou technikou – logické obvody, TTL, synchronní a asynchronní konečné automaty. Když se člověk zvedne od tranzistorů a hradel, uvidí procesor. Tady má smysl se zabývat se Céčkem a Arduinem. O trochu výš se začnou objevovat operační systémy a systémové programování – šílené datové struktury, překladače, gramatiky (zas automaty), ale i komplikované plánování (přidělování zdrojů, multitasking). O kus výš už to je celkem pohodička – okýnka, klikátka, web, vyšší programovací jazyky. To pravé peklo ale teprve začíná: interakce s uživatelem. Až dosud si člověk vystačil jen s logikou, občas trochou matematiky a pěknou dávkou inženýrského citu. Jakmile se do toho začne motat uživatel, je potřeba psychologie. Obory jako je UX v podstatě nejsou nic jiného než aplikovaná psychologie. Pak je potřeba nějakých těch soft-skills, aby jeden z uživatele zjistil nejen co chce, ale hlavně to, co opravdu potřebuje. No a nakonec se dostáváme k modelování business procesů (zase automaty) a orchestraci služeb, kdy se míchá dohromady úplně všechno, ať už to cucá pivo nebo baterky …
Hello world ! Segmentation fault (core dumped)
2.9.2016 22:34 kančík
Rozbalit Rozbalit vše Re: Prokleté programování
To pravé peklo ale teprve začíná: interakce s uživatelem. Až dosud si člověk vystačil jen s logikou, občas trochou matematiky a pěknou dávkou inženýrského citu. Jakmile se do toho začne motat uživatel, je potřeba psychologie. Obory jako je UX v podstatě nejsou nic jiného než aplikovaná psychologie. Pak je potřeba nějakých těch soft-skills, aby jeden z uživatele zjistil nejen co chce, ale hlavně to, co opravdu potřebuje.
+1, skvěle napsáno
5.9.2016 20:03 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Prokleté programování
To pravé peklo ale teprve začíná: interakce s uživatelem. Až dosud si člověk vystačil jen s logikou, občas trochou matematiky a pěknou dávkou inženýrského citu.
Já mám teda problém už o level níž, prostě jak navrhnout architekturu toho programu (a vůbec to nesouvisí s uživatelem, může to být něco, co běží samo nebo komunikuje přes CLI rozhraní s nerdy, kteří UX neřeší).
Bojíte se 5G sítí? Pořiďte si domů radar, který veškeré 5G sítě spolehlivě zaruší!
5.9.2016 20:21 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Přečti si pár knížek či článků o architektonických návrhových vzorech, třeba Code Complete. Návrhové vzory jsou několika druhů a patří na různé úrovně. Strukturální návrhové vzory jsou někde na úrovni tříd. Zajímavější jsou ty o trochu výš.
Hello world ! Segmentation fault (core dumped)
5.9.2016 20:49 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Hmm, -1 k těm návrhovým vzorům, IMHO návrhové vzory neřeší vůbec nic, jsou takovým red herringem v programování. Návrhové vzory jsou pouze katalogizací technik v programování, tj. říkají jaké jsou všechny možné techniky a jak se implementují.

To ale není problém architektury software, ten spočívá v otázce, kdy/kde kterou techniku použít (celkem bez ohledu na to, jestli to je/není někde zkatalogizována jako nějaký návrhový vzor). A v tom jsou návrhové vzory platné jak mrtvému zimník. Viděl jsem dost začátečníků, kteří měli nabiflované všechny možné cool návrhové vzory, ale neměli šajn kdy/kde je vhodné který použít a prali je hlava nehlava všade možně. Na druhou stranu pak jsou zkušení vývojáři, kteří odhadnou, kdy/kde co použít, ale ti potom zas už nějaký katalog návrhových vzorů nepotřebují, protože dokážou samostatně určit, co kde jak strukturovat.

Být Jendou nedělám si s tím hlavu a jdu na to intuitivně, protože s otázkou architektury software se potýkají i celé týmy velice schopných vývojářů (a ne vždy zvítězí), čili je to prostě příliš těžký problém, než aby na něj existovalo nějaké obecné naučitelné učebnicové řešení.
5.9.2016 21:32 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
5.9.2016 21:47 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Prokleté programování
Být Jendou nedělám si s tím hlavu a jdu na to intuitivně
Nj, jenže pak vznikají zprasky jako kukuruku-gui, což je zjevně blbě, ale nevím, jak se to dělá správně.
Bojíte se 5G sítí? Pořiďte si domů radar, který veškeré 5G sítě spolehlivě zaruší!
5.9.2016 23:22 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Velikost projektu
Dokud to má jen 800 řádek, tak si s tím nemusíš dělat až takové starosti. Takhle malý program stačí rozdělit do pár funkcí, neduplikovat kód, okomentovat to a soustředit se na to, aby pracoval bezchybně. Použít na to architekturu, která se používá u programů o desítkách nebo stovkách řádků by bylo možná správné, ale taky to může být zbytečné investice nebo i znepřehlednění.

Je dobré si předem ujasnit, jestli chceš a) vyřešit problém, tak jak by se řešil v praxi (tzn. napsat program, který pracuje podle zadání, stihnout to v zadaném čase a splnit další požadavky, jako např. počítat s nějakým rozvojem do budoucna) nebo b) naučit se, jak se dělají správně velké systémy a rozsáhlé aplikace a pojmout to spíš jako akademický projekt.

S Pythonem ti radit nechci, ale zkus najít nějaké programy, které považuješ za kvalitní, je z nich cítit, že je psal někdo zkušený a dal si na tom záležet, a inspirovat se tam.
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
5.9.2016 23:09 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Návrhové vzory a inspirace
Návrhové vzory je dobré se naučit a čas od času si je připomenout. Jasně, že to pak člověk často používá, aniž by věděl, jak přesně se to jmenuje, ale důležité, že někde v podvědomí to má a při řešení problému ho vhodný vzor napadne. Druhá věc je, že je to taková společná terminologie, usnadňuje to komunikaci s ostatními – jednak, když o tom lidi mluví, tak aby si rozuměli (stačí říct dvě slova, místo aby pokaždé podrobně popisovali daný vzor) a jednak při čtení kódu (názvy tříd a metod odpovídající zaběhlým konvencím).

Taky je dobré studovat standardní knihovny (a jiné kvalitní) a dívat se, jak se řeší např. databázové ovladače, XML parsery nebo API na generování XML (podle stejného vzoru se dají parsovat nebo generovat i jiné formáty), UI prvky a obsluha událostí, třídy pro práci s regulárními výrazy, počítání hashů, vstupně/výstupní proudy, ORM, práce s datem a časem, různá „fluent“ API… ale chce to se nad tím zamýšlet i trochu kriticky a nejen to tupě přebírat, protože někdy jsou ty knihovny zatížené historickými chybami/nedokonalostmi a snahou o zpětnou kompatibilitu a kdyby to člověk navrhoval dnes a na zelené louce, tak by to šlo udělat lépe.
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
6.9.2016 09:53 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jasně, že to pak člověk často používá, aniž by věděl, jak přesně se to jmenuje, ale důležité, že někde v podvědomí to má a při řešení problému ho vhodný vzor napadne.
No jo, ale jak víš, který vzor je vhodný? To je právě ono. To je něco, co víš pouze díky zkušenosti programátora.
6.9.2016 15:26 Agent | HC city
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To tak nějak vyplyne ze situace, řekl bych. Vem si třeba matematické vzorečky, matematické vzorce jsou v podstatě taky takové návrhové vzory. Já teda matiku nikdy moc nemusel a nechápal jsem, na co mi bude třeba nějaká Pythagorova věta. A jak se mi hodila když jsem chtěl vypočítat vzdálenost dvou bodů v souřadném systému. Takových podobných příkladů určitě každý z nás zná hafo. Rozhodně se podle mě hodí mít o těch vzorech povědomí, o tom jak je implementovat. To, kdy jej použít, vyplyne tak nějak samo, když člověk přemejšlí podobně, jako mě automaticky napadla ta Pythagorka.
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
6.9.2016 16:05 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
a neni lepsi si tu pythagorovu vetu vymyslet, odvodit? ja sse tedy tyhle opicarny nikdy neucil a krome tech nejvykricenejsich jako je napriklad pythagorova veta je ani neznam jmenem
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
6.9.2016 18:04 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Můžeš si to odvodit, ale je to ztráta času. V programování pak dvojitá, jak budeš ladit chyby, které jsi nemusel vůbec udělat.

Ale hlavně se tím omezíš jen na možnosti svého mozku a své vlastní zkušenosti. A nutno dodat, že ty možnosti jsou značně omezené i kdybys byl kdovíjak geniální. Když se podíváš, jak to dělají ostatní, obzvlášť v případě už předkousaných návrhových vzorů, tak krom samotného řešení získáš i zkušenosti spousty dalších lidí a nemusíš ztrácet čas děláním stejných chyb. Navíc mnoho věcí má za sebou pořádný kus teorie, který prostě nemáš šanci za jeden život odvodit. Mnoho algoritmů stojí na desítkách let práce šílených matematiků, po kterých o pár desítek let později přišel někdo, kdo jejich výsledky použil pro řešení zdánlivě zcela nesouvisejícího problému. Třeba jen za překladači máš dobrých padesát let starou teorii. A na Rootu zrovna vyšlo pár dílů seriálu o tom, co za zvrhlosti se používalo před SQL databázema. S návrhovými vzory to je stejné. Jejich znalost ti třeba ušetří práci s testováním kódu, který hojně používá singletony, neboť budeš vědět, že není dobrý nápad je používat.
Hello world ! Segmentation fault (core dumped)
6.9.2016 18:53 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Hm, na jednu stranu bych určitě souhlasil, že znovuvynalézat kolo je nesmysl a je lepší používat osvědčená řešení.

Na druhou stranu mi ale rozhodně nepřipadá, že návrhové vzory by byly na stejné úrovni jako překladače nebo SQL. To rozhodně nejsou. Viz třeba všelijaké debaty o tom, že návrhový vzor XY je vlastně nesmysl a neměl by se vůbec používat atd., neustálé hádky. Minimálně část návrhových vzorů mi s trochou nadsázky připadají jako taková katalogizace Javového boilerplatu :-D
6.9.2016 19:23 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Však ono to taky okolo Javy vzniklo a v ostatních jazycích spousta z toho není vůbec potřeba, protože to prostě jazyk zvládne tak nějak přirozeně. Zajímavější jsou ty vzory popisující celkové chování aplikace, tam už to není moc vázané na javovité OOP a dává to smysl i jinde. Naneštěstí když prijde řeč na návrhové vzory, tak si většina lidí vybaví ty nezajímavé klasické a na ty užitečné už nedojde.

Ty hádky kolem jsou také docela zajímavé, neboť software je dnes v podobném stavu jako architektura a stavebnictví před Newtonem. Nikomu se to nepovedlo formalizovat a objektivně vyčíslit kvalitu softwaru. (Metriky, které máme, jsou vesměs na nic.)
Hello world ! Segmentation fault (core dumped)
7.9.2016 11:11 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nejlepším příkladem (a přímo od GoP) je návrhový vzor "volání subrutiny" :-) Na jednu stranu to všechny jazyky už 40 let umí přirozeně, na druhou stranu mi výrok "já volání subrutiny nikdy nepotřebuju použít" přijde takový...
7.9.2016 12:40 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Však ono to taky okolo Javy vzniklo a v ostatních jazycích spousta z toho není vůbec potřeba, protože to prostě jazyk zvládne tak nějak přirozeně.
Priklad?
7.9.2016 12:56 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Týká se to hlavně dynamicky typovaných jazyků, kde třeba taková abstract factory přestává být zajímavá. A funkcionální jazyky zjednodušují Pub-Sub a Visitor na trivialitu. Je to vidět hlavně na těch šílených class diagramech v popisech vzorů, když stačí přirozeně použít λ.
Hello world ! Segmentation fault (core dumped)
7.9.2016 13:54 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Anonymni trida je jen delsi (odpornejsi) zpusob zapisu tehoz, takze v tom nijak velky rozdil nevidim. Prijde mi navic prehlednejsi prohlasit, ze zde se jako callback predava instance implementujici konkretni interface a vyzadujici konkretni argumenty nez se omezit na proste tvrzeni, ze se predava libovolna promenna, ktera se shodou nahod pozdeji zavola jako funkce.
7.9.2016 14:35 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ja ti nevim, ale uz javistum-extremistum doslo ze resit tohle pomoci extra (anonymnich) trid/interfacu je totalni kokotina a zavedli (jako workaround) "lambda expressions" ...

Jinak samozrejme optional static typing kde te promenne priradis typ v pripadech kdy to ma smysl (tady napr. je to func ktera bere tyto argumenty) :)
7.9.2016 16:01 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
A vis, jak ty lambdy v Jave funguji? Z hlediska jazyka je to v podstate jen jiny zpusob zapisu anonymni tridy (do bajtkodu se to prelozi trochu jinak, ale to ted nechme stranou). Tzn. ze s design patterny a class diagramy (o kterych zde byla rec) to nesouvisi vubec nijak, protoze lambda predhozena jako argument je stale jen implementace jedne konkretni metody z jednoho konkretniho rozhrani.
7.9.2016 16:23 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To je ale celkem lhostejné, jak je to naimplementováno pod kapotou... Podstatné na tom je to, že člověk nemusí psát ten boilerplate, ehm totiž chtěl jsem říct design pattern...
7.9.2016 16:45 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Boilerplate se nemusí psát, ale design pattern zůstává. Možná to není zajímavé, ale to je přeci jiná otázka, ne?
7.9.2016 17:45 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
design pattern predani funkce parametrem?
7.9.2016 19:40 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Např. továrna (factory) nebo mapovač řádek (row mapper) nebo třeba posluchač (listener).
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
8.9.2016 10:07 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
design pattern predani funkce parametrem?
Předání funkce parametrem se běžně používá při implementaci několika různých patternů, především pak callback (ten je myslím nortoricky známý, nebo snad někdo opravdu prohlásí že "v mém jazyce callback nemáme"?), visitor (ten už je docela kontroverzní, existuje spousta variant), ale například i lazy-loading/cache (abych jmenoval něco neobvyklého).
8.9.2016 11:08 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Callback je pattern? Lazy-loading a cache jsou patterny? ROFL! Existuje něco, co není pattern?

Je hezké mít potvrzeno, že "design pattern" je slovní vata prosta jakéhokoli významu...
8.9.2016 11:24 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Callback je pattern? Lazy-loading a cache jsou patterny? ROFL! Existuje něco, co není pattern?
Pokud je to pojem který lidé potřebují nějak mentálně zpracovat a sdělit jiným lidem...
Je hezké mít potvrzeno, že "design pattern" je slovní vata prosta jakéhokoli významu...
Pojem "callback" pro tebe nemá význam? Ani "lazy-loading" nemá význam? Zamyslel zes nad tím než jsi to napsal?

Samozřejmě, naprostá většina lidské komunikace se dá označit jako "slovní vata". Bohužel, stále ještě se nepodařilo tyto výtvory miliónu let náhodné evoluce odstranit...

8.9.2016 11:28 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ale možná by opravdu stálo za to zdůraznit: design patterny nejsou reálné věci (tedy, do té míry do které je kód reálný, samozřejmě), ale jen pomůcka pro lidi.
8.9.2016 11:30 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pojem "callback" pro tebe nemá význam? Ani "lazy-loading" nemá význam?
Mají pro mě význam, pochopitelně. Co IMHO postrádá význam je označit je za "design pattern".

To je asi jako kdybys všechno, co děláš, označil za "life pattern". Přátelům bys pak neřekl "Heleďte, co kdybychom šli do kina?", nýbrž "Heleďte, co kdybychom použili life pattern visitor na objek kino?".
8.9.2016 12:05 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Samozřejmě, význam to má až když "to" chceš/potřebuješ nějakým způsobem analyzovat. To platí i o "life pattern", které poměrně intenzivně zkoumá a analyzuje antropologie (a sociologie, a vlastně i marketing). Akorát nemají tak dementní vyjadřování (tedy až na mnohé marketingové specialisty....). Ale určitě je (jistě zajímavým) předmětem zkoumání to, že se lidé rozhodnou zorganizovat do dvojice či skupinky a za úplatu strávit čas sezením v nějakém zařízení.

Ta analogie je docela dobrá v tom, že ti kdo by se pokoušeli antropologické či sociologické poznatky použít pro řízení normálního života jsou vesměs považování za (minimálně) vyšinuté. A tak by to mělo být i u každého kdo programování začne otázkou "jaký design pattern dnes použiju" - ale to je můj osobní názor.

8.9.2016 13:05 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ok, tak na tom se shodnem ;-)
8.9.2016 15:43 radix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Si to mozna neuvedomujes ale "jit do kina" je uz krasny pattern sam o sobe. Tri slova dokazi komunikovat pomerne komplexni myslenku - pokud to vezmeme programatorsky dost explicitne, tak to vyjadruje neco jako "ze se ucastnis socialni udalosti odehravajici se vecer v promitacim sale, kde si sednes a zhruba 2 hodiny sedis a pozorujes film promitany na platno. Pred tim se sejdete s clovekem, ktery to navrhl a mozna jeste par dalsimi lidmi nejaky cas pred zacatkem promitani. V sale sedite s temito lidmi pokud mozno pohromade. Je nutne si koupit vstupenky do salu, idealne predem. Mozna si koupime popkorn. Po promitani je mozne socialne pokracovat treba v kavarne nebo hospode ...". Atd. "jit do kina" je krasny priklad patternu, je to ritual, ktery neni treba vysvetlovat (prestoze ve skutecnosti neni trivialni).
8.9.2016 12:10 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Viz #136:
Kdyz chci reagovat treba na udalosti v GUI, muzu pouzit listenery, nebo nekde ve smycce pollovat udalosti. A pak se daji vymyslet desitky dalsich variant, ktere jsou ale v principu stejne (treba volat konkretni funkce/metody, ktere si uzivatel pripadne predefinuje - to je v podstate ale jen jiny zpusob registrace listeneru).
Design pattern vnimam jako standardizovane reseni neceho. Kdyz chces nekomu rict, jak ma udelat obsluhu v GUI, muzes pouzit vyraz "event-driven programming", popr. "pouzit listenery", nebo tak neco. A nebo se vyjadris vice slovy: "pro kazdou udalost si zaregistrujes funkci, ktera se pak zavola".

Pattern prece znamena jen vzor. Vzor je neco, co se repetitivne objevuje. Tady je jeste privlastek navrhovy, coz znamena, ze to ovlivnuje strukturu/rozvrzeni aplikace - alespon u tech ryze programatorskych design patternu, coz tyhle jsou.

Oznacuje to veci, nad kterymi by zacinajici programator potencialne mohl delsi dobu premyslet a zvazovat, jak je vyresit, zatimco s trochou zkusenosti to automaticky udelas spravne bez dlouheho vahani. Je celkem jedno, jestli si to precetl v nejake knizce, videl to v kodu zkusenejsiho kolegy, nebo na to sam prisel casem. Podstatne je, ze je to v principu stejne reseni.

Stejne tak prece existujou anti-patterny. Jak bys to oznacil jinak nez jako strukturalni chyby v kodu, kterych se lidi casto dopousti? Napr. masove pouzivani globalnich promennych lze oznacit za anti-pattern. Je celkem jedno, v cem je to psane. Pak muzes mit anti-patterny, ktere lze povazovat za anti-patterny jen v ramci konkretniho paradigmatu (naduzivani statickych metod v OOP) apod.

Neprijde mi dulezite prit se o presnou definici konkretnich design patternu, protoze ta by vzdy byla velmi sporna. Dulezite je mit o nich poneti a umet si nejake bezne pouzivane jmeno asociovat s vyslednou strukturou toho kodu. Vedet, ze existuji ruzne pristupy, a zvolit ten spravny. Jestli to pojmenujes tak, ci onak, a prit se o to, ktere slovo pouzijes, je oblibene mozna tak na strednich skolach, ale v praxi je to jen bullshitareni.
7.9.2016 17:40 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
co psat, cist!
7.9.2016 16:27 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
At se bavime zcela konkretne.
    interface ChangeListener {
        void onChange(long t);
    }

    static void process(ChangeListener changeListener) {
        // ...
        changeListener.onChange(System.currentTimeMillis());
    }

    process(System.out::println);
Pokud budes potrebovat zapsat slozitejsi logiku a zapis pomoci jedne metody (at uz lambdy, nebo reference na metodu) prestane stacit, vzdy to muzes presunout do samostatne tridy (a mit v ni libovolne mnozstvi pomocnych metod apod.). Klidne muzes mit tridu, ktera implementuje vic ruznych rozhrani, a pouzivat jednu jeji instanci ve vice ruznych pripadech (coz v oduvodnenych pripadech muze davat smysl).

V Jave zpravidla nelze psat takovym tim "hackerskym" zpusobem - velmi strucny kod, ktery je radost zkoumat. Slovo zkoumat zduraznuji, protoze informace, ktere mohou byt v Jave zcela zjevne, v jinych jazycich byt zjevne nemusi. Mam-li se rozhodovat mezi jazykem, ktery ti umozni cast podstatnych informaci zamlcet (ale presto se vetsina dobrych vyvojaru shoduje, ze je lepsi, aby byly v kodu explicitne uvedene), nebo jazykem, ktery to striktne vyzaduje, volim tu druhou variantu (s vyjimkou drobnych projektu, kde z vice duvodu zpravidla preferuji Python).
7.9.2016 16:50 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To jsou všechno naprosto podružné technikálie související s tím že Java je jazyk primárně implerativní s omezeným deklarativním OOP typovým systémem atd atd. Prostě typický populární produkt osmdesátých let (něco jako walkman, thatcherismus a power metal).
7.9.2016 17:12 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pak v ramci diskuze prestanme jmenovat konkretne Javu, ale takrka vsechny C-like jazyky (C, C++, D, Java, C#, PHP, JavaScript), protoze ve vsech je situace velmi podobna. Nicmene, kdyz se vratim k design patternum, porad mi neni jasne, jak to souvisi. Jestli predam objekt konkretniho typu, nebo nejakou funkci (treba i blize specifikovanou) je proste v principu porad totez. Navrhovy vzor resi strukturovani kodu, ale takovehle syntakticke detaily jdou uplne mimo nej.

Jako jsem napsal ten kod v Jave, tak bych mohl napsat kod v C (funkce, ktera akceptuje argument na funkci), v Pythonu (funkce, ktera akceptuje argument, se kterym se pak pracuje jako s funkci), v JavaScriptu (dtto jako v Pythonu) apod. A kdybych chtel zajit jeste dal, tak neco jako:
.PROCESS:
    ; ...
    call eax
    ret

.PRINT:
    ; ...
    ret

mov eax, .PRINT
call .PROCESS
... a je to porad stejny design pattern.
7.9.2016 17:56 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
... a je to porad stejny design pattern.
Function pointer mi teda rozhodně nepřipadá jako to samé, jako interface v Javě. V jazycích jako C++, D, Rust apod. bude těch možností ještě víc, např. jestli to udělat přes static nebo dynamic dispatch, jakým způsobem, atd. V Pythonu a JS zase budou jiné možnosti (v JS by to třeba mohl být nějaký event, to je tam oblíbené).

Ano, je to sice stále "to samé", ale pouze ze zcela obecného hlediska. To pak má ten design pattern natolik vágní definici, že je otázka, k čemu vlastně je. Co to vlastně má být za pattern? :-D
7.9.2016 18:26 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Listener. Vsechny kody jsem dost orizl a sel k jadru veci, coz neni nic jineho, nez volani nejakeho callbacku. A ano, nehledal bych v tom velkou vedu - podstatny je princip, ne syntakticka pozlatka. Kdyz chci reagovat treba na udalosti v GUI, muzu pouzit listenery, nebo nekde ve smycce pollovat udalosti. A pak se daji vymyslet desitky dalsich variant, ktere jsou ale v principu stejne (treba volat konkretni funkce/metody, ktere si uzivatel pripadne predefinuje - to je v podstate ale jen jiny zpusob registrace listeneru).

IT je v rade ohledu dost povrchni obor, kde se zdanlive neustale objevuje neco noveho, ale pritom je to jen dalsi variace neceho uz davno znameho. Rada "terminu" neni presne definovana a jejich vyznam je spis marketingovy nez jakykoliv jiny ("cloud"). Okolo JavaScriptu a Javy 8 v posledni dobe casto vidim pojem "funkcionalni programovani", aniz by ty lidi meli nejakou jasnejsi predstavu, co to vlastne je, a nektery funkcionalni jazyk trochu znali.

Dlouhodobe se mi vyplaci pristupovat k temto vecem silne skepticky a tim odfiltrovavat neuzitecne informace.
7.9.2016 20:04 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
zajimalo by me jestli maji podobny design pattern treba pro prirazeni hodnoty promenne :)
7.9.2016 20:18 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
setter (a pro čtení getter)? :-)
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
8.9.2016 10:14 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Proměnné by se daly brát jako design pattern - je teoreticky možné obejít se bez nich. V praxi ale proměnné používají všichni a pořád, a navíc to nikdo nerozporuje (možná hardcore assemblerista, viděli jste někdy takového?), takže je to jeden z těch vzorů co jsou úplně k ničemu.
7.9.2016 18:44 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Zrovna v tom Javascriptu to bude vypadat dosti odlišně než jak jsi to napsal v Jave výše. Žádný listener se v JS totiž vůbec neřeší a prostě se předá funkce (callback), který se má v očekávaný okamžik zavolat. Tedy namísto komplikovaného UML diagramu a několika tříd a interfaců design patternu tam je jeden parametr funkce. Netvrdím, že to pak není ten samý návrhový vzor – tvrdím, že se díky výřečnosti jazyka ten vzor smrskne na trivialitu.
Hello world ! Segmentation fault (core dumped)
7.9.2016 19:49 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Kudy se tam dostane informace od jednoho programátora (autora kódu volajícího posluchač/funkci) k druhému programátorovi (autorovi kódu implementující posluchač/funkci)?

Signatury metod, abstraktní třídy, rozhraní… to jsou v zásadě komunikační prostředky mezi programátory – umožňují jim si mezi sebou předávat informace v nějaké standardizované a dokonce strojově čitelné formě.
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.9.2016 21:23 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ten hlavní komunikační prostředek je dokumentace. Tam je napsáno nejen jaké parametry metoda má, ale hlavně co ty parametry znamenají. Generováním dokumentace z kódu se pak vyplňuje mezera mezi dokumentací a skutečným kódem.
Hello world ! Segmentation fault (core dumped)
7.9.2016 23:23 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
A v čem je výhoda to mít odděleně? Já vidím spíš samé nevýhody:
  • Hůř se s tím pracuje – musím si příslušnou kapitolu nalistovat ručně někde bokem, většinou ve www prohlížeči, což můžu s dokumentací typu JavaDoc taky, ale nemusím – může se mi zobrazovat přímo při psaní kódu, nemusím nikde listovat, vidím dokumentaci k tomu, co zrovna píšu.
  • IDE mi nenapovídá jako např. u té Javy, nekontroluje mi při psaní syntaxi.
  • A hlavně snáz dojde k nekonzistenci – dokumentace zastará, někdo provede změnu kódu a zapomene aktualizovat dokumentaci – kdežto v kódu je vždy pravda: když má metoda tři parametry, tak vidím tři parametry, ne dva, které tam byly v předchozí verzi, vidím datové typy, vidím návratovou hodnotu… např. když se někdo rozhodl, že to místo číselných ID bude vracet textové kódy, tak mne na to IDE (nebo nejpozději kompilátor, když IDE nemám) upozorní nebo se ti nestane, že bys spletl ID účtu a číslo účtu (číslo účtu je String, protože obsahuje i nuly na začátku případně pomlčky, kdežto ID je Long).
  • Jasně, že typovým systémem nejde odchytit všechny chyby, ale jde jich odchytit hodně a včas, dokud je jejich oprava ještě levná (viz ten známý obrázek – čím později se chyba opraví, tím je to dražší).
Programátorská dokumentace by podle mého měla být co nejblíž kódu. Udržovat dokumentaci bokem má smysl:
  • Pro popis vysokoúrovňových záležitostí, hlavních myšlenek v pozadí, architektury, vizí… Ale i to jde u menších věcí napsat ke kódu (komentáře u hlavních tříd, balíčků nebo modulů).
  • Když je to nezávislá specifikace, ke které bude existovat víc implementací. Ale i tam je tendence používat něco standardního (UML, EBNF a další diagramy) nebo ideálně formální a strojově čitelný zápis (různé gramatiky, SNMP MIB, LDAP schéma, ASN.1, IDL, slovníky pro Diameter, XSD, WSDL). Většomi dokumentace napíšeš dovnitř jako komentáře – a bokem píšeš až nějaké romány a vysvětlení.
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.9.2016 23:51 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Však taky o tom generování z komentářů píšu. Nikde netvrdím, že se má udržovat nějak bokem, naopak.

To, o čem píšu je například toto:
int odečti(int a, int b);
Poznáš z předpisu funkce zda vrátí a - b, nebo b - a ? (Samozřejmě je to modelový triviální příklad a obvykle dost pomůžou slušné názvy, ale …)
Hello world ! Segmentation fault (core dumped)
8.9.2016 00:15 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Však taky o tom generování z komentářů píšu. Nikde netvrdím, že se má udržovat nějak bokem, naopak.

V tom případě OK.

Význam napíšu do komentáře (panř. @param a bla bla bla). Taky bych do komentáře mohl psát, zda je to číslo, text, datum… ale proč bych to dělal, když to můžu vyjádřit strojově čitelnou formou, které rozumí IDE, kompilátor a další nástroje a kterou každý programátor snadno přečte?

V čem je výhoda nedeklarovat typ? Nějaký příklad by najít šel, ale budou to okrajové případy – daleko častěji to podle mého vede k chybám a zmatkům. Viz třeba ty spousty SQL injection v PHP aplikacích – kolikrát si už jen programátor řekl: „$id je přece číslo, to můžu bezpečně připojit k SELECTu“? A pak mu tam ale nepřišlo číslo, ale třeba "0 OR 1=1". Kdyby to byl datový typ int, tak i kdyby udělal tu prasárnu s lepením SELECTu, tak je to bezpečné. Nebo ta záměna čísla účtu za ID účtu… to jsou reálné příklady.
Poznáš z předpisu funkce zda vrátí a - b, nebo b - a ?
Udělal bych metodu int sečti(int a, int b) a nebylo by potřeba to komentovat :-)

Nebo spíš int sečti(int... hodnoty).
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
8.9.2016 01:14 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Význam napíšu do komentáře (panř. @param a bla bla bla).

No a jsme u té dokumentace.
Taky bych do komentáře mohl psát, zda je to číslo, text, datum… ale proč bych to dělal, když to můžu vyjádřit strojově čitelnou formou, které rozumí IDE, kompilátor a další nástroje a kterou každý programátor snadno přečte?
Však to také ten generátor dokumentace použije.
V čem je výhoda nedeklarovat typ? ...
O tom vůbec nemluvím.
Hello world ! Segmentation fault (core dumped)
8.9.2016 08:01 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Viz začátek téhle diskuse v #137
Zrovna v tom Javascriptu to bude vypadat dosti odlišně než jak jsi to napsal v Jave výše. Žádný listener se v JS totiž vůbec neřeší a prostě se předá funkce (callback), který se má v očekávaný okamžik zavolat. Tedy namísto komplikovaného UML diagramu a několika tříd a interfaců design patternu tam je jeden parametr funkce. Netvrdím, že to pak není ten samý návrhový vzor – tvrdím, že se díky výřečnosti jazyka ten vzor smrskne na trivialitu.

To mi právě triviální nepřijde, protože v té Javě díky rozhraní posluchače víš, co bude na vstupu, IDE ti napoví, jak např. zjistíš, kterým tlačítkem uživatel kliknul nebo jakou klávesu stiskl. A v Javě 8 předáš taky jen tu funkci, odpadne ten zbytečný kód, ale typovost a dokumentace zůstává zachována (v pozadí jsou pořád ta rozhraní a jasně daným popisem metod, parametrů, návratových hodnot).

„Zjednodušit“ něco vynecháním podstatné informace je jen zdánlivé zjednodušení.
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
8.9.2016 09:04 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
+1
8.9.2016 11:07 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
protože v té Javě díky rozhraní posluchače víš, co bude na vstupu
FWIW tohle platí pro jakýkoli staticky typovaný jazyk.
„Zjednodušit“ něco vynecháním podstatné informace je jen zdánlivé zjednodušení.
Není to lepší/horší jednodušší/složitější, prostě je to jiný přístup. Jednodušší je to v tom, že můžeš snadno prototypovat, snadno měnit kód. Ve chvíli, kdy se ti změní trochu ten callback (třeba přibude parametr), nemusíš všade měnit signatury té lambdy/funkce/interfacu/whatever. Složitější je to v tom, že si musíš dát větší pozor, aby tam přišla správná věc.

Prostě každý ten přístup má své pro/proti a každý je vhodný na něco jiného.
8.9.2016 11:33 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
FWIW tohle platí pro jakýkoli staticky typovaný jazyk.
Presne tak. Proto jsem uz ostatne v teto diskuzi zminoval, at se nebavime vyhradne o Jave, ale obecne o staticky typovanych jazycich.

Boilerplate kod v Jave se v dusledku urcite neohrabanosti obcas skutecne objevuje, ale moc to nesouvisi s typovanim. Mluvim ted zejmena o JavaBeans a nutnosti psat settery/gettery, hashCode, equals apod. Lze to generovat v IDE, ale obcas je neprijemne to cist - equals ani hashCode nejsou na prvni pohled zcela trivialni (jako settery a gettery) a neni tedy zrejme, zda se v nich neukryva nejaka zrada. Resenim muze byt pouziti nejakeho frameworku, ktery to dela na pozadi a pouze dava uzivateli moznost ty metody v pripade potreby pretizit, ale osobni zkusenost s tim nemam (a trochu bych se bal toho, ze to cloveku podrazi nohy ve chvili, kdy to nejmene ceka).

Dale obcas zlobi vyjimky. Checked vyjimky je potreba pouzivat s rozumem. C# to vyresil jejich uplnym zrusenim, na coz jsem v prvni chvili reagoval negativne, ale postupem casu o tomto nazoru zacinam pochybovat. Na druhou stranu se s checked vyjimkami setkavam prakticky jen u I/O a reflexe. Dale obcas vznika hnusny kod pri obalovani vyjimek. Klasicky pattern:
void foo() {
    try {
        // ...
    } catch (FooException e) {
        throw new BarException(e);
    }
}
Kdysi jsem zvazoval, ze by mohl byt hezci nejaky syntakticky cukr jako:
void foo() rethrows FooException:BarException {
    // ...
}
Tezko rict, co je lepsi. Druhy pristup by zase vedl k problemum s formatovanim u metod s delsi signaturou. Druha vec je, jak casto je potreba neco takoveho vubec delat.
Prostě každý ten přístup má své pro/proti a každý je vhodný na něco jiného.
Souhlasim.
8.9.2016 23:19 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Resenim muze byt pouziti nejakeho frameworku, ktery to dela na pozadi a pouze dava uzivateli moznost ty metody v pripade potreby pretizit, ale osobni zkusenost s tim nemam (a trochu bych se bal toho, ze to cloveku podrazi nohy ve chvili, kdy to nejmene ceka).
Mám zkušenost s Lombokem. Je to trochu hack, ale funguje to dobře a ušetří to spoustu řádků, zpřehlední to kód. Šel jsem do toho s tím, že v případě problémů jde z projektu Lombok snadno vykopat a mít zase jen klasickou Javu. Po cca roce, co to na projektu používáme, můžu říct, že se Lombok osvědčil a nebyl důvod se ho zbavovat.
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
8.9.2016 23:34 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Presne ten jsem mel na mysli. Diky za zkusenost.
9.9.2016 14:26 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
to je solidni doublethink
10.9.2016 20:56 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Proč? Nikdy jsem netvrdil, že Java je dokonalá. Jedna z věcí, co by šly vylepšit jsou třeba ty vlastnosti tříd (property), které by nahradily jmennou konvenci (gettery a settery). Lombok je celkem dobré vylepšení Jazyka. Naopak řešením není rezignovat na zapouzdření, protože dřív nebo později budeš potřebovat, aby ten getter/setter dělal něco víc než jen zpřístupňoval proměnnou. To už radši těch pár metod napíšu ručně (většinou to tak dělám, Lombok mám jen někde).
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
10.9.2016 21:25 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
S temi settery/gettery je to ale precejen trochu sporne, protoze se v praxi stava jen velmi zridka, ze bys potreboval jejich chovani obohatit o nejakou logiku. Muze se to stat u knihovny, kde chces zachovat kompatibilitu (tj. nezmenit signaturu ani kontrakt metod), ale potrebujes zmenit jejich interni chovani (ukladat data jinak nebo si k nim doplnit nejakou informaci). To se mi ale snad jeste nestalo. Uvnitr projektu je vhodnejsi to proste zrefactorovat, pokud tech pouziti neni prilis mnoho.
10.9.2016 22:03 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Proč? Nikdy jsem netvrdil, že Java je dokonalá. Jedna z věcí, co by šly vylepšit jsou třeba ty vlastnosti tříd (property), které by nahradily jmennou konvenci (gettery a settery).
To mi přijde jako celkem detail, IMHO limitace/negativa Javy jsou v podstatě hlavně limitace JVM. Jako např. výše zmíněné primitivní typy, žravé objekty, atd...

Lombok vypadá jako fajn věc, nicméně nabízí se otázka, proč už pak rovnou nepoužít jiný jazyk kompatibilní s Javou/JVM...
10.9.2016 22:34 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Protože Java s Lombokem je pořád Java – není potřeba se učit nový jazyk a nový kolega (klidně i dočasně zapůjčený z jiného projektu) se může snadno zapojit do práce. To že místo metod stačí napsat anotaci @Data nebo @Getter a @Setter pochopí každý hned. A i kdyby to nepochopil a psal to klasicky, tak to ničemu nevadí. A kód, který tyhle třídy používá ani neví, že tam nějaký Lombok je (vidí ty gettery a settery, stejně jako je vidí programátor v IDE).

Taky je užitečná anotace @Log.
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
8.9.2016 23:33 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Kdysi jsem zvazoval, ze by mohl byt hezci nejaky syntakticky cukr jako:

To jsem si taky říkal, ale pak jsem došel k tomu, že by bylo lepší mít v jazyce obecný systém (hygienických) maker, které umožní komukoli dělat cokoli – ne jen pár předem daných případů syntaktického cukru, které napadly autory jazyka.

Akorát by ten jazyk pak měl trochu jinou cílovou skupinu než Java, protože už by byl náročnější na disciplínu a schopnosti.
Dale obcas zlobi vyjimky. Checked vyjimky je potreba pouzivat s rozumem.
Že volání metody může selhat a jakým způsobem může selhat, to je pro mne stejně důležitá informace jako ta, jaký datový typ vrací (výjimka je vlastně alternativou k návratové hodnotě) nebo jaké má parametry. Nechci o takovou informaci přijít – nechci ji luštit někde z nestrukturované dokumentace, nebo z kódu uvnitř, nebo dokonce postupovat metodou pokus-omyl a řešit ty běhové výjimky, na které jsem při vývoji narazil (a doufat, že při produkčním nasazení tam nevyletí nějaká další nekontrolovaná výjimka).
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.9.2016 00:05 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Že volání metody může selhat a jakým způsobem může selhat, to je pro mne stejně důležitá informace jako ta, jaký datový typ vrací (výjimka je vlastně alternativou k návratové hodnotě) nebo jaké má parametry.
Presne tak jsem nad tim take vzdy uvazoval a samozrejme s tim souhlasim. Tu vyjimku pak ale musis nekde osetrit a ted je otazka, kde to budes delat. Proto jsem psal, ze je potreba uzivat je s rozumem.

Klasickym prikladem je pokus o otevreni neexistujiciho souboru. Vcelku dava smysl, ze je ta vyjimka checked. Pokusim se otevrit soubor a to se bud zdari (a ja muzu pokracovat), nebo nezdari. ale ja na to musim umet zareagovat. Zakladni princip by IMHO mel byt ten, ze se snazis chybu osetrit az ve skutecnem miste vzniku, abys udrzel strukturu aplikace rozumnou a rozpoznal skutecnou pricinu. Tzn. ze vyjimku predavas dal az do mista, kde ke chybe zrejme doslo. V pripade CLI aplikace, kde uzivatel zada jmeno souboru, ze ktereho se ma neco cist, by to znamenalo, ze vyjimku predavas az nekam do mainu, kde uzivateli vypises srozumitelnejsi chybovou hlasku. Potud OK.

Druha strana mince jsou technicke chyby. Kdysi jsem cetl clanek o checked vs. unchecked vyjimkach (tusim, ze primo od lidi, co za tim v Jave stoji, ale to si ted nejsem jisty), kde bylo receno, ze checked vyjimky se maji pouzivat pro ocekavatelne chyby, ze kterych se program muze zotavit. U CLI aplikace je tohle jedno, ale u GUI aplikace uz ne - rozhodne by nemela spadnout cela jen kvuli tomu, ze se nekdo nekde uklepl. To porad dava smysl.

Ted mas ale reflexi, kterou v drtive vetsine pripadu ridi programator, nikoliv uzivatel. Presto te jazyk nuti osetrovat treba pripad, kdy se pokusis vytvorit novou instanci, kdyz neni k dispozici patricny konstruktor apod. Jmenovite u reflexe je tech vyjimek opravdu hodne, ale na zadnou z nich nelze rozumne reagovat - pokud program potrebuje provest nejakou reflexivni akci, aby mohl spravne fungovat, tak jakakoliv takova vyjimka okamzite znamena pad aplikace. V praxi tedy vetsinu takovych chyb osetris zabalenim do RuntimeException a dalsim propagovanim jako unchecked vyjimky, protoze nedava smysl v cele hierarchii volani uvadet low-level technicke chyby, ale ani neexistuje zpusob, jak na tu chybu lepe reagovat ihned.

Pokud by existoval zpusob, jak prehazovani vyjimek provadet snadno a citelne, byl bych pro checked vyjimky vsemi deseti. Za soucasneho stavu o tom ale nadale mam urcite pochybnosti (napr. kvuli uvedenemu failu v API u reflexe).
Nechci o takovou informaci přijít – nechci ji luštit někde z nestrukturované dokumentace, nebo z kódu uvnitř, nebo dokonce postupovat metodou pokus-omyl
Od kolegy jsem odkoukal uvadeni unchecked vyjimek do throws klauzule v signature metody. Jazyk to umoznuje a slouzi to pak vyhradne k dokumentacnim ucelum, ale je to zaroven snadno strojove zpracovatelne a docela prehledne.

Mozna by nebylo spatne, kdyby neosetreni checked vyjimky nekoncilo chybou pri kompilaci, ale warningem, ktery lze pomoci neceho jako @SurpressWarning potlacit. Bud by ses tedy rozhodl, ze vyjimku predas dal - a preneses zodpovednost na volajiciho - nebo se rozhodnes, ze takovou vyjimku odmitas dal resit a vynutis jeji potlaceni.
9.9.2016 10:42 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Že volání metody může selhat a jakým způsobem může selhat, to je pro mne stejně důležitá informace jako ta, jaký datový typ vrací (výjimka je vlastně alternativou k návratové hodnotě) nebo jaké má parametry.
Checked exceptions skutečně dělají z výjimek spíš takovou alternativní návratovou hodnotu, protože se nedají v praxi probublat o moc víš. Celá pointa výjimek ale spočívá v tom, že ti může probublávat víceméně kamkoli, takže ty checked exceptions v podstatě jdou proti smyslu výjimek, což se nelíbí lidem od C++, C# apod, ale IMHO to není nutně špatně, třeba Rust se na výjimky vykašlal a řeší error handling přes vracení enumů (sum type / tagged union), což sice pod kaptou funguje jinak než výjimky, ale používá se to v podstatě dost stejně jako Javovské checked exceptions a to silné typování tam funguje v podstatě stejně (viz třeba otevření souboru).

Osobně jsem přestal mít silný názor na způsoby error handlingu, vyzkoušel jsem všechny hlavní a IMHO každý má svoje problémy...
To jsem si taky říkal, ale pak jsem došel k tomu, že by bylo lepší mít v jazyce obecný systém (hygienických) maker, které umožní komukoli dělat cokoli – ne jen pár předem daných případů syntaktického cukru, které napadly autory jazyka.
Další důvod zkusit Rust... (ačkoli ta makra nejsou až tak silná jako třeba v D nebo nedej bože v Lispu).
Nechci o takovou informaci přijít – nechci ji luštit někde z nestrukturované dokumentace, nebo z kódu uvnitř, nebo dokonce postupovat metodou pokus-omyl a řešit ty běhové výjimky, na které jsem při vývoji narazil (a doufat, že při produkčním nasazení tam nevyletí nějaká další nekontrolovaná výjimka).
IMHO do té dokumentace musíš většinou stejně jít, protože potřebuješ vědět, za jakých okolností se výjimky (ne)vyvolají, s tím se nedá celkem nic dělat...
10.9.2016 21:04 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
IMHO do té dokumentace musíš většinou stejně jít, protože potřebuješ vědět, za jakých okolností se výjimky (ne)vyvolají, s tím se nedá celkem nic dělat...

Tady jde spíš dokumentace za tebou než že bys ty chodil za dokumentací – kontrolované výjimky tě IDE/kompilátor donutí ošetřit a když už ten catch(… e){…}, tak si přečteš i ten JavaDoc nebo si to domyslíš i bez něj (víš, která metoda danou výjimku vyvolala, tzn. co selhalo a podle toho zobrazíš příslušnou chybovou hlášku, zaloguješ, obalíš a vyhodíš výš atd.). Prostě nejde na to zapomenout. Naopak u nekontrolovaných výjimek musíš ty aktivně pátrat potom, která metoda co vyhazuje a sám si dávat pozor, abys na něco nezapomněl.
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
10.9.2016 22:06 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
No možná jsem divnej, ale já typicky nejdřív koukám do dokumentace a pak teprve píšu kód... Opačně úplně nevidim, jak bych to dokázal :-D
10.9.2016 22:37 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
V externí dokumentaci většinou najdu jen výchozí bod a udělám si nějaký hrubý obrázek o dané knihovně a stylu, jak se s ní pracuje. Ale pak už mi většinou stačí JavaDoc, protože výchozí bod už máš a pak už se jen koukáš kolem, co je tam za metody.
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
10.9.2016 23:48 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
U wot m8? Nechápu, v čem je ten rozdíl mezi JavaDocem a "externí dokumentací". Když se podíváš třeba na dokumentaci ke Qt nebo dokumentaci generovanou Doxygenem a podobnými nástroji nebo dokumentaci k většině projektů v Pythonu nebo Rustu, tak ty jsou všechny také generovány ze zdrojáků víceméně stejně jako JavaDoc, tj. nároky na programátora píšícího tu dokumentaci jsou úplně stejné. A v podstatě to je všechno "externí" dokumentace v tom smyslu, že není součástí kódu (komentář není součástí kódu - může v něm být cokoli).

Pointa byla, že signatura funkce, i když obsahuje možné chybové stavy (ať už ve formě checked exceptions nebo jiné), ti prostě nestačí. Kupříkladu: Nedávno jsem musel pracovat s java.net.URI, konstruktor je celkem jednoduchej: public URI(String str) throws URISyntaxException . Je hezké, že z toho poznáš, že ta funkce může vyhodit tenhle exception, blbý je, že pouze z této informace nemáš šajn, jaký URL akceptuje nebo ne, musíš se mrknout do dokumentace, která říká:
This constructor parses the given string exactly as specified by the grammar in RFC 2396, Appendix A, except for the following deviations:
a následují nějaké komentáře. (FWIW, stejně jsem to musel nakonec doplnit o trochu vlastního parsování...). A ta RFC jsou mizerná...
11.9.2016 01:04 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Cele se to toci okolo IDE. Bud ho pouzivas a Javadoc muzes pohodlne cist primo v nem (zobrazuje to maly popup primo v editoru), nebo pouzivas jen editor, a pak to pro uzivatele nema prinos zadny. IDE jsou ale v Jave jedna z tech nejzasadnejsich vyhod a je skoda se o to umyslne pripravit.
11.9.2016 15:48 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Heh, tak já teda IDE zahodil jak to jen bylo možné. Zobrazování JavaDocu je sice hezké (on třeba QtCreator dělá něco podobného), ale osobně jsem to vyhodnotil, že to ve výsledku nemá cenu, protože prohlížeč s dokumentacemi od všeho možného mám otevřený stejně tak jako tak, a tedy dává IMO smysl mít v něm všechno. Na Javovských IDE konkrétně mě vysírala hlavně spotřeba terabajtů RAM, pomalost a to, že IDE se snaží být příliš chytré - např. mi kompiluje pod rukama nekompletní kód, hází nesmyslné návrhy apod. Ale to není o Javě, IDE pro ostatní jazyky trpí podobnými problémy.

IMHO zlatá doba IDE už je za námi, textové editory FTW.
11.9.2016 16:09 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nedokazu si predstavit, ze vsechny ukony, ktere bezne potrebujes jako vyvojar delat, delas v nejakem editoru rychleji nez s IDE. Jak to treba debugujes?
11.9.2016 20:31 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Editor mám hlavně na editování, nečekaně ;-) Na ostatní věci příkazovou řádku - sestavování, VCS, atd. Co se debuggingu týče - gdb. Příkazová řádka je v tomhle IMHO dost nepřekonatelná. Případně používám nějaké lehkotonážní programy určené pro jednu konkrétní věc - třeba gitk apod. Zkoušel jsem DDD, ale nesedí mi. Je pravda, že třeba Qt Creator má velmi dobrý frontend pro GDB, ale zapínat kvůli tomu celý Qt Creator se mi nechce. Koukám teď, že v Gnome vytvořili progra Nemiver, to vypadá docela dobře, možná vyzkoušim.

Nicméně konzole je prostě konzole.
11.9.2016 20:46 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
gdb na debuggovani v Jave? Asi bych potreboval videt, jak to vypada, ale pochybuju, ze tam muzes za behu vyhodnocovat prikazy apod. Pripravujes se tim o vsechny vyhody, ktere ti Java a potazmo ten kompletni stack poskytuje. Java sama o sobe je proste jen ukecany a striktni jazyk, ktery navic misty obsahuje nejake historicke chyby. Ty vlastnosti ale davaji prostor existenci tech IDE a dalsich nastroju, diky cemuz se vyplati v Jave vyvijet. Pouzivat v Jave spartansky pristup jako v C mi prijde sebevrazedna kombinace.
11.9.2016 22:28 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nevím jak v Javě, ale vůbec si nedokážu představit, jak bych nahrazoval gdb pro běžné binárky nějakým nástrojem, co se nedá přímočaře ovládat příkazy a skriptovat.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
11.9.2016 22:54 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Musel bych znat konkretni use-case. Takhle me moc nepada, kde bych skriptovani potreboval. Ono bude asi taky dost zalezet na tom, co pises.
12.9.2016 09:47 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak debugger nepoužívám k psaní a i když následně opravuju bug, tak je to v 99% případů oprava na jeden až deset řádků kódu. Skript je schopný mě dostat do určitého stavu aplikace, tzn. počkat na několik souvisejících situací, které jsou složené především z místa v kódu a hodnot lokálních proměnných. Ve výjimečných případech, kdy nemám čas nebo možnost navodit reálnou situaci, tak ji i simuluju zapsáním do proměnných. A jako ve své podstatě integrátor provádím tuto činnost opakovaně pro různé buildy od upstreamového master přes upstreamový tag odpovídající mojí verzi až po problematické RPMko, pokusnou opravnou verzi testovacího RPMka a finální opravnou verzi. A nezřídka se mi stává, že hotový testovací skript, ať už zahrnuje i skriptování gdb nebo zrovna používá jinou metodu, využijí i další v návaznosti na mě.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.9.2016 10:29 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Popravdě bych tě chtěl vidět, jak v nějakém primitivním GUI debuggeru debuguješ cokoli síťového, kde se používá časování s granularitou třeba až na vteřiny. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.9.2016 11:35 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
GUI debugger pouzivam tam, kde ma smysl, tj. k prohlednuti toku programu, prohlednuti hodnot promennych a popr. vyhodnoceni slozitejsich vyrazu (tj. debugger lze pouzivat jako REPL konzoli). V tomhle mi to pomaha a setri cas. Kdyz zjistim, ze to nestaci (i.e. zalezi na milisekundach), musim zvolit jine reseni. gdb jsem pri vyvoji v C take pouzival a neumim si predstavit, ze bych se k tomu chtel pro rucni praci vratit.
12.9.2016 11:46 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
GUI debugger pouzivam tam, kde ma smysl
Taky používám GUI debugger tam, kde to má pro mě smysl. Tedy momentálně nikde. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.9.2016 12:55 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pracujes na uplne jinem projektu nez ja a navic v C (tj. low level). Mam duveru, ze to delas dobre. Pokud mi ale nekdo tvrdi, ze na ladeni bezneho Java EE projektu je nejlepsi to ladit rucne z konzolove ladicky, tak tomu jednoduse neverim.
12.9.2016 21:04 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nikde jsem nepsal, že je naše práce stejná. Ale na jakém projektu teda pracuju? :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.9.2016 21:40 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Mam za to, ze vyvijis NetworkManager. Kde jsem to pochytil uz nevim.
12.9.2016 22:22 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Vidím do kódu, radím lidem, používám git master, bavím se s vývojáři, čas od času pošlu nějaký patchset, ale že bych ho vyvíjel, to je asi trošku silné slovo. Možná před pár lety, ale ani tehdy to nebyla jediná věc, o kterou jsem se zajímal.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.9.2016 20:41 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Že má něco, GUI ještě neznamená, že je to hloupé…

Ale spíš mi přijde zvláštní: to jsou obě strany toho síťového spojení tak neznámé a nezdokumentované, že nemůžeš jednu z nich simulovat a tu druhou v klidu krokovat?

BTW: odkaz na nějaký takový skript?
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.9.2016 21:28 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Že má něco, GUI ještě neznamená, že je to hloupé…

Nepsal jsem o něčem, psal jsem o GUI. Tedy že GUI má GUI to je něco jako když děti mají děti? I když pardon, to se stává až moc často.
Ale spíš mi přijde zvláštní: to jsou obě strany toho síťového spojení tak neznámé a nezdokumentované, že nemůžeš jednu z nich simulovat a tu druhou v klidu krokovat?
Vzhledem k tomu, že se mi dostávají do rukou libovolně obskurní bugy, není zajímavé se bavit o těch z nich, které jsou triviálně řešitelné. Navíc na to kolikrát nemám tolik času, abych nejdříve věnoval několik měsíců vývoji chybějících nástrojů na simulaci všech možných chyb. I když se zabývám i takovými věcmi, tady konkrétně se vyjadřuju k tomu, kdy je potřeba řešit chybu, která je teď a tady a mým cílem není vytvořit ideální testovací prostředí, ale maximálně do několika dní urvat takovou analýzu chyby, která vede k co nejlepší možnosti vyřešení a otestování.

Odkaz na takový skript teď po ruce nemám. Ale pokud jde o gdb skripty, ty bývají velice jednoduché, maximálně na několik málo řádků. Na částečnou automatizaci se hodí i jednořádkový nebo párřádkový skript, kdy klidně stačí pomocí sekvence několika příkazů advance doskákat na místo, které chci analyzovat. Další automatizaci mi většinou zajišťuje shellovský skript o desítkách řádků, výjimečně pythoní skript.

Jinak v klidu krokovat je blbost. Já potřebuju analyzovat každou verzi balíku, se kterou se potkám, každou změnu v kódu, to vše konzistentním a opakovatelným způsobem. Potřebuju postupně odstranit chyby v testování a potřebuju to být schopný zopakovat i v případě, že se mezitím třeba den věnuju něčemu úplně jinému.

Jasně, můžu si někde bokem psát přesný postup a všechno opakovat třeba i stokrát ručně podle návodu. Ale proč bych to dělal, když ten návod můžu napsat pro shell a gdb a nechat celý proces proběhnout automatizovaně v několika vteřinách a ještě to poskytnout dalším k ověření mých výsledků a k návazným aktivitám jako je testování.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.9.2016 21:38 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jinak v klidu krokovat je blbost. Já potřebuju analyzovat každou verzi balíku, se kterou se potkám, každou změnu v kódu, to vše konzistentním a opakovatelným způsobem. Potřebuju postupně odstranit chyby v testování a potřebuju to být schopný zopakovat i v případě, že se mezitím třeba den věnuju něčemu úplně jinému.
To je ten use-case, na ktery jsem se ptal. Automatizace je v tomto pripade dobra volba.
11.9.2016 22:58 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
gdb (příp. na určitém jiném os mdb ;-)) používám na nativní jazyky (C/C++/Rust). Na Javu jdb, ale popravdě už jsem ho dlouho nepoužil, poslední věci v Javě jsem dělal hlavně pro Android v aplikaci, která hodně používala logging.
Ty vlastnosti ale davaji prostor existenci tech IDE a dalsich nastroju, diky cemuz se vyplati v Jave vyvijet.
Z mého pohledu - nevyplatí.

Ano, IDE poskytuje určité pohodlí a všelijaké užitečné nástroje, ale zároveň se tím člověk stává tak trochu otrokem toho daného IDE - je zásivlý na tom, aby mu IDE vytvořilo/nastavilo strukturu projektu, vygenerovalo konfiguraci build systému, dohledávalo věci v kódu, staralo se o VCS atd. atd. a lidi pak ani neví, jak fungují build systémy, neumí pracovat s VCS, apod. Pro Javu jsou IDE v tomhle ohledu extra nebezpečná, protože Java už tak je dosti uzavřený svět a Java-only vývojáři pak vůbec nemají šajn o světě mimo Javu.

Přitom IDE typicky oproti dedikovaným nástrojům neposkytuje dohromady žádnou funkcionalitu navíc, koneckonců IDE často přímo používají tyto nástroje (build systémy, VCS, debuggery,...) jako backend, případně jejich funkcionalitu viceméně duplikují. Např. na ten debugging mi přijdou IDE dost nezajímavá, protože oproti nástrojům jako gdb dohromady nenabízejí nic navíc, pouze jiné rozhraní, jehož znalost je mnohem méně přenositelná než znalost gdb. Četl jsem, že gdb se dá připojit do IDA - to už je něco, co zní zajímavě, protože IDA, coby dedikovaný debugger, je oproti IDE schopno poskytnout věci navíc. Dělá jednu věc a dělá ji dobře (UNIXová filosofie), narozdíl od IDE.

To je samozřejmě pouze můj pohled. YMMV.
11.9.2016 23:49 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
je zásivlý na tom, aby mu IDE vytvořilo/nastavilo strukturu projektu, vygenerovalo konfiguraci build systému, dohledávalo věci v kódu, staralo se o VCS atd. atd. a lidi pak ani neví, jak fungují build systémy, neumí pracovat s VCS, apod.
Projekt si muzes zalozit jakymkoliv zpusobem, napr. jej vygenerovat v konzoli z Maven archetypu a doladit rucne. Pote jej naimportujes do IDE, cimz se zalozi patricne pomocne soubory (ktere lze pripadne vygenerovat kdykoliv znovu, zadny specialni vyznam nemaji a nemusi byt ani commitnute, tj. mohou byt v .gitignore).

VCS s IDE vubec nesouvisi a lze jej spravovat rucne ve vsech 3 hlavnich Java IDE, tzn. Eclipse, NetBeans i IntelliJ. IDE ti dava moznost prohlizet historii v prostredi, na ktere jsi zvykly, ale neni to nutne. Osobne pouzivam primarne terminal, gitk a git-cola. Je to stejne prirozene jako pri pouzivani bezneho editoru, tj. zadne hacky to nevyzaduje.
Přitom IDE typicky oproti dedikovaným nástrojům neposkytuje dohromady žádnou funkcionalitu navíc, koneckonců IDE často přímo používají tyto nástroje (build systémy, VCS, debuggery,...) jako backend, případně jejich funkcionalitu viceméně duplikují.
IDE ti naseptava pri psani kodu, umoznuje ti snadno delat refactoringy (vc. treba doplneni argumentu metody a automaticke pouziti vychozi hodnoty u vsech volani), organizovat importy, upozornovat na nepouzite metody ci fieldy, vyhledavat pouziti, zobrazovat hierarchii trid i spoustet program, nebo konkretni testy.
Např. na ten debugging mi přijdou IDE dost nezajímavá, protože oproti nástrojům jako gdb dohromady nenabízejí nic navíc, pouze jiné rozhraní, jehož znalost je mnohem méně přenositelná než znalost gdb.
Muzu spustit kod, krokovat ho, rucne vyhodnocovat snippety kodu (ktere se zkompiluji a vyhodnoti) apod. Pak existuje tzv. hot swapping, ktery umoznuje modifikovat kod bezici aplikace a promitat do ni zmeny. Pri tom vsem pozorujes kod v editoru a pouzivas tedy stale stejne rozhrani.

Delat cokoliv z toho rucne nemuze byt rychlejsi nez zmacknout klavesovou zkratku v IDE.
12.9.2016 08:22 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Projekt si muzes zalozit jakymkoliv zpusobem, napr. jej vygenerovat v konzoli ...
VCS s IDE vubec nesouvisi a lze jej spravovat rucne ve vsech 3 hlavnich Java IDE, tzn. Eclipse, NetBeans i IntelliJ. IDE ti dava moznost prohlizet historii v prostredi, na ktere jsi zvykly, ale neni to nutne. Osobne pouzivam primarne terminal, gitk a git-cola.
Přesně takhle nějak probíhal můj přechod IDE → editor, čím dál víc věcí jsem přesunul do konzole až zbyl z IDE jen ten editor...
IDE ti naseptava pri psani kodu, umoznuje ti snadno delat refactoringy (vc. treba doplneni argumentu metody a automaticke pouziti vychozi hodnoty u vsech volani), organizovat importy, upozornovat na nepouzite metody ci fieldy, vyhledavat pouziti, zobrazovat hierarchii trid i spoustet program, nebo konkretni testy.
Vím o tom, také jsem IDE dřív používal. Lidé mají pocit, že nemůžou žít bez našeptávání kódu, že to je nepostradatelná fíčura. Není to pravda. Používám skoro na všechno Sublime, který kódu nerozumí, ale je schopen napovídat opakující se výrazy, což pokryje nějakých 85% use cases. Refactoring dělám pomocí vyhledávání a vícenásobných kurzorů, ve většině případů to je stejně silné jako IDE, které rozumí jazyku, v mnoha případech i silnější, zejména třeba na formátování kódu. Otevírání souborů a přepínání projektů zvládá Sublime rychleji než IDE, protože se nemusí zbývat všemi těmi kravinami, které řeší IDE. Přepnout projekt i se všemi otevřenými soubory je v Sublime v podsatě okamžité. VIM a Emacs jsou v tomhle podobně silné svými mechanismy. Doplňování argumentů metod mě absolutně netankuje, ditto importy, u kterých se mi mimochodem stávalo, že je IDE zmršilo. Upozorňování na nepoužité proměnné, funkce, struktury/třídy atd. zvládá mnohem lépe kompilátor - tohle je jedna z věcí, která mě u IDE vysírala - upozorňuje na tyhle chyby v kódu, který teprve píšu. Je z toho pak šum. Na vyhledávání v kódu používám grep, cscope, případně třeba v práci na to máme externí tooly bežící na serveru k tomu určeném - je na něm k dispozici veškerý kód, kterého je hodně - jsou tam i veškeré závislosti vč 3rd party. Výhoda tohoto řešení je, že člověk může snadno posílat odkazy ostatním.

A to přitom já jsem ještě na tohle dost pohodlnej, znám lidi, který používají v podstatě holý ViM jen s nějakou základní konfigurací a zcela bez napovídání a čeho všeho a jsou to velice schopní a produktivní programátoři.

Navíc ty stále celou dobu mluvíš pouze o Javě - dost z toho, co popisuješ, funguje rozumně jen do té doby, dokud se držíš striktně pouze Javy, třeba ten hot swapping a podobně.
Delat cokoliv z toho rucne nemuze byt rychlejsi nez zmacknout klavesovou zkratku v IDE.
Jak se liší klávesová zkratka v IDE od klávesové zkratky nebo příkazu v debuggeru? gdb při stisku enteru opakuje předchozí příkaz, takže když třeba stepuju, stačí mačkat enter. V konzoli člověk může mít taky klávesové zkratky, mám třeba klávesovou zkratku na gitk (Ctrl+G).
12.9.2016 11:20 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
No, asi jsme si uz nazory vymenily v dostatecne hojne mire a pokud pises, ze Sublime, který kódu nerozumí, ale je schopen napovídat opakující se výrazy, což pokryje nějakých 85% use cases, tak to pro me nejak, protoze naseptavat "opakujici se vyrazy" opravdu nepovazuji za ani vzdalene srovnatelne s fungovanim IDE vc. drive diskutovaneho zobrazovani signatury + dokumentace.
12.9.2016 13:17 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Já rozhodně neříkám, že to je to samé, co dělá IDE. Pouze říkám, že 1) není zdaleka tak jednoznačné, že tyhle fíčury IDE, které popisuješ, vyváží nevýhody IDE (z mého osobního pohledu ne) a 2) tyhle fíčury určitě nejsou nezbytně nutné pro efektivní programování.

Pokud říkáš, že ti používání IDE vyhovuje a má pro tebe přínos, tak prosim, proti tomu žádná. Pokud říkáš, že kdo nepoužívá IDE nemůže efektivně programovat v Javě, tak s tím silně nesouhlasim.
12.9.2016 14:06 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Duvod, proc jsem v opozici, prameni primarne ze snahy nahlednout do zpusobu prace jinych lidi, sesbirat argumenty a dobrat se nejakych objektivnich zaberu.

Optimalni by asi bylo domluvit nejake ukony, na kterych se shodneme, a pote zdokumentovat na screenplay jejich provedeni tim ci onim zpusobem.

Pokud uvidim, ze IntelliJ (moje soucasne IDE) neposkytuje zadne vyhody oproti kvalitnimu editoru + sade specializovanych toolu, rad jej vymenim.

Zbyva to nejtezsi: Specifikovat ty ukony.
12.9.2016 20:57 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
není zdaleka tak jednoznačné, že tyhle fíčury IDE, které popisuješ, vyváží nevýhody IDE (z mého osobního pohledu ne)

Jako spotřeba RAM? Ano, taky mi to přijde dost (i když dneska pitomý WWW prohlížeč žere často víc), ale když uvážím, kolik stojí RAM a kolik stojí můj čas – IDE, které rozumí kódu, je jasná volba.
Pokud říkáš, že kdo nepoužívá IDE nemůže efektivně programovat v Javě, tak s tím silně nesouhlasim.
Asi dvakrát jsem narazil na kolegy, kteří se snažili dělat ve VIMu – teoreticky jim v tom nic nebránilo a nikdo je nenutil používat IDE, překládat to šlo z příkazové řádky Antem nebo Mavenem úplně bez problému. Nikoho nezajímalo, v čem to píšeš, ale co odevzdáš do SVN/Gitu. Ale práce jim moc od ruky nešla a často jim unikal kontext – to, co i průměrný programátor s IDE vidí na první pohled, oni neviděli, protože byli zahrabaní v nějakém jednom souboru. Nakonec se na to vykašlali a přešli na Netbeans nebo Eclipse.

Neříkám, že efektivní programátor v Javě bez IDE nemůže existovat, ale zatím jsem takového neviděl – až na něj narazíš, tak bych ho rád poznal a chvíli pozoroval při práci.
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
13.9.2016 08:51 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Neříkám, že efektivní programátor v Javě bez IDE nemůže existovat, ale zatím jsem takového neviděl – až na něj narazíš, tak bych ho rád poznal a chvíli pozoroval při práci.
Hm, v našem týmu v práci afaik nikdo IDE nepoužívá, tam se to dělí na ViMisty a Emacsisty a já jsem tam ta černá ovce se Sublime :-D Ale té Javy tam není až tak moc, tak nevim, jak moc je to relevantní...

Hlavně mi to ale není jasné principielně: V C, C++ a dalších jazycích se nad prací v editoru + příkazové řádce nidko nepozastavuje, je to celkem běžné. V Javě to najednou nejde efektivně. Dávalo by to smysl, kdyby programování/debugování v Javě bylo nějak výraznně těžší než třeba C++, ale ono je to přesně naopak.
13.9.2016 14:18 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: Návrhové vzory a inspirace
Hlavně mi to ale není jasné principielně: V C, C++ a dalších jazycích se nad prací v editoru + příkazové řádce nidko nepozastavuje, je to celkem běžné.
Jako clovek, ktery aktivne pouziva oba dva svety, dovolim si pridat sve dva centy do teto nekonecne diskuze.

V pripade C, assembleru nebo Pythonu, je ViM + prikazova radka jasna volba. Je to dane hlavne tim, ze IDE nemohou az na dren vyuzit analyzu kodu a vcelku zabehnute konvence pro psani kodu, organizaci projektu, atd. jako je to v pripade Javy.
V Javě to najednou nejde efektivně.
Obcas jsem nucen neco v Jave programovat ve ViMu a ten komfort prace je uplne jinde. Ne, ze by to neslo, ale ta prace jde strasne pomalu. Jsou to desitky drobnosti, ktere te zdrzuji: nutnost prepinat do jineho okna kvuli dokumentaci, nemoznost prokliknout se na implementaci metody, absence refaktorizace, napoveda metod pouze podle toho, co jsi uz pouzil nebo i treba nutnost vytukovat nazev metody kompletne na klavesnici. V IDE obvykle staci jen par znaku.

Pouzivat ViM na Javu je asi takovy pocit, jako kdyz mas pet let stary pocitac a bez problemu ho pouzivas a pak si poridis novy a za nejakou dobu se vratis k tomu puvodnimu a zjistis, ze s takovym pocitacem se neda skoro pracovat.

Podobne to mam treba i pri programovani ve Scale, kde sice mam IDE, na ktere jsem zvykly, ale na tech nastrojich jde videt, ze jeste nejsou doladene jak pro Javu a stale mi nekde nejaka vlastnost, na kterou jsem zvykly, chybi a to zdrzuje.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
13.9.2016 14:21 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jak uz jsem rikal, mezi kvalitou IDE pro C/C++ a Javu jsou obrovske rozdily (uz z principu). Java je proste jednoduchy jazyk, coz znamena, ze je dobre strojove zpracovatelny. Kdyz jsem pred par lety napsal v Sublime nejaky zdrojak v C++ pouzivajici templaty (ne uplna trivialita, ale ani nic zvlast sloziteho), tak to ani nemelo spravny syntax highlighting. Parsovani C++ je totiz vyrazne slozitejsi.

Stejne tak jsou mnohem slozitejsi build systemy, v kazdem projektu se pise trochu jinak, vstupuje do toho preprocessor, makra, podminena kompilace... To vse jsou veci, ktere IDE podkopavaji nohy.

V MS Windows svete se siroce pouziva Visual Studio (rekl bych, ze drtiva vetsina profesionalnich C++ vyvojaru ve Windows pouziva Visual Studio). V UNIXu se preferuje klasicky toolchain s gcc/g++, ld, make, gdb apod. a zrejme nic moc lepsiho neexistuje. Napr. CDT pro Eclipse by snad mel C/C++ zvladat, ale moje zkusenost s nim je naprosto otresna - prakticky jsem nikdy nemel trpelivost zapasit s milionem problemu hned po vytvoreni projektu. Byl jsem rad, kdyz jsem v tom zkompiloval a spustil Hello World (a pri napsani par dalsich radek kodu se typicky vynorily dalsi problemy s chybejicimi knihovnami apod., takze opet pulka kodu svitila cervene). Mozna je to mou netrpelivosti a neznalosti, mozna nikoliv, ale nazory ostatnich byly vesmes podobne.
13.9.2016 15:04 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
V UNIXu se preferuje klasicky toolchain s gcc/g++, ld, make, gdb apod. a zrejme nic moc lepsiho neexistuje.
Existuje: Qt Creator. Lepší IDE pro C/C++ IMHO neexistuje, i na Windows je lepší než MSVC. A je přitom stále relativně lehkotonážní. Eclipse je hrozný na cokoli. (IMHO.)

Jinak ale zpět k Java IDE (a je to i reakce na děda.jabko): Samozřejmě chápu, proč Java IDE může dělat věci, které C/C++/Whatever IDE dělat nemůže. Nicméně tím pádem ale z vašich komentářů v podstatě plyne, že efektivně programovat lze pouze v Javě.
13.9.2016 15:37 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Existuje: Qt Creator.
Znam, ale zkusenost nemam (asi krome nejakeho Hello worldu).
Eclipse je hrozný na cokoli. (IMHO.)
Eclipse jsem mel rad a delsi dobu pouzival na vicero veci (Java, Python, LaTeX). Krome relativne vzacnych padu/zaseku to bylo v pohode. Pak jsem to zacal pouzivat v praci na vetsim Maven projektu slozenem z vice modulu a nadaval jsem minimalne 2x denne. Prechod na IntelliJ to vyresil.
Nicméně tím pádem ale z vašich komentářů v podstatě plyne, že efektivně programovat lze pouze v Javě.
Sam bych to lepe nerekl. Jen tedy zalezi na tom, co pises, zda jsou v dane oblasti k dispozici kvalitni knihovny/frameworky, a fakt, ze musis startovat IDE, zakladat projekt, pridavat do nej zavislosti a popr. vysledek exportovat do JARu, nezpusobuje tak velke zdrzeni, ze bys za tu dobu v nejakem vice lehkotonaznim setupu jiz nemel napsany kompletni zdrojovy kod. To je zasadni prekazka treba u prototypovani a rychle automatizace a napr. Python je v techto pripadech IMHO o nekolik magnitud lepsi varianta.
13.9.2016 15:56 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Sam bych to lepe nerekl.
ROFL.

Bylo by fajn, kdyby se lidé, kterým stoupla Java* do hlavy, nějak snadno poznali, aby člověk věděl, že nemá ztrácet čas pokusy o rozumnou diskusi...

*) příp. obecně jakýkoli jazyk - nicméně přijde mi, že Java a LISP jsou fanatickými vyznavači a sektářstvím postiženy nejvíce...
13.9.2016 16:05 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace

Tak ono to bude u vetsiny jazyku podobne, akorat ze Javistu je spousta tak je to asi vic videt. No a u LISPu tam to bude tim ze jsou to opravdu fanatici :)

Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
13.9.2016 18:00 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Smarja, jsem doufal, ze ta nasledujici klauze "Jen tedy zalezi na tom..." mluvi sama za sebe. Bylo to zamerne zveliceni se snahou vytvorit komicky prvek. Rekl bych, ze celou tuto diskuzi naopak vedu velmi rozumne, s otevrenou hlavou a snahou se necemu priucit. Moje opozice je podeprena argumenty (a osobni zkusenosti), ne fanatismem. Java neni muj prvni, ani druhy, ani treti jazyk, a nemam se o co bat - kdybych uz nesehnal praci jako Javista, velmi rychle bych se adaptoval na neco jineho. Nemam (nastesti) pokrivene mysleni na tolik, abych nedokazal v jakemkoliv jinem paradigmatu/konvencich uvazovat.
13.9.2016 20:49 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: Návrhové vzory a inspirace
Nicméně tím pádem ale z vašich komentářů v podstatě plyne, že efektivně programovat lze pouze v Javě.
Nic takoveho netvrdim.

Reaguji na tvrzeni:
Pokud říkáš, že kdo nepoužívá IDE nemůže efektivně programovat v Javě, tak s tím silně nesouhlasim.
Protoze moc dobre vim, jaky je rozdil v efektivite pri pouziti obou nastroju. VELKY!
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
13.9.2016 22:28 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
IMHO to byla reakce spis na me a xkucf03, jakozto hlavni Javisty a IDEckare zde.
13.9.2016 15:56 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace

Tak ono existuje CLion a to je IMHO super IDE pro C++ jak na linux tak windows, popravde skoro pro vetsinu jazyku si myslim ze ma IDE hlavne vyhody. Jen je potreba mit kvalitni IDE.

Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
13.9.2016 18:03 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
+1, ten mi vypadl z hlavy (nejspis proto, ze nemam licenci, bezplatna verze neni a instalovat 30 denni trial jsem nechtel, protoze plnou verzi si asi stejne kupovat nebudu na ten zcela minimalni rozsah, v jakem uz C pouzivam).
13.9.2016 23:44 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ono ne že by to nešlo – taky někdy programuji malé věci jen v editoru, třeba když mám udělat něco na dálku a nechce se mi stahovat zdrojáky k sobě, tak to udělám přes SSH. Ale to jsou změny na pár řádků a když přesně vím, co chci udělat.
V C, C++ a dalších jazycích se nad prací v editoru + příkazové řádce nidko nepozastavuje, je to celkem běžné. V Javě to najednou nejde efektivně.
Možná pro ty jiné jazyky nejsou tak dobrá IDE, takže lidi nemají srovnání a nechybí jim to. Ale když u té javy víš, jak dobře a efektivně se pracuje v IDE a kolik času ti to ušetří, tak se ti v tom editoru nebude chtít dělat.

Ono takový Bash nebo Perl taky píšu v obyčejném editoru, který maximálně tak zvýrazňuje syntaxi, a nic mi nechybí, protože jsem pro tyhle jazyky IDE nikdy nepoužíval. Totéž PHP – kdysi jsem v něm psal a taky jen v editoru, nic mi nechybělo, byl jsem zvyklý na ten styl práce – hledat v dokumentaci v jiném okně a pozorně přepisovat příkazy a dávat pozor, abych někde neudělal překlep. Dneska už IDE pro PHP existují, tak bych možná nějaké použil.
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
14.9.2016 08:35 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Možná pro ty jiné jazyky nejsou tak dobrá IDE, takže lidi nemají srovnání a nechybí jim to.
To je nějaká psychologie vývojáře nebo co? Trochu mi to připomíná náboženstvím, tam se taky argumentuje tím, že nechybí jen tomu, kdo ho nepoznal, přitom to není tak úplně pravda. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
14.9.2016 09:44 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Možná pro ty jiné jazyky nejsou tak dobrá IDE, takže lidi nemají srovnání a nechybí jim to. Ale když u té javy víš, jak dobře a efektivně se pracuje v IDE a kolik času ti to ušetří, tak se ti v tom editoru nebude chtít dělat.
Ale já tu zkušenost z Javy i z C++ mám koneckonců taky. Eclipse jsem vyřadil velice rychle, protože prostě nefungovalo dobře (dnes je to možná lepší, nevím), ale poměrně dlouho jsem používal QtC pro C++ a NetBeans a IntelliJ pro Javu, nicméně časem jsem je opustil.

Ono by se takhle dalo argumentovat i obráceně - dalo by se tvrdit, že kdo není zvyklý na efktivní editor a neumí dobře používat nástroje jako debuggery, build systémy, VCS, atd. z příkazové řádky / editoru, neví, že IDE nepotřebuje ;-)

IMHO obecně ale záleží hlavně na zvycích a způsobem, jakým je konkrétní projekt nastavený. Když má někdo projekt + workflow optimalizovaný pro IDE, zejména konkrétní IDE a jeho konkrétní fíčury, je celkem jasné, že to nejefektivnější na tom projektu pracovat v tomto IDE. Je ale fajn vědět o tom, že IDE (a už vůbec konkrétní IDE) není nutně jediná cesta k efektivitě (ačkoli někteří mi to nevěří).
14.9.2016 12:01 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
dalo by se tvrdit, že kdo není zvyklý na efktivní editor a neumí dobře používat nástroje jako debuggery, build systémy, VCS, atd. z příkazové řádky / editoru, neví, že IDE nepotřebuje
Ono, abychom se netocili porad v kruhu, je dobre si pripomenout, ze IDE je zkratka z integrated development environment. Z toho celkem vyplyva, jake by to melo mit vlastnosti (tj. je to integrovane, konzistentni).

Co konkretne za hlavni vyhody (realne existujicich) IDE povazuju ja, jsem zde uz zminoval. Znovu pripomenu, ze mluvim o obrovske pomoci pri editovani (naseptavani, validace, refactoringy, formatovani), o integraci s build systemem, ktera umoznuje snadno spoustet konkretni test-cases, konkretni main apod. a o grafickem debuggeru, pricemz to vse je zaintegrovane a spojene dohromady. Jsem primo v editoru, tam nastavim breakpoint/watch - nemusim se prepinat do jine aplikace a rucne to v ni zadavat (cimz jeste vznika riziko preklepu). Kdyz pri debugovani chci vyhodnotit snippet kodu, ktery treba nejak profiltruje kolekci ulozenou v promenne, abych se v ni lepe vyznal, tak stisknu jedinou klavesovou zkratku a kod zadam do policka, ktere se chova stejne jako kdybych editoval soubor (tj. ma syntax highlighting, naseptavani apod. - ale pritom je to v podstate REPL). To jsou ty podstatne vyhody IDE.

Pokud si v systemu poradne nastavis klavesove zkratky, napises si skripty, poladis si WM, aby ruzna okna oteviral v tech a tech castech obrazovky apod., a celkove to nejak zaintegrujes dohromady (i.e. budes mit v textovem editoru nabindovano, ze na stisk CTRL+SHIFT+B se spusti makro, ktere precte jmeno souboru a cislo aktualniho radku a nasledne ho zapise/odebere ze souboru se seznamem breakpointu, ktere se automaticky nastavi pri spusteni konzoloveho debuggeru apod.), tak sice dosahnes tehoz, ale moment... Oh yeah, vytvoril sis vlastni IDE.
14.9.2016 12:09 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Oh yeah, vytvoril sis vlastni IDE.
Tento postup má svoje výhody. Pokud ti nevyhovuje existující IDE, ale vyhovují ti dílčí nástroje, můžeš si z nich udělat celkem jednoduše buď vlastní IDE (o což osobně nemám zájem) nebo takový subset IDE, který ti bohatě stačí a zbytek ovládat přímo. Já osobně nemám žádnou dobrou motivaci používat IDE, ale mám dobrou motivaci používat standardní náštroje. Hlavní motivace je, že je stejně budu používat a stejně je potřebuju umět ovládat.

Osobně preferuju používat na všechno za všech okolností jediný textový editor (vim), všechny kličky a automatizaci se učit v něm a případně si ho podle potřeb dokonfigurovat. Oproti tomu o klávesovou zkratku, která mi rozběhne debugger na aktuální řádce, momentálně ani nemá zájem. Vždycky je to něco za něco a u mě z různých důvodů vyhrála volba existující IDE ignorovat.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
14.9.2016 12:20 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tento postup má svoje výhody.
Urcite. Jedinym parametrem je potom cas, ale pokud si nekdo svoje vyvojarske prostredi skutecne vypipla presne podle svych predstav, tak se mu ten investovany cas snad i muze vratit.

Porad si stojim za tim, ze ty zminovane funkce maji obrovsky prinos, ale jestli toho clovek docili instalaci jednoho molocha, nebo vic mensich toolu, to souhlasim, ze uz je uplne nepodstatne.
14.9.2016 12:44 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak jako mě největší přínos co se týče integrace přináší bash, terminál a okenní prostředí. :) To se ale běžně jako IDE neoznačuje. A časovou bilanci vnímám dobře, vzhledem k tomu, že omezuju počet nástrojů stejného typu, se kterými musím umět. Už jen to, že používám jeden editor a ne několik mi přijde jako naprosto zásadní přínos. Dále to, že spuštění kteréhokoli nástroje zabírá nula času, což u spouštění IDE zdaleka není samozřejmost. Ale dá se říct, že nejsem typický vývojář.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
14.9.2016 12:56 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ok, vezmu to popořadě:
Znovu pripomenu, ze mluvim o obrovske pomoci pri editovani (naseptavani, validace, refactoringy, formatovani)
Tohle mi přijde jako nejméně atraktivní. Našeptávání funguje spolehlivě pouze v Javě, ale i tam mi ten přínos přijde sporný. Vzpomínám si, že IDE typicky našeptávalo moc, třeba jsem měl třeba zájem o jeden konkrétní overload a IDE mi jich cpalo X dalších aniž bych o ně měl zájem. Píšu kód a neustále na mě vyskakuje okénko s milionem nesouvisejících funkcí a překrývá kód, na který chci vidět, ukazuje dokumentaci, kterou buď už mám přečtenou nebo o ní vůbec nemám zájem, protože patří k nějaké jiné funkci, apod. Validace kódu mi přijde úplně na hlavu - kód chci typicky validovat až když ho kompiluju, tj. až když je hotový, ne když ho teprve píšu. V důsledku validace kódu v Java IDE na mě v minimálně 80% vyhazuje false positives/negatives, prostě protože neví, co chci udělat. Celkově mi přijde, že našeptávání v Java IDE a IDE obecně má poměrně velice špatné signal-to-noise ratio. Refactoring a formátování zvládají editory IMHO +/- stejně dobře. Alespoň taková je moje zkušenost.
integraci s build systemem
Opět, z mojí zkušenosti tohle není přínos. Integrace s build systémem funguje dobře, pokud člověk dělá přesně to, co po něm IDE chce (to je to o tom otroctví, co jsem zmiňoval výše). Jakmile si nastavíš build systém nějak maličko jinak, než jak IDE předpokládá, nebo chceš použít jiný build systém nebo prostě mít to trochu pod kontrolou - například si chceš udělat trochu jinak adresářovou strukturu., IDE tvé konfiguraci nebude rozumět a možná ti taky tvoje věci přepíše nebo ti to nějak zvoře. I to se mi stávalo.
o grafickem debuggeru, pricemz to vse je zaintegrovane a spojene dohromady. Jsem primo v editoru, tam nastavim breakpoint/watch - nemusim se prepinat do jine aplikace a rucne to v ni zadavat
Tohle beru. Integrace s debuggerem mi připadá z těch vlastností nejsmysluplnější a umím si představit, že to pomáhá.

Na druhou stranu ale mi přiadá, že IDE se dost často snaží optimalizovat něco, co není bottleneck - nastavování breakpointu do řádky kódu není něco, co potřebuju udělat každých 30 sekund.
14.9.2016 14:10 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Našeptávání funguje spolehlivě pouze v Javě
Vsak uz jsme nekolikrat rekli, ze se bavime o Jave, protoze tam je situace o dost lepsi nez v jinych jazycich. Nema smysl srovnavat pouziti stejneho druhu nastroju na zcela rozdilne jazyky a projekty, kdyz to tam treba ani neni k dispozici.
Vzpomínám si, že IDE typicky našeptávalo moc
Automaticke naseptavani lze samozrejme vypnout a vyvolat rucne jen v pripade potreby (typicky pomoci CTRL+Space).
Validace kódu mi přijde úplně na hlavu - kód chci typicky validovat až když ho kompiluju, tj. až když je hotový, ne když ho teprve píšu.
Nestava se mi, ze by pulka kodu svitila cervene. Kod chci validovat hned, abych pripadne problemy odhalil co nejdriv. Rucne se kompilace spousti typicky pro cely projekt najednou.
Refactoring a formátování zvládají editory IMHO +/- stejně dobře.
Mas nasledujici metodu:
void foo(int a, int b, boolean c) {
Jednou klavesovou zkratku (CTRL+ALT+H) si zobrazim vsechna pouziti. Vidim, ze argument c je vzdy true a rozhodnu se, ze ho odstranim. Dalsi klavesovou zkratkou (SHIFT+ALT+C) zmenim signaturu metody a argument odeberu, coz se promitne do vsech mist, kde se metoda vola.

Ted chci slyset presny postup, jak to delas ty. At se bavime konkretne. Pouzivas grep, nebo vyhledavani v Sublime? Jak ten hledany vyraz upresnis tak, aby podchytil pouze volani metody nad danym typem, nikoliv jinymi, kde se vyskytuje stejne nazvana metoda? A co kdyz nekdo tu metodu zavola nad potomkem? A jak potom odstranujes ten prebytecny argument? Regularnim vyrazem?

Rikam - bavme se konkretne.
Jakmile si nastavíš build systém nějak maličko jinak, než jak IDE předpokládá, nebo chceš použít jiný build systém nebo prostě mít to trochu pod kontrolou - například si chceš udělat trochu jinak adresářovou strukturu., IDE tvé konfiguraci nebude rozumět a možná ti taky tvoje věci přepíše nebo ti to nějak zvoře.
Projekt je popsany sadou Maven/Gradle souboru a do IDE jej pote jednoduse naimportujes. Nevim, o jake jine konfiguraci mluvis, ale vlastne je to jedno. Neni vina IDE, ze nekdo zacne znasilnovat build system a vyrazne se odchylovat od zavedene praxe, pokud je rec o tomhle.
Na druhou stranu ale mi přiadá, že IDE se dost často snaží optimalizovat něco, co není bottleneck - nastavování breakpointu do řádky kódu není něco, co potřebuju udělat každých 30 sekund.
Pri tom debuggovani asi i jo.
14.9.2016 15:48 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Vsak uz jsme nekolikrat rekli, ze se bavime o Jave, protoze tam je situace o dost lepsi nez v jinych jazycich.
No je pak otázka, jak moc má pro mě diskuse význam, protože pouze v Javě nedělám žádný projekt už docela dlouho (od té doby, co poslední čistě Java projekt, do kterého jsem přispíval, přešel na Kotlin).

Udržovat si IDE pouze pro jeden jazyk určitě nebudu, resp. nechci s částí projektu pracovat s IDE a s ostatními nějak jinak (ditto building).
Ted chci slyset presny postup, jak to delas ty. At se bavime konkretne. Pouzivas grep, nebo vyhledavani v Sublime?
To záleží. Pro Javu aktuálně píšu pouze v práci, kde je minoritní součástí projektu napsaného hlavně v C a Pythonu, takže uvažuju tento projekt. Záleželo by, jestli to je funkce "veřejná" nebo interní pro projekt. Pokud "veřejná" (tj. taková, kterou mohou používat ostatní projekty ve firmě) musel bych nejprve zjistit, jestli ji vůbec můžu upravit (tj. jaká je deklarovaná zpětná kompatibilita daného API), a pokud ano, musel bych zjistit, kde všade se používá, na což máme server podobný Woboqu nebo OpenGroku. Pokud by to byla pouze interní funkce, ktekrá by nebyla součástí API, použil bych grep nebo cscope (který je součástí našeho build systému). Místa, kde se metoda volá, bych pak prošel ručně pomocí navigace v editoru, chtěl bych vidět, jak se určuje hodnota argumentu a jestli s tím není potřeba něco udělat.
Neni vina IDE, ze nekdo zacne znasilnovat build system a vyrazne se odchylovat od zavedene praxe, pokud je rec o tomhle.
Njn, není vina IDE, že se někdo chce zprotivit vůli IDE :-D

U nás by tohle nešlo, protože jsou použity build systémy jako makefiles, cmake apod. S tím souvisí další věc: Co když na jednom projektu chtějí pracovat lidi s různými preferencemi ohledně IDE? Třeba jeden má rád NetBeans, druhej IntelliJ a třetí Eclipse - funguje to?
Pri tom debuggovani asi i jo.
Můžeš si příště udělat poznámku, kolik jsi použil breakpointů... Dejme tomu, že ti bude trvat sekundu nastavit breakpoint, zatímco já budu 10× pomaleji, tj. 10 sekund, a budem potřebovat 20 breakpointů. Výsledkem je, že budu o 3 minuty pomalejší. To mi přijde dosti zanedbatelné, navíc IMHO ta čísla jsou spíš přemrštěná...
14.9.2016 16:29 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Udržovat si IDE pouze pro jeden jazyk určitě nebudu, resp. nechci s částí projektu pracovat s IDE a s ostatními nějak jinak (ditto building).
To je tvuj problem.
Pokud by to byla pouze interní funkce, ktekrá by nebyla součástí API, použil bych grep nebo cscope (který je součástí našeho build systému). Místa, kde se metoda volá, bych pak prošel ručně pomocí navigace v editoru, chtěl bych vidět, jak se určuje hodnota argumentu a jestli s tím není potřeba něco udělat.
... a rucne to upravil, super.
Pro Javu aktuálně píšu pouze v práci, kde je minoritní součástí projektu napsaného hlavně v C a Pythonu, takže uvažuju tento projekt. [...] U nás by tohle nešlo, protože jsou použity build systémy jako makefiles, cmake apod.
Ten vas projekt zni jako spanelska vesnice. Proc to neni rozsekane do vic projektu, ktere jsou vic oddelene? Proc make a cmake jakkoliv, byt vzdalene, zasahuje do Java projektu? I v pripade, ze pouzivate JNI, by snad nebyl problem drzet zdrojaky v C zcela oddelene a odkazovat se pouze na vyslednou *.so/*.dll knihovnu.
Co když na jednom projektu chtějí pracovat lidi s různými preferencemi ohledně IDE? Třeba jeden má rád NetBeans, druhej IntelliJ a třetí Eclipse - funguje to?
Presne takovou situaci (se tremi tebou jmenovanymi IDE) v praci mame. Nevim, proc by to nemelo fungovat.
Můžeš si příště udělat poznámku, kolik jsi použil breakpointů... Dejme tomu, že ti bude trvat sekundu nastavit breakpoint, zatímco já budu 10× pomaleji, tj. 10 sekund, a budem potřebovat 20 breakpointů. Výsledkem je, že budu o 3 minuty pomalejší. To mi přijde dosti zanedbatelné, navíc IMHO ta čísla jsou spíš přemrštěná...
Kdyz neco muzes udelat na jeden stisk klavesove zkratky, tak budes mnohem ochotnejsi to udelat, nez kdyz to vyzaduje vic manualni prace.

Kdyz srovnam vsechny argumenty, jasne z toho vychazi, ze pouzivani dobreho IDE (v Jave) je vyrazne efektivnejsi. Ty se tomu branis, protoze nejsi dostatecne flexibilni na to, abys prechazel mezi ruznymi IDE/editory, nebo zastiras, ze nemas k dispozici zadne automaticke nastroje na refactoringy (a rozhodne ne tak pohodlne), nebo se snazis navodit dojem, ze vlastne nevadi, kdyz je neco pomalejsi, protoze to nedelas tak casto. To je jako prohlasit, ze tedy v IDE to udelas rychlejs, ale tobe je to vlastne stejne jedno, protoze stejne moc neprogramujes (coz jsi ostatne v podstate sam rekl: "Pro Javu aktuálně píšu pouze v práci, kde je minoritní součástí projektu napsaného hlavně v C a Pythonu").

Takze kdyz to nejak ukoncim, tak co do argumentu ohledne efektivity vyvoje jednoznacne zvitezilo IDE a zbytek jsou tvoje (pro kontext zdejsi diskuze) irelevantni subjektivni postoje a nezkusenost/neznalost.
14.9.2016 17:16 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To je tvuj problem.
Co bys dělal na mém místě? Používal jedno IDE pro C kód, druhé IDE pro Python kód a třetí pro Javu?
... a rucne to upravil, super.
Jistě. Ty jsi vytvořil případ, který je specifický a pro refactoring pomocí IDE ideální - parametry funkce byly pouze literáry (jestli jsem to správně pochopil). Pokud by to literáry nebyly (což je IMHO mnohem typičtější), je IMHO lepší nebo dokonce nutné se ručně podívat na call site. Nepamatuju se, že bych takovýhle případ řešil v poslední době, natož pak často, není mi tedy úplně jasné, proč ho optimalizovat.
Ten vas projekt zni jako spanelska vesnice. Proc to neni rozsekane do vic projektu, ktere jsou vic oddelene?
Rozsekané a oddělené to je. JNI použito není, je tam nějaký java kód, který je generovaný.
Proc make a cmake jakkoliv, byt vzdalene, zasahuje do Java projektu?
Javovská část je sestavovaná cmake/make stejně jako zbytek, abychom nemuseli řešit nějaký další build systém.
Kdyz srovnam vsechny argumenty, jasne z toho vychazi, ze pouzivani dobreho IDE (v Jave) je vyrazne efektivnejsi.
Vskutku? Mně připadá, že tvoje argumenty byly zatím celkem klasickou ukázkou mikro-optimalizace - to, co prohlašuješ za zvýšení efektivity mi připadá jako získání IMHO relativně zanedbatelného množství času na něčem, o čem ses ani nezamýšlel (natožpak nějak zjišťoval), jestli je vůbec bottleneck.
nebo zastiras, ze nemas k dispozici zadne automaticke nastroje na refactoringy
K cscope jsem se přiznal bez mučení.
Takze kdyz to nejak ukoncim, tak co do argumentu ohledne efektivity vyvoje jednoznacne zvitezilo IDE a zbytek jsou tvoje (pro kontext zdejsi diskuze) irelevantni subjektivni postoje a nezkusenost/neznalost.
:-D Ok. Úplně jsi mě prokoukl.
14.9.2016 17:53 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: Návrhové vzory a inspirace
Co bys dělal na mém místě? Používal jedno IDE pro C kód, druhé IDE pro Python kód a třetí pro Javu?
Ano. Na C mam ViM, na Javu Eclipse, v cem je problem?

Nebo taky jis rizek lzici, protoze kdyz jsi s ni jedl polevku, bylo to docela efektivni?
Javovská část je sestavovaná cmake/make stejně jako zbytek, abychom nemuseli řešit nějaký další build systém.
Aha...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.9.2016 08:47 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ano. Na C mam ViM, na Javu Eclipse, v cem je problem?
Ok, to máme dva jazyky, dále používám C++ (to asi bude stejný případ jako C), Rust, Python, JS, shell skripty a možná nějaké další (Kotlin,...). AFAIK pro každý tento jazyk exituje IDE, které tvrdí, že je mnohem efektivnější než zbytek světa.
15.9.2016 09:36 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Dále člověk edituje spoustu věcí, které nejsou programový kód. Text, různé textové markup formáty, textové konfigurační formáty, textové datové formáty. Vybral jsem si jeden editor a ten chci používat.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.9.2016 22:00 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Dále člověk edituje spoustu věcí, které nejsou programový kód. Text, různé textové markup formáty, textové konfigurační formáty, textové datové formáty.
Občas i tohle edituji v Netbeans, protože spolupracují s verzovacím systémem a podbarvují mi změněné řádky + stačí jediné kliknutí a vidím, jaká tam byla předchozí verze (tzn. co je v Mercurialu/Gitu/SVN). Nemáš tip na jednoduchý editor, který by tohle uměl? (je mi relativně jedno, jestli GUI nebo pro konsoli)
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
14.9.2016 17:58 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Co bys dělal na mém místě? Používal jedno IDE pro C kód, druhé IDE pro Python kód a třetí pro Javu?
Nevim. V kazdem pripade bych se nesnazil tvrdit, ze IDE oproti editoru nic neprinasi a je to stejne efektivni, kdyby to nebylo podlozene tvrdymi fakty.
Jistě. Ty jsi vytvořil případ, který je specifický a pro refactoring pomocí IDE ideální - parametry funkce byly pouze literáry (jestli jsem to správně pochopil). Pokud by to literáry nebyly (což je IMHO mnohem typičtější), je IMHO lepší nebo dokonce nutné se ručně podívat na call site.
Prohlednuti vsech mist, odkud se metoda vola, jsem jasne uvedl a jeste jsem se te ptal, jak to budes s prostym vyhledavanim v editoru resit, kdyz metoda muze byt zavolana nad potomkem (tj. jinym typem).
Javovská část je sestavovaná cmake/make stejně jako zbytek, abychom nemuseli řešit nějaký další build systém.
V tom pracne hledam jakoukoliv logiku, ale dejme tomu.
Mně připadá, že tvoje argumenty byly zatím celkem klasickou ukázkou mikro-optimalizace - to, co prohlašuješ za zvýšení efektivity mi připadá jako získání IMHO relativně zanedbatelného množství času na něčem, o čem ses ani nezamýšlel (natožpak nějak zjišťoval), jestli je vůbec bottleneck.
Jak ti to pripada je mi uplne jedno. Tohle jsou vsechno veci, ktere developer dela dnes a denne.
K cscope jsem se přiznal bez mučení.
... a taktne nezodpovedel druhou cast otazky, kde jsem se psal, jak to odstraneni argumentu potom provedes. Regularnim vyrazem, nebo dokonce rucne?
:-D Ok. Úplně jsi mě prokoukl.
A ne snad? Kdo se tady divil, jestli je mozne pouzivat vic ruznych IDE na stejnem projektu? Kdo si tady stezoval, ze naseptavani v IDE je prilis otravne, protoze nedokazal vlezt do nastaveni a vypnout to? Prijde ti tohle jako zcela objektivni zkusenost a opravdu relevantni srovnani, nebo spis jako subjektivni prskani na neco, co se ti nelibi?
15.9.2016 09:01 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Prohlednuti vsech mist, odkud se metoda vola, jsem jasne uvedl a jeste jsem se te ptal, jak to budes s prostym vyhledavanim v editoru resit, kdyz metoda muze byt zavolana nad potomkem (tj. jinym typem). (...) ... a taktne nezodpovedel druhou cast otazky, kde jsem se psal, jak to odstraneni argumentu potom provedes. Regularnim vyrazem, nebo dokonce rucne?
Nejprve předesílám, že jsem nic taktně nezamlčoval. Nejsem šéfem spyknutí na asasinaci IDE. Snažil jsem se odpovědět co nejlépe. Když se vyhledávání provede grepem, není důvod předpokládat, že to nenajde použití v potomcích - false negatives tam nebudou, spíš false positives by mohly být problém (osobně ale celkem nemám problém je odignorovat). Ditto vyhledání přes cscope. Co také případně dělám, je, že zmením danou věc (funkci, proměnnou) v místě definice a nechám kompilátor, aby mi vyházel chyby, a tudíž našel místa, kde je potřeba to změnit. Sublime umí z výstupu kompilátoru otvírat soubory, ale to dělám jen tehdy, když je jich hodně, jinak neřešim. Nahrazení provádím nejčastěji fíčurami Sublime nebo regulárími výrazy.
Jak ti to pripada je mi uplne jedno. Tohle jsou vsechno veci, ktere developer dela dnes a denne.
Ok, tak v tom případě je asi skvělé, když ušetříš 30 sekund dnes a denně. To zní jako citelný benefit... Já jsem popravdě zatím neznamenal v tvých komentářích o efektivitě vůbec nic, natož pak nějaká "tvrdá fakta". Už jenom tahle diskuse je časově o několik řádů náročnější než grepování zdrojáku.
Kdo se tady divil, jestli je mozne pouzivat vic ruznych IDE na stejnem projektu?
Já, protože celkem často se stává, že někdo nasdílí projekt z IDE XY, který lze sestavit pouze IDE XY. Do jiného IDE případně jde "naimportovat přes wizard" a podobné kraviny... Že tohle není případ u vás je fajn.
Kdo si tady stezoval, ze naseptavani v IDE je prilis otravne, protoze nedokazal vlezt do nastaveni a vypnout to?
Ale tak jasně, že jsem dokázal vlézt do nastavení a vypnout to. Následně jsem vypnul integraci s VCS a povypínal pár dalších věci a pak netrvalo dlouho a vypnul jsem IDE úplně a pustil editor. Mluvil jsem o výchozím nastavení, vídám lidi to tak používat.
14.9.2016 16:32 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Vsak uz jsme nekolikrat rekli, ze se bavime o Jave, protoze tam je situace o dost lepsi nez v jinych jazycich. Nema smysl srovnavat pouziti stejneho druhu nastroju na zcela rozdilne jazyky a projekty, kdyz to tam treba ani neni k dispozici.
Jestli ono to nebude nahodou naopak ze ;)

Java je skrz na srkz tak silene overengineered, ze bez IDE pouzivat nejde. Na vse krome Javy ne vyhovuje vim (s jedi pro python apod.), ale Java bez poradneho IDE (=IntelliJ) pouzivat nejde - vzdyt se staci podivat na to jakou Java vyzaduje adresarovou strukturu a naming convention!
14.9.2016 16:35 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pouze opakujes to, co jsem uz rekl drive:
Java sama o sobe je proste jen ukecany a striktni jazyk, ktery navic misty obsahuje nejake historicke chyby. Ty vlastnosti ale davaji prostor existenci tech IDE a dalsich nastroju, diky cemuz se vyplati v Jave vyvijet. Pouzivat v Jave spartansky pristup jako v C mi prijde sebevrazedna kombinace.
14.9.2016 16:57 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
nemluve o vsudepritomnem XML
14.9.2016 19:10 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
nemluve o takovych vychytavkach jako jps

Protoze se java programum vetsinou predava classpath o tisicich znacich, je pak ps, top apod. nepouzitelny, protoze jen ukaze ze se jedna o progam bezici v jave* ale uz se nikam nevejde o jaky program se vlastne jedna ... reseni? napiseme vlastni utilitku pro programy nad jvm, kterou budou admini pouzivat misto toho na co jsou zvykli.

* coz je fakt uzitecne, protoze uz predem je adminovi jasny ze program co vyzira vsechnu ram je v jave, otazka je ktery konkretne to je
14.9.2016 19:18 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Příloha:
(priloha)
14.9.2016 19:35 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Příloha:
A co se tyka cisteho top, uplne stejna situace plati i u Pythonu - ono se to tak nejak asi holt tyka vsech interpretovanych jazyku (opet viz priloha).
14.9.2016 19:44 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
v top zmackni 'c' a hned uvidis co to je za ten program v pythonu (narozdil od javy)
14.9.2016 19:53 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Příloha:
Znovu lzes. (priloha)
15.9.2016 09:56 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
ale no tak
Protoze se java programum vetsinou predava classpath o tisicich znacich
15.9.2016 14:56 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Zatimco v predchozim komentari jsi napsal pouze:
v top zmackni 'c' a hned uvidis co to je za ten program v pythonu (narozdil od javy)
14.9.2016 19:41 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
vidis, to ze si IntelliJ bundluje sebou komplet celou javu je taky neco co vidim hodne nerad
15.9.2016 21:29 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
a muzu pripojit dalsi k dobru (fakt aby clovek pocital dny, kdy nenarazi na neco co je v jave neuveritelny problem, ale ze zahodneho duvodu*, zbytek sveta ani nenapadne, ze by neco takoveho problem vlastne mohl byt).

Pro debugovani jsme potrebovali pripojit strace k urcitemu vlaknu java aplikace ... v normalnim svete - pripojim debuger a vypisu si vlakna, vidim pid a mam hotovo.

V java svete? Je potreba pouzit specialni utilitku jstack, ktera umi vypsat "nativni id" vlaken, "sudo jstack <pid>"? ... naivni! Vyhodi kryptickou chybu, no nastesti mame stackoverflow a jedna z odpovedi prozradi ze je potreba pouzit "sudo -u <uzivatel_pod_kterym_bezi_ta_java_appka> jstack <pid>". To by ale bylo moc jednoduche, takze jstack radeji vypisuje PID vlaken hexadecimalne a je potreba ho zkonvertovat do podoby pouzitelne pro strace.

*no az tak zahodneho ne - je to samozrejme ten vsudypritomny overengineering a architektura zalozena na tom ze si hosi snad mysleli ze pisou operacni system
14.9.2016 17:39 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: Návrhové vzory a inspirace
Našeptávání funguje spolehlivě pouze v Javě, ale i tam mi ten přínos přijde sporný.
V C# nebo Delphi to funguje taky dobre.
Vzpomínám si, že IDE typicky našeptávalo moc, třeba jsem měl třeba zájem o jeden konkrétní overload a IDE mi jich cpalo X dalších aniž bych o ně měl zájem.
Validace kódu mi přijde úplně na hlavu - kód chci typicky validovat až když ho kompiluju, tj. až když je hotový, ne když ho teprve píšu.
Muzes byt konkretni a rict, o kterem IDE mluvis? Toto treba obcas dela Visual Studio, u Eclipse nebo Netbeans sem na tento problem nenarazil.
Refactoring a formátování zvládají editory IMHO +/- stejně dobře
Kdyz mas hodne velkou toleranci na to +/-, tak to pak ano. Mas tridy Foo a Bar a obe maji metodu baz(). Jak v editoru elegantne a rychle a bezpecne prejmenujes metodu Bar.baz() na Bar.qux(), pricemz volani Foo.baz() zustanou nedotcena?
Jakmile si nastavíš build systém nějak maličko jinak, než jak IDE předpokládá, nebo chceš použít jiný build systém nebo prostě mít to trochu pod kontrolou - například si chceš udělat trochu jinak adresářovou strukturu., IDE tvé konfiguraci nebude rozumět a možná ti taky tvoje věci přepíše nebo ti to nějak zvoře. I to se mi stávalo.
Tak si musis upravit i nastaveni prekladace v IDE. V pripade Javy jenom reknes, jaky Ant script se ma pouzit a kompilujes stejne jako z prikazove radky. I v tom blbem a neohebnem Visual Studiu si muzes nastavit, ktery program se ma pouzit v jake fazi a s jakymi parametry.

Na druhou stranu ale mi přiadá, že IDE se dost často snaží optimalizovat něco, co není bottleneck - nastavování breakpointu do řádky kódu není něco, co potřebuju udělat každých 30 sekund.
Cokoliv, co muzes udelat rychleji setri tvuj cas a nervy.

Zajimalo by me, co podle tebe je ten opravdovy bottleneck?
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
14.9.2016 17:50 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
bottleneck je samozrejme pouzivani upovidaneho a striktniho jazyka, kde je potreba X trid misto jednoho callbacku (at se vratime na zacatek teto "diskuse") ... a to zvlast co se tyka cteni a pochopeni takoveho kod
14.9.2016 18:03 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To, cemu ty rikas X trid, ve skutecnosti znamena 1 interface (~3 radky kodu) a callback.
14.9.2016 18:16 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
14.9.2016 18:26 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tridy ve Spring frameworku souvisi s callbacky, ktere, podle tebe, vyzaduji "X trid" jak, ty demente?
15.9.2016 13:18 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Muzes byt konkretni a rict, o kterem IDE mluvis? Toto treba obcas dela Visual Studio, u Eclipse nebo Netbeans sem na tento problem nenarazil.
Buď NB nebo IntelliJ.
Cokoliv, co muzes udelat rychleji setri tvuj cas a nervy.
Tak to se ale pak zcela vylučuje s IDE, které teda moje nervy rozhodně nešetří.
Zajimalo by me, co podle tebe je ten opravdovy bottleneck?
Vymslet, na co by se měla funkce přejmenovat, jaké by měla mít parametry, jak by se ty parametry měly používat atd. atd. atd. - to je IMHO práce programátora.

S lidmi, kteří prosě jen chrlí kód (v čemž jim IDE pomáhá), jsem už měl tu čest pracovat...
15.9.2016 14:41 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: Návrhové vzory a inspirace
Tak to se ale pak zcela vylučuje s IDE, které teda moje nervy rozhodně nešetří.
Myslim, ze problem bude nekde uplne jinde nez v IDE. Pripominas mi decka, ktera na Linuxu nadavaji na to, jak je ViM/Emacs nepouzitelny, neprakticky a pomaly editor a radeji pouzivaji Nano, nez aby se naucily pouzivat poradny editor(tm) a vyuzily poradne jeho schopnosti.
Vymslet, na co by se měla funkce přejmenovat, jaké by měla mít parametry, jak by se ty parametry měly používat atd. atd. atd. - to je IMHO práce programátora.
A s tim ti bezny textovy editor pomuze jak? Nemusis odpovidat, je to jen recnicka otazka.
S lidmi, kteří prosě jen chrlí kód (v čemž jim IDE pomáhá), jsem už měl tu čest pracovat...
Takze radsi stravis vic casu datlovanim samotneho kodu misto, aby ses venoval vymysleni toho kodu. Good job!
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.9.2016 15:19 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Takze radsi stravis vic casu datlovanim samotneho kodu misto, aby ses venoval vymysleni toho kodu. Good job!
Dobrý straw man.
16.9.2016 08:40 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pripominas mi decka, ktera na Linuxu nadavaji na to, jak je ViM/Emacs nepouzitelny, neprakticky a pomaly editor a radeji pouzivaji Nano, nez aby se naucily pouzivat poradny editor(tm) a vyuzily poradne jeho schopnosti.
A co je na tom špatně? Pokud někomu vyhovuje psát v nějakém editoru, ať si ho pro mě za mě používá. Taky jsem různě měnil preference, začínal jsem na různých IDE, postupem času jsem přešel na relativně jednoduché editory jako Kate a mcedit a v jednu chvíli jsem měl důvod začít používat vim a ponechávám si možnost preference opět změnit. Tohle není ani tak o děckách jako spíše o výběru nástrojů, které mi v danou chvíli vyhovují a pomáhají.
Takze radsi stravis vic casu datlovanim samotneho kodu misto, aby ses venoval vymysleni toho kodu. Good job!
Zábavná představa, ale nic víc.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
16.9.2016 09:14 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: Návrhové vzory a inspirace
Pokud někomu vyhovuje psát v nějakém editoru, ať si ho pro mě za mě používá
Mne je to jedno, at si kazdy programuje v cem chce. Mne vadi to kralykova snaha presvedcovat ostatni (ale asi hlavne sebe), ze IDE jsou vlastne k nicemu.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
16.9.2016 10:29 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
On se snaží přesvědčit ostatní, že IDE nepotřebuje. Přesněji řečeno že ho nepoužívá a že je to tak v pořádku. Já osobně v tom nevidím problém a neviděl jsem ho ani v době, kdy jsem IDE používal.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.9.2016 02:38 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
IDE je zkratka z integrated development environment.
Tak ono za IDE se dá považovat i editor + pluginy + bash + screen nebo správce oken + debugger + verzovací systém + vlastní sada skriptů… jen si to každý programátor integruje sám, místo aby použil hotové řešení.

A teď otázky:
  • Jsou programátoři v těch jazycích natolik odlišní mezi sebou, tvoří tak nehomogenní skupinu a každý pracuje úplně jinak, že nikomu nestálo za to připravit IDE (resp. balík těch nástrojů a konfigurací), aby si ušetřili práci?
  • Proč to v rámci toho ručně vyrobeného IDE nedokázali dotáhnout k funkčnímu napovídání tříd/metod/identifikátorů/funkcí nebo fungujícímu refaktoringu? Kontextová dokumentace zobrazující se k tomu, co zrovna píšu, je už takový detail. Nebo snad někdo chce tvrdit, že absence napovídání a refaktoringu je nějaká výhoda?
Hádat se na téma editory vs. IDE mi přijde celkem zbytečné, protože v podstatě každé prostředí, ve kterém někdo programuje, lze s trochou snahy považovat za IDE (byť ručně vyrobené, což je trochu práce navíc), takže bych diskusi omezil jen na ty nástroje/funkce – to jsem vážně jediný, kdo by je chtěl i pro jiné jazyky než Javu? Nejde to pro ty jazyky napsat? (chápu, že pro Perl nebo C++ to bude těžší než pro Javu) Nejsou lidi, je to moc práce… budiž, to se dá pochopit, ale nedělejte z nouze ctnost a netvařte se prosím, že je to bez těch funkcí lepší a že jejich absence je nějaká výhoda.

P.S. o tom, že něco se lépe dělá z příkazové řádky než z GUI nepochybuji – sám používám IDE v kombinaci s příkazovou řádkou, dělám v ní část práce s verzovacím systémem, pouštím skripty atd. Nejde o to, že by to IDE neumělo, že by v něm něco chybělo, ale některé věci je z principu lepší dělat na příkazové řádce.
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.9.2016 09:49 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak ono za IDE se dá považovat i editor + pluginy + bash + screen nebo správce oken + debugger + verzovací systém + vlastní sada skriptů…
Každý v diskuzi ví, co to znamená skládat nástroje dohromady a používat jako základ terminál s bashem, z něj volat všechny potřebné nástroje a psát si kolem toho skripty. Každý v diskuzi ví, co to znamená IDE, tedy že už je hotové integrované, když ho člověk stahuje a spouští. Nejsou to vlastní skripty ani žádné jiné věci, které si člověk vytváří sám a může si je na míru upravovat. Relativizace není argument.
Nejde o to, že by to IDE neumělo, že by v něm něco chybělo, ale některé věci je z principu lepší dělat na příkazové řádce.
Pokud IDE neposkytuje mimojiné příkazovou řádku, pak neumí to, co příkazová řádka. Pokud ano, tak to není tak úplně zásluha toho IDE. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.9.2016 15:35 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Hádat se na téma editory vs. IDE mi přijde celkem zbytečné, protože v podstatě každé prostředí, ve kterém někdo programuje, lze s trochou snahy považovat za IDE (byť ručně vyrobené, což je trochu práce navíc), takže bych diskusi omezil jen na ty nástroje/funkce – to jsem vážně jediný, kdo by je chtěl i pro jiné jazyky než Javu? Nejde to pro ty jazyky napsat?
Ok, připadá mi, že diskuse se dostala příliš daleko a zabředla přísliš hluboko (např. do osobní roviny), takže se pokusím o trochu "big picture":

Nástroje na analýzu / refaktoring / debuggin atd. jsou fajn. V některých jazycích je o hodně jednodušší je vytvořit tak, aby spolehlivě fungovaly, než v jiných, ale jsou fajn v každém případě. Mně na IDE nevadí to "DE" (tj. ty nástroje), mně na nich vadí to "I". To, že ty nástroje jsou takhle integrované dohromady, znamená (typicky), že:

1) IDE je moloch, zabírá hodně RAM, žere CPU, neefektivně využívá plochu obrazovky, v Javě má vysokou latenci UI (to mi jde hrozně na nervy).

2) Ty nástroje jsou obvykle specifické pouze pro dané IDE. Jakmile dané IDE přestane z jakéhokoli důvodu vyhovovat - tj. např. je potřeba programovat v jazyce, které dané IDE nepodporuje (tak dobře), je potřeba použít build systém, který IDE nepodporuje (tak dobře) atd. atd., zkrátka, jakmile člověk potřebuje přepnout někam jinam, je mu najednou celý ten dosavadní setup s veškerým nastavením i se získanými znalostmi naprosto k ničemu, může to celé zahodit. Dedikované nástroje díky tomu, že nejsou součástí (Integrated™) do jednoho GUI od jedné Firmy Inc. jsou mnohem flexibilnější, šířeji použitelné. Lidi v mém okolí, kteří používají ViM/Emacs

Hodně mi to připomíná diskuse, kde si lidi od Windows stěžují na administraci Linuxu - že nemají GUI jako Ovládací panely, MMC a tak dále a že člověk na Linuxu musí psát dlouhé složité příkazy na klávesnici - což, ano, je pravda, ale ta flexibilita, znovupoužitelnost a "hackovatelnost" těch příkazů a dedikovaných programů je ve výsledku mnohem cennější komoditou.

Až bude existovat IDE, které bude 1) jazykově agnostické, 2) lehkotonážní a 3) dobře integrované s příkazovou řádkou a existujícími non-IDE-specifickými nástroji, dejte mi vědět. Připadá mi, že Sublime, ViM nebo Emacs jsou tomu zatím nejblíže, ačkoli to samozřejmě není ideální...
15.9.2016 15:37 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Někde mi tam vypadl konec věty s těmi lidmi, co používaj ViM/Emacs, ale asi na tom už nesejde...
15.9.2016 16:42 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: Návrhové vzory a inspirace
Dedikované nástroje díky tomu, že nejsou součástí (Integrated™) do jednoho GUI od jedné Firmy Inc. jsou mnohem flexibilnější,
To je jedna strana mince. Druha strana mince je, ze nektere veci proste dedikovanymi nastroji udelat nejdou, protoze nejsou soucasti toho integrovaneho celku.
zkrátka, jakmile člověk potřebuje přepnout někam jinam, je mu najednou celý ten dosavadní setup s veškerým nastavením i se získanými znalostmi naprosto k ničemu, může to celé zahodit
To se da rict o cemkoliv. Takze je podle tebe blbost ucit se pouzivat ViM, protoze kdyz se clovek octne na nejakem stroji, kde je jen Vi (jednou az dvakrat do mesice se mi to prihodi), muze vsechny sve znalosti zahodit?
1) jazykově agnostické, 2) lehkotonážní

...aneb hledame mlade zamestnance s dlouholetymi zkusenostmi.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.9.2016 16:59 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Na stroji pouze s vi budeš pravděpodobně o dost víc v pohodě díky znalosti vim než někdo, kdo nezná ani jeden z nich. Další věc je, že vim nainstaluješ nejspíše o dost snáz než NetBeans...
15.9.2016 17:33 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: Návrhové vzory a inspirace
Na stroji pouze s vi budeš pravděpodobně o dost víc v pohodě díky znalosti vim než někdo, kdo nezná ani jeden z nich.
Schvalne si to vyzkousej. Stejne tam funguje snad jenom :wq. Navic je to mnohem horsi, protoze se snazis zadavat prikazy, ktere proste neprojdou nebo udelaji neco jineho.
Další věc je, že vim nainstaluješ nejspíše o dost snáz než NetBeans...
Nevim jak NetBeans, ale v pripade Eclipse staci dat unzip.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.9.2016 17:40 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Schvalne si to vyzkousej.
Však mně se to taky stává, obvykle mam problém, že nefungujou šipky, ale jinak to IIRC celkem jde...
15.9.2016 18:36 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: Návrhové vzory a inspirace
Však mně se to taky stává, obvykle mam problém, že nefungujou šipky, ale jinak to IIRC celkem jde...
Z hlavy... chybi visual mode, undo jeden krok zpet, redo neexistujici, prikazy typu gg chybi, atd. atd. takze opravdu nevim, jak ten ViM pouzivas, kdyz ti to vcelku jde.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.9.2016 19:42 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tím jsem myslel, že vcelku jde někde víceméně nouzově na nějaké mašině editovat nějaký soubor jen ve vi, když znáš vim (oproti někomu, kdo nezná ani jedno a bude úplně ztracen). Na komfortní používání to ale samozřejmě není...
15.9.2016 19:53 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Další věc je, že vim nainstaluješ nejspíše o dost snáz než NetBeans...
To souvisi jak? Ty jsi zminoval, ze pouzivas Sublime, ktery je na serveru bez X uplne stejne k nicemu. Potrebujes dva editory tak jako tak.
15.9.2016 20:52 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
deda.jabko používá Vim, na to jsem reagoval.

Jinak Sublime s rmatem umí editovat soubory přes SSH - v podstatě si s sebou jen vemeš maličkej prográmek, kterej se se Sublime baví přes SSH tunel, je k dispozici v C, Ruby, a snad i shellu a něčem dalším. Je to ale prakticky použitelné jen na editaci jednotlivých souborů, ne na programování projektu.
15.9.2016 23:10 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše SSHFS
K čemu to, když máme SSHFS? Přes něj si můžu otevřít zdrojáky v čemkoli od vi po Netbeans.
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.9.2016 14:23 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: SSHFS
V praxi je SSHFS podle mých testů nestabilní, pomalé při větším počtu IOPS a padá. To vše na gigabitové lance. Zkoušel jsem na tom pracovat, ale prostě se nedalo.
17.9.2016 15:34 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: SSHFS
K čemu to, když máme SSHFS? Přes něj si můžu otevřít zdrojáky v čemkoli od vi po Netbeans.
Když potřebuju rychle zeditovat nějakej soubor, nechce se mi chtít mountovat sshfs. Ale jinak samozřejmě sshfs používám na projekt, se stabilitou nebo pomalostí na lokální síti určitě problém nemám. Přes nějaké vzdálenější připojení, zejména když je člověk někde na nějaké šitské wifi, už je to horší, to už je pak spíš na vcs nebo rsync...
17.9.2016 16:11 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: SSHFS
A to nejde nějak šikovně zautomatizovat? :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.9.2016 17:01 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
...aneb hledame mlade zamestnance s dlouholetymi zkusenostmi.
Ano, tak trochu ;-)
15.9.2016 16:44 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
IDE je moloch, zabírá hodně RAM, žere CPU
Ano, je potreba mit dobry pocitac. (To ale mnohdy nejen kvuli IDE.)
neefektivně využívá plochu obrazovky
Vidim editor, nekdy dalsi okynka, kdyz je potrebuju. Oproti beznemu editoru zde jedna jednoradkova lista pod klasickym File/Edit/... menu a jeden jednoradkovy status bar. To je podle tebe neefektivni vyuzivani plochy obrazovky?
v Javě má vysokou latenci UI (to mi jde hrozně na nervy)
Eclipse je napsany v Jave, ale pouziva SWT, takze timto neduhem netrpi. IntelliJ a NetBeans trochu ano.
zkrátka, jakmile člověk potřebuje přepnout někam jinam, je mu najednou celý ten dosavadní setup s veškerým nastavením i se získanými znalostmi naprosto k ničemu, může to celé zahodit
Coz neni argument proti (udajne) neefektivite IDE, ale spis snaha obhajit vlastni neflexibilitu.
Hodně mi to připomíná diskuse, kde si lidi od Windows stěžují na administraci Linuxu - že nemají GUI jako Ovládací panely, MMC a tak dále a že člověk na Linuxu musí psát dlouhé složité příkazy na klávesnici - což, ano, je pravda, ale ta flexibilita, znovupoužitelnost a "hackovatelnost" těch příkazů a dedikovaných programů je ve výsledku mnohem cennější komoditou.
Mne to spis pripada jako bys obhajoval pouzivani nejakeho konzoloveho grafickeho editoru namisto treba GIMPu. Prece vetsinu casu stravis vymyslenim obrazku, to je ten skutecny bottleneck, a neni zadny problem pak rucne zadat koordinaty plochy, kterou chces oznacit, nebo pouzit misto aplikovani filtru kliknutim volit CLI dedikovane programy, kazdy s uplne jinymi argumenty a chovanim.
15.9.2016 17:23 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Coz neni argument proti (udajne) neefektivite IDE, ale spis snaha obhajit vlastni neflexibilitu.
Nemyslím si, že IDE jsou neefektivní, mají potenciál efektivitu zvyšovat, zejména v dílčích věcech (jako to vyhledání symbolu et al.), šlo mi spíš o ten široce automaticky a celkem bez většího kritického zamyšlení akceptovaný axiom že IDE = vyšší efektivita / lepší kód / víc Adidas / apod. 1) IDE mají nevýhody a ten tradeoff IMHO nemusí být až tak skvělý, jak všichni tvrdí, a 2) efektivita nějakých dílčích kroků nemusí nutně zvyšovat celkovou efektivitu. Kdokoli, kdo se někdy snažil optimalizovat netriviální program, ví, o čem je řeč.

Problém je v tom, že celkovou efektivitu je dost těžké nějak definovat, natož měřit, navíc osobní preference a vlastnosti a specifika projektu/projektů hrajou hodně velkou roli.

Jasně, může to být vnímáno jako nedostatek flexibility na mé straně, nebo to může být vnímáno jako něco, co flexibilitu naopak zvyšuje (ie. možnost pracovat ve víceméně jakémkoli jazyku, aniž by k tomu člověk potřeboval instalaci IDE XY), to už nechám na čtenářích a je mi to celkem jedno, klidně mě můžete považovat za neflexibilního...
Mne to spis pripada jako bys obhajoval pouzivani nejakeho konzoloveho grafickeho editoru namisto treba GIMPu. Prece vetsinu casu stravis vymyslenim obrazku, to je ten skutecny bottleneck, a neni zadny problem pak rucne zadat koordinaty plochy, kterou chces oznacit, nebo pouzit misto aplikovani filtru kliknutim volit CLI dedikovane programy, kazdy s uplne jinymi argumenty a chovanim.
No je pravda, že když potřebuju změnit velikost obrázku nebo konvertovat formát, občas se ani nenamáhám startovat GIMP a použiju mogrify/convert ;-) Jinak editace grafiky vyžaduje pixely a myš/pero/etc, čili to mi přijde specifické...
15.9.2016 18:16 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nemyslím si, že IDE jsou neefektivní, mají potenciál efektivitu zvyšovat, zejména v dílčích věcech (jako to vyhledání symbolu et al.), šlo mi spíš o ten široce automaticky a celkem bez většího kritického zamyšlení akceptovaný axiom že IDE = vyšší efektivita / lepší kód / víc Adidas / apod. 1) IDE mají nevýhody a ten tradeoff IMHO nemusí být až tak skvělý, jak všichni tvrdí, a 2) efektivita nějakých dílčích kroků nemusí nutně zvyšovat celkovou efektivitu. Kdokoli, kdo se někdy snažil optimalizovat netriviální program, ví, o čem je řeč.
Cela tahle diskuze se tocila kolem tvrzeni, ze obycejne editory zastanou stejnou praci. Mluvis zde o nejakych predcasnych optimalizacich. Tvuj mozek sice podava stejny vykon bez ohledu na to, zda pracujes v editoru nebo IDE, ale trochu z toho vypoustis fakt, ze mozku prvne musis poskytnout vjemy, a dale mnou drive zminovanou psychiku ("to se mi nechce delat, je to pracne a mohl bych neco rozbit").

Abys dokazal udelat nejakou upravu, potrebujes si nejprve umet zobrazit zdrojove kody. V Jave to typicky znamena otevrit si zdrojove kody nejake tridy. IDE ti typicky dokaze nazev tridy naseptat a otevrit konkretni soubor. Bezny editor to takto rozhodne neumi v pripade, ze se takova trida nachazi uvnitr jine tridy - uz potrebujes statickou analyzu.

Pri prohlizeni zdrojovych kodu se potrebujes umet dobre navigovat. Vlezt do metody pod kurzorem, ackoliv je nadefinovana uvnitr 3rd party knihovny (a treba k ni nemas zdrojove kody), zobrazit si hierarchii typu (tj. napr. nalezt implementaci konkretniho rozhrani), zobrazit si mista, odkud se metoda vola, nalezt pouziti dane promenne ci fieldu, zobrazit si Javadoc apod. Vsechny tyto funkce IDE poskytuje na stisk jedine klavesove zkratky. IntelliJ napr. umi dekompilovat tridu, ke ktere nema zdrojove kody, zpet do Javy. Pokud zdrojove kody k dispozici jsou, automaticky se pouziji. Nemusim se o to nijak starat (snad krome toho, ze vyvolam nad projektem kontextove menu a kliknu na Download sources).

Jen ve fazi samotneho ziskavani informaci tedy IDE dokaze udelat treba trojnasobne zrychleni (a to verim, ze svuj odhad podhodnocuji). A ano, je rozdil, zda do kodu koukas 15 minut, nebo 5 minut, a to zvlast v pripade, ze jsi placeny za vysledky, ne za odsezeny cas.

Pri psani kodu se to opakuje obdobne.
Problém je v tom, že celkovou efektivitu je dost těžké nějak definovat, natož měřit, navíc osobní preference a vlastnosti a specifika projektu/projektů hrajou hodně velkou roli.
On by to takovy problem nebyl, ale ty v ramci sebeobrany stejne reknes, ze ty dane ukoly jsou usite na miru pro IDE. Ono je pak otazka, jestli clovek spravuje rozsahlejsi codebase, kterou neni mozne celou udrzet v pameti, nebo zda edituje nejake slozitejsi Hello, worldy, kde prinos IDE skutecne tolik nevynikne.
možnost pracovat ve víceméně jakémkoli jazyku, aniž by k tomu člověk potřeboval instalaci IDE XY
Ja take muzu nastartovat nejaky editor, otevrit konzoli s grepem a pracovat. Pouze jsem si vedom toho, ze budu pracovat vyrazne pomaleji a mene komfortne.
Jinak editace grafiky vyžaduje pixely a myš/pero/etc, čili to mi přijde specifické...
Umisteni breakpointu vyzaduje znalost konkretniho souboru a konkretniho radku, takze mi to naopak prijde velmi podobne. Jeden pri pohledu do zdrojoveho kodu rovnou vi, ze sem chce umistit breakpoint, tak zmackne CTRL+SHIFT+B, druhy se prepne do jine aplikace a udaje tam nadatluje rucne, a tak by bylo mozne pokracovat.
15.9.2016 20:28 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Abys dokazal udelat nejakou upravu, potrebujes si nejprve umet zobrazit zdrojove kody. V Jave to typicky znamena otevrit si zdrojove kody nejake tridy. IDE ti typicky dokaze nazev tridy naseptat a otevrit konkretni soubor. Bezny editor to takto rozhodne neumi v pripade, ze se takova trida nachazi uvnitr jine tridy - uz potrebujes statickou analyzu.
Přijde mi, že sis našel specielní případ, ale budiž, na tohle bude potřeba nějaká statická analýza, nicméně myslím, že cscope to dá.
Pri prohlizeni zdrojovych kodu se potrebujes umet dobre navigovat. Vlezt do metody pod kurzorem, ackoliv je nadefinovana uvnitr 3rd party knihovny (a treba k ni nemas zdrojove kody), zobrazit si hierarchii typu (tj. napr. nalezt implementaci konkretniho rozhrani), zobrazit si mista, odkud se metoda vola, nalezt pouziti dane promenne ci fieldu, zobrazit si Javadoc apod. Vsechny tyto funkce IDE poskytuje na stisk jedine klavesove zkratky.
Když řeknu, že ViM/Emacs/Sublime + cscope nebo podobné nástroje to umí taky, tak mi předpokládám řekneš, že jsou z nich tím pádem IDE... (Což je asi i do jisté míry pravda.)
Jen ve fazi samotneho ziskavani informaci tedy IDE dokaze udelat treba trojnasobne zrychleni (a to verim, ze svuj odhad podhodnocuji). A ano, je rozdil, zda do kodu koukas 15 minut, nebo 5 minut, a to zvlast v pripade, ze jsi placeny za vysledky, ne za odsezeny cas.
Moje zkušenost je, alespoň zatím, taková, že doba čtení zdrojáku/coredumpu/apod. závisí především na zkusnošti/schopnosti programátora spíš než rychlosti IDE. Znám lidi, kteří používají skoro holý Vim nebo holý debugger, ale vyčtou potřebnou věc rychleji než já z full-blown IDE. Vím o lidech, kteří jsou lepší programátoři než já, ale nepoužívají syntax highlighting (což třeba já osobně taky moc nechápu, ale jim to zřejmě funguje).

Zkrátka: YMMV.
Ono je pak otazka, jestli clovek spravuje rozsahlejsi codebase, kterou neni mozne celou udrzet v pameti, nebo zda edituje nejake slozitejsi Hello, worldy, kde prinos IDE skutecne tolik nevynikne.
Nemyslím si, že pracuju na 'složitějším Hello, world'. Projekt, na kterém pracuji, není nijak extra velký, ale je subprojektem většího projektu, jehož repo je velké přes 1GB, je tak velké protože obsahuje i kód hodně 3rd party závislostí, právě kvůli snadnosti dohledávání. Tohle všechno a nějaká další repa indexuje Woboq-like server. Když nad celým tímhle nad-repem spustím Sublime, trvá mu 4 minuty to indexovat a zabere pár set MB RAM (na mém laptopu), a to AFAIK indexuje jen adresářovou strukturu. Mam určité pochybnosti, že by tohle třeba NetBeans nebo podobné IDE rozumně zpracovalo...

Hezké je, že buildovací stroje umí vyplivnout celkový cscope file, někteří kolegové to používají. Mně obvykle stačí můj lokální cscope + ten indexovací server s browser UI.
Ja take muzu nastartovat nejaky editor, otevrit konzoli s grepem a pracovat. Pouze jsem si vedom toho, ze budu pracovat vyrazne pomaleji a mene komfortne.
Také jsem si toho dříve byl vědom. Už si toho vědom nejsem.
Umisteni breakpointu vyzaduje znalost konkretniho souboru a konkretniho radku, takze mi to naopak prijde velmi podobne. Jeden pri pohledu do zdrojoveho kodu rovnou vi, ze sem chce umistit breakpoint, tak zmackne CTRL+SHIFT+B, druhy se prepne do jine aplikace a udaje tam nadatluje rucne, a tak by bylo mozne pokracovat.
GDB umí zobrazovat zdroják a nastavit breakpoint na řádku. Ale jinak ano, u toho debuggeru celkem beru, že se může hodit GUI. Kdyby se ale případně dal z nějakého IDE používat pouze front-end k debuggeru, bral bych to. Až na to budu mít chvilku, vyzkoušim ten Nemiver. Další věc je post-mortem analýza - tam mi IDE integrace dává ještě menší smysl, to je spíš opět na specializované nástroje jako CLI debugger nebo IDA (GUI). Ale to už jsem zase mimo svět Javy, pardon.
15.9.2016 21:11 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Přijde mi, že sis našel specielní případ, ale budiž, na tohle bude potřeba nějaká statická analýza, nicméně myslím, že cscope to dá.
Tak trochu. Setkavam se s tim docela casto a nevim, jak bych to jinak (jednoduse) resil. Osobne prilis velkym zastancem vnitrnich trid nejsem, nicmene je to v Jave bezna praxe.
Když řeknu, že ViM/Emacs/Sublime + cscope nebo podobné nástroje to umí taky, tak mi předpokládám řekneš, že jsou z nich tím pádem IDE... (Což je asi i do jisté míry pravda.)
Nemam s tim zadnou zkusenost, jen jsem se ted podival na nejake screenshoty. Zkusim si to nekdy rozchodit, abych mel porovnani. Blizsi popis jsi k tomu neuvedl a nemam tedy zadnou informaci, jak se to realne v praxi pouziva.
Moje zkušenost je, alespoň zatím, taková, že doba čtení zdrojáku/coredumpu/apod. závisí především na zkusnošti/schopnosti programátora spíš než rychlosti IDE. Znám lidi, kteří používají skoro holý Vim nebo holý debugger, ale vyčtou potřebnou věc rychleji než já z full-blown IDE. Vím o lidech, kteří jsou lepší programátoři než já, ale nepoužívají syntax highlighting (což třeba já osobně taky moc nechápu, ale jim to zřejmě funguje).
Jinak receno - lepsi programator programuje lepe. To jsi chtel rict? :) Nijak to ale nepopira, ze s IDE by takovi programatori mozna pracovali jeste rychleji. Velmi schopny/zkuseny programator s neefektivnimi nastroji muze stale pracovat mnohem lepe/rychleji nez mene schopny/zkuseny kolega s dobrymi nastroji.
Projekt, na kterém pracuji, není nijak extra velký, ale je subprojektem většího projektu, jehož repo je velké přes 1GB, je tak velké protože obsahuje i kód hodně 3rd party závislostí, právě kvůli snadnosti dohledávání.
Uz jsem mel urcite vyhrady vuci strukture toho projektu. Importovat to cele, vc. projektu v C a Pythonu, do Java IDE, povazuji za nesmysl.
Ale jinak ano, u toho debuggeru celkem beru, že se může hodit GUI. Kdyby se ale případně dal z nějakého IDE používat pouze front-end k debuggeru, bral bych to.
Muzes si projekt naimportovat a IDE pouzivat pouze pri debugovani. Problem ale mozna bude uz samotny import projektu (viz predchozi diskuze o make/cmake).
15.9.2016 20:23 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
a je mi to celkem jedno, klidně mě můžete považovat za neflexibilního...
FYI, ja nikde nerekl, ze bys mel pouzivat IDE, nakolik detailne neznam tvoji praci. Co ja vim, jestli pises v Jave denne, nebo zasahujes do maleho projektu parkrat za mesic? Pak proste nejsi plnohodnotny developer v Jave. Mozna firme dava vetsi smysl platit si jednoho cloveka, ktery zastane vsechno, nez specialistu na kazdou technologoii (treba proto, ze by pro ne nebylo dost prace na plny uvazek).

Znovu ale opakuji, ze je pak nesmysl se tu hadat o tom, ze IDE neprinasi vyssi efektivitu vyvoje, protoze ve vsech diskutovanych pripadech vysel najevo opak. Ty se hadas, ze ten vyznam je nepatrny, ale opak tvrdim ja i dalsi dva lidi zde (a vsichni tri, podle kontextu, vyvojem casu v Jave travime mnohem vic casu nez ty; ja budu vzhledem k veku zcela jiste nejvic juniorni, to jen pro uplnost). Ono kdyz neco prinese rozdil 50 %, ale pouzivas to tu a tam hodinu, tak ten absolutni prinos je velmi maly (a navic zhorseny o nutnost startovat IDE, coz si klidne par minut muze vyzadat, pokud to neco indexuje apod.). Kdyz to ale jsou desitky hodin tydne, tak uz je to znat sakra hodne.

Proto jsem uz nekolikrat upozornil, ze tvoje zkusenosti jsou zde velmi malo relevantni (coz tys zrejme pochopil jako osobni utok). Predmetem diskuze porad je ta efektivita IDE, kterou ty popiras, nebo zlehcujes (na zacatku vic, postupne trochu min). Netvrdim, ze tvuj setup je nutne spatny, protoze pokud v Jave vyvijis jen velmi malo, tak je pro tebe skutecne rychlejsi to udelat v editoru, ktery mas perfektne ovladnuty, nez se prepinat do zcela jine aplikace, kde bys musel pracovat uplne jinak. Z toho ale nelze vyvozovat, ze kdyz je to neefektivni pro tebe, tak je to neefektivni pro vsechny ostatni. Tu osobni rovinu je proste nutne eliminovat a ma smysl srovnavat nekoho, kdo N casojednotek vyviji v Jave v editoru (+ separatnich nastrojich) s nekym, kdo N casojednotek vyviji v Jave v IDE.
15.9.2016 21:12 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Znovu ale opakuji, ze je pak nesmysl se tu hadat o tom, ze IDE neprinasi vyssi efektivitu vyvoje, protoze ve vsech diskutovanych pripadech vysel najevo opak.
Wait, what? Měl jsem dojem, že u toho příkladu s odebráním argumentu jsme se shodli, že je potřeba editovat call site. Úplně mi pak není jasný, kde tam je to masivní zrychlení pomocí IDE. Nevím, jestli mi v rámci porovnání byl povolen cscope, nebo ne, pokud ano, tak mi přijde, že tam rozdíl není, pokud ne, bude tam jisté zdržení s grepem, to je pravda, ale vzhledem k tomu, že bude následovat ruční editace, mi to nepřišlo tak důležité.

IMHO bys mohl mnohem víc oproti editoru získat třeba na přejmenování member funkce nebo tak něčeho, což Java IDE může skutečně udělat automaticky v mnoha souborech.
Proto jsem uz nekolikrat upozornil, ze tvoje zkusenosti jsou zde velmi malo relevantni (coz tys zrejme pochopil jako osobni utok). Predmetem diskuze porad je ta efektivita IDE, kterou ty popiras, nebo zlehcujes (na zacatku vic, postupne trochu min).
Je pravda, že v Javě dělám teď dost málo, takže máš pravdu, že tvoje zkušenost bude mít větší relevanci, na druhou stranu ale IMHO můžu trochu extrapolovat ze zkušenosti s přechodem Qt Creator → editor, kdy jsem si myslel, že bez napovídání budu jako bez ruky (QtC má poměrně velice dobré napovídání pro C/C++), ale ukázalo se, že ne.

Nejde o to, že bych chtěl zlehčovat efektivitu IDE, jsem prostě v tomhle ohledu hodně skeptik. Je to jednak z důvodu mojí vlastní zkušenosti s odchodem od IDE a jednak z toho, jak vidím lidi programovat ve svém okolí. Přínosu IDE budu věřit až když budou skutečně k dispozici data, která to potvrdí - tzn. něco jako programátor potřebuje průměrně za den udělat tolik a tolik úkonů, které je IDE schopno urychlit tak a tak.

U sebe osobně cítím, že obvykle to jsou programátorské (ne)schopnosti, co mě limituje mnohem víc než absence napovídání IDE a podobné věci.
15.9.2016 21:46 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Měl jsem dojem, že u toho příkladu s odebráním argumentu jsme se shodli, že je potřeba editovat call site.
Uvadel jsem priklad s nejakym flagem, ktery je vzdy true. Rikal jsem, ze je potreba projit seznam volani(*), ale kdyz uz vis, ze ten flag je vzdy stejny, muzes jeho odstraneni zautomatizovat, tj. odstrani se i ze vsech volani dane metody.

* Ackoliv si ted vybavuji, ze IDE me snad nekdy informovalo i o tom, ze nejaky argument ma vzdy stejnou hodnotu... Nicmene podle zbezneho hledani se mozna pletu.
IMHO bys mohl mnohem víc oproti editoru získat třeba na přejmenování member funkce nebo tak něčeho, což Java IDE může skutečně udělat automaticky v mnoha souborech.
Nechtel jsem volit ten zcela nejproflaklejsi priklad, ktery je vseobecne dobre znamy. Odebrani argumentu je mene trivialni a za (skoro) zadnych okolnosti, to nejde udelat pomoci prosteho nahrazeni. U toho prejmenovani ano za predpokladu, ze se ten nazev vyskytuje jen u dane konkretni metody (popr. lze snadno odfiltrovat nezadouci soubory).
z toho, jak vidím lidi programovat ve svém okolí
To nutne neznamena, ze to delaji nejlepsim moznym zpusobem. Schopni byt muzou, produktivni taky, ale nelze vyloucit, ze s IDE by se jejich vykonnost jeste zvysila (za predpokladu, ze by je IDE psychicky nedeprimovalo).
Přínosu IDE budu věřit až když budou skutečně k dispozici data, která to potvrdí - tzn. něco jako programátor potřebuje průměrně za den udělat tolik a tolik úkonů, které je IDE schopno urychlit tak a tak.
Takova data k dispozici nikdy nebudou. Programator uzivajici IDE k reseni problemu bude pristupovat jinak nez programator bez nej. Jeden hned zapne debugger, druhy bude trochu dele koukat do kodu. Jeden zmrsenou metodu s redundantnimi argumenty zrefactoruje, druhy ji pretizi a stavajici mista ponecha bez zmeny. Jeden bude preferovat par delsich souboru, druhy vice mensich (v cemz by se tomu prvnimu hur orientovalo, protoze nedokaze tak snadno prepinat). Relevantni diskuze na Redditu.
16.9.2016 07:55 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Uvadel jsem priklad s nejakym flagem, ktery je vzdy true. Rikal jsem, ze je potreba projit seznam volani(*), ale kdyz uz vis, ze ten flag je vzdy stejny, muzes jeho odstraneni zautomatizovat, tj. odstrani se i ze vsech volani dane metody.
Ok, ale stále nerozumím, co má vlastně být na tom příkladu vidět, dikuze na mě dělá dojem, že je potřeba hledat relativně obskurní příklady, aby se dokázala vysoká efektivita IDE...
To nutne neznamena, ze to delaji nejlepsim moznym zpusobem. Schopni byt muzou, produktivni taky, ale nelze vyloucit, ze s IDE by se jejich vykonnost jeste zvysila (za predpokladu, ze by je IDE psychicky nedeprimovalo).
Ano, to je pravda.
Takova data k dispozici nikdy nebudou.
Mohly by. Alespoň vědět, co programátor typick dělá, by bylo velmi zajímavé, a to nejen pro porovnání IDE vs editory.
Programator uzivajici IDE k reseni problemu bude pristupovat jinak nez programator bez nej. Jeden hned zapne debugger, druhy bude trochu dele koukat do kodu. Jeden zmrsenou metodu s redundantnimi argumenty zrefactoruje, druhy ji pretizi a stavajici mista ponecha bez zmeny.
Přijde mi, že se snažíš dokázat, že ještě kromě neefektivity bude programátor bez IDE psát horší kód. Ty s tím fakt musíš mít hodně velký ideový problém...
16.9.2016 08:07 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ok, ale stále nerozumím, co má vlastně být na tom příkladu vidět, dikuze na mě dělá dojem, že je potřeba hledat relativně obskurní příklady, aby se dokázala vysoká efektivita IDE...
Vse jsou priklady veci, se kterymi jsem se realne setkal.
Přijde mi, že se snažíš dokázat, že ještě kromě neefektivity bude programátor bez IDE psát horší kód. Ty s tím fakt musíš mít hodně velký ideový problém...
Cetl jsi tu odkazovanou diskuzi na Redditu? Nejsem sam, kdo si to mysli, a ty argument maji svuj smysl.
16.9.2016 08:59 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Přijde mi, že se snažíš dokázat, že ještě kromě neefektivity bude programátor bez IDE psát horší kód. Ty s tím fakt musíš mít hodně velký ideový problém...
Cetl jsi tu odkazovanou diskuzi na Redditu? Nejsem sam, kdo si to mysli, a ty argument maji svuj smysl.
Píšu si... „Nikdy se nehádej se zatvrzelým Javistou. Nemá to cenu.“ :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
16.9.2016 13:54 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Kralyk zde zpochybnuje/zpochybnoval/chybne se vyjadril, prinos IDE oproti beznym specializovanym standalone nastrojum, coz rozporujeme a okolo toho se poslednich mnoho prispevku toci. Moje postoje k Jave jsou vuci tomu zcela irelevantni, nemluve o tom, ze jsem zde proti Jave vznesl i nekolik pochybnosti/obvineni/nevyhod, coz mi jako "zatvrzely Javismus" opravdu nepripada.

Ty jsi do teto diskuze, s veskerou uctou k tobe, vstoupil asi spis omylem. Chci-li posoudit vyhody IDE, musim po zjisteni, ze se jednotliva IDE extremne lisi, otazku rozdelit. Tri hlavni Javovska IDE jsou si podobna a lze je povazovat za jednu skupinu, kterou jiz lze nejak jednotne posuzovat. To se v teto diskuzi odehrava.

Turbo Pascal 7, na kterem jsem zacinal, je vlastne take IDE (ackoliv asi jedno z uplne prvnich), protoze disponoval i debuggerem apod., ale presto se na nej skoro zadne argumenty z teto diskuze nevztahuji - je jednoduse prilis odlisne. Oproti tomu Delphi a Lazarus IDE (coz je vicemene pokus o open-source klon) muzou predstavovat zase vlastni skupinu.

Mym cilem ale nebylo srovnavat veskera dostupna IDE s editory, nakolik 1) tomu nerozumim, 2) je to velmi obsahle.

Rec byla pouze o IDE pro Javu, k cemuz ty, obavam se, mnoho co rict nemas. (Rad si poslechnu zkusenosti s vyvojem v C, ale tezko proti nepouzivani IDE v C lze vztahovat stejne argumenty jako jsem zde uvadel v pripade Javy. Nekde snad ano, ale jen velmi omezene.)
16.9.2016 09:38 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Cetl jsi tu odkazovanou diskuzi na Redditu? Nejsem sam, kdo si to mysli, a ty argument maji svuj smysl.
Četl, myslím, že tam jsou i lidi s vimem, celkem bez nějaké větší diskuse. V praxi jsem se opravdu nikdy nesetkal s tím, že bych já nebo kolega nechal metodu nezrefaktorovanou jen pro to, že bych neměl IDE, které to udělá za mě.

Ale OK, budu tedy pod vlivem diskuse méně nepříátelský vůči IDE :-) Mohl bych někdy třeba nějaké zase vyzkoušet, takže děkuji různými lidem v diskusi za tipy. Akorát to asi nebude NB nebo IntelliJ, protože mi leze na nervy ta latence GUI. Ze stejného důvodu nepoužívám ViM/Emacs přes SSH, ačkoli to má jinak dost výhod.
15.9.2016 23:51 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Až bude existovat IDE, které bude 1) jazykově agnostické, 2) lehkotonážní a 3) dobře integrované s příkazovou řádkou a existujícími non-IDE-specifickými nástroji, dejte mi vědět.
Lehkotonážní z pohledu let 70., 80., 90., nebo dnešního? Pokud dnešního, tak klidně Netbeans Platform – je to podvozek a modulární systém, nad kterým si můžeš postavit prakticky libovolnou aplikaci – smysl to dává u GUI aplikací, kde využiješ různá editační okna, pohledy na projekty, služby, (virtuální) souborové systémy…

Jazykově agnostické to je – platforma nemá s Javou společného nic, kromě toho, že je v ní napsána – v Netbeans jsou podporované různé jazyky (tzn. existují pro ně moduly, které si můžeš zapnout) a píší se nad touto platformou i aplikace, které nemají s IDE nebo vývojem softwaru nic společného.

Okno s příkazovou řádkou tam máš (zvládá i zobrazení TUI aplikací jako mc, htop a klávesové zkratky jako F10 pro ukončení mc, takže je to lepší než některé nativní terminály), ale v tom až tak velký smysl nevidím (nemusím mít všechno v jednom okně, od toho mám správce oken resp. desktopové prostředí). Netbeans podporují Ant, Maven, Makefile… ve všech si můžeš navázat nějaké akce nebo vlastní skripty a pak se ti spouští v rámci sestavení aplikace (a úplně stejně to funguje i bez IDE při sestavení jen z příkazové řádky).

Pro C/C++ v Netbeans udělali velice pěknou integraci s GDB, stejně tak je tam integrovaný Mercurial, Git a SVN. V rámci Antu/Mavenu/Makefilu si pouštěj třeba Markdown procesor, nějaké externí testy, linty, nasazovací skripty, cokoli… to už je na tobě, IDE to podporuje.
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
14.9.2016 09:34 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Hlavně mi to ale není jasné principielně: V C, C++ a dalších jazycích se nad prací v editoru + příkazové řádce nidko nepozastavuje, je to celkem běžné. V Javě to najednou nejde efektivně.
K tomuhle bych něco měl: pořiďte si do týmů pár lidí co používají Windows. A uvidíš. :-)
14.9.2016 09:50 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Erm... cygwin? :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
14.9.2016 16:03 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
cygwin je skvělý na to aby se ve windows dalo pracovat a, ale pro společné scripty vypadá dobře jen do doby než se ti rozsypou pod tíhou zpětných lomítek... a budeš to flikovat pomocí cygpath...

brrrr

nemám na to zrovna příjemné vzpomínky....
12.9.2016 13:44 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
... v sublime muzes pouzivat klidne stejnou statickou analyzu kodu jako pouzivaji IDE (pro rozumne jazyky)
12.9.2016 13:55 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ano, to jsem zkousel, kdyz jsem hledal nahradu za Eclipse (kde jsem mel problemy se stabilitou). Nepamatuji uz si detaily, ale na uroven IDE se mi to dostat nepodarilo, nemluve o dalsich nevyhodach jako je zminovane spousteni a debugovani. Kralyk navic zminoval pouze to naseptavani opakujicich se vyrazu, takze to zrejme nepouziva.
12.9.2016 15:16 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
(pro rozumne jazyky)
12.9.2016 16:22 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Napsat parser a naseptavani pro Javu je vyrazne jednodussi nez na Python, PHP, o C++ radeji ani nemluve:
Pokud se tu chceme bavit konstruktivne, tak prosim. Pokud si chces postezovat, ze musis pracovat s technologii, ktera se ti nelibi a mozna ji ani nerozumis, tak to me uz nezajima.
12.9.2016 16:35 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Teoreticky ano, v praxi je to ale o necem jinym (nemluve o dynamicke analyze, kde v jave ani nevypises jake jsou tridy v "package"!).

A proto pro python mame jedi a pro javu to bez IDEcka nejde.
12.9.2016 16:38 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
kde v jave ani nevypises jake jsou tridy v "package"!
Prosim?
12.9.2016 19:57 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
http://stackoverflow.com/questions/520328/can-you-find-all-classes-in-a-package-using-reflection

(stalo me to dva pracovni dny, nez jsem se smiril s tim ze neco tak zakladniho v jave nejde :-D ... a smiril se s tim ze nejlepsi bude zustat u parsovani tech java zdrojaku regexama z pythonu)

PS: ano, uvedomuji si rozdil mezi statickou analyzou a reflectionds, yada yada yada ....
12.9.2016 21:13 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Což není chyba, ale spíš vlastnost – když ti třídy můžou vznikat dynamicky, tak těžko někde může být seznam těch tříd.

A existuje doporučení (které např. OSGi vynucuje), že by se balíčky neměly křížit napříč JARy – tzn. JAR je modul, který se dále člení na balíčky – a žádný z těchto balíčků už by neměl být v jiném JARu (můžeš mít víc verzí toho samého modulu, ale vždy se použije jen jedna).

Takže když už, tak bych na to šel přes ty JARy/moduly a jejich obsah.

Ale hlavně: jaký to má smysl? Proč je tak relevantní, v jakém balíčku třída je? V Javě jsou jiné mechanismy, jak si organizovat třídy – implementují nějaké rozhraní, mají anotaci, ServiceLoader, služby v OSGi atd. Balíčky tvoří vlastně jen globálně jedinečný jmenný prostor a slouží spíše pro programátora, aby se v tom na první pohled lépe vyznal. Z hlediska programu je celkem jedno, v jakém balíčku třída je.
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
13.9.2016 10:14 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Klidne bych popsal proc jsem to potreboval, ale v tomhle vlakne jsem si uz na javu zanadaval dost (zacina to zabugovanym testng ..)
12.9.2016 21:46 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Kontext: Implementace analyzy kodu pro textovy editor.

Reakce: Odkaz s titulkem "Can you find all classes in a package using reflection?"

Co k tomu rict...
12.9.2016 21:54 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
My bad! Jiz u komentare #265 jsem prehledl to zcela off-topic sklouznuti k runtime:
nemluve o dynamicke analyze, kde v jave ani nevypises jake jsou tridy v "package"!
Coz je nicmene k predmetu diskuze zcela irelevantni:
  1. luv:
    ... v sublime muzes pouzivat klidne stejnou statickou analyzu kodu jako pouzivaji IDE (pro rozumne jazyky)
  2. hypvofxy:
    Ano, to jsem zkousel, kdyz jsem hledal nahradu za Eclipse (kde jsem mel problemy se stabilitou).
  3. luv:
    (pro rozumne jazyky)
  4. hypvofxy:
    Napsat parser a naseptavani pro Javu je vyrazne jednodussi nez na Python, PHP, o C++ radeji ani nemluve
  5. luv:
    Teoreticky ano, v praxi je to ale o necem jinym (nemluve o dynamicke analyze, kde v jave ani nevypises jake jsou tridy v "package"!). A proto pro python mame jedi a pro javu to bez IDEcka nejde.
Holt kdyz dojdou argumenty...
11.9.2016 22:18 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
DDD je super na zobrazení složitějších datových struktur. To gdb s příkazovou řádkou tam máš taky, ale navíc hromada pěkných zobrazovátek.

Já jinak nejčastěji používám ladicí výpisy. Ono pak můžou zůstat i později v provozu a člověk pak ví, co se vlastně stalo.
Hello world ! Segmentation fault (core dumped)
8.9.2016 07:28 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Význam napíšu do komentáře (panř. @param a bla bla bla). Taky bych do komentáře mohl psát, zda je to číslo, text, datum… ale proč bych to dělal, když to můžu vyjádřit strojově čitelnou formou, které rozumí IDE, kompilátor a další nástroje a kterou každý programátor snadno přečte?

To mi připomíná můj oblíbený příklad:

/************************************************************

  Function: wait_for_reply

*************************************************************

  Inputs:  void (none)

  Returns:  int

  Description:
  

************************************************************/

int wait_for_reply(long wait_time)
{
  ...
} /* wait_for_reply() */

Tělo funkce má 225 řádků a rozhodně z něj není na první pohled jasné, jaký je význam návratové hodnoty.

8.9.2016 07:52 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pořád lepší než nevědět vůbec nic.

BTW: ten komentář psal někdo s poruchou osobnosti? Takových řádek a znaků a přitom neříká vůbec nic navíc oproti signatuře metody. Resp. spíš ještě mate, protože vstup není prázdný.
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
8.9.2016 07:57 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To byla právě podstata toho příkladu. Autorovi se asi líbily podobné normalizované hlavičky (nebo je možná generovalo nějaké IDE), ale očividně vůbec nepochopil, k čemu mají být dobré. To, že ji pak neaktualizoval, když se přidal parametr, už je jen taková třešnička na dortu.
8.9.2016 08:16 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
A v čem je výhoda to mít odděleně? Já vidím spíš samé nevýhody:
Mně přijde, že v tom není vůbec žádný rozdíl. To, že ti dokumentaci zobrazí IDE, je úplně to samé, akorát ji zobrazuješ jiným programem. Osobně mam dokumentaci otevřenou kdykoli něco dělám a je celkem jedno, jestli to je html vygenerované ze zdrojáku nebo třeba man pages.

Jestli je dokumentace integrovaná ve zdrojáku nebo ne mi opět přijde irelevantní, vývojáři musí stejně tak jako tak vynaložit úsilí, aby byla dokumentace použitelná.

Co se týče statického nebo dynamického typování, je to o tom, že každé je vhodné na něco jiného. Třeba v pythonu dává IMO smysl typovat dynamicky, protože to umožňuje rychlé prototypování a boilerplate-free kód. Ono to funguje docela dobře. Samozřejmě v systémovějších jazycích na statické typování nedám dopustit.
8.9.2016 09:27 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Mně přijde, že v tom není vůbec žádný rozdíl. To, že ti dokumentaci zobrazí IDE, je úplně to samé, akorát ji zobrazuješ jiným programem.
Javadoc lze psat k jakymkoliv tridam, metodam i fieldum bez ohledu na to, zda jsou soucasti nejakeho verejneho rozhrani. Kdyz chces k metode doplnit kratkou doplnujici poznamku, je lepsi pouzit ten Javadoc nez obycejny komentar. Kdyz potom debugujes svuj kod a dostanes se i do cizich knihoven (coz se mi stava dost casto), IDE ti okamzite zobrazi relevantni informace, ktere bys jinak musel vyhledavat nekde stranou.

V principu je to samozrejme totez, jen je to o neco pohodlnejsi a rychlejsi.
Jestli je dokumentace integrovaná ve zdrojáku nebo ne mi opět přijde irelevantní, vývojáři musí stejně tak jako tak vynaložit úsilí, aby byla dokumentace použitelná.
Dokumentace jsou ruzneho druhu a je IMHO potreba rozlisovat, o cem se bavime. Javadoc je standardizovany zpusob, jak zapsat komentar ke tride, metode nebo fieldu. Takze v praxi to muze byt treba:
/**
 * @returns a number that represents ...
 */
int foo() {
    // ...
}
vs.
/*
 * Returns a number  that represents ...
 */
int foo() {
    // ...
}
Vyznamove je to stejne a jediny rozdil je tedy v tom, zda se ten komentar da alespon castecne strojove zpracovat.

Dobre IDE umi ten Javadoc aktualizovat pri refactoringu, takze kdyz napr. prejmenujes argument, prejmenuje se i souvisejici tag '@param jmenoArgumentu'. Samozrejme je nadale zodpovednost vyvojare udrzovat komentare smysluplne a aktualni - to je ale problem, ktery se vztahuje na komentare (a potazmo cely kod) obecne. Nesouvisi to tedy ciste s Javadocem.

Dalsi vec je, ze je potreba se naucit psat Javadoc rozumne. Viz:
/**
 * Calculates sum of two numbers.
 *
 * @param a first number
 * @param b second number
 * @returns sum of numbers {@code a} and {@code b}
 */
int sum(int a, int b) {
    return a + b;
}
To je zjevne uplne blbe. Naprosto by stacilo napsat samotne @returns - ostatni informace jsou redundantni. V tomto pripade ale ve skutecnosti neni Javadoc potreba vubec, protoze signatura metody mluvi sama za sebe. Neni potreba zaplacavat si kod takovym bordelem (parkrat jsem to tak zkusil udelat a uz nikdy vic).
Co se týče statického nebo dynamického typování, je to o tom, že každé je vhodné na něco jiného. Třeba v pythonu dává IMO smysl typovat dynamicky, protože to umožňuje rychlé prototypování a boilerplate-free kód. Ono to funguje docela dobře.
Souhlasim.
8.9.2016 09:37 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Použití odčítání v mém příkladu nebylo vůbec náhodou. Bylo to právě proto, aby typy neobsahovaly vše potřebné.
Hello world ! Segmentation fault (core dumped)
8.9.2016 10:13 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ale to je trochu divny argument, ne? Typy resi druh hodnoty, ale nikoliv jeji presny vyznam. Znalost typu ti muze pomoct ten vyznam pochopit, ale to je vsechno.
/* Substracts b from a. */
function sub(a, b) {
  return a - b;
}
Kdyz neuvidis telo implementace, ale pouze hlavicku funkce a komentar, dozvis se, ze provede odecteni druheho argumentu od prvniho. Vraci to ale vubec neco? Snad ano, ale jiste to nemas - zrovna tak by se vysledek mohl nekam ulozit. A uz vubec nevis, nad cim se to odecteni provadi. Asi to budou cisla. Ale jsou to doubly, nebo objekty reprezentujici komplexni cisla, nebo neco, co ti umoznuje pracovat s velkymi cisly?
/* Substracts b from a. */
int sub(int a, int b) {
  return a - b;
}
Zamerne jsem ve druhem prikladu nepouzil Javadoc, aby priklady byly lepe srovnatelne. Oba kody nesou stejnou poznamku, ale ze druheho okamzite vidis, ze od integeru a se odecita integer b a funkce vraci opet integer. Ackoliv neni nikde receno, co ten integer na vystupu znamena, lze snadno odhadnout, ze to asi bude vysledek toho odcitani.

Kdyby ta funkce nevracela nic, ale ty ses jeji vystup presto pokusil ulozit do promenne, Java ti to ani nedovoli zkompilovat. Pokud to same napises v JS v nejake vetvi, ktera se spousti jen v minorite pripadu, vubec se o te chybe nemusis dozvedet.

Dalsi priklad:
function foo() {
  return 5;
}

// ... jedno z pouziti
var bar = foo;

// ...
var a = bar();
console.log(a + 2);
Pak chces funkci foo zrefactorovat:
function foo() {
  return "5";
}
Samozrejme vis, ze musis upravit vsechna pouziti. Kdyz grepnes 'foo()', zminovany priklad nenajdes. Kdyz grepnes 'foo', najdes ono prirazeni do promenne. Takze si musis do nejakeho TODO napsat: "nezapomenout grepnout bar". A takhle postupne do hloubky, uroven po urovni, prochazet cely kod a rucne opravit veskera pouziti.

Pokud to zapomenes opravit, co bude vysledkem?
$ js
> 5 + 2
7
> "5" + 2
'52'
Tohle nekomu vazne prijde jako ten spravny, moderni zpusob, jak vyvijet spolehlivy software v 21. stoleti?

V Pythonu je situace o trochu lepsi, protoze sice ne staticky, ale porad je silne typovany. Misto naprosto neocekavatelneho vystupu "52" to tedy skonci vyjimkou TypeError. Presto se vse projevi az pri spusteni a je tedy potreba mit otestovane naprosto vsechny kombinace vetvi, kterymi muze exekuce protect, vc. domnele naprosto trivialnich pripadu. A nebo proste doufat, ze je to tak nejak dobre.
8.9.2016 11:35 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
S tím odčítáním to je velmi mizerný příklad pro prosazování statického typování, protože tyhle aritmetický funkce se typicky člověk snaží od typu abstrahovat pomocí generik, takže typicky tam ty typy stejně nemáš :-D

To chování v JavaScriptu (příp. PHP, apod.) je spíš způsobeno quirkama v těchto jazycích (hlavně quirky operátory) spíš než dynamickým typováním (i když to samozřejmě souvisí).
8.9.2016 11:48 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Proste jsem jen pouzil priklad, ktery byl ve hre. Snazit se zobecnovat aritmeticke funkce pomoci generik mi prijde jako velmi nestastny krok, ktery nedava nejmensi smysl - ani z hlediska prehlednosti/citelnosti kodu, ani z hlediska vykonu (protoze se bude zbytecne delat autoboxing). Jednoduse bych ty funkce pretizil. Staticke typovani pak zustava.
8.9.2016 13:17 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Snazit se zobecnovat aritmeticke funkce pomoci generik mi prijde jako velmi nestastny krok, ktery nedava nejmensi smysl - ani z hlediska prehlednosti/citelnosti kodu, ani z hlediska vykonu (protoze se bude zbytecne delat autoboxing).
Autoboxing? Huh? Tady aby člověk v každém komentáři připomínal, že existují i jiné staticky typované jazyky než Java.
Jednoduse bych ty funkce pretizil. Staticke typovani pak zustava.
Pointa generik je právě v tom, že nemusíš ručně psát 200 funkcí, které se liší pouze typem argumentu.
8.9.2016 13:36 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tady aby člověk v každém komentáři připomínal, že existují i jiné staticky typované jazyky než Java.
Ona se ta diskuze smerem k Jave docela dost strhla a nezvladam uz sledovat, ktere subthready vic a min.
Pointa generik je právě v tom, že nemusíš ručně psát 200 funkcí, které se liší pouze typem argumentu.
Ano, samozrejme. Jako priklad jsi ale uvadel ty aritmeticke funkce, kde me nenapada moc prikladu, kde by pouziti generik bylo vyhodne. U nejakych trivialit jako je scitani poli snad ano, ale treba pro prumer uz vetsinou ani nedava smysl mit to obecne nadeklarovane pro int a long, protoze vysledek bys chtel jako realne cislo. Takze neco jako nasledujici je IMHO nesmysl:
template <T> T avg(std::vector<T> &nums) {
Spis by to melo byt:
template <T> double avg(std::vector<T> &nums) {
Jenze jakmile se vsim stejne pracujes jako s doublem a konvertujes to na nej, tak je otazka, jestli je lepsi tam rovnou neposilat doubly - nema smysl se tvarit, ze ta funkce je zcela obecna, kdyz s tou hodnotou stejne pracujes zcela specifickym zpusobem.

Jako takovy Javovsky pristup mi prijde implementace, ktera bere doubly (jako stream) a vraci double. Pro ostatni typy se udela jednoducha implementace, ktera te prvni funkce predhazuje stream prekonvertovanych hodnot.
8.9.2016 13:51 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jako priklad jsi ale uvadel ty aritmeticke funkce, kde me nenapada moc prikladu, kde by pouziti generik bylo vyhodne.
Co třeba různé min/max funkce, potom clamp nebo sgn a podobně...
Jenze jakmile se vsim stejne pracujes jako s doublem a konvertujes to na nej, tak je otazka, jestli je lepsi tam rovnou neposilat doubly
To mi nepřijde jako dobrý nápad, musel bych celý vector nejdříve konvertovat na vector doublů...
8.9.2016 14:02 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Co třeba různé min/max funkce, potom clamp nebo sgn a podobně...
Beru. Ve zminovanem C++ by reseni pomoci templates bylo velmi ciste. Pokud bych si chtel usetrit psani v Jave a extremne nezalezelo vykonu, asi bych to zapsal takhle:
static <T extends Number> T min(T[] nums) {
    T min = nums[0];

    for (T num : nums) {
        if (num.doubleValue() < min.doubleValue()) {
            min = num;
        }
    }

    return min;
}
Bohuzel to nejde pouzit pro pole primitivnich typu (int[] ti to nevezme), coz je jedna z bolesti Javy. Vyplati se preferovat Listy a boxing-classes - u vykonostne citliveho kodu by bylo potreba rozdil premerit, ale mam za to, ze jsem to uz parkrat zkousel a nijak hrozne to neni.
8.9.2016 19:11 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
A nebo když tam budou matice či komplexní čísla. To se už na double konvertuje docela blbě.
Hello world ! Segmentation fault (core dumped)
8.9.2016 19:18 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pokud bys mel pro dane typy patricne operatory nadefinovane, tak by to v C++ porad slo. V Jave ne a jedinou moznosti uz by bylo napsat dve metody, nebo rozvetvit podle typu argumentu (a akceptovat nejvyssiho spolecneho predka, tj. typicky java.lang.Object). Tohle jsou ale spis ucebnicove priklady, se kterymi se v praxi (nastesti) prilis casto nesetkavam.
8.9.2016 13:57 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jako takovy Javovsky pristup mi prijde implementace, ktera bere doubly (jako stream) a vraci double. Pro ostatni typy se udela jednoducha implementace, ktera te prvni funkce predhazuje stream prekonvertovanych hodnot.
To je skutečně bohužel celkem typický Javovský přístup, kdy se vymýšlí relativně složitý objektový systém (jsou na to potřeba Streamy), a to jen pro to, že Java má retardovanou podporu pritivních datových typů.

Ono totiž další výhoda té generické varianty je, že může generalizovat i ten výsledkový typ toho průměru - můžu například říct, že mi stačí float a nepotřebuju double. Nebo můžu mít vlastní datový typ.
8.9.2016 14:06 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jo, bordel v primitivnich typech (a jejich zlobeni u poli, generik apod.) je velka bolest Javy. Jak jsem psal - vyhybat se polim a primitivnim typum tam, kde by to mohlo vadit.
8.9.2016 13:45 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ale to je trochu divny argument, ne? Typy resi druh hodnoty, ale nikoliv jeji presny vyznam. Znalost typu ti muze pomoct ten vyznam pochopit, ale to je vsechno.
Tohle byla celá pointa toho příkladu. Tvrdil jsi, že hlavní jsou typy. Tady máš ukázku, že typy nestačí a že dokumentace je důležitjší.
Hello world ! Segmentation fault (core dumped)
8.9.2016 13:52 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To jsem rozhodne netvrdil, leda bych se spatne vyjadril. Tvrdim, ze z typu lze vycist nejake dalsi informace a navic je to uzitecne pro statickou kontrolu (kompilaci, lint, to je jedno). Stejnou informaci lze rucne uvest do dokumentace, ale tim prijdes o tu kontrolu.
8.9.2016 19:14 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tvrdil jsi to hned na začátku tím, jak se ti nelíbila dokumentace.
Hello world ! Segmentation fault (core dumped)
8.9.2016 19:24 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nechce se mi procitat znovu celou diskuzi, ale jen vyhledanim slova "dokumentace" jsem to nenasel. O tom se ale nechci prit, protoze at uz to tak nekde vyznelo, nebo ne, jedna se o komunikacni chybu a na zaveru uvedenem v predchozim komentari se asi vicemene shodujeme, takze neni potreba to dal rozebirat.
8.9.2016 11:25 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Javadoc lze psat k jakymkoliv tridam, metodam i fieldum bez ohledu na to, zda jsou soucasti nejakeho verejneho rozhrani. Kdyz chces k metode doplnit kratkou doplnujici poznamku, je lepsi pouzit ten Javadoc nez obycejny komentar. Kdyz potom debugujes svuj kod a dostanes se i do cizich knihoven (coz se mi stava dost casto), IDE ti okamzite zobrazi relevantni informace, ktere bys jinak musel vyhledavat nekde stranou.
Tohle mi přijde relevantní jen pro někoho, kdo dělá jen Javu a jen v Javovském IDE (což je IMHO trochu jak smrková monokultura, ale tak zas chápu, že lidi se chtějí specializovat). Osobně IDE už nějakou dobu nepoužívám (ani na Javu), IDE a jeho vymoženosti mi přijdou těžce nadhodnocené. V práci pracuju na projektu, který je napsaný v C, Pytonu a Javě + obsahuje dost generování kódu, jde od low-level základu až po nějaké vyšší úrovně jako pluginy v Pythonu, rest api a jánevimcovšechno. Dokumentace se řeší jednotně, "bokem", pro všechny jazyky. I hobby projekty mám typicky celkem heterogenní. Mít otevřený browser s X taby různorodé dokumentace od Y různých knihoven v různých jazycích, případně man pages, to mi přijde úplně normální / úplně v pohodě. Není na tom nic špatného, naopak, člověk se naučí pracovat s různorodými technologiemu.

Snažit se tohle všechno narvat do nějakého IDE by bylo akorát přítěží navíc, člověk by musel používat X různých IDE pro každý jazyk... To mi přijde lepší mít nějak příjemně nakonfigurovaný editor a nazdar.
8.9.2016 11:45 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
IntelliJ ma plugin i pro Python, takze kdyz v praci potrebuju misto vyvoje serveru (Java) napsat nejakou utilitku pro interni ucely, jednoduse si ten soubor otevru primo v IntelliJ a edituju ho tam. Nelze s tim pochopitelne pracovat stejne jako s Javou, protoze je to proste Python, ale pouzivam editor, ktery mam nastaveny a na ktery jsem zvykly.

Hodne univerzalni IDE je Eclipse, do ktereho existuji pluginy pro Javu, PHP (PDT), C/C++ (CDT), Python (PyDev) a dalsi. Je to ale spis teorie nez praxe. Kdyz jsem Eclipse zacal pouzivat pracovne, narazel jsem neustale na problemy se stabilitou. Zminovane C/C++ mi v Eclipsech nikdy poradne nefungovalo - snad by se to dalo pracne nakonfigurovat, ale pro ty sve jednoduche projektiky jsem nakonec vzdy radeji sahl po obycejnem editoru.

Celkove nemam problem s tim mit IDE pro Javu a editor na vse ostatni. Umim mezi tim volne prechazet a nejak mi to ani nevadi.
8.9.2016 13:03 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Minimalne pydev neni IDE pro python ale IDE, ktere vyuziva python, protoze vytvari strukturu projektu, ktera je specificka pro pydev. Mimochodem, ta struktura projektu, kterou vytvari, je hodne javova ... a vubec ten pristup "serem na zbytek sveta udelame si to po svym" je celkem typicka java.
8.9.2016 13:15 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
$ tree -a FooProject/
FooProject/
|-- main.py
|-- .project
`-- .pydevproject

0 directories, 3 files
8.9.2016 13:33 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
verim, ze to jde ... PyDev jsem uz nastesti roky a roky nevidel ... ale kouknul jsem alespon do aktualni dokumentace, a porad tam doporucuji vsechno davat do src/ a src/ pridat do PYTHONPATH, a nastaveni PYTHONPATH se pak uklada kam ... do toho ".pydevproject"?! ... tzn bude funogvat pouze v PyDev (jasne v jinym IDEcku si tu PYTHONPATH zase naklikas, ale jak muzes verit tomu, ze si to tam neuklada radu dalsich nastaveni a nespadne ti to pak na nejake chybe v pulce behu, jen protoze to nepoustis/nebuildis v PyDdev).
8.9.2016 13:40 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
a samozrejme v te ofic. dokumentaci (stejne jako ty) pouzivaji CamelCase pro pojmenovani balicku, coz se moc v python svete nenosi, ale je to typicka javovina
8.9.2016 13:48 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
  1. neni to nazev balicku, ale nazev projektu
  2. zavrhnout projekt kvuli tomu, ze autori v examplech pouzivaji jinou jmennou konvenci, muze jen fanatik
  3. pro nazvy balicku v Jave se nepouziva CamelCase ani camelCase
8.9.2016 14:09 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
  1. ... tak jako tak skoncis s necim co na prvni pohled vypada nestandardne v python svete
  2. zavrhnout vyvojovy nastroj pro X, protoze nedodrzuje (sepsane - PEP8 je tu uz 15 let) standardy X mi prijde naprosto racionalni
  3. tak zkouset ten fail "tld.mycompany.myregion.myorganizationalunit.myapp.mypackage.mysubpackage" i pro python balicky ... to by bylo zajimave :)
8.9.2016 16:06 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
  1. vytvorit adresar, do ktereho umistuju *.py soubory, je v Python svete tak jako tak nestandardni?
  2. nedodrzovani PEP8 se vztahuje na examply na webu - na uzivatele PyDev to nema zadny vliv
  3. dalsi utok, ktery s predmetem diskuze nema vubec nic spolecneho - PyDev k tomu uzivatele nijak nevede, natoz, aby to vynucoval
Na tve dalsi prispevky nebudu reagovat, protoze neumis zachovat ani castecne otevrenou mysl - a z uzavrene mysli se ven nic nedostane.
8.9.2016 16:58 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
hele kdybych vedel ze te to takto nastve, tak si to necham pro sebe :/
8.9.2016 20:09 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Dneska se to tu nějak vyostřuje.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.9.2016 20:30 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Trochu. Osobne nastvany nijak nejsem a chapu, ze nekdo diskuzi bere min vazne a pristupuje k ni vice sarkasticky a (mozna) humorne, ale pak je to naopak nekompatibilni se snahou vest diskuzi vecne a necemu novemu se priucit (coz je duvod, proc jsem do ni tak aktivne vstoupil).
8.9.2016 13:42 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Proste jsem vytvoril novy projekt a v nem vytvoril novy soubor. Nemusel jsem nikde nic priohybat a nejak zajistovat, aby to slo. Takze v predchozim komentari jen lzes a pomlouvas, a tak se ostatne chovas v cele teto diskuzi. Vyjadrujes se k necemu, o cem skoro nic nevis ("PyDev jsem uz nastesti roky a roky nevidel"), ale presto se tvaris jako bys mel patent na pravdu.
8.9.2016 13:52 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
ad hominem? GTFO :)

z ofic. dokumentaci PyDev http://www.pydev.org/manual_101_project_conf.html
Create default 'src' folder and add it to the pythonpath: If you don't leave that option checked, you'll have to create the source folder(s) yourself after the project is created (which is covered in the next tutorial page)."
takze bud lzes nebo ma PyDev jeste navic zasadni chyby v dokumentaci
17.9.2016 15:38 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace

Tak dlhá diskusia a pritom taká blbosť ...

To či použiť IDE alebo nie je obyčajná osobná preferencia (tí ktorí preferujú Javu bez IDE sú masochisti, ale je to ich vec). Nevidím dôvod presviedčať niekoho nástroj, ktorý mu nevyhovuje.

Ja som kedysi preferoval IDE, ale neskôr som prešiel na VIM s jedi (dosť dobré autocomplete pre python vrátane blbostí ako zobrazenie dokumentácie), ultisnips (snippety), fugitive (integrácia GIT), syntastic (kontrola kódu, pylint atď), python-mode (refaktoring) a mnoho ďalších pluginov. Nepovažujem to za IDE, ale mnoho funkcií sa dá používať podobne jednoducho ako z IDE (ukážka programovania).

Okrem toho podobné skrakty na manipuláciu s oknami ako vo vime mám nastavené v Awesome WM, vo Firefoxe mám vimperator, v zsh mám aktivovaný režim editácie riadku emulujúci vim, v pythone používam prompt toolkit s editáciou nastavenou na emuláciu vimu ...

Teraz keď náhodou sadnem k niektorému IDE chýba mi tam poriadny editor. Nemyslím teraz len klávesové skratky, ale napríklad možnosť vrátiť sa (undo) ku ktorémukoľvek kroku, perzistentné undo atď.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
17.9.2016 16:12 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To zní všechno zajímavě. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
17.9.2016 17:05 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nevidím dôvod presviedčať niekoho nástroj, ktorý mu nevyhovuje.
O to neslo. Kazdy si muze pouzivat co uzna za vhodne.
mnoho funkcií sa dá používať podobne jednoducho ako z IDE (ukážka programovania)
Pekne, diky. Ja momentalne zkousim pouzivat Geany, protoze na ovladani vimu si dlouhodobe nemuzu zvyknout, ale jeste jsem si nenasel cas ho poradne nastavit.
17.9.2016 23:37 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Úplne ťa chápem a viem si predstaviť to pohodlie. Nikdy som si ovšem nenašiel čas na VIM viac ako na deň, dva. Takže mne čo vadilo, na uloženie súboru klasicky stlačím Ctrl+S a vo VIM som musel vybehnúť z editačného módu a uložiť ho, čo ma štvalo, chápem že to nebudem robiť a bude sa to dať naskriptovať, len mi unikla tá výhoda ho použiť.

Pretože som v práci nútený používať Win, tak som si skratky v IDE a aj editore zjednotil na skratky ktoré sú obvyklé vo Win.

Takže nepoužívam jeden editor, používam aj správcu súborov a všade som si zjednotil klávesové skratky aby som bol všade doma.

Po dlhom čase som oprášil aj QT Creator a ako prvé som si riešil nastavenia.

Život je proste otázka priorít.

Ja som proste ochotný venovať čas nastaveniam ak mi ten editor/IDE môže uľahčiť prácu, teda teraz konkrétne myslím QT Creator, kde ako amatérovi na C++ mi svojim spôsobom píše príkazy práve to IDE.

Samozrejme to video čo si pastol ako kódiš, je úplne inde ako som ja :-)
KERNEL ULTRAS video channel >>>
18.9.2016 00:20 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Takže mne čo vadilo, na uloženie súboru klasicky stlačím Ctrl+S a vo VIM som musel vybehnúť z editačného módu a uložiť ho, čo ma štvalo, chápem že to nebudem robiť a bude sa to dať naskriptovať, len mi unikla tá výhoda ho použiť.
Tak nejak. Ta idea vice rezimu se mi svym zpusobem libi, ale na druhou stranu mi to dela potize. Ve vimu by asi clovek mel byt prevazne v prikazovem modu a pouze dle potreby jej opoustet, ale to pro me bylo nepohodlne a nechtel jsem se pred kazdym zahajenim psani prepinat do editacniho modu a pote jej zase opoustet.
18.9.2016 11:36 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak typicky se do editačního módu dostaneš nějakým příkazem typu "o" (open line), "c..." (change cosi) a tak dále. Ie. přestaneš nad tím uvažovat jako "chci se přepnout do editačního módu a potom udělat to a to...", ale rovnou jako "udělám to a to...".

Jinak ale třeba mně osobně to taky úplně nevyhovuje, to už bych spíš šel do Emacsu, přijde mi, že má méně strmou učící křivku. Ale je to hlavně o osobní preferenci...
18.9.2016 13:22 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak typicky se do editačního módu dostaneš nějakým příkazem typu "o" (open line), "c..." (change cosi) a tak dále. Ie. přestaneš nad tím uvažovat jako "chci se přepnout do editačního módu a potom udělat to a to...", ale rovnou jako "udělám to a to...".
+1. Já vim taky nijak extra neumím, ale těch příkazů jsem se docela rychle naučil desítky a vůbec nad tím nepřemýšlím.
Jinak ale třeba mně osobně to taky úplně nevyhovuje, to už bych spíš šel do Emacsu, přijde mi, že má méně strmou učící křivku. Ale je to hlavně o osobní preferenci...
Já mám třeba emacs v TODO. Několikrát jsem se do něj už zkoušel dostat a poměrně jsem přitom narazil, protože některé ty klávesové zkratky jsou fakt šílené, oproti tomu mi vim přišel mnemotechnický a v pohodě. Na druhou stranu když vidím u pár lidí kolem sebe co dělají v emacsu, tak chci prostě taky (teď používám Sublime).
18.9.2016 13:33 Fluttershy, yay! | skóre: 85 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Zkoušel jsi vanilkový GNU Emacs, nebo některý starter kit?
18.9.2016 14:31 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Oboje. Jako starter jsem zkoušel Spacemacs. Vanilky mám asi 150 řádků konfigurace, ale pořád to není ani vzdáleně ono.

Podle mě se to chce do emacsu někdy ponořit, nemá smysl ho jen tak oťukávat, protože vždycky do příště zapomenu co jsem se naučil minule. Problém je, že v Sublime jsem tak brutálně efektivní, že prostě učení se základů v emacsu je docela nepříjemné a rozhodně to nejde používat při práci.
18.9.2016 14:36 Fluttershy, yay! | skóre: 85 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pokud jde o výchozí ovládání (z přibaleného tutoriálu), tak to je stejné jako v GNU Readline. Módy, makra apod. jsou jiná věc.
18.9.2016 18:44 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak typicky se do editačního módu dostaneš nějakým příkazem typu "o" (open line), "c..." (change cosi)
Tak tyhle dvě zrovna vůbec neznám.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 11:23 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
na uloženie súboru klasicky stlačím Ctrl+S
map <C-S> :w<CR>
imap <C-S> <ESC><C-S>a

Aby to fungovalo v termináli musí sa pred vimom nastaviť riadenie terminálu stty -ixon (prípadne to hodiť do bashrc). Inak za pár € sa dá kúpiť taký hardvérový pedál a nastaviť vim tak, aby bol vo vkladacom režime keď je pedál stlačený.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
18.9.2016 17:40 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Vedel som že to nejak pôjde.

Ja v terminály, teda aj mimo neho používam asi väčšine neznámi editor Textadept, má to jednu veľkú výhodu, že by default tam fungujú všetky skratky ako v klasickom textovom editore (niektoré majú amiesto Ctrl -> Alt). Je rozšíriteľný cez LUA a existuje samozrejme aj LUA rozšírenie ktoré ho prerobí na VIM :)
KERNEL ULTRAS video channel >>>
18.9.2016 11:44 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Osobně ve vimu zase tak často neukládám, vzhledem k tomu, že mi neztrácí neuložené úpravy a umí je při příštím startu obnovit ze swapfile. Klávesovou zkratku si můžeš nastavit, ale nedělal jsem to, vždy se snažím minimalizovat custom konfiguraci a maximalizovat využití default konfigurace. A popravdě mám už ESC : w q (ukončení s uložením) a ESC : w (uložení) tak nacvičené, že je mi úplně jedno, že je tam nějaký režim. Popravdě mě to zdržuje daleko méně než dialog Yes-No-Cancel, zda chci uložit změny při ukončení editoru.

Navíc díky tomu, že se vim pouští z příkazové řádky, tak ho používám prakticky stejně jako se používal editor v nortonu (akorát používám příkazy místo tabulky s adresářovou strukturou.

Ale taky u mě platí, že se v používání editoru neliší práce a domov.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 17:52 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak hlavne keď testujem nejaký regulárny výraz, to je furt save, keď zisťujem na čom to troskotá, ale samozrejme takých prípadov je viacero.

Prv ma Vim aj Emacs chytal, keď človek vidí tú komunitu okolo čo všetko majú vychytané, ale moje pokusy vždy troskotali na tom, že to vždy viac salo ako prispôsobenie si nejakého klasického editora/IDE.
KERNEL ULTRAS video channel >>>
18.9.2016 12:23 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Dík za demonstraci, tohle mi připomíná některé kolegy vim-power-usery...

Když nad tím tak uvažuju, nepřipadá mi Python z hlediska IDE nějak zásadně odlišný od Javy.
18.9.2016 13:09 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace

Rozdiely tam sú ;) Než sa tú doženú javisti skúsim pár drobností vysvetliť:

V prvom rade presnosť autocomplete v jave je blízka 100%. V pythone záleží od konkrétneho projektu, u seba odhadujem tak 70%, vo zvyšných prípadoch sa mi zobrazia len slová použité v otvorených zdrojových kódoch.

Python má síce silnú typovú kontrolu, ale typy sú v niektorých prípadoch známe až počas behu. Existujú dialekty pythonu ako RPython, ktoré vyžadujú aby v každom bode bol dopredu známy typ premenných a to bez akéhokoľvek zápisu typov (podobne ako type inference v haskelli). V takom prípade by mal byť autocompleter pre python rovnako presný ako pre Javu. Čím viacej potom človek používa python nad rámec toho, čo je bežné v Jave tým horšie sa bude dať kód analyzovať staticky a tým menej presne bude fungovať auto complete.

To isté, čo pre auto complete platí aj pre refaktoring. Ja refaktorujem pomocou rope, ten mám vo vime nabindovaný na klávesovu skratku, takže stačí dať kurzor na symbol, ktorý chcem zmeniť, stlačiť klávesovú skratku, upraviť a rope sa postará automaticky o zmenu v zdrojových kódoch (alebo poloautomaticky keď dám review). Problém nastáva v situácii kde by som namiesto import modul.Trieda napísal vlastnú funkciu, ktorá by importovala zo stringu (Trieda = moj_import('modul.Trieda')).

Samozrejme mám tam také blbosti ako zobrazenie dokumentácie počas auto complete, zobrazenie argumentov, zobrazenie dokumentácie v novom okne klávesovou skratkou, skoky na definíciu symbolu ...

Ďalej používam ptpython/ipython, v ktorom sa môžem hrať s python konzolou, zvyčajne aj s možnosťou automatického reloadu zmenených modulov, takže môžem písať zdrojový kód a vo vedľajšom okne rovno skúšať, či to funguje správne.

Väčšinou píšem webové aplikácie, ktoré debugujem vo werkzeug, čo je debugger, ktorý sa zobrazí vo webovom prehliadači. Kedysi som sa hrel aj s wdb, ktorý funguje nie len pre webové aplikácie, ale tých píšem minimu, takže werkzeug sa mi zdá praktickejší.

Vďaka tomu, že väšina nástrojov pre Python veľmi dobre použiteľná samostatne môžem pracovať efektívne aj bez IDE. S Javou sa akosi tak predpokladá, že programátor používa IDE.

Ešte nakoniec by som spomenul, že pred vimom som používal chronologicky kwrite, quanta+ (v tom období som veľa pracoval s PHP), Eclipse, Netbeans (Java), KDevelop, a nakoniec vim. Medzitým som chvíľu skúšal PyCharm, ale to bolo v časoch keď som mal pomalý počítač a PyCharm bol schopný zobraziť progressbar po každom stlačení klávesy ;-) Inak také managovanie balíkov z virtualenv bolo v PyCharm utrpenie, automatický reload djanga viacej nefungoval než fungoval ...

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
18.9.2016 19:18 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Python má síce silnú typovú kontrolu, ale typy sú v niektorých prípadoch známe až počas behu.
Od kdy se tomu říká silná typová kontrola, když je to výhradně za běhu a prostřednictvím duck-typingu, tedy v případě obecného Pythonu prohledáním několika hashtables na název hledaného atributu (metody)?

Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 19:35 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace

Anglicky sa tomu hovorí "strong typing". Python pri operáciách kontroluje typy, takže výraz "3" + 4 mi neprejde na rozdiel od takého Javascriptu, alebo PHP. Tak isto pri volaní metódy kontroluje, či volám callable objekt, alebo nie. Tu je vysvetlenie z python wiki.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
18.9.2016 19:53 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nieje pravda:
python -i
Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3
>>> b = 3.14
>>> print a + b
6.14
Ja som chcel aby "a" bolo "int" a vyvolalo to chybu.
KERNEL ULTRAS video channel >>>
18.9.2016 20:18 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ve kterém jazyce ti sčítání intu a floatu vyhazuje chybu?
18.9.2016 20:38 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak inak:
python -i
Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3
>>> type (a)
<type 'int'>
>>> b = 3.14
>>> a = a + b
>>> type (a)
<type 'float'>
Ani neriešim v akom jazyku to spôsobí ERROR, alebo WARNING, ale proste pod striktným dodržiavaním typov si predstavujem niečo iné. Premenná sa pretypovala bez jediného upozornenia.
KERNEL ULTRAS video channel >>>
18.9.2016 21:01 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Znova: ve kterém jazyce to takhle nefunguje a proč by to mělo dávat upozornění?

AFAK to není přetypování, neboť float (reálné číslo, ℝ) z matematické definice můžeš zvýšit o int (celé číslo, ℤ) a výsledkem bude opět float. Stejně tak není přetypováním dělení celého čísla celý číslem, z čehož ti vyjde float (resp. reálné číslo), to je prostě jen definice výstupu z matematické operace. Když si na tohle stěžuješ, tak si nestěžuješ na python, ale na matematiku.
18.9.2016 21:23 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Znova: ve kterém jazyce to takhle nefunguje a proč by to mělo dávat upozornění?

Kolikrát se budeš ptát, než ti dojde, že to nikoho nezajímá?
AFAK to není přetypování, neboť float (reálné číslo, ℝ) z matematické definice můžeš zvýšit o int (celé číslo, ℤ) a výsledkem bude opět float.
Programovací jazyky ovšem podle matematických definic nefungují. Navíc se tu bavíme o míchání typů a nikoliv o čístelných oborech.
Když si na tohle stěžuješ, tak si nestěžuješ na python, ale na matematiku.
On si na to ovšem nestěžuje, tudíž se tato implikace neuplatní.

Můžeš se zkusit místo argumentačních kliček a podivných výzev vrátit zpět k tématu? :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 22:13 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Kolikrát se budeš ptát, než ti dojde, že to nikoho nezajímá?
Počkat, co? Mě to přece zajímá. Vážně. To se jako nepočítám? Uměl bych najít jazyk, kde to tak být nemusí a můžeš si to změnit (to by mělo jít v py), ale žádný takový, který to dělá by default neznám. Tak se ptám.
Programovací jazyky ovšem podle matematických definic nefungují. Navíc se tu bavíme o míchání typů a nikoliv o čístelných oborech.
To teda fungují, protože matematické definice jsou do nich zcela cíleně zabudované jejich autory. Zrovna tady je zabudované, že výsledkem operace x.__add__(y) je číselná hodnota zachovávající nejvíc informace. Kde v tom vidíte nějaké přetypování je mi skryto. Nedojde přitom ke změně jedné hodnoty na jinou, ale k vytvoření zcela nového objektu, který je v souladu s matematickými principy, které do pythonu byly cíleně zabudovány.

Mnohem lepší otázka by třeba byla, kdy python 2.7 přetypovává int a long, což na matematice založené není a člověk to nemusí čekat.
19.9.2016 08:15 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nikoho nezajímá odpovídat. Ptáš se vehementně, jako to dělá Franta Kučera, jako by byli spoludiskutující povinni zodpovídat libovolné otázky. Jsi v diskuzi, ne u soudu. :)
To teda fungují
Protipříklady jsou již v diskuzi. Obávám se, že diskuze pomalu ale jistě ztrácí smysl, takže vás tu asi brzo zanechám.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
19.9.2016 08:31 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Nikoho nezajímá odpovídat.
Protože to je víceméně řečnická otázka. Ale je na místě, Bedňa si stěžoval, že int + float negeneruje chybu, ale žádný jazyk tohle AFAIK nedělá, dokonce ani C#, který je jinak v tomhle dost vehementní.
19.9.2016 15:30 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Bedňa si stěžoval, že int + float negeneruje chybu
Nestěžoval. Proto ta reakce nedává žádný smysl. On se pouze snažil revidovat definici, podle které míchání typů představuje weak typing, zatímco jeho absence strong typing.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 21:23 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak napr. v Cečku je treba na to špeciálny prepínač pri kompilácií (aby som dostal upozornenie), inak ureže tú desatinnú časť a výsledok nebude aký som očakával (ale nezmení typ premennej), ale toto stále proste nepočítam za silnú typovú kontrolu. Takže keď je mi známe že PHP zrátava reťazec až po poslednú číselnú hodnotu s iným číslom, tak mi to príde rovnako "strong typing" ako keď si Python pretypuje premennú ako mu pasuje, alebo že Cečko zabudne na tých pár drobných za desatinou čiarkou.
KERNEL ULTRAS video channel >>>
18.9.2016 21:30 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Proměnná v Pythonu nemá typ, ten přísluší k objektu, který proměnná pojmenovává. Takže nemá smysl se bavit o tom, jak se s typem proměnné nakládá, když jí žádný nepřísluší.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 21:38 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Heh, tak vieš, ja poznám Python len z rýchliku, ale to o tej silnej typovej kontrole mi proste nesedelo, tak som sa musel zapojiť :)
KERNEL ULTRAS video channel >>>
18.9.2016 22:19 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
ako keď si Python pretypuje premennú ako mu pasuje
Python si hodnotu nepřetypuje jak mu pasuje, float je výsledkem volání .__add__() nad intem a floatem. Co řešíš fakt nechápu - že funkce může vracet různé typy podle typů parametrů?

Jinak imho pleteš dohromady dvě věci - python má silné typy/typování, nikoliv silnou typovou kontrolu. Typová kontrola je v pythonu 2.7 nulová (v 3.5 je částečně volitelná) a nechá tě udělat co se ti zachce - je na objektech, jestli umí na zadané zprávy (resp. volání metody s danými parametry) nějak reagovat. Zjistit (ale také modifikovat) se to dá až při runtime.
18.9.2016 23:11 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak téma začala na "strong typing" pod týmto výrazom si predstavujem úplnú kontrolu typov premenných. Takže kontrolu STRING kontra INT nepovažujem za jedinú správnu. Pretože časom musím naraziť na problém, kde INT proti všetkému ostatnému je validný.

Toto radím medzi TOP BUGS vo všetkých jazykoch s ktorými som sa stretol.

Ak máš pocit že rozdelenie STRING, INT zachráni tie všetky ostatné nedostatky, ja ten pocit nemám.

To ostatné mi príde ako slovíčkarenie, bez urážky a vieš že ťa mám rád.
KERNEL ULTRAS video channel >>>
18.9.2016 23:32 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ešte doplním, napríklad v 'podmienkach' kde si nečakal, že sa zmeni typ premennej môžeš naraziť, alebo 'if' niečo a v 'slučkách', už sa mi to proste stalo.
KERNEL ULTRAS video channel >>>
18.9.2016 23:47 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Napsal jsem komplexní odpověď, ale omylem jsem klikl kamsi do hajzlu a palemoon se refreshnul a smazal jí . Nepodařilo se jí obnovit ani když jsem dumpnul paměť a zkoušel v tom binárně grepovat. Nemám sílu to psát znova.

Jen ve zkratce:

Python fakt typy nemění, ani nepřetypovává, ale výsledkem některých operací můžou být typy jiné. To je silné typování, ale chybějící silná typová kontrola. Proměnné můžou ukazovat na libovolný typ a můžou měnit na co ukazují, ale nikdy se nemění typ toho, na co zrovna ukazují.

Měl jsem nějaké argumenty, odkazy a tak, ale .. au.
19.9.2016 00:07 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
OK, ok, chápem na čo chceš poukázať, ale je tam ta možnosť pretypovania bez upozornenia čo môže viesť k tomu o čom som písal.

Takže vlastne v rozpore niesme, len to proste radíš mimo "strong typing", ja nie, je to fakt už len slovíčkarení, keď '"a" sa nerovnovná "a"' ako som uviedol príklad vyššie už len keď to budem porvnávať na typ hodnoty.

KERNEL ULTRAS video channel >>>
19.9.2016 00:09 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Kurwa nie typ hodnoty, ale typ premennej.
KERNEL ULTRAS video channel >>>
19.9.2016 00:22 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
... by me zajimalo, jestli jsem jediny, kdo pri psani delsich prispevku pouziva "zalohovani do clipboardu". :)
19.9.2016 00:23 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
CTRL+A, CTRL+C, CTRL+END
20.9.2016 22:36 Agent | HC city
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Napsal jsem komplexní odpověď, ale omylem jsem klikl kamsi do hajzlu a palemoon se refreshnul a smazal jí .

Lazarus: Form Recovery - https://addons.mozilla.org/cs/firefox/addon/lazarus-form-recovery/
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
19.9.2016 00:15 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Myslis neco jako tohle?
a = {} if True else []
To by byl argument pro staticke typovani. Psat takhle je v naproste vetsine pripadu prasarna. Na jednu stranu to usnadnuje to prototypovani, jak bylo zminovano nekde v pocatcich teto diskuze, ale na druhou stranu je to nezadouci v produkcnim kodu. V casti pripadu by s tim mohl pomoci nejaky linter, ale jsou pripady, kdy nikoliv:
with (open("input.json")) as fin:
    data = json.load(fin)

foo = data["key"] if "key" in data else 0
Pak by bylo na miste to doplnit o nejakou rucni kontrolu:
# ...
foo = ensureInt(data["key"]) if "key" in data else False
To je ale prace navic a vetsina lidi to IMHO nedela. Dusledkem v pripade neosetreni by bylo, ze se program zacne chovat divne:
if foo > 5:
    print("something")
V pripade, ze vstupni soubor bude obsahovat pod klicem "key" nikoliv int, ale string, vysledkem bude (pozdeji behem behu) tohle:
Traceback (most recent call last):
  File "./foo.py", line 9, in <module>
    if foo > 5:
TypeError: unorderable types: str() > int()
Staticky typovany jazyk te vede k tomu s typem pracovat co nejdriv, takze to bude v souladu s fail-fast principem. Podstatna otazka potom je, kolik lidi ty validace skutecne dela vsude, kde je to potreba, a jak moc tomu pomuzou vynucene staticke validace.
19.9.2016 00:31 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Berem to tak, že pokiaľ ma jazyk neupozorní, že porovnávam výsledok operácie (kde mylne očákavám napríklad 'int', lebo premenná pôvodne bola 'int') a že premenná bola pretypovana na 'float' som sa nijak nedozvedel.
KERNEL ULTRAS video channel >>>
19.9.2016 00:38 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Prijde mi, ze zamenujes vic ruznych veci. Uz jsme rekli, ze typ promenne, jakozto pojmenovane reference na nejakou hodnotu, se muze menit, protoze Python neni staticky typovany jazyk. Typ hodnoty se take nemeni, ale vysledkem operace nad dvojici promennych muze byt hodnota jineho typu.
19.9.2016 00:47 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jasne v tom sa zhodujeme a nevidím tu rozpor a rovnako sme sa zhodli na nejakom rebríčku 'type control', takže áno zas sme na mrtvom bode :)
KERNEL ULTRAS video channel >>>
19.9.2016 00:49 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To by byl argument pro staticke typovani. Psat takhle je v naproste vetsine pripadu prasarna.
On je tu ještě duck typing, který spousta lidí zřejmě nechápe a má s ním silný problém. Což by mi vůbec nevadilo, kdyby ale netahali svoje návyky do pythonu.

Zrovna tenhle konkrétní příklad, kde proměnná může být buďto pole nebo dict je docela pěkný, neboť ti to může být fakt ukradené v závislosti co s tím dále děláš. Pokud například jen vypíšeš počet prvků, tak je ti to jedno. Právě lidi z javy mají příšerné tendence se strachovat ohledně toho, co by se mohlo stát, kdyby ..
foo = ensureInt(data["key"]) if "key" in data else False
Tohle je imho špatně. Pokud něco takového chceš, tak bys to rozhodně neměl psát takhle, ale formou nějakého schématu.
19.9.2016 01:01 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Zrovna tenhle konkrétní příklad, kde proměnná může být buďto pole nebo dict je docela pěkný, neboť ti to může být fakt ukradené v závislosti co s tím dále děláš. Pokud například jen vypíšeš počet prvků, tak je ti to jedno. Právě lidi z javy mají příšerné tendence se strachovat ohledně toho, co by se mohlo stát, kdyby ..
S vyjimkou nejakych utility funkci moc nevim, jak casto potrebujes nad zcela libovolnym objektem zjistovat jeho velikost.
Tohle je imho špatně. Pokud něco takového chceš, tak bys to rozhodně neměl psát takhle, ale formou nějakého schématu.
Bingo. Pokud soucasti nacteni toho JSONu je jeho validace proti nejakemu schematu, ktere obsahuje typove informace, tak uz to lze povazovat za mnou uvadenou rucni kontrolu.
19.9.2016 01:09 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
S vyjimkou nejakych utility funkci moc nevim, jak casto potrebujes nad zcela libovolnym objektem zjistovat jeho velikost.
Nejde jen o zjišťování velikosti. Můžeš přes něj třeba obecně iterovat a tak podobně.
19.9.2016 01:11 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
V jednom budes iterovat pres klice a v druhem pres hodnoty? Fakt marne premyslim, kde to muze davat smysl.
19.9.2016 02:09 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Není to moc dobrý příklad no :)
19.9.2016 00:54 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
foo = data["key"] if "key" in data else 0
Jen ještě obecně a zcela mimo téma: dotazy tohohle typu chceš psát jako
foo = data.get("key", 0)
Tohle má složitost O(1)*, zatímco ten tvůj dělá stejnou operaci dvakrát.

*Ehm, dotaz do dictu má mít O(1), ale prý ve worst case scenariu má až O(n).
19.9.2016 01:04 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jen ještě obecně a zcela mimo téma: dotazy tohohle typu chceš psát jako
Diky, to jsem neznal.
Tohle má složitost O(1)*, zatímco ten tvůj dělá stejnou operaci dvakrát.
Vidis, a ten muj kod ma taky slozitost O(1). :)
18.9.2016 21:15 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Premenná sa pretypovala bez jediného upozornenia.
To neni pravda. Kdyz opomenu, ze pretypovani znamena neco uplne jineho a to co myslis ty, je zmena typu hodnoty v promenne, tak to neni nijak v rozporu se silnym typovanim.

Python neni staticky silne typovany jazyk, tzn. ze promenna muze obsahovat hodnotu libovolneho typu a samotna typova kontrola se aplikuje az pri provadeni operaci:
>>> "1" + 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
Coz je rozdil oproti dynamicky typovanemu JavaScriptu:
> "1" + 2
'12'
JavaScript jednoduse implicitne provede konverzi na jinou hodnotu tak, aby mohl operator '+' aplikovat. V tomto pripade preferoval prevedeni na string (navzdory intuitivnimu ocekavani, ze bude preferovat prevod na cislo), coz je cesta do pekel.

Python tuto implicitni konverzi nepovoli. Pouze ma nadefinovany operator '+' tak, ze umi vyhodnotit nejen [int] + [int] a [float] + [float], ale i [float] + [int] (a protoze je scitani komutativni, tak i [int] + [float]). Zda vysledku dosahne konverzi int na float uz je jeho interni zalezitost, ktera navenek nema vliv.

Dulezite je, ze tato vlastnost plati vyhradne pro aritmeticke operace, nikoliv pro vsechny operace. Dluzno podotknout, ze toto je chovani spolecne pro vetsinu C-like jazyku, vc. staticky silne typovane Javy. Napr.:
int a = 5;
float b = 1.23f + a;
int c = 1.0f + a; // neplatne - vysledkem je float, tj. nelze jej ulozit jako int
18.9.2016 21:25 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Python rovněž provádí spoustu implicitních konverzí, takže je otázka, které konverze splňují silné typování a které nikoliv.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 21:42 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak ono to hlavne IMHO neni presne definovane, takze to bude trochu o nejakem slovickareni. Misto oznaceni silne typovany jazyk by se mozna vic sluselo pouzivat do jake miry je jazyk silne typovany. Protoze definovat a pocitat tu miru by bylo prilis pracne, staci to intuitivne porovnat s jinymi jazyky, a pak tomu zrovna tak intuitivne placnout nalepku.

Takze kdyz vezmu Python, JavaScript, PHP a Scalu, tak intuitivne muzu porovnat, ze Python je jiste silneji typovany nez JavaScript a PHP, JavaScript a PHP jsou slabeji typovane nez Scala a vypadnou mi z toho tedy dve skupiny, kde Scala a Python jsou silneji typovane nez JavaScript a PHP.

Kdyby se objevil jazyk, ktery bude silneji typovany nez Scala nebo Python, rozpadlo by se to na tri skupiny, takze pak je predmetem sporu, jaka oznaceni volit, ale prakticky se jedna jen o spor v terminologii a samotny zebricek ma vetsi vahu.
18.9.2016 21:48 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak s tým sa dá súhlasiť.
KERNEL ULTRAS video channel >>>
18.9.2016 21:32 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ten tvoj príklad kontroluje "int" vs "string" a už nekontroluje "int" vs "celý_svet" to za silnú kontrolu nepovažujem.

Nikdy nebudem vedieť, teda ak sa budem spoliehať na kompilátor ... či sa mi vracia správna hodnota, alebo či mi to niekde nepretečie, alebo sa to niekde ureže.
KERNEL ULTRAS video channel >>>
18.9.2016 21:48 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
či sa mi vracia správna hodnota
To je dukaz toho, ze Python neni staticky typovany, nikoliv toho, ze neni silne typovany.
či mi to niekde nepretečie
To nesouvisi s typovanim, ale s tim, jak na pocitacich funguje aritmetika. Statickou kontrolu nelze z principu provadet ve vsech pripadech a jedinou moznosti by bylo na overflow vyhazovat vyjimku (nebo jiny chybovy stav). Jedna se pak ale o beznou runtime chybu, nikoliv typovou chybu.
sa to niekde ureže
Priklad?
18.9.2016 21:54 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
sa to niekde ureže
Priklad?
To bolo mierené na Céčko, čo som spomínal vyššie.

Ale tému pokladám viac menej za viriešenú, po tom čo sme sa zhodli, že silne typová kontrola vlasne neexistuje, ale len jej odnože :)
KERNEL ULTRAS video channel >>>
18.9.2016 22:20 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
OK.
19.9.2016 08:26 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Dulezite je, ze tato vlastnost plati vyhradne pro aritmeticke operace, nikoliv pro vsechny operace. Dluzno podotknout, ze toto je chovani spolecne pro vetsinu C-like jazyku, vc. staticky silne typovane Javy.
Tak zrovna Java v tomto případě udělá stejnou prasárnu co JavaScript, ie "1" + 2 → "12" :-/
19.9.2016 13:06 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Je to jen dalsi vyjimka, kde dopredu vis, ze vysledkem bude String (a kompilator ti neumozni s tim pracovat jinak), coz riziko chyby vyrazne snizuje. Navic se to chova vcelku konzistentne (scitani cehokoliv a Stringu bude vzdy String). S JavaScriptem, kde jsou operatory definovany pro vsechny hodnoty, a nemas zaruceno, jakeho typu bude vysledek, bych to uplne nesrovnaval.
19.9.2016 13:07 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jinak vic by se mi libilo prevzit operator . z PHP, tj. samostatny operator na spojovani Stringu.
19.9.2016 14:00 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak v JS je to chování operátorů určitě šílenější než v Javě, o tom žádná.

Já bych osobně celkově žádný operátory na skládání stringů nevyčlěňoval, ať už + nebo ., určitě ne na úrovni jazyka. Na jednoduché spojování stringů by IMO měla stačí funkce typu append() (v Javě AFAIK concat()), případně k tomu přetížený operátor v jazycích, které to umožňují.

Na cokoli složitějšího je IMHO lepší/čistší použít formátovací funkce.
19.9.2016 15:21 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
V D je to docela hezky řešeno operátorem ~, který znamená "přidej do pole", ať už jde o string, nebo pole čísel a tak podobně.
19.9.2016 23:25 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tohle není prasárna.

Dovolíme spojovat řetězce operátorem +? Ano – a je to užitečné, např. "Vítej, " + jméno + "!".

Dovolíme tímto operátorem připojovat k řetězci další datové typy? Ano – a opět je to užitečné. Např. "Počet souborů v adresáři: " + počet nebo "Uživatel se přihlásil z adresy: " + ipAdresa (proměnná obsahuje objekt a zavolá se na něm toString()).

Je textový řetězec vyhovující výrazu [0-9]+ textovým řetězcem? Pokud ano, pak by pro něj mělo platit vše, co pro obecné textové řetězce.

Někdo by mohl namítat, že se mají používat formátovací řetězce. Ačkoli jsou užitečné, jsou často kanónem na vrabce, představují netriviální kód, který může být zdrojem chyb (ať už sám o sobě, tak jeho využití), jsou výpočetně náročnější a dále: spojování řetězců/objektů operátorem + je poměrně intuitivní a přímočaré.

P.S. ono to "1" + 2 → "12" je nebezpečné jen u jazyků s nedostatečnou typovou kontrolou, které výsledek za určitých okolností zase v tichosti převedou na číslo a umožní s ním dělat matematické operace. To pak může být slušný bordel… Ale v té Javě je výsledkem textový řetězec, který můžeš přiřadit jen do proměnné typu String (případně Object) a nestane se ti, že bys s ním pak omylem pracoval jako s číslem.
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
20.9.2016 08:57 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Souhlasím, že to nemá tak nebezpečné důsledky jako v JS.

Nicméně se mi to ale stejně nelíbí, protože se s tím špatně pracuje. Je to IMHO nepřehledné a je tam děsnejch znaků navíc. Další věc je, že když to chce člověk změnit (přidat další proměnnou, přemístit ji, ubrat, atd.), tak s tím je dost přepisování. Také to nejde lokalizovat, že.

Přitom v Javě jsou formátovací funkce v základní knihovně jak pro printf-like syntaxi, tak i pro Python3/C#-like syntaxi, což jsou dva IMHO široce rozšířené de-facto standardy. Silně pochybuju, že nějaký výkonový overhead navíc by byl reálně problém.
18.9.2016 20:43 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Ve kterémkoli jazyce, který neumožňuje míchání typů u operací? :) :D
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 20:28 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak na druhou stranu i to PHP ten typ kontroluje a tu operaci interně provádí na základě typu (interpretuje řetězec jako zápis čísla). Python zase ve spoustě kontextů přijímá prakticky libovolný typ.
>>> print("0")
0
>>> print(0)
0
Jako asi chápu pointu, akorát mi to přijde takové nejednoznačné.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 21:10 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak ty pojmy "strong" a "weak typing" nemají žádnou pevnou definici, takže to je v pořádku, že ti to připadá nejednoznačné ;-)
18.9.2016 21:27 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Pak se obávám, že pro mě ty pojmy nejsou příliš zajímavé, když nenabízejí nějaké jasné sdělení, ale slouží v zásadě jen k tomu, aby se mohli lidi hádat, který jazyk je lepší. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.9.2016 21:34 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Asi tak to bude :)
KERNEL ULTRAS video channel >>>
7.9.2016 16:53 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Slovo zkoumat zduraznuji, protoze informace, ktere mohou byt v Jave zcela zjevne, v jinych jazycich byt zjevne nemusi.
Tady trochu čuchám klasický omyl výřečnost = čitelnost.

Zkus si tuhle situaci přepsat do třeba C, Rustu a JavaScriptu (záměrně jmenuju pokudmožno různorodé jazyky), pak bude třeba lépe vidět, jaký "přínos" má znalost tohoto dizajn patternu...
7.9.2016 17:54 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Me v tomhle dost otevrel oci open-source, jak je potreba opravit neco tady a neco tamhle, tak pak clovek musi rychle proniknout do ruznych code-base napsanych ve vsem moznym. Java je jeden z nejhorsich dnes pouzivanych jazyku co do citelnosti (ten mytus o velkych projektech vzdy pobavi :)).
7.9.2016 19:52 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Už dlouho mám připravený dotaz/zápisek do blogu, o tom, jak přepsat jeden triviální program v Javě do jiného jazyka a zachovat jeho pozitivní vlastnosti… Zkoušel jsem to sám přepsat do C++, ale byl to docela propadák (víc řádků kódu, méně čitelný program), což může být mojí neznalostí C++… jsem celkem zvědavý na výsledky.
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
8.9.2016 08:20 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tak jsem hoď ten program. Jaké jsou ty pozitivní vlastnosti?
11.9.2016 02:21 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Zde: Parametry příkazu, roury, Java a jiné jazyky (případné komentáře prosím tam).
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.9.2016 21:59 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace

Jo taky by me ten program zajimal

Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
7.9.2016 17:42 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
to vim moc dobre ... kdyz me Android Studio pomuze ze prepise "klasicky zapis" jako "lambda expression" a pak to ani zkompilovat nejde :-D
7.9.2016 18:04 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
To automaticke nahrazeni v IntelliJ jsem nedavno delal nad vetsim projektem, kde takovych pripadu byly stovky, a zadny problem s tim nebyl. Nepises, kde mas s kompilaci problem. Pri prekladu zdrojaku do bajtkodu, nebo pri prekladu bajtkodu do nativniho kodu (coz se dela pri instalaci aplikace pocinaje Androidem 5)?

Pokud se tu chceme bavit konstruktivne, tak prosim. Pokud si chces postezovat, ze musis pracovat s technologii, ktera se ti nelibi a mozna ji ani nerozumis, tak to me uz nezajima.
7.9.2016 20:02 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
7.9.2016 19:38 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Aneb funkcionálně šlo v Javě psát už dávno, jen to vyžadovalo víc písmenek. Ona taková továrna (factory) je vlastně funkce, kterou předáš někomu, kdo si ji zavolá.
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.9.2016 19:36 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Lambda výrazy a Java vs. dynamické jazyky
Jenže lambda výrazy v Javě 8 jsou silně/staticky typované a už v době kompilace jsi schopný říct, jestli to na sebe pasuje. U dynamických jazyků tam něco pošleš a ono to něco udělá, nebo spadne… to se uvidí až v době běhu a dokonce při každém volání funkce to může dopadnout jinak.
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.9.2016 19:59 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
proto se pouziva optional static typing
7.9.2016 21:33 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
Takze budes mit cast kodu napsanou se statickym typovanim a cast bez nej? Jak se rozhodnes, ktery pristup je spravny? Podle citu? A kdyz bude na projektu pracovat vic lidi, tak budou mit ten cit vsichni stejny? To je silne naivni predstava.

Vetsinou vubec nedava smysl, aby promenna nabyvala hodnot zcela ruznych typu. Nelze s tim univerzalne pracovat, takze to konci rozvetvovanim v podminkach. A ktery z nasledujicich kodu je citelnejsi?
void foo(int[] a) {
    // ...
}

void foo(int a) {
    // ...
}
function foo(a) {
    if (a instanceof Array) {
        // ...
    } else if (typeof(a) == 'number') { // "a instanceof Number" vraci false, aby byla vetsi prdel!
        // ...
    } else {
        throw Error("Unexpected type '" + typeof(a) + "'.")
    }
}
Facebook je napsany v PHP. Kdyz zacali resit, jak predchazet ruznym chybam plynoucim z toho, ze je jazyk jako takovy prilis benovelntni, vznikl jazyk Hack. Presneji receno - misto toho, aby pouzili nejaky poradny jazyk hned v ranem zacatku, pouzili dementni PHP a pote investovali mnozstvi prostredku do znovuvynalezani kola, programovani JIT pro ten jejich HHVM apod.

Jeste jsem nevidel programovaci jazyk, ktery by vubec nemel typy. Rozdil je jen v tom, jestli je pred programatorem skryvas, nebo ne. Ve vysledku je ale stejne znat musis, takze bud si je prectes primo z hlavicky funkce, nebo je musis uhodnout/najit v kodu a drzet v kratkodobe pameti. Co je asi rychlejsi a jednodussi?
7.9.2016 21:52 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
Dynamické a statické typování není o tom, zda se typy schovávají před programátorem, ale o tom, zda jsou vázány na proměnnou nebo na její hodnotu. Pak jsou tu ještě jazyky, které jsou staticky typované, ale umí si typy na spoustě míst odvodit, takže programátor s tím nemá moc práce, ale přitom překladač může kontrolovat a optimalizovat.
Hello world ! Segmentation fault (core dumped)
7.9.2016 22:48 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
Takze budes mit cast kodu napsanou se statickym typovanim a cast bez nej? Jak se rozhodnes, ktery pristup je spravny? Podle citu? A kdyz bude na projektu pracovat vic lidi, tak budou mit ten cit vsichni stejny? To je silne naivni predstava.
To se dostaveme k jadru - jestli bychom meli pouzivat "a bondage and discipline language" a nebo si uvedomit ze "we are all consenting adults" a dokazeme se domluvit.

V realu mam mnohem lepsi zkusenosti s tim druhym pristupem.
8.9.2016 09:03 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
Dokazeme se domluvit na cem? Ze se typy budou uvadet, kdyz se ti bude chtit? Pokud se vsichni vyvojari shodnou, ze pro kvalitu kodu je vzdy lepsi, aby typ byl uveden, tak rovnou muzes pouzit staticky typovany jazyk. Ma to i bliz k prirozenemu uvazovani, kdy pri cekani na navstevu proste ocekavas, ze prijdou lidi, ale rozhodne neocekavas, ze prijde skrin. Proc by mel jit vubec spustit kod, ktery ti tam jako navstevu posle skrin?
8.9.2016 10:08 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
protoze ten kod napsala a pousti ta skrin a vi co dela ;)
8.9.2016 10:19 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
tak teda diky za profesionalni nazor a samozrejme nezapomenu na male pismeno na zacatku vety a misto tecky se rozloucit frajerskym mrknutim ;)
8.9.2016 10:12 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
Proc by mel jit vubec spustit kod, ktery ti tam jako navstevu posle skrin?
Related: https://www.youtube.com/watch?v=28JerOPNPII
8.9.2016 08:18 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Lambda výrazy a Java vs. dynamické jazyky
U dynamických jazyků tam něco pošleš a ono to něco udělá, nebo spadne… to se uvidí až v době běhu a dokonce při každém volání funkce to může dopadnout jinak.
NullPointerException?
7.9.2016 19:32 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Diagram tříd ti popisuje rozhraní, metody, vstupy a výstupy… Co ti oproti tomu řekne symbol λ?

Ty ostatní informace tam buď chybí nebo je musíš uvést nějak bokem (jako nestrukturovaný text?).
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.9.2016 21:28 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Jak jazyk zachází s typy s tím nijak nesouvisí. Může být dynamicky typovaný jako třeba Javascript nebo PHP a ta informace pak zcela chybí, nebo může být staticky typovaný (Haskell, C++) a informace v době překladu nechybí.
Hello world ! Segmentation fault (core dumped)
7.9.2016 23:30 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Reagoval jsem na to:
Je to vidět hlavně na těch šílených class diagramech v popisech vzorů, když stačí přirozeně použít λ.

Když někam napíšeš λ nebo „sem předejte funkci“, tak musíš ještě nějak napsat, co má ta funkce vracet a jaké má parametry. Diagram tříd nebo signatura metody je standardizovaná cesta, jak si tyto informace lidé předávají. Ano, tuto informaci můžeš zamlčet, ušetřit nějaké znaky/řádky a nechat ostatní ať se v tom patlají a metodou pokus-omyl zjišťují, co tam mají poslat a co z toho vypadne. Ale já dávám přednost trochu jinému stylu spolupráce.
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.9.2016 23:53 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Návrhové vzory a inspirace
Tento problém je stejný, jako když máš nezdokumentovanou třídu. Pointa diskuze byla o návrhových vzorech, které v některých případech nahrazují neschopnost Javy.
Hello world ! Segmentation fault (core dumped)
5.9.2016 23:12 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Samozřejmě, že nemá smysl se ty vzory biflovat. Ale má smysl se na ně podívat jako na možné způsoby řešení různých problémů a vzít si z nich inspiraci pro ten právě řešený. Programátor pak nemusí vymýšlet kolo, když řeší učebnicový příklad. Také pak ví, jak to či ono pojmenovat, aby i ostatní snadno chápali, co tím autor myslel.
Hello world ! Segmentation fault (core dumped)
5.9.2016 20:23 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Prokleté programování
polovina problémů v IT začíná tím, že se programátor snaží zjišťovat, co uživatel potřebuje a sere na to, co chce... tak vnzikají všechny ty gnome a další podobné sračky
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
5.9.2016 20:59 lof4s
Rozbalit Rozbalit vše Re: Prokleté programování
ty jsi samozvaný expert i na programování, vepříku?
5.9.2016 21:34 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Prokleté programování
Nevím zda expert ale programuju 25 let. A ano, nikdo me nezval, klisnicko.
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
5.9.2016 21:50 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Prokleté programování
A druhá polovina je způsobena tím, že si uživatel vymyslel špatné řešení svého problému a donutil ho programátora implementovat O:-)
Bojíte se 5G sítí? Pořiďte si domů radar, který veškeré 5G sítě spolehlivě zaruší!
5.9.2016 22:04 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Prokleté programování
Uživatel svým problémům rozumí obvykle lépe než programator

Výsledkem pak je ze při práci s aplikaci tráví netriviální úsilí obcházením různých "zlepsovaku", které maji původ v tom, ze si vývojáři mysleli, ze to uživatel potřebuje - zrovna dnes jsem bojoval s libreoffice
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
5.9.2016 22:31 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Uživatel svým problémům rozumí obvykle lépe než programator
Jo, ale skoro nikdy se neumí vyjádřit a jen naprosté a zanedbatelné procento fakt ví, co chce (to poznáš tak, že po podepsání specifikace a naprogramování podle obrázků najednou chtěj něco jiného, než co si objednali).

Jediná věc, která se mi na tohle osvědčila jsou rychlé iterace a nebrat vývoj jako tvorbu produktu, ale jako proces. Ale je pravda, že tohle jsem zas tak moc často nedělal a možná to má jiné řešení.
5.9.2016 22:39 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Prokleté programování
To ale neznamená, ze to programátor na základě nějaké své pofiderni představy o přání uživatele vymyslí lépe. Ano iterace fungují pokud to děláš pro konkrétního zákazníka. Ale těm neštěstím jako je lo apod asi není pomoci.
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
5.9.2016 23:18 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Uživatel svým problémům rozumí obvykle lépe než programator
To platí pouze pokud je uživatel také (dostatečně zkušeným) programátorem. V ostatních případech sice uživatel rozumí svému problému, ale už obvykle nerozumí tomu, jak mu s tím počítač může pomoct.
Hello world ! Segmentation fault (core dumped)
5.9.2016 23:35 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Prokleté programování
Samozřejmě, protože kdo není programátor, je debil.
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
5.9.2016 23:40 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Procesy a dělba práce
+1

Přesně z tohoto důvodu je spousta systémů neefektivních a nesmyslných – protože jde jen o pouhý převod původního řešení (tužka, papír, psací stroj s kopírákem, šanon, ruční práce…) do počítače – nikoli o přepracování procesů tak, aby fungovaly lépe a těžily z toho, co nová technologie umožňuje.

Další velký problém je komunikace a dělba práce – čím víc lidí a firem se do řešení zapojí, tím hůř.
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
6.9.2016 08:55 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Procesy a dělba práce
jenze to nemuze resit genericky sw vyvojar, ale odbornik v dane problematice, ktere se sw tyka - programator tezko prinese nejake efektivni postupy genetikovi, fotografovi nebo pilotovi - leda ze by sam byl genetik, fotograf nebo pilot. To jsou pak takove ty situace, jako snaha odstranit z gimpu vrstvy (to pravda nechtel udelat programator ale "odpornik na UX")
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
6.9.2016 09:55 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Procesy a dělba práce
Schopný vývojář pochopí, co genetik, fotograf nebo pilot požaduje.
6.9.2016 11:19 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Procesy a dělba práce
ano, pozaduje, ne "chce"
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
6.9.2016 11:49 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Procesy a dělba práce
Ok, schopný vývojář pochopí, co genetik, fotograf nebo pilot chce.

Když už si musíme hrát se slovy...
6.9.2016 12:05 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Procesy a dělba práce
tahle debata byla o významovém rozdílu v těch slovech, jestli ti to uniklo
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
6.9.2016 13:36 Agent | HC city
Rozbalit Rozbalit vše Re: Procesy a dělba práce
Jestli ti to uniklo, debata byla mezi potřebuje a chce, požaduje a chce může být zaměnitelné.
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
6.9.2016 13:51 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Procesy a dělba práce
tahle debata byla o významovém rozdílu v těch slovech, jestli ti to uniklo
To jsem asi odignoroval, protože mi přijde, že to je jen zas další tvůj pokus o shazování programátorů/ajťáků. Měl jsem pochopitelně na mysli, že schopný výojář je schopen pochopit, co ten daný zákazník opravdu chce.

Gnome nebo LibreOffice jsou v tomhle ohledu mizerné příklady, protože to není SW na zakázku, ale FOSS nabízený široké veřejnosti "as is" a když se někomu bude hodit, tak fajn, když ne, tak ne.
6.9.2016 14:14 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: Procesy a dělba práce
ono tech zakazkovych programu v podobnem stavu take neni malo

proste je nesmysl, aby vyvojar vestil z kristalove koule, co kdo chce

kdyz nekdo neco chce, musi umet pozadavek vyjadrit

jinak to vzdycky dopadne strasne a pri aplikaci vesteckych metod asi jeste hure
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
7.9.2016 15:38 EtDirloth | skóre: 10
Rozbalit Rozbalit vše Re: Procesy a dělba práce
Nevím zda expert ale programuju 25 let.

kdyz nekdo neco chce, musi umet pozadavek vyjadrit
tieto dve vety mi moc nejdu dohromady - to programovanie ta asi nezivi
6.9.2016 23:23 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Procesy a dělba práce
Ve vývojovém týmu je víc rolí než jen programátor nebo „generický SW vývojář“ ;-)
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
5.9.2016 23:29 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Prokleté programování
Špatně provedená analýza (ať už záměrně nebo omylem, nebo třeba zacílení na jiné uživatele, než kteří to pak reálně používají) je jiná věc.

Ale nic to nemění na tom, že zákazník/uživatel ti většinou neřekne, co potřebuje – řekne ti maximálně, co chce (a ještě k tomu to vyjádří blbě), ale úlohou analytika je zjistit, co zákazník potřebuje, protože dokud se to nezjistí a nedodá, tak to zákazník nebude spokojeně používat a program nebude plnit svůj účel (že došlo k proplacení faktury o splnění tohoto cíle nevypoví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
5.9.2016 23:35 Agent | HC city
Rozbalit Rozbalit vše Re: Prokleté programování
Řekl bych, že je to jinak. Vývojáři se mnohdy nezajímají ani o to, co uživatelé chtějí natož o to, co potřebují, přičemž se to často může prolínat. Typický příklad W8, W10. Opravdu tohle někdo chtěl a opravdu tohle někdo nutně potřebuje?
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
6.9.2016 20:39 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Prokleté programování
Tam hlavne programatori nepracuji pro zakazniky, ale pro marketaky, kteri maji svou vlastni predstavu "zakaznika" a normalnimi lidmi si ji nenechaji kazit.
6.9.2016 20:41 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Kluci, co to tady v tomhle vlakne (pocinaje prispevkem, na ktery odpovidam) zase resite za hovadiny? To jsou zase takove zabomysi valky a snaha nekoho shodit, nebo vyzdvihnout.

"Programator" ma vic vyznamu. Muze to byt odkaz na plnitele konkretni role (provadeni programovani), nebo na osobu programatora jako takovou. Dle toho prvniho, uzsiho, vyznamu, rozhodne neni ukolem programatora domyslet si, co uzivatel pozaduje. V tom druhem, sirsim, vyznamu to muze (ale nemusi) byt naopak.

Vse se odviji od pozice, na ktere clovek pracuje. Radovy programator ve velke SW firme ma typicky za ukol pouze implementovat program dle dane specifikace. Oproti tomu freelancer, ktery vyviji aplikace na zakazku, ve skutecnosti typicky plni vic roli. Neni to tedy pouze programator, ale zaroven dela to, co ve velkych firmach produktovi manazeri. V tuto chvili uz je tedy jeho zodpovednost, aby spravne pochopil, co uzivatel skutecne potrebuje a umel to naimplementovat (a popr. si prizvat na konzultaci dalsi lidi apod., proste to celkove zrealizovat).

Jadro diskuze tedy neni o programatorech, ale o tom, zda software navrhuji (a jeho vyvoj ridi) spravni lide. Ze nekteri z tech lidi plni zaroven i programatorskou roli je vuci tematu diskuze zcela irelevantni.
2.9.2016 17:57 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Prokleté programování

Knihy nikoho nenaučili programovať. Naučiť sa syntax a pár poučiek je jedná vec, ale skutočné programovanie je o tom dať programu štruktúru, napísať ho tak, aby sa dal ďalej rozširovať a aby sa pri tom ostatní spolupracovníci nezbláznili.

Po naštudovaní syntaxe (napr. C) je zbytočné venovať čas knihám venovaným čistému C. Rozumnejšie bude študovať paradigmy a "správne" postupy pri programovaní. Z toho, čo som čítal mi najviac zostala v pamäti kniha Dokonalý kód (Code complete), ktorá obsahuje množstvo (často protichodných) tipov a je na čitateľovi aby si sám v praxi vyskúšal vhodné postupy.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
2.9.2016 18:59 Aleš Kapica | skóre: 49 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Prokleté programování
Jak už tady napsali jiní - je blbost se učit programovat, protože bych něco chtěl udělat. Správná cesta je - chci něco udělat a proto se učím programovat, abych to mohl udělat.

Takže učit se něco aniž bych předem věděl co od toho chci, je jen plácání do vodní hladiny. Než se dostaneš k tomu abys to použil, tak to stejně většinou zastará, nebo to zapomeneš.
3.9.2016 00:30 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Prokleté programování
Přístup "naučím se programovat, abych si tím mohl vydělávat" mi přijde tak trochu jako "naučím se hrát tenis, abych mohl vydělávat spoustu peněz".
4.9.2016 17:29 radix
Rozbalit Rozbalit vše Re: Prokleté programování
Ne nutne ... jsou lidi, ktere programovani laka samo o sobe, bez ohledu na hypoteticky vysledny produkt. Ja jsem jeden z nich - rad resim logicke/technicke problemy (kterych je v programovani prehrsel), ale nejak zasadne uz me nezajima, co ten produkt vlastne dela.
2.9.2016 21:15 goldenfish | skóre: 38 | blog: aqarium | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
zdravim,

asi nejdriv bych si zkusil neco o SW inzenyrstvi. Ono to neni jen o tom kodovani.

PS: Visual Paradigm je hezka aplikace bezici taky na Linuxu. Bohuzel ve 40 zjistuju, ze jsem mel delat veci uplne jinak....

gf
4.9.2016 07:01 Miriam | skóre: 3 | blog: zivot
Rozbalit Rozbalit vše Re: Prokleté programování
Jsi nadrženej, bejku?
3.9.2016 06:16 mln
Rozbalit Rozbalit vše Re: Prokleté programování
A čo tak sa pokusiť zúžitkovať znalosti C jazyka napríklad vo embedded svete namiesto lepenia webov ? Vo vačších firmách maju oddelenú tvorbu hw aj sw s jednočipmi, ale nejaký ten základ elektrotechniky by asi bol potrebný.
4.9.2016 00:16 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Prokleté programování
Ak ťa programovanie baví, skôr či neskôr si ťa niečo nájde.

KERNEL ULTRAS video channel >>>
4.9.2016 14:15 pedro
Rozbalit Rozbalit vše Re: Prokleté programování
Pokud jsi toto vsechno nastudoval a vstrebal, tak to nemuze byt tak zle, jak se tvaris. Zkus se zapojit do nejakeho opensource projektu...
4.9.2016 14:34 sad
Rozbalit Rozbalit vše Re: Prokleté programování
Všechno z toho neumím, ještě toho budu muset dost nastudovat, ale je to směr, kterým se ubírám, potom bych se chtěl zaměřit na zpracování obrázků.
4.9.2016 16:16 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Ten open-source projekt je i docela dobrá reference pro případné zaměstnavatele. Navíc se čas od času ozvou sami jen díky profilu na GitHubu.
Hello world ! Segmentation fault (core dumped)
5.9.2016 16:49 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Prokleté programování
Holt někdo má talent na programování, jiný zase na umění. Můžu přečíst milión knih na téma "Jak kreslit", ale malíř ze mně nikdy nebude. Stejně tak programátor musí hlavně umět analyzovat problém, rozdělit jej na menší úkoly, ty pak naprogramovat a spojit do funkčního celku.

A začínat je potřeba od jednodušších věcí. Třeba vypsat si kolik je 3+2. Pak to vylepšit o načtení čísel, které se mají sčítat. Následně umožnit uživateli zadat i operaci. Poté třeba umožnit pracovat s více než dvěma čísly. Pak se doplní třeba nějaká grafická knihovna. Možností je spousta. Důležité je vědět co chci a pak vymyslet jak to udělám.

Já třeba kdysi začínal tím, že jsem si v céčku dělal program, do kterého jsem zadával výsledky hokejové ligy a on mi pak počítal tabulky.
5.9.2016 17:37 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Holt někdo má talent na programování, jiný zase na umění. Můžu přečíst milión knih na téma "Jak kreslit", ale malíř ze mně nikdy nebude. Stejně tak programátor musí hlavně umět analyzovat problém, rozdělit jej na menší úkoly, ty pak naprogramovat a spojit do funkčního celku.
Oba dva imho musí hlavně dělat to, co je podstatou práce a ne o tom číst knihy. Jak se říká, když něčemu věnuješ 10 000 hodin, tak se to většinou naučíš na „dost dobré úrovni“, i když z tebe mistr možná nebude. Málokdo tomu ale těch 10 000 hodin dá, speciálně, když bude prvních 5 000 malovat sračky.

U malování má spousta lidí výhody, že s tím začnou už jako děti a věnují tomu v průběhu 20 let neskutečné množství času, kde mě doslova děsí ta představa, že bych to musel udělat taky.

Samozřejmě, někdo má občas obrovský talent, ale většina lidí co znám jak z malířských kruhů, tak z kruhů programátorských tomu prostě jen dá fakt hodně moc práce a času.
5.9.2016 20:42 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Prokleté programování
Ono je potřeba oboje. Kdyby měl Jágr jen talent nebo jen pilně dřel, možná by z něj byl slušný hokejista, ale nikdy by nedokázal to, co dokázal. Pokud to ale někoho baví, nakonec mu ani těch 10000 hodin nemusí připadat přehnaně moc.
6.9.2016 11:33 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Prokleté programování
Taky si říkám, že bych třeba časem kreslil líp než kdejaký umělec, co jen pocáká plátno barvou a z nějakého záhadného důvodu je z toho umělecké dílo :-D
6.9.2016 11:46 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Prokleté programování
Proto jsem radši záměrně nevolil příklad z oblasti umění. Tam je to, obávám se, často hodně o sebevědomí - a taky "my kluci, co spolu mluvíme". Ve sportu se to (až na výjimky typu krasobruslení) přeci jen tak snadno neokecá.
5.9.2016 17:20 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: Prokleté programování
Nic jsem z programování nevěděl, ale potřeboval jsem nějakou jednoduchou databázi pro malou výrobní firmu. To bylo v roce 2000. Rozhodl jsem se nastudovat si PHP a MySQL. Problém byl s učebnicí. Naštěstí jsem cestoval do USA, tam jsem si koupil knížku "PHP Essentials". Skvěle napsaná pro začátečníka, zbytek z netu. Na českém trhu (tedy v češtině) jsem nenarazil na tak kvalitní učebnici, z dostupných materiálů bych prostě neuspěl. Databázi používám dodnes.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
6.9.2016 08:35 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: Prokleté programování
Nestracaj hlavu, moja metoda je urcit si nejaky konkretny ciel napriklad hru alebo program s konkretnou funkcionalitou a proste zacat programovat a vobec nevadi ak po dvoch dnoch vsetko prepises znova od zaciatku a o tyzden zase to budes prepisovat .., lebo zistis ze si sa vydal zlym smerom a pridavanie dalsej funkcionality sa skomplikovalo. Nezabudaj, ze kazde prepisanie programu od sameho zaciatku ta vzdy posunie o krok dalej.

Inak ako prognozujes ze bude problem zhanat programatorov C lebo kazdy uz ovlada C++ a python... programovat v C ti zvladne asi kazdy programator co ovlada C++ ale bude u toho velmi nadavat a s podobnou efektivitou ti napise program v C++ a hlavne to bude prehladnejsie a cistejsie. C++ je rovnako lowlevel ako klasicke C len je tam ta objektovost. Chcem tym povedat ze sa neboj C++ ,-)
You don't exist, Go away !
6.9.2016 18:12 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Jo, tohle je docela důležitá věc. Zahodit velký kus kódu je docela často to nejlepší, co se dá udělat. Velmi mnoho lidí to ale dělá nerado, neboť jim je líto vynaloženého úsilí a vynaloží zbytečně ještě víc, než kdyby to zahodili a napsali znovu. V tomhle jsou dobré školní semestrálky. Ty student nějak naprasí a pak se to zahodí. Když pak píše něco podobného příště, kdy už hrozí, že se tím bude zabývat i někdo další, už to napíše lépe.
Hello world ! Segmentation fault (core dumped)
6.9.2016 19:09 pf
Rozbalit Rozbalit vše Re: Prokleté programování
OO v C++ není žádná prdel, člověk řeší jen samé nesmysly (rvalue semantika + move, jako fakt?, žádná reflexe, je nutný si napsat svoji pokud je potřeba, jak a za jak dlouho se to zahodí?), z templatů jde člověk do halucinací, to je studium na 10-20 let a ještě v tom člověk musí napsat nějaký skutečný řešení a nezešílet u toho. Kdo zná nějaký skutečný znalce C++, ať je schválně v duchu spočítá.

Na učení se C mi mnohem lepší než knížky vod Herouta připadá toto: http://www.buildyourownlisp.com/
6.9.2016 21:30 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Budu volne citovat pekny vyrok z knihy Modern C++ design: "Genialni programator se mnohdy projevi v ranem veku, ale dobry softwarovy architekt muze zrat mnoho let.".

S urcitymi predpklady lze zaklady programovani ovladnout relativne rychle. Pro reseni problemu z algoritmizace pak uz staci jen premyslet. Studium algoritmu a datovych struktur je hodne o chapani, takze s temi predpoklady to muze jit docela rychle.

Zejmena komerecni vyvoj SW je ale mnohem sirsi. Je potreba znat nejen jazyk, ale i radu ruznych nastroju (IDE, build system, package managery a mnohe dalsi), velke mnozstvi ruznych knihoven a frameworku a v neposledni rade ziskat cit, co vyresit (zapsat) jakym zpusobem. Tohle jsou veci, ktere jsou mnohem vic zalozene na znalostech a zkusenostech, coz znamena, ze je potreba soustavne studium a relativne hodne casu.

Casto resime v praci treba situaci, kdy neco potrebujeme rychle vyzkouset (zachytit kus nejake sitove komunikace, zjistit neco o nejakych datech apod.). V casti pripadu okamzite z hlavy vim, jak to udelat behem nekolika vterin, zatimco jini by to resili radove dele. V rade jinych pripadu jsem presne v opacne pozici, kdy me zadne rychle reseni nenapada, a naopak to umi udelat nekdo jiny - protoze uz to resil driv, umi pouzivat lepsi nastroje apod. Tohle je duvod, proc lze programovani v mnoha ohledech povazovat za remeslo.

Tohle vse se lze naucit jen aktivnim programovanim. Vetsina lidi prave v teto fazi zjisti, ze je programovani vlastne vubec nebavi, protoze je to neustale reseni problemu a zapas s casem.

Nejhorsi chyba, ktere jsem se v zacatcich dopustil, byla snaha psat velmi komplexni aplikace, ale zaroven snaha o to, aby vysledek byl naprosto dokonaly. Ve sve nezkusenosti jsem skutecnou narocnost vyvoje vubec nedokazal odhadnout a pote se rozsekal na neznalosti vsech tech veci, ktere jsem popisoval vyse - krome te zminovane syntaxe, algoritmizace a dalsich zjevnych zakladu. Dokazal jsem vyresit dilci casti, ale nedokazal jsem je vyskladat dohromady. Prirozene jsem pak ztratil motivaci, projekt opustil a sel delat neco jineho.

Spravny pristup, jak jsem pochopil az mnohem pozdeji, spociva naopak ve vymysleni jednoduchych zadani a teprve po zrealizovani jejich rozsirovani. Nejen, ze je to tak vyrazne jednodussi a prijemnejsi, ale ma to i mnohem bliz k soucasnemu trendu v komerecni praxi (iterativni vyvoj).

Az se budes snazit rozsirit svou jednoduchou jednoucelovou aplikaci, hned uvidis, ktere konstrukty v kodu ti v tom brani. Zacnes premyslet, jak to melo byt napsane, aby to slo rozsirit snaz. Pricichnes k design patternum, coz jsou v podstate standardizovana reseni urcitych problemu. Zasadis si do kontextu, kdy dava smysl ktery z nich pouzit. Pak mozna prijde faze, kdy budes mit tendence psat i skutecne jednoucelove a jednoduche aplikace prehnane komplexne. Uplyne nejaka doba a naucis se brat v uvahu i cas. Zamerne neco napsat jednoduse a rychle, protoze by bylo snadne to v pripade rozsirovani upravit. A tim jsi na te spravne ceste.
6.9.2016 21:50 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
+1
Hello world ! Segmentation fault (core dumped)
6.9.2016 23:06 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
7.9.2016 21:27 _
Rozbalit Rozbalit vše Re: Prokleté programování
++ Ty zkušenosti mají strašnou váhu, je jedno jak moc si geniální, člověk který to dělá 10 let dýl jak ty je úplně někde jinde prostě proto že všechno už jednou v minulosti řešil a teď je to pro něj otázka mžiku. Proto je takovej hlad po senior developerech a proto se tak lišej jejich platy od kachňat.
9.9.2016 07:18 Programátor
Rozbalit Rozbalit vše Jak se stát dobrým programátorem
Tohle jsou řeči.

1) K programování je potřeba talent, píle a správné směrování. Je spousta programátorů, kteří programují 10 let, ale daleko nepokročili - a jiný s dvouletou zkušeností je snadno předběhne v leččems.

Talent prudce urychluje vzestup programátora. Stejně rychle urychluje vzestup programátora dobrá znalost matematiky. Píle je nutná vždy. Pokud něco chybí, postup je pomalejší - a o to více je nutné to vydřít.

2) Zkušenosti jsou jedna věc, ale ze všeho nejdůležitější je učit se od těch dobrých a nejlepších.

Poznámka: Nejlepší nejsou ti nejslavnější; ani ti, o kterých jiní tvrdí, že sjou nejlepší; ani ti co napsali věhlasné knihy o programování; či umějí o programování dobře přednášet.

Je mnoho povolaných, ale málo vyvolených. Mnoho programátorů umí hlavně hezky a sebevědomě mluvit - ale jen málokdo umí skutečně programovat. Bastlit se dá v elektronice i programování.

3) Nejrychleji se člověk učí, když bude chtít vědět, co dělá každičký řádek v jeho či cizím programu. Nedá si pokoj, dokud nepochopí každý příkaz, cyklus, výraz, algoritmus, se kterým se setká.

Mimo jiné tak člověk rychle přijde na to, který programátor je dobrý, a od kterého se neučit, protože odhalíte, kdo nerozumí přesně tomu co dělá. Mnozí programátoři dělají jen šablony, které odněkud převzali. A dodržují pravidla, která jim někdo řekl, ale nevědí, zda jsou ta pravidla dobrá či ne - nikdy se nad nimi nezamýšleli. Většina programátorů je takových a od těch se neučte.

Vždy se ptejte proč je tam tento přikaz, a zda by jiný nemohl být lepší. U každého pravidla se ptejte, proč je toto pravidlo, a zda je to užitečné pravidlo nebo jen náboženství bez významu.

Toto vede nejrychleji a nejspolehlivěji k tomu stát se mistrem, a také k odhalení slepých cestiček, slepých ulic, knih, přednášejících, programátorů - a najití těch nejlepších vzorů.

4) Každý programátor musí udělat několik kroků, a nedají se obejít. 1) Nabít si hubu, protože si blbě pojmenoval proměnné. 2) Nabít si hubu, protože udělal špagetový program. 3) Nabít si hubu, protože se nevyzná ve vlastním program po půl roce, když potřebuje opravit chybu. 4) Udělat velký projekt a nabít si hubu, protože se pokusí udělat velký projekt stejným způsobem jako malý - a utopí se v tom.

To jsou všechno nutné věci, a kdo si jimi neprojde - je patlal a ne programátor - a je jedno kolik desítek let programuje. Tyto zkušenosti se nedají obejít ani získat jinak, než že do nich člověk spadne - a natluče si nos.

5) Nezačínal bych ani programovacím jazykem C ani Javou. Začínal bych programovacím jazykem se štábní kulturou, který tvrdě vynucuje čistotu. Tedy jazykem nikoli systémovým, strojovým, ani sektářsky objektovým - ale jazykem modulárním, typově silným, strukturovaným. Kdysi byl takovým jazykem Pascal, Simula či Ada - ale je jich spousty. V tomto jazyku nezůstávejte (i když můžete, není to nic proti ničemu), berte ho jako učební - a jako slabikář.

6) To nejdůležitjěší v programování není programovací jazyk, ani jeho syntaxe ani jeho knihovna - to je podružné. To nejdůležitější jsou programátorské principy, algoritmizace, a schopnost přemýšlet "nadjazykově".

Jakmile "myslíte v jazyce C" nebo v "myslíte v jazyce X" - pak to není ono. Dobrý programátor napíše optimální a dobrý algoritmus v každém programovacím jazyce, ale v každém trochu či zcela jinak. Dobrý programátor přemýšlí v algoritmech, nikoli v jazyce.
9.9.2016 08:55 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Jak se stát dobrým programátorem
Dobry den, pane Ponkraci.
  1. ano, to je zjevne
  2. ano, to je zjevne
  3. ano, to je zjevne
  4. ano, to je zjevne
  5. snad ano
  6. ano, to je zjevne
Jako reklama na Programmer the Hero: Code Ninja Strikes Back docela slusny.
9.9.2016 21:16 Programátor
Rozbalit Rozbalit vše Re: Jak se stát dobrým programátorem
Ponkrác to je nějaká generální přezdívka pro programátory? Něco jako linuxák, hacker, ponkrác? Nerozumím...
10.9.2016 01:14 Piloslav Monkrác
Rozbalit Rozbalit vše Re: Jak se stát dobrým programátorem
Spíš generická přezdívka pro lidi co začínají příspěvek slovy "Tohle jsou řeči.", načež zavalí čtenáře zdí z textu vysokou 3.7kB plnou keců a vlastních názorů, místo diskuzních argumentů.
10.9.2016 02:20 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Jak se stát dobrým programátorem
Tak, tak. Unikl mi vyznam toho prispevku, protoze se tvari, ze je ve sporu, ale pritom v nem byly odprezentovany jen trivialni nazory, ktere zde ani nikdo nerozporuje. Osloveni jsem zvolil podle toho slohu.
10.9.2016 15:56 Agent | HC city
Rozbalit Rozbalit vše Re: Jak se stát dobrým programátorem
Nějak si nejsem jist, jestli ona věta "Tohle jsou řeči" je vlastně taková sebekritika a je nadpisem či úvodem toho jeho příspěvku, nebo jak? Jinak ano, všechno tady jsou jen řeči. S tím se nedá než souhlasit.

Jinak s tím Programátorovým příspěvkem se i dá souhlasit, jen nevim proč, jak už ste psali, mají někteří potřebu být za každou cenu v opozici i když to co napíšou není přímo v rozporu s ostatními.
Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
9.9.2016 23:23 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: Jak se stát dobrým programátorem
To je na Ponkrace malo sebestredny. Navic by ti Ponkrac doporucil at s programovanim ani nezacinas.
Please rise for the Futurama theme song.
6.10.2016 17:49 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Prokleté programování
Pokud nechceš programovat embedded věci, tak C podle mě není vhodný jazyk, se kterým začínat programovat samostudiem. Třeba na FIT ČVUT se sice Céčkem začíná, ale pod odborným vedením a pak se docela rychle pokračuje dál (na další jazyky).

V C nejspíš pro samé stromy (pointery, struktury) nevidíš les. Zkus aspoň trochu ten Python. A rovnou přijď za dva týdny na Pyvo :) Česká komunita okolo Pythonu je hodně aktivní i ve věcech pro začátečníky, zejména Pyladies, kde jsou i bohaté materiály (jejichž čtení samozřejmě není omezeno jen na "ladies" a i množství růžové barvy je únosné).
6.10.2016 23:08 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Naopak. C je dobrý jazyk pro začátek. Pochopit oddělený překlad, hlavně pointery, trochu si pohrát s pamětí, aby věděl, jak věci fungují uvnitř, ale pak to chce jít brzy k něčemu vysokoúrovňovému, jako je třeba ten Python. Určitě není dobrý nápad pokračovat s C++ nebo Javou, ty až mnohem později. Javascript a PHP zas mají dost zabordelený ekosystém. Také je velmi dobré si čuchnout k Lispu, Haskellu a Prologu, docela to otevře oči, i když v praxi se na ně moc nedostane.
Hello world ! Segmentation fault (core dumped)
7.10.2016 02:13 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Prokleté programování
Asi máme každý jiný úhel pohledu na jinak stejnou věc. Ale jak je vidět zrovna tady, někdo s tím Céčkem začal a zasekl se, tak jsem chtěl poradit, jak se "odseknout".

V tvém argumentu se dá pokračovat klidně až do asembleru a k tranzistorům. I když, to by asi taky bylo ku prospěchu :)

Je otázkou, co s tím jazykem ten člověk-začátečník zvládne udělat. Může si v konzoli malovat pyramidy z hvězdiček a naprogramovat kalkulačku. Pokud začne s Pythonem, může jednoduše použít hromadu knihoven a nahackovat něco, z čeho bude mít opravdovou radost - je to dvacetkrát jednodušší, než se o to pokoušet v C. Je pak větší motivace a prostor ponořit se do hloubky (a objevovat C, Haskell...).
7.10.2016 08:10 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
7.10.2016 11:37 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Jenže u té kalkulačky pochopí, co počítač opravdu dělá, jak to či ono vypadá v paměti. Vyšší jazyky toho hodně skrývají a je to matoucí. Proto, aby mohl dělat něco užitečného, tvrdím, že má s Pythonem začít brzy po C.

Jít níž než je C není pro běžné programování až tak podstatné, hlavně ze začátku, ale hodí se vědět, jaké komponenty počítač má, jak se programují mikroinstrukce v procesoru, jak poskládat něco z hradel a klopných obvodů. K tomu ale dojde později, až si začne hrát s Arduinem.
Hello world ! Segmentation fault (core dumped)
7.10.2016 11:51 Fluttershy, yay! | skóre: 85 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
7.10.2016 15:13 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
S tim nemuzu souhlasit - stejne tak neni nutne pochopit fungovani motoru, abys mohl ridit auto. Pokud ale chces byt dobry ridic, o fungovani sveho vozu bys neco vedet mel. Zacit primerene high-level jazykem a teprve pozdeji si doplnit technicke znalosti se mi jevi jako nejrozumnejsi cesta.

Abys mohl programovat v C, musis rozumet fungovani nejen pocitace, ale i operacniho systemu. Nelze intuitivne pochopit, proc NULL ma konstantu 0, kdyz 0 v real modu je normalne validni adresa (jen na ni je IVT). V protected modu prideleny pametovy prostor neodpovida realne fyzicke pameti. Zacatecnikum se to pri vysvetlovani pointeru zpravidla zamerne nezminuje, coz ma za nasledek to, ze nemuzou pochopit nektere chyby, se kterymi se budou setkavat.

Oproti tomu pro programovani treba v Jave nebo Pythonu staci porozumet fungovani VM, tj. (vymodelovaneho) pocitace, ktery je jednodussi nez pocitac fyzicky. Nemusis vysvetlovat, jak funguji pointery - staci vysvetlit vyznam instanci a referenci. Nemusis se zminovat o kodovani a zvidavemu studentovi vysvetlovat, proc jeho program neumi osetrit zadane jmeno s diakritikou a vypisuje chybne pocet znaku. Nemusis vysvetlovat rozdil mezi alokaci na heapu a na stacku a ucit ho se spravne rozhodnout, kdy je vhodnejsi na cem alokovat.

Ano, mnoho starsich programatoru na C zacinalo - ale v realnem modu pod MS-DOSem, kde vse bylo z technickeho hlediska mnohem jednodussi a srozumitelnejsi nez je tomu na dnesnich pocitacich a systemech. I oni zacinaly na jednoduchych pocitacich a teprve casem dospeli ke slozitejsim, stejne jako je mozne to napodobit dnes s pouzitim vhodne VM.
7.10.2016 15:40 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Prokleté programování
Celkem souhlas, až na to:
Nemusis se zminovat o kodovani a zvidavemu studentovi vysvetlovat, proc jeho program neumi osetrit zadane jmeno s diakritikou a vypisuje chybne pocet znaku.
Na problémy s kódováním narazíš i v té Javě – resp. ne uvnitř ní, ale na rozhraní s okolním světem (soubory, síťová komunikace). Mít představu o tom, že znaky jsou něco jiného než bajty a že jsou navzájem převoditelné pomocí kódování a že těch kódování existuje víc – to je nutnost i ve vysokoúrovňových jazycích.

Ale aspoň tam nenarážíš na takové hlouposti jako je neschopnost zjistit délku řetězce nebo nefungující regulární výrazy.
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.10.2016 17:00 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Ano, ty technicke znalosti drive nebo pozdeji ziskat musis. Rozdil je v tom, kdy se s tim setkas. V C se s tim muzes setkat pri uplnem uvodu do programovani, zatimco v Jave az mnohem pozdeji.

O cem mluvim je treba tohle:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
	char buff[256];
	
	printf("Zadejte sve jmeno: ");
	fgets(buff, sizeof(buff) / sizeof(char), stdin);
	
	printf("Zadal jste %i znaku.\n", strlen(buff));

	return EXIT_SUCCESS;
}
A vysledek:
tom@eMig:~/Desktop$ gcc hello.c -o hello
tom@eMig:~/Desktop$ ./hello
Zadejte sve jmeno: Tomáš
Zadal jste 8 znaku.
Pane uciteli, mne to nefunguje!
7.10.2016 17:08 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Prokleté programování
K čemu je to dělení sizeof(char)? To [256] je počet znaků nebo bajtů?
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.10.2016 17:13 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Prokleté programování
P.S. už to chápu, neuvědomil jsem si, že sizeof(buff) vrátí počet bajtů.

Opět ukázka, jak „skvělý“ jazyk to je, když pro zjištění velikosti pole musíš dělat takovéhle opičárny a převádět to sem tam, místo abys zjistil počet prvků jednou metodou/funkcí.
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.10.2016 17:16 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Duvodem budiz to, ze C pole vubec nezna. Zna jen flaky pameti, ktere muzes nejak subadresovat.
7.10.2016 18:24 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Tak skvělý jazyk to je, pro svůj účel a pro svoji úroveň abstrakce. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.10.2016 18:28 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Souhlas, nicméně bohatší standardní knihovna by vůbec nebyla na škodu. Beztak si každej nadefinuje něco jako:

#define BUFSZ(x) (sizeof(x) / sizeof(*x))

Člověk aby v C definoval furt to samý dokola...
7.10.2016 22:11 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Souhlas, nicméně bohatší standardní knihovna by vůbec nebyla na škodu.
Tím si nejsem vůbec jistý. Už teď to funguje tak, že někteří používají ANSI IO, zatímco jiní ho zcela odmítají a používají POSIX IO, které přímo zpřístupňuje systémová volání. Přijde mi, že samotná standardizace ANSI přinesla hromadu zbytečných „nadstaveb“ nad POSIX API operačního systému a přitom neposkytuje dostatečné prostředky pro tvorbu běžných aplikací. Možná by bylo praktičtější takové věci vůbec nestandardizovat a nechat to na tvůrcích rozšiřujících knihoven. Stejně se nakonec ty rozšiřující knihovny používají už kvůli nekompatibilitě mezi OS.
Beztak si každej nadefinuje něco jako...
V životě jsem nic takového nepoužil a ani netuším, k čemu by taková konstrukce byla.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.10.2016 23:16 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Tím si nejsem vůbec jistý. Už teď to funguje tak, že někteří používají ANSI IO, zatímco jiní ho zcela odmítají a používají POSIX IO, které přímo zpřístupňuje systémová volání.
Měl jsem hlavně na mysli algoritmy a datové struktury, tj. věci, které nejsou moc platformě závislé. Ale i abstrakce platformy tam IMHO má své místo. Když někomu v nějakém případě z nějakého důvodu nevyhovuje, nic mu nebrání použít nativní API na dané platformě. Zbylých 80% bude rádo za DRY.
8.10.2016 11:42 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Měl jsem hlavně na mysli algoritmy a datové struktury, tj. věci, které nejsou moc platformně závislé.
Za mě čím méně se míchá standardizace nízkoúrovňového jazyka jako je C s tvorbou knihoven, tím lépe. Ve spoustě ohledech mi daleko víc vyhovuje POSIX než ANSI, ve spoustě věcech mi ani POSIX nepřijde dobrý a je prakticky nemožné ho aktualizovat. Vzhledem k tomu, že to, co ty považuješ za céčkové API používá prakticky ze všech programovacích jazyků, mi osobně přijde daleko praktičtější to API nepovažovat za součást jazyka a ideálně ani za jeden celek, nehledě na to, že to API ve skutečnosti není ani jednotně implementované a využívané.

Můžeš argumentovat datovými strukturami, ale na každou datovou strukturu najdeš tunu názorů, jak by měla vypadat a proto na ně taky existuje tuna lepších či horších knihoven. Podle mě je daleko lepší se smířit s tím, že je C nízkoúrovňový jazyk a neklade žádné konkrétní nároky na datové struktury nad rámec nějakého společného pohledu na podporované stroje.

A i těch obecných abstrakcí platforem existuje pro céčko hromada, stejně jako specializovaných abstrakcí.

Podle mě by byla jakákoli nadbytečná standardizace u céčka chyba. Pokud se ti céčko principiálně nelíbí, nevidím důvod se ho snažit měnit. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 16:26 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
To, že ti vyhovuje jiná knihovna než standardní je zcela v pořádku, ale nepřijde mi, že by tě v takovém případě jakkoli omezovala existující implementace ve standardní knihovně.
Podle mě je daleko lepší se smířit s tím, že je C nízkoúrovňový jazyk a neklade žádné konkrétní nároky na datové struktury nad rámec nějakého společného pohledu na podporované stroje.
To ale není vůbec nijak v konfliktu s tím, co píšu. Žádné nároky na datové struktury z jazyka C z toho neplynou.
9.10.2016 20:20 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
To, že ti vyhovuje jiná knihovna než standardní je zcela v pořádku, ale nepřijde mi, že by tě v takovém případě jakkoli omezovala existující implementace ve standardní knihovně.
To je všechno naprosto krásné, až na to, že zcela ignoruješ fakt, že se nejedná o implementaci, nýbrž standard, který vynucuje redundantní kód v každé implementaci daného standardu navíc ke knihovně, kterou chci skutečně použít. Tedy ve chvíli, kdy se najde tisíc takových lidí jako jsi ty a každý bude úspěšně požadovat tu svoji věc od standardní knihovny, pak bude značně přebujelá.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 23:06 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Tedy ve chvíli, kdy se najde tisíc takových lidí jako jsi ty a každý bude úspěšně požadovat tu svoji věc od standardní knihovny, pak bude značně přebujelá.
To je ten druhý extrém.
7.10.2016 18:32 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše C a prvky z vyšších jazyků
To asi ano.

A to v tom všichni píší takhle? Pořád zjišťují délky datových typů, dělí navzájem počty bajtů, aby zjistili tak primitivní věc jako je třeba velikost pole? Neexistuje nějaká sada funkcí, která by tohle zapouzdřovala a umožňovala pohodlnější a bezpečnější práci a přitom zůstat v C?

Koukal jsem, že existuje i GC pro C/C++? Používáte to někdo? Nebo už pak kašlete na C a používáte nějaký vyšší jazyk a v céčku jen nízkoúrovňově?
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.10.2016 19:31 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
V C++ hlavne existuji smart pointers, takze lze pouzivat ty. Jinak ano, kdybych se vracel k C++, tak bych se asi pokusil vytvorit co nejsirsi obdobu Java API (kolekce, ...). Takove veci uz existuji, ale ja bych si napsal svoje stejne - ne proto, ze bych to napsal lip, ale proto, abych si C++ procvicil a pripomnel. Driv jsem si myslel, ze C++ docela umim, ale po nahlednuti do kodu profesionalnich programatoru v C++ jsem zmenil nazor.
7.10.2016 22:39 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
A to v tom všichni píší takhle?
Já osobně to vidím poprvé v životě.
Pořád zjišťují délky datových typů
Jak se to vezme, sizeof používám v kódu relativně často, ale pouze ve spojení s vybranými funkcemi standardní knihovny (malloc(), memset(), ...) a s výsledkem typicky nedělám žádné aritmetické operace.
dělí navzájem počty bajtů
K tomu nevidím důvod.
aby zjistili tak primitivní věc jako je třeba velikost pole
Velikost pole není z hlediska procesoru primitivní, ale je potřeba ji buď předem definovat nebo někam uložit. K práci s dynamicky alokovaným polem program potřebuje znát adresu dynamicky alokované paměti, velikost prvku, počet prvků a z důvodu efektivity typicky ještě velikost rezervované paměti.
Neexistuje nějaká sada funkcí, která by tohle zapouzdřovala a umožňovala pohodlnější a bezpečnější práci a přitom zůstat v C?
Existuje jich hromada, říká se jim knihovny. :)
Koukal jsem, že existuje i GC pro C/C++?
Musí existovat, vzhledem k tomu, že je v C napsaná spousta jazyků s GC. Popravdě řečeno, když chci high level přístup, použiju Python. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.10.2016 23:23 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Moment - jak tedy zjistis velikost bufferu alokovaneho na zasobniku? Bavime se o tom, ze to nepotrebujes (pouzijes konstantu - chapu a souhlasim, kod bude citelnejsi), nebo ze mas nejake vytky vuci funkcni strance te konstrukce jako takove (deleni poctem bajtu)?
8.10.2016 15:38 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Moment - jak tedy zjistis velikost bufferu alokovaneho na zasobniku?
Velikost bufferu na zásobníku v dané funkci znám, vzhledem k tomu, že ji tam sám volím, tedy sizeof nepotřebuju. Dělení konstatní jedničkou neprovozuju. Dělení hodnotou jinou hodnotou mi zase nedá velikost bufferu v bytech. Prostě si vůbec nejsem vědom motivace se něčím takovým zabývat, připadá mi to jako nesmysl.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 16:01 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Velikost bufferu na zásobníku v dané funkci znám, vzhledem k tomu, že ji tam sám volím, tedy sizeof nepotřebuju.
To jsem v predchozim prispevku oznacil jako to pouziti konstanty. Jasne, chapu.
Dělení konstatní jedničkou neprovozuju.
Nejsme ve sporu. Jak jsem psal, jak je to se sizeof(char) mi uz vysvetlil kralyk. Slo by jeste argumentovat, ze uvadet vzdy sizeof, bez ohledu na konkretni typ, je vic konzistentni nez to uvadet jen pro ty typy, jejichz velikost se muze lisit (napr. u malloc to pouzit proste musis). Ze je vysledkem sizeof 1 je proste jen specialni pripad. To je ale uz subjektivni a spravny postoj k tomu neexistuje.
8.10.2016 16:25 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Odpovídal jsem na otázku, zda se takto skutečně v C programuje, tedy zda se počet prvků skutečně běžně zjištuje tak, že uložíš pole do zásobníku místo do haldy, abys na něj vůbec mohl použít sizeof, zjistíš bajtovou velikost pole, zjistíš bajtovou velikost prvku, a vydělíš tyto dvě za účelem zjištění počtu prvků pole.

Franta se ptal nejspíš naprosto vážně, protože je javista a v céčku nedělá a tudíž netuší, jak moc velká pitomost to je.

Moje odpověď je tedy negativní. Taková věc se v C běžně nedělá a nepatří to mezi základní myšlenkovou výbavu céčkovského programáťora. Zdůvodnění je takové, že program má počet prvků pole za všech okolností už znát, stejně jako je tomu u javovských programů, a tedy ho není důvod počítat poměrem mezi bajtovou velikostí pole a bajtovou velikostí prvku.

To, že se k tomu navíc nepoužívá sizeof (char) je dané tím, že char (případně unsigned char či uint8_t) je bajtový číselný typ, tedy nedává smysl počítat jeho bajty.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 16:33 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Jasne, chapu a souhlasim. V tomto jsem zrejme udelal chybu, ze jsem pouzil zbytecne slozitou / neintuivni konstrukci v prikladu, jehoz smyslem bylo neco uplne jineho (a zacatecnik by to tak stejne nenapsal), a neozrejmil to hned.
9.10.2016 16:30 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Odpovídal jsem na otázku, zda se takto skutečně v C programuje, tedy zda se počet prvků skutečně běžně zjištuje tak, že uložíš pole do zásobníku místo do haldy, abys na něj vůbec mohl použít sizeof, zjistíš bajtovou velikost pole, zjistíš bajtovou velikost prvku, a vydělíš tyto dvě za účelem zjištění počtu prvků pole.
Pak možná nejsi ta správná osoba pro zodpovězení téhle otázky.

Já sice osobně ten konstrukt se sizeof/sizeof taky moc nepoužívám, ale v 3rd party kódu jsem ho viděl už mooockrát. Napřijde mi realistické, aby se s tím céčkový programátor opravdu nikdy nesetkal.

Mimo zásobníku se to používá také na globální paměť, v nějakých low-level/embedded aplikacích celkem bežné.
9.10.2016 20:11 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: C a prvky z vyšších jazyků
Beru na vědomí. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 21:56 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše C a znaky vs. bajty
Dělení hodnotou jinou hodnotou mi zase nedá velikost bufferu v bytech
Tam šlo o to, že jiná funkce chtěla znát počet znaků (ne bajtů), aby věděla, kolik jich do bufferu může vložit. U znaků to zrovna sedí 1:1. Ale i tak je to podivná nekonzistence – jednou funkcí si zjistím velikost v bajtech a toto číslo předám do jiné funkce jako argument, který má být podle dokumentace velikost ve znacích. A člověk si na nějakém třetím místě musí přečíst, že je to vlastně totéž a může být v klidu. Pokud by ale šlo o jiná data, musel bys to řešit (dělit).
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
8.10.2016 22:32 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a znaky vs. bajty
Lepsi pristup by patrne byl (i dle diskuze vyse) zavest si tu konstantu. Jen pro jistotu (aby nedoslo k nedorozumeni): ta velikost pole je specifikovana poctem prvku, nikoliv velikosti v bajtech. Staci tedy nasledujici pristup:
#define BUFF_SIZE 256

// na stacku
int buff[BUFF_SIZE];

// na heapu
int *buff = (int *) malloc(BUFF_SIZE * sizeof(int));
Velikost pameti alokovane na heapu stejne nijak (standardne) zjistit nejde, takze podobny pristup je nutne aplikovat i jinde.
8.10.2016 22:39 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: C a znaky vs. bajty
To jsem si říkal už na začátku, proč tam není konstanta – většinou jsem to viděl právě psané s konstantou.
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
8.10.2016 23:04 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a znaky vs. bajty
Proc delat veci jednoduse, kdyz to jde slozite, ze? Napsal jsem ten kod v rychlosti, kdyz jsem si udelal pauzu v praci. Jsem taky Javista, v C uz aktivne nepisu (nepocitaje tool na generovani *.img obrazu meho minimalistickeho FS asi pred pul rokem) a napsal jsem to tak +/- z pameti bez velkeho premysleni. Kdybych se prepnul do uvazovani v ramci C, tak uz pri alokaci toho pole budu myslet na to, ze pri jeho pouziti budu muset znat jeho velikost, a slehnu nekam #define s konstantou. Uvazoval jsem ale spis jako v Jave, takze jsem naalokoval buffer a az pri vyvstale potrebe znovu uvest jeho velikost jsem zacal premyslet, jak to udelat - tohle se jevilo jako neco, co muzu udelat instantne, bez nutnosti se vracet k predchozimu kodu a konstantu nejak pojmenovavat.
8.10.2016 22:46 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: C a znaky vs. bajty
Tam šlo o to, že jiná funkce chtěla znát počet znaků (ne bajtů), aby věděla, kolik jich do bufferu může vložit.
Možná v tom je ta chyba, do bufferu typicky vkládají bajty, ne unicode znaky, vzhledem k tomu, že ani UTF-8 ani UTF-16 nejsou kódování pevné šířky znaku a UTF-32 se ani v céčku běžně pro text nepoužívá.
jednou funkcí si zjistím velikost v bajtech a toto číslo předám do jiné funkce jako argument, který má být podle dokumentace velikost ve znacích
No jo, chybná dokumentace je chybná dokumentace. Jak vůbec znaky ukládá Java? Umí správně pracovat se znaky mimo BMP a vrací skutečný počet znaků u textu, který je obsahuje? Když jsem se Javou zabýval naposled, používala UTF-16, tedy kódování s proměnnou šířkou znaku, jinými slovy kódování, kde se může lišit počet znaků od počtu jednotek stejně jako v UTF-8.
Pokud by ale šlo o jiná data, musel bys to řešit (dělit).
Nemusel. Proč bys to dělal. Proč bys dělil dvě čísla, abys zjistil již známou hodnotu? Uvědomuješ si vůbec, že sizeof funguje pouze na pole pevné deklarované velikosti?
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 23:30 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: C a znaky vs. bajty
Jak vůbec znaky ukládá Java? Umí správně pracovat se znaky mimo BMP a vrací skutečný počet znaků u textu, který je obsahuje? Když jsem se Javou zabýval naposled, používala UTF-16, tedy kódování s proměnnou šířkou znaku, jinými slovy kódování, kde se může lišit počet znaků od počtu jednotek stejně jako v UTF-8.
Jak se to vezme. Metoda length je nevraci. Spravne je to pres codePointCount (takto).

FYI: Je docela vtipne, ze shodou nahod Abicko neumi komentar obsahujici supplementary znaky ulozit. Divil jsem se, proc mi to hazi nejakou databazovou chybu a pak jsem si rikal, ze by to mohlo souviset. A ono jo - kod jsem presunul na Ideone (viz link) a postnout to razem jde.
7.10.2016 17:15 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Pocet bajtu. Char nemusi mit nutne 1 bajt.
7.10.2016 17:32 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
K čemu je to dělení sizeof(char)?
K ničemu. sizeof(char) je vždy 1.
7.10.2016 17:53 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
To neni pravda.
The minimum size for char is 8 bits, the minimum size for short and int is 16 bits
Viz Wikipedia, StackOverflow (obsahuje i citace z relevantnich casti standardu). Ze sizeof(char) je vetsinou 1 bajt neznamena, ze to tak je vzdy, a ze si muzes dovolit tak v C psat (a pak predpokladat, ze to proste bude vsude fungovat).
7.10.2016 18:06 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Ano, CHAR_BITS může být klidně více než 8, ale sizeof(char) je vždy 1, to je definováno standardem.
7.10.2016 18:08 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Pardon, CHAR_BIT

7.10.2016 19:02 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
A plati to tak u vsech standardu C? ANSI C, C99, a tak dal? Kdyz jsem se ucil C, tak jsem jeste neovladal anglictinu na te urovni, abych dokazal standardy (ktere navic nejsou ve finalni podobe legalne zdarma pristupne) pohodlne cist, takze muzu mit nepresne informace, nebo jsem uz neco pozapominal.
7.10.2016 19:27 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
A plati to tak u vsech standardu C? ANSI C, C99, a tak dal?
Ano. Standard C to bere tak, že sizeof(char) = 1 = bajt, ie. pokud máš divný chary, máš divný bajty.

Například pokud budeš mít v implementaci char 32-bitový a int taky, potom sizeof(char) == sizeof(int) == 1.

Osobně jsem ale nikdy nepracoval s platformou, kde by CHAR_BIT nebylo 8.
7.10.2016 19:34 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
OK, diky za info. Jeste se zeptam: V C++ je to stejne?
7.10.2016 19:42 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Jj ;-)
7.10.2016 19:45 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Teda abych pravdu řekl, nevim, jak to bylo v dávně minulosti (tj. třeba K&R C apod), ale AFAIK všechny standardizace to tak mají...
7.10.2016 20:03 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
OK. Ja mam prave v tech standardech u C/C++ docela bordel.
8.10.2016 00:01 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Krom toho, že sizeof(char) je zbytečné (standardem definováno jako 1), ber v úvahu, že C vzniklo (1969-1973) v době, kdy ASCII bylo žhavá novinka (1963). Situace s kódováními v C je velmi prostá: C to neřeší – všechny stringy jsou binární, ukončené nulou. Nováčkovi stačí osvětlit, že byte a znak není totéž (a že strlen na UTF-8 nefunguje). V jiných jazycích v tom bývá pěkný bordel, což je daleko horší.
Hello world ! Segmentation fault (core dumped)
8.10.2016 01:23 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Krom toho, že sizeof(char) je zbytečné (standardem definováno jako 1)
To uz mi vysvetlil kralyk. Jsem rad, ze jsem chytrejsi, ale jinak je to zanedbatelny detail. Ja C nekritizoval, tj. ani ten kod jsem nepostnul jako demonstraci nejakych vnitrnich slozitosti jazyka. Na druhou stranu je potreba zminit, ze sizeof(char) je jen jedna vyjimka a v jinych pripadech je skutecne potreba to takto delat (v opacnem pripade by sizeof nebyl vubec potreba, ze...).
ber v úvahu, že C vzniklo (1969-1973) v době, kdy ASCII bylo žhavá novinka (1963)
Viz predchozi bod. Ja nekritizuji C jako jazyk a naopak si myslim, ze je navrzene (na svou dobu) velmi dobre a pro systemove programovani je to dodnes nejvhodnejsi jazyk (zvlast diky vymazlenosti kompilatoru). Moje kritika se vztahovala vyhradne na volbu C pro vyuku programovani.
Situace s kódováními v C je velmi prostá: C to neřeší – všechny stringy jsou binární, ukončené nulou.
Ano, a presne tak by to melo byt. Misto strlen by stacilo pouzit jinou implementaci, ktera zvazuje UTF-8 a program by ihned fungoval spravne.
Nováčkovi stačí osvětlit, že byte a znak není totéž (a že strlen na UTF-8 nefunguje).
To je nesmysl. char je prece zkratka od character a vsude se o tom nemluvi jako o "bajtu" (navic bys asi necekal, ze bajt bude signed), ale jako o znaku. Na bajt tu mas stdint.h a srozumitelnejsi typedef uint8_t.

Tvrzeni byte a znak neni totez je navic silne zavadejici, protoze si zvidavy student zacne klast otazku, jak je tedy ten znak reprezentovany, kdyz to neni bajt. Pokud je char bajt a znak neni bajt, tak proc mu jeho program v nekterych pripadech funguje?

Misto vymysleni obezlicek je potreba naservirovat realitu. Existuji ruzna kodovani, ktera ruznym znakum prirazuji ruzna cisla. U ASCII se kazde z tech cisel vejde do 1 bajtu, u UTF-8 do jednoho ci vice bajtu apod. Standardni C resi pouze ASCII, takze zatim pouzivejte pouze znaky bez diakritiky a nepouzivejte, prosim, emoji. Casem se naucime zpracovavat i vstupy v jinych kodovanich.

To je hrozne prece, ne?
V jiných jazycích v tom bývá pěkný bordel, což je daleko horší.
Jak jsem psal vyse - rozdil je v tom, kdy se s tim setkas. Napr. v te Jave se s tim na takto jednoduchych prikladech proste nesetkas. Mohl by ti to zmrvit terminal, resp. cmd.exe (nevim, jestli v te by to fungovalo), ale pri spusteni treba z Eclipse, ktere se na skolach s oblibou pouziva, to fungovat bude. A urcite mi prijde jednodussi rict spoustej to tak a tak, protoze kdyz to spustis takhle, tak se ten vstup spatne zakoduje nez u jednoho z prvnich programu, ktery dotycny napsal, zcela zbytecne zabihat do nesouvisejicich detailu - coz musis udelat, pokud nechces studentum od zacatku lhat.

Navic to byl jen jeden argument z mnoha.
8.10.2016 02:37 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
UTF-8 je navržené tak hezky, že jediný problém je v strlen a v některých případech při porovnávání/řazení stringů. Vše ostatní bude fungovat dle očekávání. Takže stačí šikovně zvolit cvičné úlohy a v pohodě se všem problémům na začátku vyhneš. Ke kódováním se tak můžeš dostat, až když budeš chtít. A ono to není zas tak složité …
Hello world ! Segmentation fault (core dumped)
8.10.2016 03:22 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Ano. To pak klade naroky i na ucitele, ktery na ruzne speciality musi myslet. Zde to je tedy nefungujici strlen pro non-ASCII retezce, jinde to jsou problemy s pameti nebo vyssi riziko syntaktickych chyb pri kompilaci (viz muj prvni komentar na toto tema).

V podstate jsi sam priznal, ze aby bylo mozne C rozumne ucit jako prvni jazyk, je nutne v studenta v prvni fazi od tech "tvrdych" technickych detailu izolovat. Pak ale nevidim duvod, proc tedy pouzivat to C, kdyz muzes zacit treba s tim zde diskutovanym Pythonem, nebo drive take Pascalem.

V neposledni rade je ale potreba rict, ze ja na uceni nekoho neco vubec neverim a cely ten system naprosto odmitam. Verim jen na samostudium s moznosti konzultaci a v pripade oboru, ktere to vyzaduji, samozrejme i pristup do laboratori apod. Skolstvi nijak netezi z talentu a zajmu mladych lidi, ale namisto toho jim zkostnatele vnucuje to, co nekolik pomazanych hlav v prihlouplych talarech povazuje za to prave. Clovek, ktery chce tvorit hry, ma uplne jine predstavy nez nekdo, komu se libi "hackovani" a jeste jine nez nekdo, kdo chce delat weby. Jejich motivace je rozdilna, a stejne tak jsou i technologie, ktere si maji do zacatku zvolit.

Osobne bych tedy skolstvi zrusil.

Moje nazory se shoduji s temi prezentovanymi v knize Otroci bludu ve Chramu zkazy. Autor je dle meho nazoru genius a mistr slova navic.
8.10.2016 13:38 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Ne, vůbec netvrdím nic o izolaci od tvrdých technických detailů. Právě naopak. Tvrdím, že je potřeba na začátku získat povědomí o tom, co ten počítač ve skutečnosti dělá a jak data v paměti vypadají. Proto C a pointery. Jinak bude programování pro studenta magie a budou mu unikat důležité souvislosti.

"Komplikace" s UTF-8 mohou počkat, ty nejsou pro chápání činnosti počítače nijak podstatné. Také nejsou podstatné různé knihovny a API. To všechno může přijít potom. I když vysvětlení UTF-8 je dobré udělat ještě před přechodem na Python, neboť v C ty byty uvidí velmi snadno a bez komplikací.
Hello world ! Segmentation fault (core dumped)
8.10.2016 14:29 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
V tom se neshodneme. Pocitacovych architektur existuje cela rada. Namatkou bych zminil Java processor. Davalo by smysl zabyvat se C na harvardske architekture? Je nezbytne nutne vedet, jak se na x86 pocitaci do pameti ulozi integer, nebo staci vedet, ze mas k dispozici slot pro cislo, ktery jsi si nejak pojmenoval, kdyz existuji technologie, ktere te od toho umi na tuto uroven odizolovat?
9.10.2016 00:32 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Ono je celkem jedno, jakou architekturu si na začátku začátečník osahá (pokud to je něco rozumného). Hlavní je, aby si aspoň něco osahal a získal představu o tom, co se děje pod povrchem. "Mít slot pro číslo" je právě ta magie, které pak nerozumí.

Harvardská nebo Van Neumanova architektura v současné době ochran proti spouštění datových stránek paměti a zápisu do těch spustitelných vyjde v mnoha ohledech nastejno (obzvlášť dokud se nejde příliš hluboko). Jak vypadá integer v paměti podstatné je, neboť jinak nebude tušit, jak používat binární operace.
Hello world ! Segmentation fault (core dumped)
9.10.2016 00:43 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Co myslis temi binarnimi operacemi? Nezamenil jsi to omylem s bitovymi operatory?
9.10.2016 00:54 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Co se ti nezdá na binárních operacích prováděných pomocí bitových operátorů? ;-) (njn, je už trochu pozdě)
Hello world ! Segmentation fault (core dumped)
9.10.2016 01:00 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Většinou se tomu asi říká bitové operace.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 01:01 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Binární jsou prakticky všechny operace s čísly, co se na běžně známých architekturách provádějí.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 11:07 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
Však jsem psal, že už bylo pozdě.
Hello world ! Segmentation fault (core dumped)
9.10.2016 01:05 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
OK. Bitove operatory (vc. te reprezentace hodnot v pameti apod.) se IMO staci naucit az pozdeji, protoze bezne se s tim moc nesetkas. Kdyby nekdo zacinal treba na Arduinu a C, tak tam to pri nejake komunikaci s hardwarem asi zuzitkuje relativne brzo, ale jinak asi moc ne.
9.10.2016 11:20 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Jaká úroveň programování
O jakém budoucím uplatnění se bavíme? Programátor jednočipů? Přispěvatel do Jádra? Nebo autor aplikací ve vyšších programovacích jazycích?

Pokud má jasno v tom, že chce dělat ty nízkoúrovňové věci, tak pak tomu musí rozumět na téhle úrovni. Pokud ale má pracovat jako běžný aplikační programátor (kterých je nejvíc a pravděpodobně takovou práci jako absolvent bude dělat), tak jsou tyhle znalosti spíš na škodu – bude znát různé nízkoúrovňové postupy a bude je chtít uplatnit, ale to nedává smysl, akorát tím zahnojí kód aplikace, kde se mělo psát jinak → bude to méně přehledné, náchylné k chybám, špatně udržovatelné. Nebo mu někdo vysvětlí, že to používat nemá, a pak bude zase možná nešťastný z toho, že se učil něco, co v praxi ani nevyužije.

Je to poměrně složitá otázka, jak moc do hloubky by se mělo jít a od jaké úrovně abstrakce začínat. Sám na to nemám přesnou odpověď. Člověk by měl znát něco pod povrchem, na kterém se běžně pohybuje, ale asi to nemusí být první věc, kterou se dozví – může to zjišťovat průběžně. Ale hlavně by měl vždy vědět, kam který postup patří a na co která úroveň abstrakce hodí.
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.10.2016 11:30 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Jaká úroveň programování
To co tu píšu v celé diskuzi je myšleno pro kohokoliv, kdo to s proramováním myslí vážně. Jedno zda bude psát pro jednočipy, ovladače do jádra, systémové nástroje, nebo informační systémy v Javě. Vsechno, co tu bylo zmíněno jsou naprosto základní věci, ani jsme se nedostali k pokročilejším datovým strukturám, procházení grafů nebo jen rekurzi. Pokud by dotyčný uměl jen to, co tu bylo zmíněno, byl by dobrý tak na zametání serverovny. Než by zněj byla i jen cvičená opička na lepení "běžných aplikací", tak by se musel ještě pár let učit.
Hello world ! Segmentation fault (core dumped)
9.10.2016 11:42 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Kvalitní programátor
Bohužel v praxi programují lidi s mnohem horšími znalostmi (takoví, které bys nenechal ani zametat serverovnu) – a kdyby ovládali bitové operace nebo věděli, jak je číslo uložené v paměti, tak je to v ničem nezachrání, leda z toho budou ještě zmatenější. Ideální programátor samozřejmě tohle všechno zná, ale těch na trhu tolik není – takže pokud se bavíme o nějakém kompromisu, který bude produkovat přijatelně dobrý kód, tak u něj ocením jiné kvality než nízkoúrovňové znalosti.
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.10.2016 11:35 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Jaká úroveň programování
+1
8.10.2016 15:57 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Zde to je tedy nefungujici strlen pro non-ASCII retezce
On není nefungující, jen vrací bajtovou délku, která je potřeba pro všechy paměťové operace, což je 99% kódu.

Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 16:13 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
V kontextu toho mnou postnuteho kodu je to nefungujici. Aby nedoslo k nedorozumeni, tak strlen sam o sobe samozrejme funguje spravne a dle specifikace, ale chybne je jeho pouziti - protoze pokud chces zjistit pocet znaku non-ASCII retezce, tak proste nemuzes pouzit strlen. Zacinajicimu programatorovi se to ale bude jevit tak, ze nefunguje ta funkce, takze jsem se vyjadril zjednodusene. Uz jsem rozebiral v jinem prispevku, ze char je prece zkratka od character, stejne jako strlen je zkratka od string length (tedy v tomto pripade "delka retezce tvoreneho chary, tj. znaky") apod.

Neni to chyba jazyka, ktery byl ve sve dobe prelomovy a dodnes je pro svuj ucel velmi dobry (ostatne uz jsem rikal, ze mym cilem neni kritizovat C jako takove). Poukazuji vyhradne na to, ze nektere veci jsou neintuivni (viz komentar, kde zminuji NULL) a pro vyuku programovani se dle meho nazoru nejedna o vhodny jazyk.
8.10.2016 16:33 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Jako sorry, ale k zaměňování nefunkčního a špatně zvoleného se nebudu dál vyjadřovat. Spousta věcí je neintuitivní, ale o tom bychom se mohli bavit sto let.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 16:59 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Ja to nezamenuji. Vzal jsem trivialni priklad a zamerne v nem udelal zacatecnickou chybu v podobe chybne zvolene funkce. Tvrdim, ze zacatecnika to muze mast a zbytecne odvadet jeho pozornost k technickym detailum namisto zakladnich principu programovani jako takoveho. U technicky zalozeneho cloveka to vadit nemusi (naopak to muze byt zadouci), zatimco u cloveka, ktery ma zajem treba o algoritmizaci je to naprosto zbytecne.

Nekolika zacatecnikum jsem s programovanim trochu pomahal a svoje nazory si tedy uplne necucam z prstu. V jinem prispevku jsem tady zminoval, jak silne zalezi na motivaci dotycneho. Prave tu motivaci je nutne pochopit a teprve podle ni doporucit vhodny jazyk. Pokud tu motivaci nezname a mame trefit jazyk, ktery statisticky bude nejvhodnejsi, pak tvrdim, ze C rozhodne bude na nejnizsich prickach. Ve specialnich pripadech bych nekomu jak prvni jazyk bez zavahani klidne doporucil Assembler na vhodnem procesoru, ale pro typickeho zacatecnika to bude nejaky high-level jazyk (muj osobni tip by byl Python).
8.10.2016 17:24 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Za sebe: Zacinal jsem v ~11 s Pascalem, zahy jsem pridal spetku Assembleru (v moji instalaci byla poskozena unita Graph, tak jsem si napsal vlastni), pote jsem si chvili hral s PHP a teprve pote jsem se po prechodu na Linux zacal ucit C. Shodou nahod jsem se ten Pascal ucil z knihy, ktera byla urcena pro programatory v C, a uz pred tim jsem si precetl ruzne knihy o hardwaru, takze jsem ty zakladni principy pochopil jeste pred tim C. ;-)
8.10.2016 17:47 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Tak jako céčko je takové jaké je... neintuitivní po mnoha stránkách, trošku i zatížené historií, standardní knihovna není úplně ideální, ale musím říct, že oproti dialektu Turbo Pascal mi céčko konečně dávalo aspoň trochu smysl, ale zase na druhou stranu jsem se musel hned naučit pracovat s debuggerem. :D

Osobně nemám ambice stavět metodiku pro výuku programátorů ve školách a ani si neumím představit, že bych třeba metody, které fungují pro mě, zkoušel aplikovat na širokém spektru lidí. Až moc často zjišťuju, že můj workflow u čehokoliv přijde druhým divný.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 18:55 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Tak jako céčko je takové jaké je... neintuitivní po mnoha stránkách, trošku i zatížené historií, standardní knihovna není úplně ideální, ale musím říct, že oproti dialektu Turbo Pascal mi céčko konečně dávalo aspoň trochu smysl, ale zase na druhou stranu jsem se musel hned naučit pracovat s debuggerem. :D
Pri tom prvotnim vstupu mi daval docela smysl i ten Pascal. Clovek musi pochopit spoustu veci - promenne, funkce, podminky, cykly. Tim pochopi zaklady programovani a muze jit vic do hloubky mnohem snaz.
Osobně nemám ambice stavět metodiku pro výuku programátorů ve školách a ani si neumím představit, že bych třeba metody, které fungují pro mě, zkoušel aplikovat na širokém spektru lidí. Až moc často zjišťuju, že můj workflow u čehokoliv přijde druhým divný.
Ja takove ambice take nemam - zejmena proto, ze na takovy pristup vubec neverim. Viz #474 (pocinaje tretim odstavcem).
8.10.2016 21:39 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Já v tomhle hodně dávám na Martina Mareše, který přecejenom pěkných pár lidí programování učil a náročnou skupinovou formou, kdy se nemůže každému věnovat jednotlivě na 100% a ten podporoval výuku algoritmů a datových struktur v Pascalu, případně jak alternativu začátek na nějakém funkcionálním jazyku. Četl jsem si i nějaké jeho pojednání, ale nebyl jsem schopný to sám za sebe zhodnotit, už jenom proto, že mě zajímají jiné věci a chápu věci jinak než nějaký rozumný statistický vzorek budoucích programátorů.
Ja takove ambice take nemam - zejmena proto, ze na takovy pristup vubec neverim.
Tak já to úplně nezatracuju už jenom proto, že to je z dlouhodobého hlediska součást mojí obživy, ale sám jsem taky nenapravitelný samouk.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 00:46 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Prokleté programování
NAME
       strlen - calculate the length of a string

...

RETURN VALUE
       The strlen() function returns the number of characters in the
       string pointed to by s.
Tedy pro UTF-8 nefunguje. Že to pro většinu operací vrátí hodnotu, která nic nerozbije, je díky šikovné zpětné kompatiblitě s ASCII. Ale rámeček kolem textu s tím neuděláš (a rozsypané pravé okraje dialogů v TUI programech byly před pár lety celkem běžně k vidění).
Hello world ! Segmentation fault (core dumped)
9.10.2016 01:04 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Funguje nezávisle na kódování, jen je potřeba upravit dokumentaci. A za tím si stojím i z toho důvodu, že v drtivé většině případů skutečně potřebuješ přesně tuto operaci, která ti vrátí počet bajtů v řetězci. Dokumentace je napsaná s ohledem na ASCII přístup, kdy znak a bajt jedno jest, ale to na celé věci moc nemění.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 02:38 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Prokleté programování
Tedy pro UTF-8 nefunguje. Že to pro většinu operací vrátí hodnotu, která nic nerozbije, je díky šikovné zpětné kompatiblitě s ASCII. Ale rámeček kolem textu s tím neuděláš (a rozsypané pravé okraje dialogů v TUI programech byly před pár lety celkem běžně k vidění).
V tom co všechno je s unicode možné, to aby se prase vyznalo. Ještě jsem nepotkal nic, kde by to vracelo skutečnou šířku viditelného textu. Ala
>>> len("z̝a̳̭̱͇̹̞̬͡l̩̤̱̜̻͚͗ͣͥ̏̈́̀g͚͙̬̿͛ó̷͖͈̬̬!̴̾")
40
A to už je délka unicode stringu, nikoliv bajtů, která je v tomhle případě 74. V tomhle případě je taky trochu problém říct co je vlastně skutečná délka, protože to leze i do textu různě kolem. Pak taky různé combining znaky, ze kterých je možné sestavovat jiné znaky (japonština a čínština to afaik používá). To se má brát jako jeden, nebo víc znaků?
9.10.2016 11:13 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Tak rozdíl mezi codepointem, počtem grafických znaků a počtem pozic jsem radši ani nevytahoval. :D
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 15:53 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
je jen jedna vyjimka a v jinych pripadech je skutecne potreba to takto delat
Není. Pokud používáš sizeof k něčemu jinému než počítání parametrů pro malloc(), memset() a podobných funkcí, tak nejspíš děláš něco, co nedává smysl.
Standardni C resi pouze ASCII, takze zatim pouzivejte pouze znaky bez diakritiky a nepouzivejte, prosim, emoji. Casem se naucime zpracovavat i vstupy v jinych kodovanich.

Historický balast, no. Ale stačí říct, že strlen() vrací délku v bajtech a ne ve znacích. A při použití nějaké UTF-8 knihovny není problém používat všechno, takže to není nic neřešitelného.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
8.10.2016 16:21 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Není. Pokud používáš sizeof k něčemu jinému než počítání parametrů pro malloc(), memset() a podobných funkcí, tak nejspíš děláš něco, co nedává smysl.
Ne, mel jsem na mysli hlavne ten malloc apod. To zjisteni velikosti bufferu ve stylu sizeof(buff) / sizeof(int) jsem videl mnohokrat a neni to z me hlavy, ale netvrdim, ze je nutne to tak delat. Smysluplnejsi je pouzit const / #define.
A při použití nějaké UTF-8 knihovny není problém používat všechno, takže to není nic neřešitelného.
To nerozporuji, naopak jsem to sam napsal. Znovu ale opakuji, ze to nepovazuji za intuitivni a vhodne pro zacatecniky.
8.10.2016 23:55 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Znovu ale opakuji, ze to nepovazuji za intuitivni a vhodne pro zacatecniky.
To je otázka. Intuitivní to rozhodně není, ale zda to je nebo není vhodné pro začátečníky, to je na úhlu pohledu. Zrovna ty jako samouk zřejmě uznáváš něco jako hození do vody a takováhle překážka by tě neměla ani v nejmenším rozhodit. Organizovanou výuku to samozřejmě komplikuje, o tom žádná, ale to lze zase řešit idiomatickou výukou, kdy se studenti naučí pečlivě vybrané praktické postupy bez hluboké teorie.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 00:35 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Nerozhodilo by me to, protoze bych si ten string vypsal po bajtech a pochopil, ze znaky s diakritikou nejsou vyjadrene jednim bajtem, coz by me navedlo na spravnou cestu. Ze zkusenosti ale vim, ze takto nenapadne postupovat kazdeho. To je samozrejme uz hodne tenky led, protoze ne kazdy ma predpoklady na to, aby se mohl stat programatorem, a je pak otazka, jestli zkouska ohnem v podobe C neni vlastne lepsi, protoze rovnou eliminuje ty, co na to proste nemaji. Napsat kratky snippet kodu v high-level jazyce se ale muze hodit i nekomu, kdo programatorem ani byt nechce, a vracime se tedy opet k tomu, ze strasne silne zalezi na te motivaci a skutecnych cilech toho uceni se.

Abych uplne rozviril vody, tak vytasim jeste Robota Karla a podobne vyslovene vyukove projekty. Co bude snazsi pro male dite nebo starsiho cloveka? Hned na uvod resit pointery a syntaxi plnou znaku, ktere ani neumi na klavesnici zadat, nebo psat jednoduche prikazy jako "dopredu", "doleva" apod.? Pokud o IT nic nevis, tak jen ta chladna logika po sobe jdoucich instrukci je pro tebe nesrozumitelna a trva nejakou dobu nez si na ni zvyknes.

Ono je strasne pokrivene se na to divat jen z pohledu lidi naseho typu. Existuji lidi, co si potrebuji obcas napsat nejaka slozitejsi makra v Excelu, ekonomove, co si chteji psat skripty na nejake analyzy / vypocty (jednoho takoveho jsem kdysi nekde online videl) apod. Take jim prece nikdo nerekne: "Jdi se naucit C, protoze jen tak se z tebe stane pravy programator.".
9.10.2016 00:44 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Já jsem Karla ani nic podobného nezažil, cca v devíti letech jsem si sáhnul na Pascal a můj hlavní problém byl, že jsem nevěděl, co s tím, takže jsem neměl motivaci jít dál. Se zadáváním znaků na klávesnici jsem neměl žádný problém, stejně jako se sekvencemi příkazů.

Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 00:57 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Ja to take nezazil, jen jsem zaznamenal jeho existenci. Zadavani znaku jsem se naucil asi nejak metodou pokus/omyl (popravde uz si to ani moc nevybavuji).
9.10.2016 01:04 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Já jsem měl ty znaky nakreslené na klávesnici. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 01:10 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Jj, to klavesnice mivaji. Jen do toho vstupuji layouty, a tak, a nevim, jestli jsem si hned v pocatku umel ve Windows 98 prepnout na EN layout. Pozdeji jsem radeji pouzival takovy ten nouzovy MS-DOS (protoze mi prislo, ze Windows je zbytecne pomaly a pritom to stejne oproti DOSu nic neprinasi, LOL), tam jsem si zvykl na EN layout a mozna az pak jsem si to zacal ve Windows take prepinat. Fakt nevim, tohle si uz nevzpominam.
9.10.2016 01:21 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Mně do toho nevstupoval ani žádný layout, ani žádné Windows 98 a když jsem slavil deváté narozeniny, tak snad ještě nevyšly ani Windows 95.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 11:09 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Nj, vsak jsem o 7 let mladsi rocnik. ;-)
9.10.2016 17:07 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
To je nesmysl. char je prece zkratka od character a vsude se o tom nemluvi jako o "bajtu"
To jméno je čistě historický artefakt. char je prostě bajt, navíc je to v podstatě číselný typ, funguje na tom integerová aritmetika a má svoji unsigned verzi.
9.10.2016 17:50 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Ja to vim. Popisoval jsem myslenkove pochody cloveka zacinajiciho s programovanim.
9.10.2016 23:02 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Ahá, ok, tak to jo ;-) Já projížděl diskusi trochu zběžně...
8.10.2016 15:42 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
všechny stringy jsou binární, ukončené nulou.
Jen je dobré vědět, že to není vlastnost jazyka, ale knihoven včetně té standardní. Jazyk samotný žádné stringy neimplementuje a knihovna umožňuje stejně dobře pracovat i se stringy nulou neukončenými (memcpy(), memmove(), memset()).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.10.2016 23:28 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Na problémy s kódováním narazíš i v té Javě – resp. ne uvnitř ní, ale na rozhraní s okolním světem (soubory, síťová komunikace).
Uvnitř Javy s trochou "štěstí" taky - surrogate pairs.
Ale aspoň tam nenarážíš na takové hlouposti jako je neschopnost zjistit délku řetězce nebo nefungující regulární výrazy.
V C se na tohle používají knihovny... příp. POSIX API má regexy pro C už dlouho...
8.10.2016 15:58 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Uvnitř Javy s trochou "štěstí" taky - surrogate pairs.

+1

UTF-16 je po všech stránkách špatně při dnešních možnostech.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 16:40 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Já měl UTF-16 vždy celkem rád z pohledu specifikace, přijde mi to jako velmi dobrý memory-speed tradeoff, který netrpí tím anglofonním biasem UTF-8 (pro jazyky nezapisované latinkou není UTF-8 úplně brilantní řešení). Problém UTF-16 je jeho historické zatížení UCS-2 a to, že naprostá většina implementací jsou mizerné a ignoranstké (Windows, Java, Qt, ...). Tyhle dvě věci UTF-16 úplně zabyly.
9.10.2016 20:13 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Já dávám přednost technicky vhodnějším a kompatibilnějším řešením před politicky korektním. :)
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.10.2016 23:04 SkákalPřesOheňAžSiPropálilMokasíny | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Prokleté programování
Tak korektnost jsem tím na mysli úplně neměl, spíš praktické hledisko...
7.10.2016 16:53 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Ano, mnoho starsich programatoru na C zacinalo - ale v realnem modu pod MS-DOSem, kde vse bylo z technickeho hlediska mnohem jednodussi a srozumitelnejsi nez je tomu na dnesnich pocitacich a systemech.
Nemyslím si, že by bylo pro programátora v userspace nutně dnešní programování v C složitější než tehdejší. Popravdě k tomu nevidím vůbec žádný důvod. Nic z toho, co zmiňuješ podle mě pro člověka, co v reálném módu neprogramoval, vůbec neplatí.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.10.2016 17:12 hypvofxy | skóre: 5 | blog: hypvofxy | Brno
Rozbalit Rozbalit vše Re: Prokleté programování
Take si nemyslim, ze by to nutne bylo slozitejsi, ale za predpokladu, ze mas tu predstavu o okolnim prostredi.
7.10.2016 16:48 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Prokleté programování
Pokud nechceš programovat embedded věci, tak C podle mě není vhodný jazyk, se kterým začínat programovat samostudiem.
Jako céčkař musím říct, že je C daleko poučnější než kterýkoli jiný imperativní jazyk kromě assembleru, jehož znalost mi stále ještě citelně chybí. Python je super praktický nástroj a klidně se na něm dá začínat, ale člověk je úplně odtržený od hardware.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.