Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: radekk 05. 09. 2016, 23:58:04

Název: Bitové operace ve vyšších jazycích
Přispěvatel: radekk 05. 09. 2016, 23:58:04
Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:
Kód: [Vybrat]
(10<<3)|((42&2)<<2) No trhnul jsem si docela ostudu, vůbec jsem nevěděl, co s tím mám dělat. Jak se řeší tyto úlohy? Neříkejte mi, že je potřeba si to všechno přepsat do dvojkové soustavy a ručně provádět jednotlivé bitové operace. To bych dělal hodinu, přitom to byl úkol na pět minut. Není na to nějaký trik?
Název: Re:bitové operace
Přispěvatel: Kit 06. 09. 2016, 00:17:41
Na něco se ten trik použít dá, např. n<<3 je totéž jako n*8, ale tohle bys měl spočítat z hlavy do půl minuty.
Název: Re:bitové operace
Přispěvatel: Jenda 06. 09. 2016, 00:22:29
> Neříkejte mi, že je potřeba si to všechno přepsat do dvojkové soustavy

Obecně takovéto operace v desítkové neumím a myslím, že to snad nejde. Dá se to z hlavy v šestnáctkové (nebo obecně v nějaké kde je základ mocnina dvojky).

Tady se to dá obejít všimnutím si, že 10<<3 je 10*8 = 80 a 42&2 není potřeba převádět, stačí zjistit, že 42 má nastavený druhý bit a tedy je to 2. 2<<2 je pak 2*4=8 a 80|8 je 88 protože 80 má jedničky jenom strašně vlevo (je to 64+16).
Název: Re:bitové operace
Přispěvatel: Jano 06. 09. 2016, 00:36:24
Prevod do dvojkovej sustavy je pre mna ako programatora podvedoma zalezitost a viacmenej to vidim ako to vyzera.

Na zjednodusenie zapisu je vyhodne pisat ale v setnastkovej, lebo tam sa s bitmi robi rovnako dobre akurat je to menej pisania.

V priklade su 3 bitove operacie: << - bitovy posun dolava, | bitovy OR (bitovy sucet), a & bitovy AND (bitovy sucin).

A teraz samotny priklad:

10 = 0xa = 1010b = 8 + 2
42 = 0x2a = 101010b = 32 + 10 = 32 + 8 + 2
2 = 0x2 = 10b

10 << 3 = 1010000b # posun znamena dopisat 000 sprava
42 & 2 = 10b # 1 su len tam kde su v oboch cislach, cize iba 2
(42 & 2) << 2 = 1000b # dvojka + 2x 0

(10 << 3) | (42 & 2) << 2 = 1010000  | 1000 = 1011000b = 0x58 = 88

verzia 2:

x << 3 = x * 8
x << 2 = x * 4

x & 2 je bud 2 alebo 0, podla toho ci x je parne alebo nie

42 & 2 = 2
(42 & 2) << 2 = 2 * 4 = 8
10 << 3 = 10 * 8 = 80

kedze vidime ze 10 << 3 ma posledne 4 bity nulove (10 je parne takze spodny bit je 0 + 3 bity posun)
mozeme tie dve cisla priamo scitat.

vysledok je 88.

verzia 3:

00001010 (10)
01010000 (10 << 3)

00101010 (42)
00000010 (2)
00000010 (42 & 2)
00001000 ((42 & 2) << 2)

01010000 (10 << 3)
00001000 ((42 & 2) << 2)
01011000 ((10 << 3) | ((42 & 2) << 2)) = 88

vystupuju tu tri cisla a 4 operacie, cele sa to deje do 8 bitov...
Název: Re:bitové operace
Přispěvatel: gl 06. 09. 2016, 02:16:28
Děláš to zbyteně komplikovaně. a << b je to stejné, co a*2**b.

U 42 & 2 stačí 42 dvakrát vydělit dvěma. Druhé dělení je 21/2. Má zbytek. Výsledek je tedy 2.

Co to bylo za zaměstnání? V pythonu jsem bitové operace nikdy nepoužil.
Název: Re:bitové operace
Přispěvatel: Jenda 06. 09. 2016, 03:52:42
x & 2 je bud 2 alebo 0, podla toho ci x je parne alebo nie
Ne, lichost je x&1.
Název: Re:bitové operace
Přispěvatel: Radovan. 06. 09. 2016, 05:34:26
Kód: [Vybrat]
(10<<3) | ((42&2)<<2)
Do dvojkové soustavy nic převádět nemusíš, prostě si to rozlož na mocniny dvojky, to uměl v časech osmibitů z hlavy každý  ;D

Posun o jeden bit vlevo je násobení dvěma, doprava dělení dvěma:

10<<3 = 10*(2*2*2) = 10*8 = 80 = 64+16

42 = 32+8+2 ... dvojka tam je, takže 42&2 = 2

2<<2 = 2*(2*2) = 2*4 = 8

To | ti všechny jedničkové bity prostě ORne dohromady, 64+16+8 = 88

O půl šesté ráno chvilku po probuzení, a naučil mě to nějaký pan Sinclair (https://cs.wikipedia.org/wiki/Sinclair_ZX_Spectrum) v době, kdy jsem měl za sebou základní školu 8)
Název: Re:bitové operace
Přispěvatel: Radovan. 06. 09. 2016, 05:55:41
P.S. Programátor nejsem, jen si občas zbastlím nějaký jednoduchý prográmek na věci které jsem líný dělat ručně.
Název: Re:bitové operace
Přispěvatel: franto 06. 09. 2016, 08:16:23
Co to bylo za zaměstnání? V pythonu jsem bitové operace nikdy nepoužil.
osobne si myslim, ze to byl jenom jako test a nic takoveho v praci nedelaji. nevim kdy jsi byl naposledy na pohovoru, ale nekde se ptaji takove sracky, ktere ani sami nevyuzivaji.
Název: Re:bitové operace
Přispěvatel: Vodník 06. 09. 2016, 09:36:25
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: uuuuuuuu 06. 09. 2016, 11:40:28
Podobné blbosti dávají i v Seznamu. Jenže pak nemají peníze, takže testem projde spíše jen neprogramátor a pokud ne, tak peníze každého průměrného odradí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: borekz 06. 09. 2016, 11:59:55
10 << 3 | (42 & 2) << 2 =
10 << 3 | 2 << 2 =
10 * 8 | 2 * 4 =
5 * 16 | 1 * 8 =
5 << 4 | 1 << 3 =
(5 << 4) + (1 << 3) = // "|" = "+", protože 3. bit v pravém termu nezasahuje do levého termu
80 + 8 = 88.

Nebo stačí méně kroků pokud si umím představit, že sudé číslo má nultý nulový bit.
10 << 3 | (42 & 2) << 2 =
10 << 3 | 2 << 2 =
10 << 3 | 1 << 3 =
(10 | 1) << 3 =
11 * 8 =
88
Název: Re:bitové operace
Přispěvatel: borekz 06. 09. 2016, 12:01:25
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?
Název: Re:bitové operace
Přispěvatel: v 06. 09. 2016, 12:29:25
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?
tak zápis mantisa/ exponent/znaménko taky není moc vidět
Název: Re:bitové operace
Přispěvatel: JSH 06. 09. 2016, 12:41:31
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?
Protože převod z běžných hexa literálů zvládne i průměrně inteligentní šimpanz?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Michal Kovačič 06. 09. 2016, 14:55:16
Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:
Kód: [Vybrat]
(10<<3)|((42&2)<<2) No trhnul jsem si docela ostudu, vůbec jsem nevěděl, co s tím mám dělat. Jak se řeší tyto úlohy? Neříkejte mi, že je potřeba si to všechno přepsat do dvojkové soustavy a ručně provádět jednotlivé bitové operace. To bych dělal hodinu, přitom to byl úkol na pět minut. Není na to nějaký trik?

Tohle je šikovně položená otázka, která zjišťuje, zda high level programátor (pojídač koláčků  ;) ) má představu, jak funguje programování blíže k procesoru. Podobné konstrukce asi nebudou denní chleba, ale postup, který zde napsali ostatní byl kdysi naprosto automatický a programátor nad ním ani nepřemýšlel...

Asi bych doporučil alespoň základní knihu o jazycích jako je C, možná Assembler - minimálně jejich úvodní kapitoly...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 15:18:12
Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:
Kód: [Vybrat]
(10<<3)|((42&2)<<2) No trhnul jsem si docela ostudu, vůbec jsem nevěděl, co s tím mám dělat. Jak se řeší tyto úlohy? Neříkejte mi, že je potřeba si to všechno přepsat do dvojkové soustavy a ručně provádět jednotlivé bitové operace. To bych dělal hodinu, přitom to byl úkol na pět minut. Není na to nějaký trik?

Tohle je šikovně položená otázka, která zjišťuje, zda high level programátor (pojídač koláčků  ;) ) má představu, jak funguje programování blíže k procesoru. Podobné konstrukce asi nebudou denní chleba, ale postup, který zde napsali ostatní byl kdysi naprosto automatický a programátor nad ním ani nepřemýšlel...

Asi bych doporučil alespoň základní knihu o jazycích jako je C, možná Assembler - minimálně jejich úvodní kapitoly...

High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Nemo7 06. 09. 2016, 15:26:36
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 06. 09. 2016, 15:34:03
High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Možná nemusí. Ale co my víme u koho, na jakou pozici a s jakým výhledem byl ten pohovor. Třeba to v určité míře využije.

Ale i "high level programátor" přeci musí znát principy dvojkové, desítkové a šestnáctkové soustavy, vyjádření hodnot u celočíselných typů a příslušné operátory a jejich funkce v daném jazyce.

A nebo jsem úplně z jiného světa?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 06. 09. 2016, 15:36:37
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)

Třeba já. V Javě i v C++ na PC. V čem? Zpracování signálů, zpracování dat a podobně.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 15:41:49
High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Možná nemusí. Ale co my víme u koho, na jakou pozici a s jakým výhledem byl ten pohovor. Třeba to v určité míře využije.

Ale i "high level programátor" přeci musí znát principy dvojkové, desítkové a šestnáctkové soustavy, vyjádření hodnot u celočíselných typů a příslušné operátory a jejich funkce v daném jazyce.

A nebo jsem úplně z jiného světa?

Tak mi řekni, proč mi Hibernate zasekal databázi a jak ti pomohl bitový posun :D Nebo proč se dlouho čeká na vzdálenou transakci.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ondra Satai Nekola 06. 09. 2016, 15:43:47
High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Možná nemusí. Ale co my víme u koho, na jakou pozici a s jakým výhledem byl ten pohovor. Třeba to v určité míře využije.

Ale i "high level programátor" přeci musí znát principy dvojkové, desítkové a šestnáctkové soustavy, vyjádření hodnot u celočíselných typů a příslušné operátory a jejich funkce v daném jazyce.

A nebo jsem úplně z jiného světa?

Tak mi řekni, proč mi Hibernate zasekal databázi a jak ti pomohl bitový posun :D Nebo proč se dlouho čeká na vzdálenou transakci.

A tak mi rekni, jak nepouzitelnost znalosti v jednom kontextu vypovida o jeji uzitecnosti jinde.

Kdybys nebyl lopata, tak bys alespon takovehle veci vedel.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 15:43:55
High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Možná nemusí. Ale co my víme u koho, na jakou pozici a s jakým výhledem byl ten pohovor. Třeba to v určité míře využije.

Ale i "high level programátor" přeci musí znát principy dvojkové, desítkové a šestnáctkové soustavy, vyjádření hodnot u celočíselných typů a příslušné operátory a jejich funkce v daném jazyce.

A nebo jsem úplně z jiného světa?

To asi každý zná, ale nemusí vědět, co dělá operátor <<. V pythonu programuje spousta lidí bez technického vzdělání. K nízkoúrovňovým věcem se vůbec nemuseli dostat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 15:48:10
High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Možná nemusí. Ale co my víme u koho, na jakou pozici a s jakým výhledem byl ten pohovor. Třeba to v určité míře využije.

Ale i "high level programátor" přeci musí znát principy dvojkové, desítkové a šestnáctkové soustavy, vyjádření hodnot u celočíselných typů a příslušné operátory a jejich funkce v daném jazyce.

A nebo jsem úplně z jiného světa?

Tak mi řekni, proč mi Hibernate zasekal databázi a jak ti pomohl bitový posun :D Nebo proč se dlouho čeká na vzdálenou transakci.

A tak mi rekni, jak nepouzitelnost znalosti v jednom kontextu vypovida o jeji uzitecnosti jinde.

Kdybys nebyl lopata, tak bys alespon takovehle veci vedel.

Právě protože nejsem lopata, tak řeším řádově složitější problémy. A bitové posuny jsou asi cool, ale tak před 30 lety. Dneska máš daleko zajímavější problémy a bez bitových posunů se můžeš klidně obejít. Jen aby z toho někdo nedělal nějaké základy, které je potřeba umět.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 15:56:21
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)

Třeba já. V Javě i v C++ na PC. V čem? Zpracování signálů, zpracování dat a podobně.

Pro pythonistu to jsou nízkoúrovňové jazyky. Asi záleží na tom, jaká data zpracováváte a v jakých formátech je uchováváte. K čemu potřebuje implementátor Odoo znát bitové operace?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 06. 09. 2016, 15:56:49
High level programátor se s těmito operátory vůbec nemusí setkat. Osobně bych se zeptal na jiné špeky.

Možná nemusí. Ale co my víme u koho, na jakou pozici a s jakým výhledem byl ten pohovor. Třeba to v určité míře využije.

Ale i "high level programátor" přeci musí znát principy dvojkové, desítkové a šestnáctkové soustavy, vyjádření hodnot u celočíselných typů a příslušné operátory a jejich funkce v daném jazyce.

A nebo jsem úplně z jiného světa?

Tak mi řekni, proč mi Hibernate zasekal databázi a jak ti pomohl bitový posun :D Nebo proč se dlouho čeká na vzdálenou transakci.
To, že se ptáš zrovna takhle, o tobě mnohé vypovídá...

Odpovím ti analogií - mám auto a pověz mi, jak mi stěrače pomůžou s tím, že mi je v něm v létě horko? Nijak? Znamená to, že stěrače nepotřebuji?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 06. 09. 2016, 16:01:33
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)

Třeba já. V Javě i v C++ na PC. V čem? Zpracování signálů, zpracování dat a podobně.

Pro pythonistu to jsou nízkoúrovňové jazyky. Asi záleží na tom, jaká data zpracováváte a v jakých formátech je uchováváte. K čemu potřebuje implementátor Odoo znát bitové operace?
A ty víš na jakou práci byl ten pohovor? Co kandidát potřebuje, byť i jen okrajově, znát?

Obávám se, že nejde o to jestli je daný jazyk nízkoúrovňový a nebo ne. Jde o typy úloh, které se řeší. A znalost např. bitového maskování a nebo bitových posuvů či rotací může usnadnit řešení některých úloh, zatímco pro jiné je naprosto nezbytná. A pak jsou ty, pro které není vůbec třeba.

A za mně - ať už má daný programátor vzdělání technické nebo "netechnické", tyto věci podle mne patří do jeho základních znalostí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: lobo 06. 09. 2016, 16:01:57
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 16:10:43
Ne, tak to nefunguje. Jeho existenci by měl každý znát, ale ne to umět spočítat. Samozřejmě jsem zažil borce, co tam cpali ty sloupce :D Ale to jsme zase na úrovni lopat, že jo...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 16:11:24
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)

Třeba já. V Javě i v C++ na PC. V čem? Zpracování signálů, zpracování dat a podobně.

Pro pythonistu to jsou nízkoúrovňové jazyky. Asi záleží na tom, jaká data zpracováváte a v jakých formátech je uchováváte. K čemu potřebuje implementátor Odoo znát bitové operace?
A ty víš na jakou práci byl ten pohovor? Co kandidát potřebuje, byť i jen okrajově, znát?

Obávám se, že nejde o to jestli je daný jazyk nízkoúrovňový a nebo ne. Jde o typy úloh, které se řeší. A znalost např. bitového maskování a nebo bitových posuvů či rotací může usnadnit řešení některých úloh, zatímco pro jiné je naprosto nezbytná. A pak jsou ty, pro které není vůbec třeba.

A za mně - ať už má daný programátor vzdělání technické nebo "netechnické", tyto věci podle mne patří do jeho základních znalostí.

To nevím. Na to jsem se ve svém prvním příspěvku ptal. Na co byl ten pohovor. Ten co tu psal o pojídačích koláčů to také neví.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 16:13:47
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 16:17:42
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Sorry nedočetl jsem nakokonec.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 06. 09. 2016, 16:24:10
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Zkusil sis někdy i použití množin v databázi? Ty tě zbaví pofidérních true/false.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 16:26:13
Nebo tohle

https://pypi.python.org/pypi/django-bitfield
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: JSH 06. 09. 2016, 16:38:04
Na to mu bude skvěle fungovat dotazování s využitím indexu.
Pokud má v dané aplikaci vůbec smysl přemýšlet podobném dotazování. To samozřejmě nevíme a ani to nebylo cílem toho příkladu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 16:42:01
Na to mu bude skvěle fungovat dotazování s využitím indexu.
Pokud má v dané aplikaci vůbec smysl přemýšlet podobném dotazování. To samozřejmě nevíme a ani to nebylo cílem toho příkladu.

Ono by se šlo dotazovat podle podmnožin flagů zleva.
Název: Re:bitové operace
Přispěvatel: Radovan. 06. 09. 2016, 17:27:15
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?
Protože je používají kódovací opice, které by tak náročnou věc, ke které stačí pouhé dvě číslice, nepochopily ;D

Je podle tebe BASIC dost vysoký jazyk? Tak se koukni na příkaz BIN: http://www.worldofspectrum.org/ZXBasicManual/zxmanchap14.html
Název: Re:bitové operace
Přispěvatel: atarist 06. 09. 2016, 17:33:28
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?

Protoze v dobách céčka to každý dokázal převést z hlavy na hexa nebo osmičkovou soustavu. Navíc například Java je má :-) od verze 7.

Použití, se kterým se asi každý setkal:
1) file permissions v Unixu tedy i Linuxu
2) maska IP adresy (network mask)
3) vytahování RGB nebo naopak, z RGB na jedno číslo (a ano, už jsem viděl šílený hack, jak se to dělá převodem ne řetězce a spojením řetězců :-)
4) implementace množin (resp. jedna z implementací, pokud jsou prvky mapovány na celá čísla)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 06. 09. 2016, 17:45:06
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)

Ja se prihlasim. Resil jsem to v Jave, jednou pri modovani Minecraftu (reprezentace bloku ve svete, je potreba rychly pristup kvuli vykreslovani a co nejmensi struktura kvuli velikosti v pameti a na disku) a podruhe kdyz jsem z nejakeho API dostaval data zajimave (cti nizkourovnove) usporadana.

Ale jinak celkem souhlasim, ze je to zbytecne takto zkouset na pohovoru k (nej)vyssim programovacim jazykum jako Python, Ruby, Java nebo i ten JavaScript, kdyz to nebude beznou naplni prace.

Mimochodem takova Scala ma treba BitSet (http://www.scala-lang.org/api/2.11.8/index.html#scala.collection.BitSet) soucasti standardni knihovny (a urcite neni sama), ale rozhodne bych nerekl, ze je nizkourovnova :D.

PS: Ted jsem si uvedomil, ze jsem to taky potreboval pri projektu na skole do siti, ktery jsem psal ve Scale.
Název: Re:bitové operace
Přispěvatel: gl 06. 09. 2016, 17:56:03
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?

Protoze v dobách céčka to každý dokázal převést z hlavy na hexa nebo osmičkovou soustavu. Navíc například Java je má :-) od verze 7.

Použití, se kterým se asi každý setkal:
1) file permissions v Unixu tedy i Linuxu
2) maska IP adresy (network mask)
3) vytahování RGB nebo naopak, z RGB na jedno číslo (a ano, už jsem viděl šílený hack, jak se to dělá převodem ne řetězce a spojením řetězců :-)
4) implementace množin (resp. jedna z implementací, pokud jsou prvky mapovány na celá čísla)

Python je také má. Je možné psát 0b1011. Existuje i built in funkce bin, která číslo převede na řetězec.

Kód: [Vybrat]
>>> bin(11)
'0b1011'

Pro práci s IP a RGB se používají knihovny, často implementované v C. Množiny jsou součástí jazyka. Neříkám, že bitové operace není dobré znát, ale ve spoustě oborů se s nimi člověk nesetká.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: čumil 06. 09. 2016, 18:04:24
Dobře mimo test. Je OK otestovat znalost bitovejch operátorů, dát to ale počítat na papíře je píčovina která toho dost říká o tý firmě.

Chápal bych příklad, "máš registr velký 64 bitů, na bitu 5 začíná 15 bitů dlouhý příznak, jak bys zjistil jakou hodnotu obsahuje" popřípadě to samé akorát se zápisem dat ...

S tím bullshitem na papíře si můžou jít klidně  do zadeke
Název: Re:bitové operace
Přispěvatel: čumil 06. 09. 2016, 18:06:58
I ve vyšších programovacích jazycích se implementují nízkoúrovňové protokoly nebo datové formáty a vznikající programy je potřeba ladit.  Takže bych rozhodně dvojkovou soustavu nevnímal jako něco, co dnes už programátoři nepotřebují.
Když je tak důležitá, proč většina vyšších jazyků nemá binární literály ?

Protoze v dobách céčka to každý dokázal převést z hlavy na hexa nebo osmičkovou soustavu. Navíc například Java je má :-) od verze 7.

Použití, se kterým se asi každý setkal:
1) file permissions v Unixu tedy i Linuxu
2) maska IP adresy (network mask)
3) vytahování RGB nebo naopak, z RGB na jedno číslo (a ano, už jsem viděl šílený hack, jak se to dělá převodem ne řetězce a spojením řetězců :-)
4) implementace množin (resp. jedna z implementací, pokud jsou prvky mapovány na celá čísla)

Python je také má. Je možné psát 0b1011. Existuje i built in funkce bin, která číslo převede na řetězec.

Kód: [Vybrat]
>>> bin(11)
'0b1011'

Pro práci s IP a RGB se používají knihovny, často implementované v C. Množiny jsou součástí jazyka. Neříkám, že bitové operace není dobré znát, ale ve spoustě oborů se s nimi člověk nesetká.
Binární formáty dat se používají často, takže si myslím že znalost by tady měla být, na druhé straně bez dementních testů na papíře
Název: Re:bitové operace
Přispěvatel: atarist 06. 09. 2016, 18:19:24
Pro práci s IP a RGB se používají knihovny, často implementované v C. Množiny jsou součástí jazyka. Neříkám, že bitové operace není dobré znát, ale ve spoustě oborů se s nimi člověk nesetká.

Obecné množiny (které jsou IMHO v Pythonu reprezentovány jako normální dict s dummy hodnotami) jsou něco jiného než množiny reprezentované binárně. Ty uměl starý (ne-dobrý :-) Pascal. Takže při požadavku na efektivní reprezentaci a složitost všech operací O(1) to stejně někdo musí naprgat, ať již v C či v Pythonu. Opět  = někdo tady zmínil BitSet, to je Javovina a ta třída existuje, protože se to používá. Ne denodenně ale používá.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 18:20:57
Ta třída existuje, protože Java umí všechno. Ne že to každý musí používat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: atarist 06. 09. 2016, 18:35:17
Ta třída existuje, protože Java umí všechno. Ne že to každý musí používat.

To taky nikdo netvrdil, tudíž to nemusíš rozporovat :-)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 06. 09. 2016, 19:07:45
Právě protože nejsem lopata, tak řeším řádově složitější problémy. A bitové posuny jsou asi cool, ale tak před 30 lety. Dneska máš daleko zajímavější problémy a bez bitových posunů se můžeš klidně obejít. Jen aby z toho někdo nedělal nějaké základy, které je potřeba umět.

 ;D ;D ;D ;D ;D
Například jaké? Ať se taky trochu pobavíme...  :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kolemjdoucí 06. 09. 2016, 19:08:51
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 20:00:34
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.
Název: Re:bitové operace
Přispěvatel: gl 06. 09. 2016, 20:09:18
Pro práci s IP a RGB se používají knihovny, často implementované v C. Množiny jsou součástí jazyka. Neříkám, že bitové operace není dobré znát, ale ve spoustě oborů se s nimi člověk nesetká.

Obecné množiny (které jsou IMHO v Pythonu reprezentovány jako normální dict s dummy hodnotami) jsou něco jiného než množiny reprezentované binárně. Ty uměl starý (ne-dobrý :-) Pascal. Takže při požadavku na efektivní reprezentaci a složitost všech operací O(1) to stejně někdo musí naprgat, ať již v C či v Pythonu. Opět  = někdo tady zmínil BitSet, to je Javovina a ta třída existuje, protože se to používá. Ne denodenně ale používá.

Složitost jakých všech operací je O(1)? Nezáleží to na velikosti domény? Pokud pracuji s malými množinami nad velkou doménou, tak je reprezentace hash tabulkou efektivnější a téměř vždy dostatečně efektivní. Ty pascalovské množiny mají jen dost omezené použití.
Název: Re:bitové operace
Přispěvatel: Kit 06. 09. 2016, 20:34:28
Složitost jakých všech operací je O(1)? Nezáleží to na velikosti domény? Pokud pracuji s malými množinami nad velkou doménou, tak je reprezentace hash tabulkou efektivnější a téměř vždy dostatečně efektivní. Ty pascalovské množiny mají jen dost omezené použití.

Pascalovské množiny se běžně používají v souborových systémech pro mapování volných clusterů.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 06. 09. 2016, 21:04:58
prý nízkoúrovňové OMG :D to je dělění taky, ne? a otázka na papíře co je výsledkem výpočtu 1/0 je taky, blbost, ne? někteří tady jsou fakt lopaty
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kolemjdoucí 06. 09. 2016, 21:15:33
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 21:25:02
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kolemjdoucí 06. 09. 2016, 21:39:43
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 06. 09. 2016, 21:51:54
Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

Podle mne je jednodušší použití databázové množiny. Tedy v případě neklíčových atributů.

BTW: K čemu ORM?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 21:55:58
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

máš pravdu. V některých případech to asi bude lepší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 22:04:58
Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

Podle mne je jednodušší použití databázové množiny. Tedy v případě neklíčových atributů.

BTW: K čemu ORM?

Řekl bych, že množina se ukládá stejně a snáz se používá. Opravdu je to lepší a nemusím řešit bitové operace.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 22:07:48
BTW: K čemu ORM?

Jak jinak bys to chtěl automaticky mapovat?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 22:16:47
BTW: K čemu ORM?

Jak jinak bys to chtěl automaticky mapovat?

Mapovat co? Já používám ORM hlavně abych nemusel stále dokola psát ty stejné podmínky joinů.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 22:20:25
Tak máš objekty a vůbec tě nezajímá, že je to v DB. Nemyslím doslova, ale skoro všechen kód už byl napsaný, takže máš jen modely a pár detailů. Vše ostatní zařídí někdo za tebe. Na složitější věci to není tak růžové, ale ty většina lidí stejně nikdy dělat nebude.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 06. 09. 2016, 22:23:51
BTW: K čemu ORM?

Jak jinak bys to chtěl automaticky mapovat?

Automatické mapování mi přece dělá databázový ovladač.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 06. 09. 2016, 22:27:45
Určitě, no :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 06. 09. 2016, 22:29:34
Tak máš objekty a vůbec tě nezajímá, že je to v DB. Nemyslím doslova, ale skoro všechen kód už byl napsaný, takže máš jen modely a pár detailů. Vše ostatní zařídí někdo za tebe. Na složitější věci to není tak růžové, ale ty většina lidí stejně nikdy dělat nebude.

Pokud píšeš nejdřív modely a znich generuješ  tabulky v databázi, tak je to ideální případ použití ORM. Ne vždy tomu tak je.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ehmmm 06. 09. 2016, 22:34:40
Tak ja si dokazu predstavit, ze kdyz prijde na pohovor nejaky absolvent cehosi s nulovou praxi a chce mraky penez, pritom se neda ani nikomu zavolat a overit si jeho schopnosti, tak proc ne.
Jednoduchy trivialni dotaz, ktery by mel dat tuzkou na papire za jednu az dve minuty.
A jeste se u toho odlehci atmosfera, protoze vsichni vedi, o co jde (nepocitam personalistku) a muzou si popovidat, jak kdy co kdo programoval v asm, C, ... klidne i v tom Pythonu, pokud se zpracovavala nejaka specificka binarni data.

Podobny kiks jsem zazil, kdyz si typek v praxi lamal hlavu nad tim, proc v integerech A*B/C neni totez jako A/C*B, pokud A je blizko C. (Pricemz nehrozi preteceni A*B.)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 06. 09. 2016, 22:42:54
Podobny kiks jsem zazil, kdyz si typek v praxi lamal hlavu nad tim, proc v integerech A*B/C neni totez jako A/C*B, pokud A je blizko C. (Pricemz nehrozi preteceni A*B.)

Offtopic: nemusíš to omezovat jen na integery, pro FP to platí stejně, akorát je to víc skryté a o to větší chyby to může přinést.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 06. 09. 2016, 22:47:21
Podobny kiks jsem zazil, kdyz si typek v praxi lamal hlavu nad tim, proc v integerech A*B/C neni totez jako A/C*B, pokud A je blizko C. (Pricemz nehrozi preteceni A*B.)

Zrovna v Assembleru je varianta A*B/C mnohem výhodnější, zejména pokud se výsledek násobení ukládá do dvou registrů, které se následně využijí při dělení. Přetečení pak nehrozí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Jenda 06. 09. 2016, 22:55:38
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)
Deserializace dat přijatých přes Bluetooth z chytrých hodinek (binární formát).

Parsování SDS na Tetře.

Zadávání práce OpenCL kernelu.

Čtení paralelní flashky pomocí dvou Arduin a python skriptu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Jenda 06. 09. 2016, 23:00:41
...

No vida, a zapomněl jsem na RGBA. To teda bylo v C#, jestli se to počítá.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 07. 09. 2016, 07:14:47
To jako myslite vazne, aby se zkouselo z binarnich vypoctu pri pohovoru na misto, kde se to nebude pouzivat? Takze si Pepa prijde na pohovor na pozici front-endaka v Angularu (tj. JavaScript pro prohlizece) a budou po nem chtit matlani na papir neceho, co nikdy v praci nepouzije? Nejak mi to pripomina ty skoly, na ktere se tu porad nadava :D. Byt Pepou, tak se proste zvednu a odejdu, i kdybych vedel odpoved, protoze takova firma asi za moc stat nebude - nechtel bych tam pak delat s back-endistou, ktery vi hodne o historii umeni, ale nebude skoro nic vedet o db ani Jave, v ktere ma vyvijet, protoze na pohoru se radeji ptali na ptakoviny.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 07. 09. 2016, 07:45:21
protože Java umí všechno.

Pořád tě to trollení baví, nebo jsi opravdu tak omezená lopata? Java neumí např.:

Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 07. 09. 2016, 07:52:08
obycajny topic sa dokazal rozrast na tolko stranok. to je mozne asi len na roote :D.
pytat sa na pohovore taketo veci, ktore mozno dotycny ani nebude vyuzivat, to je riadne mimo. to iste plati aj napr. pri navrhovych vzoroch. chcu po vas vselijake vzory (behavioralne, strukturalne, ...) a pritom pouzivaju mozno az tak jeden a to Singleton. pri zelenacovi, co nema prax, sa daju taketo otazky pochopit, ale pri juniorovi s nejakou 1-2 rocnou praxou, ci seniorovi, to teda nedava zmysel.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 07. 09. 2016, 08:01:27
obycajny topic sa dokazal rozrast na tolko stranok. to je mozne asi len na roote :D.
pytat sa na pohovore taketo veci, ktore mozno dotycny ani nebude vyuzivat, to je riadne mimo. to iste plati aj napr. pri navrhovych vzoroch. chcu po vas vselijake vzory (behavioralne, strukturalne, ...) a pritom pouzivaju mozno az tak jeden a to Singleton. pri zelenacovi, co nema prax, sa daju taketo otazky pochopit, ale pri juniorovi s nejakou 1-2 rocnou praxou, ci seniorovi, to teda nedava zmysel.

Záleží na tom, koho hledáš. Jestli člověka, který bude bouchat kód v konkrétním frameworku XY verze 1.2.3 podle zadaní, tak nemá smysl ptát se na cokoliv s tím frameworkem nesouvisejícího.

Pokud ale hledáš někoho i na náročnější činnost a samostatnou práci, je potřeba zeptat se na všeobecné i konkrétní věci i trochu mimo ten framework. V tomto kontextu může padnout i otázka na bitovou aritmetiku. Pokud nebude vůbec tušit, tak aspoň vím, že by něměl dostat úkoly typu implementace nějakého low level komunikačního protokolu. Samozřejmě se nepředpokládá, že bude kandidát vědět úplně všechno, jde spíš o to, jaký má v čem přehled.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 07. 09. 2016, 08:25:35
preco, ak sa hlasi uchadzac na poziciu C#/ASP.NET/JAVA vyvojar, sa maju pytat take otazky? je predsa jasne, ze ziadny low-level protokol nebude robit. Ak sa niekto hlasi na poziciu C/C++, ASM, tak tam by som to priam vyzadoval. Ale nie vo firme, ktora sa zaobera robenim IS, alebo desktopovych ci mobilnych aplikacii.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 07. 09. 2016, 08:34:38
preco, ak sa hlasi uchadzac na poziciu C#/ASP.NET/JAVA vyvojar, sa maju pytat take otazky?
Už to tady zaznělo, máš třeba sadu bool flagů uložených kvůli úspoře místa jako integer v databázi. Taková "low level" věc může potkat i C#/ASP.NET/JAVA vývojáře no a pokud má tušení o bitové aritmetice, tak věřím, že takový problém úspěšně vyřeší ;)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: rooobertek 07. 09. 2016, 08:45:47
Zrovna jsem se chtěl také zeptat. Kdo tyto problémy s bitovými operacemi ve vyšším programovacím jazyce řešil (mimo assembler a mimo jazyky C a C++), tak ať se přihlásí a pochlubí se s příkladem využití.  :)

Custom binárny protokol. Klienti v javascripte a jave, servery v jave a c++.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: rooobertek 07. 09. 2016, 08:51:45
obycajny topic sa dokazal rozrast na tolko stranok. to je mozne asi len na roote :D.
pytat sa na pohovore taketo veci, ktore mozno dotycny ani nebude vyuzivat, to je riadne mimo. to iste plati aj napr. pri navrhovych vzoroch. chcu po vas vselijake vzory (behavioralne, strukturalne, ...) a pritom pouzivaju mozno az tak jeden a to Singleton. pri zelenacovi, co nema prax, sa daju taketo otazky pochopit, ale pri juniorovi s nejakou 1-2 rocnou praxou, ci seniorovi, to teda nedava zmysel.
Ja dávam aj otázky, o ktorých si myslím, že na ne neodpovie ani jeden kandidát. Ak odpovie, je to príjemné prekvapenie, ak neodpovie, aj z nesprávnej odpovede sa dá niečo vyčítať.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: atarist 07. 09. 2016, 09:01:31
To jako myslite vazne, aby se zkouselo z binarnich vypoctu pri pohovoru na misto, kde se to nebude pouzivat? Takze si Pepa prijde na pohovor na pozici front-endaka v Angularu (tj. JavaScript pro prohlizece) a budou po nem chtit matlani na papir neceho, co nikdy v praci nepouzije? Nejak mi to pripomina ty skoly, na ktere se tu porad nadava :D. Byt Pepou, tak se proste zvednu a odejdu, i kdybych vedel odpoved, protoze takova firma asi za moc stat nebude - nechtel bych tam pak delat s back-endistou, ktery vi hodne o historii umeni, ale nebude skoro nic vedet o db ani Jave, v ktere ma vyvijet, protoze na pohoru se radeji ptali na ptakoviny.

No podívej, my všichni kromě původního tazatele máme málo informací co a proč se na pohovoru dělo. Třeba - a je to docela pravděpodobné - měl tazatel v CV spoustu zajímavých technologií, tak se ho na to zeptali.

Já tady měl taky jednoho takového - měl v CV dost zajímavé věci a i když to byla pozice pro Javu, tak jsme si řekli, že ten borec vypadá dobře a zkusíme se něco přiučit popř. vědět, kam by se mohl vyvíjet dále. Takže jsme to vzali abecedně (podle věcí v CV), ale skončilo to u třetí položky: assembler, Bash, C, kde vyšlo najevo, že něco podobného možná kdysi probírali na škole, ale praktické znalosti jsou prakticky nulové.
Název: Re:bitové operace
Přispěvatel: atarist 07. 09. 2016, 09:13:05
Pro práci s IP a RGB se používají knihovny, často implementované v C.

Tak povídej přeháněj jak třeba v Javě převedeš matici intů na matici RGB a naopak. Pro jednoduchost klidně lineární color space.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Trupik 07. 09. 2016, 10:00:29
Mne tá otázka na pohovore pre programátora zas až tak od veci nepríde. Google sa napríklad údajne pýtal "Prečo sú poklopy kanálov okrúhle?" (http://www.financnytrh.com/google-daval-tieto-otazky-na-prijimacich-pohovoroch-avsak-su-take-narocne-ze-uz-boli-zakazane/a11170 (http://www.financnytrh.com/google-daval-tieto-otazky-na-prijimacich-pohovoroch-avsak-su-take-narocne-ze-uz-boli-zakazane/a11170)). Je jasné, že programátor nebude navrhovať poklopy, ani používať poklopy, ani ich udržiavať, ani cez nich chodiť.

Je dobré na pohovore zistiť, ako sa uchádzač vysporiada s niečim nečakaným. Keď sa zosype pred jednoduchým príkladom (áno, toto je jednoduchý príklad), začne hromžiť, alebo hľadať výhovorky, prečo je príklad zlý a nemal by sa takto riešiť, je to zlý signál. Podobnú reakciu môže zamestnávateľ očakávať až ho zamestná a dá mu hocijakú inú úlohu.

Inými slovami, netestuje sa takto zďaleka len odbornosť dotyčného, ale aj jeho charakter, morálka, ľudské vlastnosti, schopnosť samostatne uvažovať, vynájsť sa, prekonávať prekážky.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 07. 09. 2016, 10:25:38
to co sa pytal kedysi google, uz davno neplati. sami nato prisli, ze sa to nevyplaca  ;)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 10:26:39
Taky si osobně myslím, že na té otázce není nic špatného. Za prvé, klidně se mohli ptát pro to, že to je prostě u nich potřeba a za druhé mohlo jít jen o snahu zjistit, jak hluboké má dotyčný znalosti. Je to jeden ze způsobu pohovoru, kdy nemusí jít o to někoho nachytat, ale prostě jen zjistit, v jaké oblasti je použitelný. Příklad je to tak akorát složitý na to, aby ukázal, že dotyčný o binárních operacích něco ví, ale zároveň dost jednoduchý na to, aby se dal v případě znalosti problematiky spočítat během minutky. Jako člověk, který začínal na asm, považuji binární operace za základní a triviální, ale možná se časy mění. Dejme tomu pár let a vývojář už nebude muset ani tušit, co je to bit, byte atd, nebude vědět, co je to CPU, nebude řešit paměťovou náročnost, protože paměti je všude dost a aplikace bude jen malovat v nějakým super frameworku. Potom se konečně vrátím k programování a začnu psát ovladače za milióny měsíčně, protože low-level věci nebude skoro nikdo znát.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 07. 09. 2016, 10:32:55
To jako myslite vazne, aby se zkouselo z binarnich vypoctu pri pohovoru na misto, kde se to nebude pouzivat? Takze si Pepa prijde na pohovor na pozici front-endaka v Angularu (tj. JavaScript pro prohlizece) a budou po nem chtit matlani na papir neceho, co nikdy v praci nepouzije? Nejak mi to pripomina ty skoly, na ktere se tu porad nadava :D. Byt Pepou, tak se proste zvednu a odejdu, i kdybych vedel odpoved, protoze takova firma asi za moc stat nebude - nechtel bych tam pak delat s back-endistou, ktery vi hodne o historii umeni, ale nebude skoro nic vedet o db ani Jave, v ktere ma vyvijet, protoze na pohoru se radeji ptali na ptakoviny.

Když se tu nadává na školy, že učej nepraktické věci, což obvykle tvrdí děcka, kterým teče mlíko po bradě a v životě ještě k žádné pořádné práci nečuchla, připadá mi to legrační. Ale vy tu už kádrujete i zaměstnavatele!  ;D Takže na pohovoru bych se měl podle vás asi nakonec ptát já uhrovatýho adolescenta, na co se ho mám ptát, protože on přece ví líp, co u nás bude potřebovat.  ;D

Fakt už si dejte mokrej hadr na palici a pozdravujte na pracáku.  ;D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 10:43:04
Když se tu nadává na školy, že učej nepraktické věci, což obvykle tvrdí děcka, kterým teče mlíko po bradě a v životě ještě k žádné pořádné práci nečuchla, připadá mi to legrační. Ale vy tu už kádrujete i zaměstnavatele!  ;D Takže na pohovoru bych se měl podle vás asi nakonec ptát já uhrovatýho adolescenta, na co se ho mám ptát, protože on přece ví líp, co u nás bude potřebovat.  ;D

Fakt už si dejte mokrej hadr na palici a pozdravujte na pracáku.  ;D
No ale adolescent ti jednoznačně řekl předem, na co se ho máš ptát a to v životopisu, ne? Když ti napíše "Umým pérl", tak to znamená, že ho umí se vším všudy a s žádnou otázkou nebude mít problém :) Spíš je otázka, jestli vůbec má cenu dělat nějaký pohovor, když ti jasně řekl, že "ten pérl umý!" :D Prostě ho máš vzít a když ti náhodou nebude vyhovovat, je to tvoje chyba :D

Já se při pohovoru na Linux admina dostal u sítí až k layeru 1, protože jsem projevil hlubší znalosti a člověk, který se mnou pohovor dělal, se později přiznal, že už ani nevěděl, o čem mluvím :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: borekz 07. 09. 2016, 11:04:57
Mne tá otázka na pohovore pre programátora zas až tak od veci nepríde. Google sa napríklad údajne pýtal "Prečo sú poklopy kanálov okrúhle?"
Asi je to kvůli okrouhlým šachtám a ty jsou nejspíš okrouhlé pro lepší rozložení tlaku. Ale u nás máme i hranaté poklopy. Sice jde o teplovody, ne o kanály, ale obojí jsou revizní šachty.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ehmmm 07. 09. 2016, 11:13:42
Mne tá otázka na pohovore pre programátora zas až tak od veci nepríde. Google sa napríklad údajne pýtal "Prečo sú poklopy kanálov okrúhle?"
Asi je to kvůli okrouhlým šachtám a ty jsou nejspíš okrouhlé pro lepší rozložení tlaku. Ale u nás máme i hranaté poklopy. Sice jde o teplovody, ne o kanály, ale obojí jsou revizní šachty.

No vidis, taky odpoved. Ale existuje i jina odpoved.  :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 07. 09. 2016, 11:26:02
To jako myslite vazne, aby se zkouselo z binarnich vypoctu pri pohovoru na misto, kde se to nebude pouzivat? Takze si Pepa prijde na pohovor na pozici front-endaka v Angularu (tj. JavaScript pro prohlizece) a budou po nem chtit matlani na papir neceho, co nikdy v praci nepouzije? Nejak mi to pripomina ty skoly, na ktere se tu porad nadava :D. Byt Pepou, tak se proste zvednu a odejdu, i kdybych vedel odpoved, protoze takova firma asi za moc stat nebude - nechtel bych tam pak delat s back-endistou, ktery vi hodne o historii umeni, ale nebude skoro nic vedet o db ani Jave, v ktere ma vyvijet, protoze na pohoru se radeji ptali na ptakoviny.

Když se tu nadává na školy, že učej nepraktické věci, což obvykle tvrdí děcka, kterým teče mlíko po bradě a v životě ještě k žádné pořádné práci nečuchla, připadá mi to legrační. Ale vy tu už kádrujete i zaměstnavatele!  ;D Takže na pohovoru bych se měl podle vás asi nakonec ptát já uhrovatýho adolescenta, na co se ho mám ptát, protože on přece ví líp, co u nás bude potřebovat.  ;D

Fakt už si dejte mokrej hadr na palici a pozdravujte na pracáku.  ;D

Chapu to spravne, ze zastavate nazor, ze na vyvoj front-endu v JavaScriptu v danem frameworku (popravde asi libovolnem popularnim) je treba umet pocitat na papire v binarni soustave? :o To jako pro pridad, ze kdyby firma presla na novy framework, tak tam najednou vsude bude potreba binarni aritmetika? :D Na strane problizece? ;D Hmm, asi zijeme v jinem svete... Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

No, ale ono pokud se i na uklizecku obcas pozaduje maturita (jako WTF), tak je mozne, ze vyse popsane je smutna realita a radeji zamestnaji "vim od vseho zaklady" nez nekoho, kdo opravdu umel s technlogiemi se kterymi denne ve firme pracuji.

Osobne nemam rad ty pohory, kde vas "testuji" jak reagujete. IMO to zamestnavateli stejne nic nerekne, protoze pokud tam bude sedet nejaky smelar, tak vi, ze ho testujete a nebude mit problem to na tom kratkem pohovoru zahrat, mit priprave vsechny mozne skopiciny. Mnohem lepsi me prijde ferovejsi pristup - opravdu se ptat na co, co bude potreba a pripadne na konci na zajimavosti z CV. Jak clovek bude resit problemy, vychazet s ostatnimi v tymu atp. se stejne zjisti az ve zkusebce.

PS: Na pracaku nejsem :).
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 07. 09. 2016, 11:32:36
Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

Je smutné, že v tom nevidíš rozdíl. Otázka na binární aritmetiku je na obecný docela základní princip, který je použitelný v jakémkoliv programovacím jazyce a předpokládá se, že uchazeč bude alespoň tušit. Otázka na bind v JavaScriptu je na konkrétní technologii a nepředpokládá se, že to bude člověk neznalý JavaScriptu znát.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 07. 09. 2016, 11:38:28
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

No v MySql nic nebrání tomu, používat bitové operace v podmínkách where. Takže je můžete používat i v db vrstvě. Abyste neměl větu s 30 bool stavovými položkami. Viz zde http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 11:53:01
Chapu to spravne, ze zastavate nazor, ze na vyvoj front-endu v JavaScriptu v danem frameworku (popravde asi libovolnem popularnim) je treba umet pocitat na papire v binarni soustave? :o To jako pro pridad, ze kdyby firma presla na novy framework, tak tam najednou vsude bude potreba binarni aritmetika? :D Na strane problizece? ;D Hmm, asi zijeme v jinem svete... Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

No, ale ono pokud se i na uklizecku obcas pozaduje maturita (jako WTF), tak je mozne, ze vyse popsane je smutna realita a radeji zamestnaji "vim od vseho zaklady" nez nekoho, kdo opravdu umel s technlogiemi se kterymi denne ve firme pracuji.

Osobne nemam rad ty pohory, kde vas "testuji" jak reagujete. IMO to zamestnavateli stejne nic nerekne, protoze pokud tam bude sedet nejaky smelar, tak vi, ze ho testujete a nebude mit problem to na tom kratkem pohovoru zahrat, mit priprave vsechny mozne skopiciny. Mnohem lepsi me prijde ferovejsi pristup - opravdu se ptat na co, co bude potreba a pripadne na konci na zajimavosti z CV. Jak clovek bude resit problemy, vychazet s ostatnimi v tymu atp. se stejne zjisti az ve zkusebce.

PS: Na pracaku nejsem :).
Viděl jsem i inzerát na uklízečku - SŠ, angličtina na komunikativní úrovni a další jazyk (francouzština, němčina) výhodou.
Každopádně, znalost binární soustavy si myslím prostě patří k základům každé profese související s IT a i když to nepoužíváš každý den, je pravděpodobné, že na to dříve nebo později narazíš. Pořád nevíme, na co přesně pohovor byl, ale čím víc nad tím přemýšlím, tím víc si myslím, že daná otázka může pomoct vybrat lidi, kteří mají o obor opravdový zájem. Osobně bych asi nepovažoval tuto otázku za klíčovou, ale může to být bodík k dobru, pokud je více zájemců, kteří vypadají kvalitativně podobně.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 07. 09. 2016, 12:19:57
Chapu to spravne, ze zastavate nazor, ze na vyvoj front-endu v JavaScriptu v danem frameworku (popravde asi libovolnem popularnim) je treba umet pocitat na papire v binarni soustave? :o To jako pro pridad, ze kdyby firma presla na novy framework, tak tam najednou vsude bude potreba binarni aritmetika? :D Na strane problizece? ;D Hmm, asi zijeme v jinem svete... Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

No, ale ono pokud se i na uklizecku obcas pozaduje maturita (jako WTF), tak je mozne, ze vyse popsane je smutna realita a radeji zamestnaji "vim od vseho zaklady" nez nekoho, kdo opravdu umel s technlogiemi se kterymi denne ve firme pracuji.

Osobne nemam rad ty pohory, kde vas "testuji" jak reagujete. IMO to zamestnavateli stejne nic nerekne, protoze pokud tam bude sedet nejaky smelar, tak vi, ze ho testujete a nebude mit problem to na tom kratkem pohovoru zahrat, mit priprave vsechny mozne skopiciny. Mnohem lepsi me prijde ferovejsi pristup - opravdu se ptat na co, co bude potreba a pripadne na konci na zajimavosti z CV. Jak clovek bude resit problemy, vychazet s ostatnimi v tymu atp. se stejne zjisti az ve zkusebce.

PS: Na pracaku nejsem :).
Viděl jsem i inzerát na uklízečku - SŠ, angličtina na komunikativní úrovni a další jazyk (francouzština, němčina) výhodou.
Každopádně, znalost binární soustavy si myslím prostě patří k základům každé profese související s IT a i když to nepoužíváš každý den, je pravděpodobné, že na to dříve nebo později narazíš. Pořád nevíme, na co přesně pohovor byl, ale čím víc nad tím přemýšlím, tím víc si myslím, že daná otázka může pomoct vybrat lidi, kteří mají o obor opravdový zájem. Osobně bych asi nepovažoval tuto otázku za klíčovou, ale může to být bodík k dobru, pokud je více zájemců, kteří vypadají kvalitativně podobně.
Tak barvy se v hexa kódu uvádějí i v css, takže ano, i v tomto prostředí tyto znalosti využijete.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 07. 09. 2016, 12:41:05
To jako myslite vazne, aby se zkouselo z binarnich vypoctu pri pohovoru na misto, kde se to nebude pouzivat? Takze si Pepa prijde na pohovor na pozici front-endaka v Angularu (tj. JavaScript pro prohlizece) a budou po nem chtit matlani na papir neceho, co nikdy v praci nepouzije? Nejak mi to pripomina ty skoly, na ktere se tu porad nadava :D. Byt Pepou, tak se proste zvednu a odejdu, i kdybych vedel odpoved, protoze takova firma asi za moc stat nebude - nechtel bych tam pak delat s back-endistou, ktery vi hodne o historii umeni, ale nebude skoro nic vedet o db ani Jave, v ktere ma vyvijet, protoze na pohoru se radeji ptali na ptakoviny.

Když se tu nadává na školy, že učej nepraktické věci, což obvykle tvrdí děcka, kterým teče mlíko po bradě a v životě ještě k žádné pořádné práci nečuchla, připadá mi to legrační. Ale vy tu už kádrujete i zaměstnavatele!  ;D Takže na pohovoru bych se měl podle vás asi nakonec ptát já uhrovatýho adolescenta, na co se ho mám ptát, protože on přece ví líp, co u nás bude potřebovat.  ;D

Fakt už si dejte mokrej hadr na palici a pozdravujte na pracáku.  ;D

Chapu to spravne, ze zastavate nazor, ze na vyvoj front-endu v JavaScriptu v danem frameworku (popravde asi libovolnem popularnim) je treba umet pocitat na papire v binarni soustave? :o To jako pro pridad, ze kdyby firma presla na novy framework, tak tam najednou vsude bude potreba binarni aritmetika? :D Na strane problizece? ;D Hmm, asi zijeme v jinem svete... Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

No, ale ono pokud se i na uklizecku obcas pozaduje maturita (jako WTF), tak je mozne, ze vyse popsane je smutna realita a radeji zamestnaji "vim od vseho zaklady" nez nekoho, kdo opravdu umel s technlogiemi se kterymi denne ve firme pracuji.

Osobne nemam rad ty pohory, kde vas "testuji" jak reagujete. IMO to zamestnavateli stejne nic nerekne, protoze pokud tam bude sedet nejaky smelar, tak vi, ze ho testujete a nebude mit problem to na tom kratkem pohovoru zahrat, mit priprave vsechny mozne skopiciny. Mnohem lepsi me prijde ferovejsi pristup - opravdu se ptat na co, co bude potreba a pripadne na konci na zajimavosti z CV. Jak clovek bude resit problemy, vychazet s ostatnimi v tymu atp. se stejne zjisti az ve zkusebce.

PS: Na pracaku nejsem :).

A nechtěl bys to nechat na tom potenciálním zaměstnavateli? Pokud ti klade otázky, které se ti zdají nepatřičné, můžeš se sebrat a odejít. Práce v IT je spousta, lidí málo. Proto se do IT začalo hrnout tolik lidí s vidinou snadného výdělku, ačkoli na to nemají hlavu a mají pocit, že se stačí tak nějak přibližně naučit základy nějakého jazyka (rozuměj - jeho klíčová slova a něco málo z jeho standardních knihoven), a všichni si z nich sednou na zadek a pro začátek jim nabídnou aspoň 100k. A proto je tu také opravdových odborníků ještě o řád méně. Většina lidí v IT v současnosti jsou ale fachidioti.
Umět konkrétní jazyk, konkrétní technologii je to nejmenší, to se dá zvládnout za pár týdnů. Ale umět programátorsky myslet, to spousta lidí nezvládne do konce života.
Vědět něco o reprezentaci čísel v počítači a ovládat logické operace, to jsou přece naprosté základy. Už jsem na vlastní oči bohužel viděl příliš mnoho zpraseného kódu, u jehož vzniku evidentně stálo to, že autor o věcech, o nichž se tu bavíme, nevěděl zhola nic. A důsledky nebyly jen kosmetické, dopad na výkon byl naprosto katastrofální! Bitové operace realizované v C++ pomocí vectoru stringů, z nichž každý mohl nabývat hodnot "0" a "1", nebo obzvláště rozšířený nešvar - uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Je jenom dobře, že se potenciální zaměstnavatel zajímá spíše o to, jak to uchazeči o práci pálí, než o konkrétní technologie. Komu to pálí totiž konkrétní technologii zvládne raz dva, zatímco ovládá-li někdo konkrétní technologii, ale neumí používat to, co má na konci krku, je mu taková znalost k ničemu. To je jako vlastnit kolo za 60 tisíc, ale neumět na něm jezdit.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 07. 09. 2016, 12:43:08
Chapu to spravne, ze zastavate nazor, ze na vyvoj front-endu v JavaScriptu v danem frameworku (popravde asi libovolnem popularnim) je treba umet pocitat na papire v binarni soustave? :o To jako pro pridad, ze kdyby firma presla na novy framework, tak tam najednou vsude bude potreba binarni aritmetika? :D Na strane problizece? ;D Hmm, asi zijeme v jinem svete... Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

No, ale ono pokud se i na uklizecku obcas pozaduje maturita (jako WTF), tak je mozne, ze vyse popsane je smutna realita a radeji zamestnaji "vim od vseho zaklady" nez nekoho, kdo opravdu umel s technlogiemi se kterymi denne ve firme pracuji.

Osobne nemam rad ty pohory, kde vas "testuji" jak reagujete. IMO to zamestnavateli stejne nic nerekne, protoze pokud tam bude sedet nejaky smelar, tak vi, ze ho testujete a nebude mit problem to na tom kratkem pohovoru zahrat, mit priprave vsechny mozne skopiciny. Mnohem lepsi me prijde ferovejsi pristup - opravdu se ptat na co, co bude potreba a pripadne na konci na zajimavosti z CV. Jak clovek bude resit problemy, vychazet s ostatnimi v tymu atp. se stejne zjisti az ve zkusebce.

PS: Na pracaku nejsem :).
Viděl jsem i inzerát na uklízečku - SŠ, angličtina na komunikativní úrovni a další jazyk (francouzština, němčina) výhodou.
Každopádně, znalost binární soustavy si myslím prostě patří k základům každé profese související s IT a i když to nepoužíváš každý den, je pravděpodobné, že na to dříve nebo později narazíš. Pořád nevíme, na co přesně pohovor byl, ale čím víc nad tím přemýšlím, tím víc si myslím, že daná otázka může pomoct vybrat lidi, kteří mají o obor opravdový zájem. Osobně bych asi nepovažoval tuto otázku za klíčovou, ale může to být bodík k dobru, pokud je více zájemců, kteří vypadají kvalitativně podobně.
Tak barvy se v hexa kódu uvádějí i v css, takže ano, i v tomto prostředí tyto znalosti využijete.

Nikdy jsem v praci vypocty v binarni ani hexadecimalni soustave nepouzil. Ano, uznavam, ve vzacnych pripadech se muze hodit tusit, jak je to vevnitr usporadane (napr. kdyz prohlizite zkompilovane css soubory v hloupem editoru), ale rozhodne to neni potreba - rucne to front-endak nepotrebuje pocitat, protoze budto to ma od grafika zadane, nebo pouziva nejaky css preprocesor, ktery ho odstinuje od "vypoctu" v hexa soustave. Je take podstatne lepsi mit zakladni barvu a z ni mit odvozene ostatni odstiny a pocitat to pomoci preprocessoru, nez to mastit rucne absolutne a pak pri zmene zakladni barvy se musi vse prepisovat. A tu zakladni barvu, pokud ji nema zadanou, si take nevycuca nevypocita z hlavy, proste si otevre nejake klikatko, namixuje par barev a vyzkousi, jak to vypada. Tohle fakt neni hw/low level, kde potrebujete vykuchat pomoci and jeden bitik a pak o kousek dal pri vypoctu kvuli rychlosti pouzit shift misto nasobeni, protoze potrebujete ty extra % vykonu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 07. 09. 2016, 12:53:17
A nechtěl bys to nechat na tom potenciálním zaměstnavateli? Pokud ti klade otázky, které se ti zdají nepatřičné, můžeš se sebrat a odejít. Práce v IT je spousta, lidí málo.

Proto se divim, ze nekdo tlaci zkouseni kandidatu z veci, ktere s praci nesouvisi. A ano, pocitani v binarni soustave pro cloveka delajiciho front-end v JavaScriptu je opravdu na nic.

Vědět něco o reprezentaci čísel v počítači a ovládat logické operace, to jsou přece naprosté základy.

S tim souhlasim, ale do toho IMO nespada schopnost ve stresu se snazit pocitat v binarni soustave. Melo by stacit, ze o tom vim, ze to existuje a v pripade potreby to jen pouzit v kodu.

Už jsem na vlastní oči bohužel viděl příliš mnoho zpraseného kódu, u jehož vzniku evidentně stálo to, že autor o věcech, o nichž se tu bavíme, nevěděl zhola nic. A důsledky nebyly jen kosmetické, dopad na výkon byl naprosto katastrofální! Bitové operace realizované v C++ pomocí vectoru stringů, z nichž každý mohl nabývat hodnot "0" a "1", nebo obzvláště rozšířený nešvar - uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Eh, to uz me prijde trochu prehnane. Jako pochopil bych, kdyby prave nekdo takovy sel na front-end, kde se ve vetsine pripadu nic nestane, kdyz to tahkle doprasi. Ale ze se hrne do C++ za mistrama? ???

Je jenom dobře, že se potenciální zaměstnavatel zajímá spíše o to, jak to uchazeči o práci pálí, než o konkrétní technologie. Komu to pálí totiž konkrétní technologii zvládne raz dva, zatímco ovládá-li někdo konkrétní technologii, ale neumí používat to, co má na konci krku, je mu taková znalost k ničemu. To je jako vlastnit kolo za 60 tisíc, ale neumět na něm jezdit.

Nevim, jak jsem psal vyse, prijde mi takoveto testovani jeden priklad ve stresu na pohovoru a vime, jak to uchazeci pali, celkem zbytecny. To, ze z hlavy nevysype vysledek prikladu v binarni soustave na pohovoru na Python webare si myslim moc nevypovida o tom, "jak mu to pali".
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 13:09:23

Nevim, jak jsem psal vyse, prijde mi takoveto testovani jeden priklad ve stresu na pohovoru a vime, jak to uchazeci pali, celkem zbytecny. To, ze z hlavy nevysype vysledek prikladu v binarni soustave na pohovoru na Python webare si myslim moc nevypovida o tom, "jak mu to pali".

Přesně tak. Zeptat se na znalosti a zjišťovat pálení? To je VŠ styl :D Samozřejmě se mi to stává často, ale o dotytčném si pomyslím, že je jen lopata a rozloučíme se.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 13:10:33
Nikdy jsem v praci vypocty v binarni ani hexadecimalni soustave nepouzil. Ano, uznavam, ve vzacnych pripadech se muze hodit tusit, jak je to vevnitr usporadane (napr. kdyz prohlizite zkompilovane css soubory v hloupem editoru), ale rozhodne to neni potreba - rucne to front-endak nepotrebuje pocitat, protoze budto to ma od grafika zadane, nebo pouziva nejaky css preprocesor, ktery ho odstinuje od "vypoctu" v hexa soustave. Je take podstatne lepsi mit zakladni barvu a z ni mit odvozene ostatni odstiny a pocitat to pomoci preprocessoru, nez to mastit rucne absolutne a pak pri zmene zakladni barvy se musi vse prepisovat. A tu zakladni barvu, pokud ji nema zadanou, si take nevycuca nevypocita z hlavy, proste si otevre nejake klikatko, namixuje par barev a vyzkousi, jak to vypada. Tohle fakt neni hw/low level, kde potrebujete vykuchat pomoci and jeden bitik a pak o kousek dal pri vypoctu kvuli rychlosti pouzit shift misto nasobeni, protoze potrebujete ty extra % vykonu.
No jo, asi stará škola... když potřebuju barvu, většinou ji dostatečně přesně trefím v hexa, naopak, když použiju klikátko, tak zjistím, že větší plocha vypadá výrazně jinak, než malej čtvereček u klikátka a stejně to dodělám ručně. Ale jinak barvy tu někdo uvedl jako dost špatný příklad, vytvářet barvu v css z jiné barvy bitovým maskováním není asi v praxi úplně nejběžnější, i když by se tím určitě občas dalo dosáhnout zajímavých výsledků.
Nicméně na mém názoru se nic nemění, každej člověk od IT by měl vědět, co je bit, co je byte, měl by být schopnej převést soustavy mezi sebou a vědět, co jsou základní logické operace. Minimálně za mého mládí to tak bylo, ve škole jsme se učili boolovu algebru, karnaufovy mapy, nebo jak se ten opruz píše a nebyl v tom problém. Je to stejné jako tvrdit, že nepotřebuju češtinu, protože jsou běžné automatické kontroly a opravy, nebo že nepotřebuju matematiku, protože mám v kapse nonstop mobil s kalkulačkou. Prostě to k IT patří a minimálně se to hodí k pochopení dalších věcí, i když to třeba přímo nikdy nepoužiju.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 13:12:53
Jasně a nezapomeň taky na znalost Cobolu. Nikdy nevíš!  ;D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 07. 09. 2016, 13:20:18
obycajny topic sa dokazal rozrast na tolko stranok. to je mozne asi len na roote :D.
pytat sa na pohovore taketo veci, ktore mozno dotycny ani nebude vyuzivat, to je riadne mimo. to iste plati aj napr. pri navrhovych vzoroch. chcu po vas vselijake vzory (behavioralne, strukturalne, ...) a pritom pouzivaju mozno az tak jeden a to Singleton. pri zelenacovi, co nema prax, sa daju taketo otazky pochopit, ale pri juniorovi s nejakou 1-2 rocnou praxou, ci seniorovi, to teda nedava zmysel.
Ja dávam aj otázky, o ktorých si myslím, že na ne neodpovie ani jeden kandidát. Ak odpovie, je to príjemné prekvapenie, ak neodpovie, aj z nesprávnej odpovede sa dá niečo vyčítať.

PŘESNĚ!!!
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 13:20:57
Jasně a nezapomeň taky na znalost Cobolu. Nikdy nevíš!  ;D
Jak říkáš, nikdy nevíš. Z COBOLu se vyvinul ABAP a najednou je z toho takovej byznys, o jakým se motykám od javy, kterých je na každým rohu hromada, ani nesnilo :D Nehledě k tomu, že i samotnej COBOL je dneska placenej zlatem, tam kde dožívá.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 13:28:39
obycajny topic sa dokazal rozrast na tolko stranok. to je mozne asi len na roote :D.
pytat sa na pohovore taketo veci, ktore mozno dotycny ani nebude vyuzivat, to je riadne mimo. to iste plati aj napr. pri navrhovych vzoroch. chcu po vas vselijake vzory (behavioralne, strukturalne, ...) a pritom pouzivaju mozno az tak jeden a to Singleton. pri zelenacovi, co nema prax, sa daju taketo otazky pochopit, ale pri juniorovi s nejakou 1-2 rocnou praxou, ci seniorovi, to teda nedava zmysel.
Ja dávam aj otázky, o ktorých si myslím, že na ne neodpovie ani jeden kandidát. Ak odpovie, je to príjemné prekvapenie, ak neodpovie, aj z nesprávnej odpovede sa dá niečo vyčítať.

PŘESNĚ!!!

Co přesně? A co asi zjistíš?

Jasně a nezapomeň taky na znalost Cobolu. Nikdy nevíš!  ;D
Jak říkáš, nikdy nevíš. Z COBOLu se vyvinul ABAP a najednou je z toho takovej byznys, o jakým se motykám od javy, kterých je na každým rohu hromada, ani nesnilo :D Nehledě k tomu, že i samotnej COBOL je dneska placenej zlatem, tam kde dožívá.

Bla, bla, kámo. Zlatem :D Už ten Blesk nečti.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 07. 09. 2016, 13:48:33
obycajny topic sa dokazal rozrast na tolko stranok. to je mozne asi len na roote :D.
pytat sa na pohovore taketo veci, ktore mozno dotycny ani nebude vyuzivat, to je riadne mimo. to iste plati aj napr. pri navrhovych vzoroch. chcu po vas vselijake vzory (behavioralne, strukturalne, ...) a pritom pouzivaju mozno az tak jeden a to Singleton. pri zelenacovi, co nema prax, sa daju taketo otazky pochopit, ale pri juniorovi s nejakou 1-2 rocnou praxou, ci seniorovi, to teda nedava zmysel.
Ja dávam aj otázky, o ktorých si myslím, že na ne neodpovie ani jeden kandidát. Ak odpovie, je to príjemné prekvapenie, ak neodpovie, aj z nesprávnej odpovede sa dá niečo vyčítať.

PŘESNĚ!!!

Co přesně? A co asi zjistíš?

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 13:51:29
Ja dávam aj otázky, o ktorých si myslím, že na ne neodpovie ani jeden kandidát. Ak odpovie, je to príjemné prekvapenie, ak neodpovie, aj z nesprávnej odpovede sa dá niečo vyčítať.
PŘESNĚ!!!
Co přesně? A co asi zjistíš?
Třeba zjistíš, že uchazeč není takovej suterén, jak se tvářil, že nedokáže normálně uznat, že něco neví (což je kupodivu velmi dobrá a HR vysoce ceněná vlastnost), a že jeho odolnost vůči stresu (ať už to znamená cokoliv), kterou si napsal do CV, se limitně blíží nule.

Co se týče COBOLu a obecně věcí kolem mainframů, asi by jsi se hodně divil, kolik může dostat zkušený člověk s praxí. I když je pravda, že to žije v Evropě hlavně v Německu, tam na tom bylo postavený všechno v době, kdy se u nás v JZD vyráběly PMDčka a spousta těch systémů kupodivu žije dodnes.
Název: Re:bitové operace
Přispěvatel: gl 07. 09. 2016, 13:51:40
Pro práci s IP a RGB se používají knihovny, často implementované v C.

Tak povídej přeháněj jak třeba v Javě převedeš matici intů na matici RGB a naopak. Pro jednoduchost klidně lineární color space.

Já psal o pythonu. Ty inty v té původní matici reprezentují co? Jednu barevnou složku?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 13:53:34

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.

Tak jistě, to má skoro každý po několika letech. Právě proto nechápu, co tak hloupou otázkou získáš? Kromě opovržení uchazeče.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 13:56:34
Ja dávam aj otázky, o ktorých si myslím, že na ne neodpovie ani jeden kandidát. Ak odpovie, je to príjemné prekvapenie, ak neodpovie, aj z nesprávnej odpovede sa dá niečo vyčítať.
PŘESNĚ!!!
Co přesně? A co asi zjistíš?
Třeba zjistíš, že uchazeč není takovej suterén, jak se tvářil, že nedokáže normálně uznat, že něco neví (což je kupodivu velmi dobrá a HR vysoce ceněná vlastnost), a že jeho odolnost vůči stresu (ať už to znamená cokoliv), kterou si napsal do CV, se limitně blíží nule.

Co se týče COBOLu a obecně věcí kolem mainframů, asi by jsi se hodně divil, kolik může dostat zkušený člověk s praxí. I když je pravda, že to žije v Evropě hlavně v Německu, tam na tom bylo postavený všechno v době, kdy se u nás v JZD vyráběly PMDčka a spousta těch systémů kupodivu žije dodnes.

Tak neví nějakou píčovinu a to určitě nikomu nevadí. Mě se obyvkle takhle zeptají a když řeknu, že nevím, tak čumí, jak kdybych byl úplně k ničemu :D Fakt jsem zvědavej na podobný suterény.

Člověk s praxí nikoho nezajímá, to jsou nějaký vykopávky k ničemu. Zajímá mě aktuální tržní cena v ČR pro lidi, kteří jsou ochotni se to naučit a nebo mají pár let praxe. Kdyby to byl takový hit, tak všichni zahodí Javu a jdou do Cobolu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 07. 09. 2016, 14:04:16

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.

Tak jistě, to má skoro každý po několika letech.

Tak to rozhodně nesouhlasím. Ze zkušenosti. Ano, skoro každý o tom umí kecat, ale málokdo ví, co to ve skutečnosti obnáší.

Právě proto nechápu, co tak hloupou otázkou získáš? Kromě opovržení uchazeče.

Tvůj názor ti brát nebudu. U pohovorů je normální se ptát i na věci, které souvisí s technologiemi, ale kandidát je hned na začátku nebude potřebovat. Je výhodou ho při pohovoru lépe poznat, atd...

Mně osobně neustále překvapuje, jak je možné, že někdo na základě informace "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" usoudí, že se na dané pozici nikdy nebude potřebovat nic z bitové aritmetiky a že je úplný nesmysl se na něco podobného ptát.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 07. 09. 2016, 14:04:26
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 14:08:11
Tak neví nějakou píčovinu a to určitě nikomu nevadí. Mě se obyvkle takhle zeptají a když řeknu, že nevím, tak čumí, jak kdybych byl úplně k ničemu :D Fakt jsem zvědavej na podobný suterény.

Člověk s praxí nikoho nezajímá, to jsou nějaký vykopávky k ničemu. Zajímá mě aktuální tržní cena v ČR pro lidi, kteří jsou ochotni se to naučit a nebo mají pár let praxe. Kdyby to byl takový hit, tak všichni zahodí Javu a jdou do Cobolu.
No jo, když odpovíš nevím na každou otázku, včetně jména, tak se nediv, že čumí :D

Bohužel, nenašel jsem žádnej inzerát na COBOListu, u kterýho by byla mzda. Každopádně, poptávka je celkem malá, nabídka taky, ale logicky, kdyby se vyrojily desetitisíce nových COBOListů, asi by šla cena dolů a práci by stejně nesehnali. To máš jak s Javou, jazyk pro motyky, kterej se naučí cvičená opice za bednu banánů. Pár let zpátky si každej Pepík ze zvláštní školy řekl, že to zvládne taky a pak se tu množí témata, jestli vzít práci za 15-25k. A pak se dozvíš, že javamani neví, co je to bit, odmítají používat databáze, neúspěšně obíhají jeden pohovor za druhým, nedokážou se tam ani představit a po dopoledním pohovorovém kolečku chodí trollit na roota, jak se mají dobře.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 14:13:47
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 14:13:55

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.

Tak jistě, to má skoro každý po několika letech.

Tak to rozhodně nesouhlasím. Ze zkušenosti. Ano, skoro každý o tom umí kecat, ale málokdo ví, co to ve skutečnosti obnáší.

Právě proto nechápu, co tak hloupou otázkou získáš? Kromě opovržení uchazeče.

Tvůj názor ti brát nebudu. U pohovorů je normální se ptát i na věci, které souvisí s technologiemi, ale kandidát je hned na začátku nebude potřebovat. Je výhodou ho při pohovoru lépe poznat, atd...

Mně osobně neustále překvapuje, jak je možné, že někdo na základě informace "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" usoudí, že se na dané pozici nikdy nebude potřebovat nic z bitové aritmetiky a že je úplný nesmysl se na něco podobného ptát.

OMG, každej blbec dnes má svůj tým, nebo dělá manažera. Tak to prostě je, pokud jsi ve firmě delší dobu. Nikdo neřeší, že jsi lopata, která na to nemá. Bohužel to tak je, proto mám problémy, když sám něco nového hledám.

Protože bitová aritmetika je konkrétní znalost, která se běžně nepoužívá a její znalost nic neukazuje. Dej mu radši reálný problém, který nikdy neviděl a uvidíš, jak se chová. Prostě tu otázku dělala nějaká lopata, která si myslí, že je to důležité. Když to nespočítá, tak co zjistíš? Prostě jen šum, které lopaty tvoří.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 14:16:36
Tak neví nějakou píčovinu a to určitě nikomu nevadí. Mě se obyvkle takhle zeptají a když řeknu, že nevím, tak čumí, jak kdybych byl úplně k ničemu :D Fakt jsem zvědavej na podobný suterény.

Člověk s praxí nikoho nezajímá, to jsou nějaký vykopávky k ničemu. Zajímá mě aktuální tržní cena v ČR pro lidi, kteří jsou ochotni se to naučit a nebo mají pár let praxe. Kdyby to byl takový hit, tak všichni zahodí Javu a jdou do Cobolu.
No jo, když odpovíš nevím na každou otázku, včetně jména, tak se nediv, že čumí :D

Bohužel, nenašel jsem žádnej inzerát na COBOListu, u kterýho by byla mzda. Každopádně, poptávka je celkem malá, nabídka taky, ale logicky, kdyby se vyrojily desetitisíce nových COBOListů, asi by šla cena dolů a práci by stejně nesehnali. To máš jak s Javou, jazyk pro motyky, kterej se naučí cvičená opice za bednu banánů. Pár let zpátky si každej Pepík ze zvláštní školy řekl, že to zvládne taky a pak se tu množí témata, jestli vzít práci za 15-25k. A pak se dozvíš, že javamani neví, co je to bit, odmítají používat databáze, neúspěšně obíhají jeden pohovor za druhým, nedokážou se tam ani představit a po dopoledním pohovorovém kolečku chodí trollit na roota, jak se mají dobře.

Jen na ty jeho lopatoviny.

Místo keců radši nějaká fakta, kámo. Já byl u pár pozic s Cobolem a žádný zlato nikdo nedával. Neříkám, že to tak je všude, ale to mi právě musíš ukázat a zatím vyprávíš pohádky.

Java je pro nejnáročnější projekty a nejlepší programátory, takže zase pohádky. Jsem rád, že ty jsi zůstal u bitů, ale dneska je profi vývoj trochu dál.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 07. 09. 2016, 14:19:12
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

Můžeš uchovávat oboje. Pokud nevyhledáváš rozsahy, tak je string pohodlnější. Podle tvé logiky bychom museli všechna data uchovávat zkomprimovaná.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 14:19:16
A pak se dozvíš, že javamani neví, co je to bit, odmítají používat databáze, neúspěšně obíhají jeden pohovor za druhým, nedokážou se tam ani představit a po dopoledním pohovorovém kolečku chodí trollit na roota, jak se mají dobře.

 ;D +1
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 07. 09. 2016, 14:23:09

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.

Tak jistě, to má skoro každý po několika letech.

Tak to rozhodně nesouhlasím. Ze zkušenosti. Ano, skoro každý o tom umí kecat, ale málokdo ví, co to ve skutečnosti obnáší.

Právě proto nechápu, co tak hloupou otázkou získáš? Kromě opovržení uchazeče.

Tvůj názor ti brát nebudu. U pohovorů je normální se ptát i na věci, které souvisí s technologiemi, ale kandidát je hned na začátku nebude potřebovat. Je výhodou ho při pohovoru lépe poznat, atd...

Mně osobně neustále překvapuje, jak je možné, že někdo na základě informace "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" usoudí, že se na dané pozici nikdy nebude potřebovat nic z bitové aritmetiky a že je úplný nesmysl se na něco podobného ptát.

OMG, každej blbec dnes má svůj tým, nebo dělá manažera. Tak to prostě je, pokud jsi ve firmě delší dobu. Nikdo neřeší, že jsi lopata, která na to nemá. Bohužel to tak je, proto mám problémy, když sám něco nového hledám.

Protože bitová aritmetika je konkrétní znalost, která se běžně nepoužívá a její znalost nic neukazuje. Dej mu radši reálný problém, který nikdy neviděl a uvidíš, jak se chová. Prostě tu otázku dělala nějaká lopata, která si myslí, že je to důležité. Když to nespočítá, tak co zjistíš? Prostě jen šum, které lopaty tvoří.

OK. Takže frustrace a za vše můžou všudypřítomné "lopaty". S tím tady asi nic nenadělám.

Ale stejně by mně zajímalo, proč si myslíš na základě velmi omezené informace od tazatele, že bitovou aritmetiku nepoužije?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 07. 09. 2016, 14:26:03
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

Můžeš uchovávat oboje. Pokud nevyhledáváš rozsahy, tak je string pohodlnější. Podle tvé logiky bychom museli všechna data uchovávat zkomprimovaná.

Výhodou textových IP adres je, že do takových sloupců můžeš ukládat i adresy pro Sandru Bullock :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 14:28:43
OK. Takže frustrace a za vše můžou všudypřítomné "lopaty". S tím tady asi nic nenadělám.

Ale stejně by mně zajímalo, proč si myslíš na základě velmi omezené informace od tazatele, že bitovou aritmetiku nepoužije?

To jo, je jich moc.

Vůbec to není podstatné. Když ji bude potřebovat, tak se ji naučí za odpoledne. Pokud je to lopata, tak se nenaučí nikdy nic. Informace o tom, jestli umí tohle, nic nepřinese. Hlavně tuším, kde se tyhle testy dávají a tohle není jediná blbost tam. Samozřejmě to může být jinde, ale složení celého testu je pak dost podezřelé.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Trupik 07. 09. 2016, 14:46:58
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

Můžeš uchovávat oboje. Pokud nevyhledáváš rozsahy, tak je string pohodlnější. Podle tvé logiky bychom museli všechna data uchovávat zkomprimovaná.

Výhodou textových IP adres je, že do takových sloupců můžeš ukládat i adresy pro Sandru Bullock :D
žarty bokom, ale ako do 32 bitov uloží kiwi adresu IPv6?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 07. 09. 2016, 14:47:57
OK. Takže frustrace a za vše můžou všudypřítomné "lopaty". S tím tady asi nic nenadělám.

Ale stejně by mně zajímalo, proč si myslíš na základě velmi omezené informace od tazatele, že bitovou aritmetiku nepoužije?

To jo, je jich moc.

Vůbec to není podstatné. Když ji bude potřebovat, tak se ji naučí za odpoledne. Pokud je to lopata, tak se nenaučí nikdy nic. Informace o tom, jestli umí tohle, nic nepřinese. Hlavně tuším, kde se tyhle testy dávají a tohle není jediná blbost tam. Samozřejmě to může být jinde, ale složení celého testu je pak dost podezřelé.
takže bitové operátory znát nemusí, jakou další část javy je možné či vhodné ignorovat? je nějaká část toho jazyka, která se nedá naučit za odpoledne?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 07. 09. 2016, 14:48:22
Java je pro nejnáročnější projekty a nejlepší programátory

mozes to dolozit nejakymi faktami, alebo sa ti to prisnilo? Kazdy jazyk je urceny na nieco ine, ale zeby Java bola na najnarocnejsie projekty, to si teda pobavil :) (btw. take riadiace systemy do zariadeni su dost narocne a javu nepouzivaju)

Citace
... jsi zůstal u bitů, ale dneska je profi vývoj trochu dál.
hovori ti nieco pojem kryptografia, hashovacie funkcie? tam sa bitove operacie pouzivaju bezne. HW, ktory nepodporuje FP aritmetiku, tiez bezne vyuzitie bitovych operacii. kompresia, spracovanie signalov, networking.
To vsetko su obory, o ktorych nemas ani sajnu, pretoze jedine, co si sa kedy ucil bola Java, a aj to si si precital knizku Naucte se Javu za 21 dni. Ludia v tychto oboroch maju niekedy daleko vyssie platy, ako nejaky javista.

Keby nebol tvoj svet obmedzeny, tak by si netaral taketo nezmysly.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 07. 09. 2016, 15:06:27
Jako Javu nejak nemiluju (je ok, ale nic prevratneho pod sluncem), ale rekl bych, ze na spici rozhodne je. Podle rychlecho pogoogleni je nejlepe placena a na druhem miste s poctem volnych pozic.

IMO ty hw veci na tom nejsou nejak extra dobre platove - C++ vidim na 9. miste a C na 12.

Nevim, co je to za data, ale nejak tak jsem to cekal.

BTW: To, co jste napsal pusobi spis jak z nejakeho vyzkumu skoly. Realne (komercne) se tomu bude venovat velmi malo lidi ve srovnani s IS, weby, aplikacemi na mobil atd. V realu totiz nikdo zdraveho rozumu neimplementuje svuj vlasni sifromaci algoritmus a pokud neni jo koor odbornik s mnoha roky praxe, tak by se nemel poustet ani do implementace proverenych algoritmu. Kompresni alg. to same, vymyslet neco vlastniho vs. vzit vyzkouseny alg. implementovany v rock stable knihovne. Nebo si psat vlastni aritmetiku pro hw, ktery to neumi? To je opravdu tak caste? Bych cekal, ze to jednou udela vyrobce a pak to o nekolik radu vic lidi pouziva, nez kolik bylo potreba k napsani te knihovny.

http://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2016/
http://www.business2community.com/tech-gadgets/15-highest-paying-programming-languages-2016-01559832
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 15:09:53
+1
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 07. 09. 2016, 15:20:20
to, ze je dnes velky dopyt po Java/C# programatorch, to je sposobene tym, ze sa vo velkom robia IS, webove sracky, mobilne veci atd. lenze ludia, ktori pracuju v oblastiach, kde sa venuju veciam ako kodovanie, spracovanie signalov, vytvaraju nejake standardy, tak ti to maju velmi dobre zaplatene, to mi ver. A nesedia tam taki, ako je javaman. co robia PLC to je ina kapitola, tam moc penazi netecie. skor som narazal na spickovych odbornikov. ale v podstate tu nejde o to, kto zaraba kolko. Ide o to, ze ten troll javaman tu pise, ze najnarocnejsie projekty pouzivaju javu, len nepodlozil to faktami. takisto tu tvrdi, ze bitove operacie su prezitok a ti ktori to pouzivaju su pozadu. skor som narazal na javamanovu obmedzenost.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 07. 09. 2016, 15:22:40
+1
jasně, sčítání, nízkoúrovňová operace, to se taky dá naučit za odpoledne
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 07. 09. 2016, 15:24:12
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

A co když k té IP adrese ukládáš i user agenta? Potom je tvé šetření pamětí úplně zbytečné. Jako výhodu celočíselné reprezentace beru možnost selektování rozsahů.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: lopata 07. 09. 2016, 15:28:09
+1
&=~1
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 07. 09. 2016, 15:34:07
to, ze je dnes velky dopyt po Java/C# programatorch, to je sposobene tym, ze sa vo velkom robia IS, webove sracky, mobilne veci atd. lenze ludia, ktori pracuju v oblastiach, kde sa venuju veciam ako kodovanie, spracovanie signalov, vytvaraju nejake standardy, tak ti to maju velmi dobre zaplatene, to mi ver. A nesedia tam taki, ako je javaman. co robia PLC to je ina kapitola, tam moc penazi netecie. skor som narazal na spickovych odbornikov. ale v podstate tu nejde o to, kto zaraba kolko. Ide o to, ze ten troll javaman tu pise, ze najnarocnejsie projekty pouzivaju javu, len nepodlozil to faktami. takisto tu tvrdi, ze bitove operacie su prezitok a ti ktori to pouzivaju su pozadu. skor som narazal na javamanovu obmedzenost.

Někdo ty IS a weby dělat musí. Není třeba se rozčilovat. Běžný strojař také nevyvíjí raketové motory. Nemůžeš po něm chtít stejnou kvalifikaci.

Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 15:34:58
lenze ludia, ktori pracuju v oblastiach, kde sa venuju veciam ako kodovanie, spracovanie signalov, vytvaraju nejake standardy, tak ti to maju velmi dobre zaplatene, to mi ver.

To je kolik teda? Aby nebrali jak lopaty :D

A až si půjdeš vybrat/poslat peníze, tak si vzpomeň, kterým jazykem se s nimi manipuluje.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 15:36:08
to, ze je dnes velky dopyt po Java/C# programatorch, to je sposobene tym, ze sa vo velkom robia IS, webove sracky, mobilne veci atd. lenze ludia, ktori pracuju v oblastiach, kde sa venuju veciam ako kodovanie, spracovanie signalov, vytvaraju nejake standardy, tak ti to maju velmi dobre zaplatene, to mi ver. A nesedia tam taki, ako je javaman. co robia PLC to je ina kapitola, tam moc penazi netecie. skor som narazal na spickovych odbornikov. ale v podstate tu nejde o to, kto zaraba kolko. Ide o to, ze ten troll javaman tu pise, ze najnarocnejsie projekty pouzivaju javu, len nepodlozil to faktami. takisto tu tvrdi, ze bitove operacie su prezitok a ti ktori to pouzivaju su pozadu. skor som narazal na javamanovu obmedzenost.
Někdo ty IS a weby dělat musí. Není třeba se rozčilovat. Běžný strojař také nevyvíjí raketové motory. Nemůžeš po něm chtít stejnou kvalifikaci.

Je právě vtipný, že i když je Java na obrovské věci, tak strčí do kapsy i skriptovací jazyky jako PHP a Python u webů. Prostě nejlepší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 07. 09. 2016, 15:39:07
lenze ludia, ktori pracuju v oblastiach, kde sa venuju veciam ako kodovanie, spracovanie signalov, vytvaraju nejake standardy, tak ti to maju velmi dobre zaplatene, to mi ver.

To je kolik teda? Aby nebrali jak lopaty :D

A až si půjdeš vybrat/poslat peníze, tak si vzpomeň, kterým jazykem se s nimi manipuluje.
dneska asi nejčastěj v C nebo C++
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 07. 09. 2016, 15:42:29
Je právě vtipný, že i když je Java na obrovské věci, tak strčí do kapsy i skriptovací jazyky jako PHP a Python u webů. Prostě nejlepší.

Proto je práce s XSLT v Javě takový opruz?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 15:45:09

dneska asi nejčastěj v C nebo C++

Určitě :D

Je právě vtipný, že i když je Java na obrovské věci, tak strčí do kapsy i skriptovací jazyky jako PHP a Python u webů. Prostě nejlepší.

Proto je práce s XSLT v Javě takový opruz?

Proč opruz? Co jsi používal za FW?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 07. 09. 2016, 15:48:13
Chapu to spravne, ze zastavate nazor, ze na vyvoj front-endu v JavaScriptu v danem frameworku (popravde asi libovolnem popularnim) je treba umet pocitat na papire v binarni soustave? :o To jako pro pridad, ze kdyby firma presla na novy framework, tak tam najednou vsude bude potreba binarni aritmetika? :D Na strane problizece? ;D Hmm, asi zijeme v jinem svete... Takovyto typ otazky vidim na stejne urovni, jak ptat se uchazece na misto backendisty v Jave, k cemu je bind v JavaScriptu - zcela nesouvisejici a uplne na nic na danem miste.

No, ale ono pokud se i na uklizecku obcas pozaduje maturita (jako WTF), tak je mozne, ze vyse popsane je smutna realita a radeji zamestnaji "vim od vseho zaklady" nez nekoho, kdo opravdu umel s technlogiemi se kterymi denne ve firme pracuji.

Osobne nemam rad ty pohory, kde vas "testuji" jak reagujete. IMO to zamestnavateli stejne nic nerekne, protoze pokud tam bude sedet nejaky smelar, tak vi, ze ho testujete a nebude mit problem to na tom kratkem pohovoru zahrat, mit priprave vsechny mozne skopiciny. Mnohem lepsi me prijde ferovejsi pristup - opravdu se ptat na co, co bude potreba a pripadne na konci na zajimavosti z CV. Jak clovek bude resit problemy, vychazet s ostatnimi v tymu atp. se stejne zjisti az ve zkusebce.

PS: Na pracaku nejsem :).
Viděl jsem i inzerát na uklízečku - SŠ, angličtina na komunikativní úrovni a další jazyk (francouzština, němčina) výhodou.
Každopádně, znalost binární soustavy si myslím prostě patří k základům každé profese související s IT a i když to nepoužíváš každý den, je pravděpodobné, že na to dříve nebo později narazíš. Pořád nevíme, na co přesně pohovor byl, ale čím víc nad tím přemýšlím, tím víc si myslím, že daná otázka může pomoct vybrat lidi, kteří mají o obor opravdový zájem. Osobně bych asi nepovažoval tuto otázku za klíčovou, ale může to být bodík k dobru, pokud je více zájemců, kteří vypadají kvalitativně podobně.
Tak barvy se v hexa kódu uvádějí i v css, takže ano, i v tomto prostředí tyto znalosti využijete.

Nikdy jsem v praci vypocty v binarni ani hexadecimalni soustave nepouzil. Ano, uznavam, ve vzacnych pripadech se muze hodit tusit, jak je to vevnitr usporadane (napr. kdyz prohlizite zkompilovane css soubory v hloupem editoru), ale rozhodne to neni potreba - rucne to front-endak nepotrebuje pocitat, protoze budto to ma od grafika zadane, nebo pouziva nejaky css preprocesor, ktery ho odstinuje od "vypoctu" v hexa soustave. Je take podstatne lepsi mit zakladni barvu a z ni mit odvozene ostatni odstiny a pocitat to pomoci preprocessoru, nez to mastit rucne absolutne a pak pri zmene zakladni barvy se musi vse prepisovat. A tu zakladni barvu, pokud ji nema zadanou, si take nevycuca nevypocita z hlavy, proste si otevre nejake klikatko, namixuje par barev a vyzkousi, jak to vypada. Tohle fakt neni hw/low level, kde potrebujete vykuchat pomoci and jeden bitik a pak o kousek dal pri vypoctu kvuli rychlosti pouzit shift misto nasobeni, protoze potrebujete ty extra % vykonu.


No nevím, v LESSu můžete to použít k definování css šablony, která si na základě zadané základní barvy vypočítá všechny ostatní barvy podle zadaného barevného schématu. A tam to využijete. Jenže vy to děláte tak, že to kódujete pořád znovu a znovu to samé. A stačilo by změnit jen jedno číslo a stejnou css šablonu můžete použít pro všechny projekty co děláte ...

Z filozofického hlediska je zajímavé, že programovací jazyky, jak se rozšiřuje populace lidí co je používají, se stále více používají jako přirozená řeč, místo použití "podprogramu" se použije "makro" - vložení obrazu ustálené fráze.

Ale s takovou brzy nebudete moci konkurovat umělé inteligenci.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 07. 09. 2016, 15:49:21

dneska asi nejčastěj v C nebo C++

Určitě :D

Je právě vtipný, že i když je Java na obrovské věci, tak strčí do kapsy i skriptovací jazyky jako PHP a Python u webů. Prostě nejlepší.

Proto je práce s XSLT v Javě takový opruz?

Proč opruz? Co jsi používal za FW?
ty asi zijes v realite, ze to ovladanie bankomatov je naprogramovane v jave, ze ano? :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: atarist 07. 09. 2016, 15:49:51
lenze ludia, ktori pracuju v oblastiach, kde sa venuju veciam ako kodovanie, spracovanie signalov, vytvaraju nejake standardy, tak ti to maju velmi dobre zaplatene, to mi ver.

To je kolik teda? Aby nebrali jak lopaty :D

A až si půjdeš vybrat/poslat peníze, tak si vzpomeň, kterým jazykem se s nimi manipuluje.

Z jake to chces vedet strany?

Pokud od backendu, tak:
Cobol nebo dneska spis RPG
Potom vsechny ty protokoly mezi bankou a ATM - to je sifrovani, auth atd. (u banky HW karta od IBM, u ATM neco v Cecku)
GUI v ATM - to popravde netusim, klidne i Java, ale ty tri obrazovky naprgas v cemkoli (zadani pinu, vyber operace, dotaz na tisk potvrzeni)

Pokud myslis platby pres i-banking
Na backendu stale Cobol/RPG
Velmi pravdepodobne Java (+samozrejme JS) na rendering GUI + operace nesouvisejici primo s clearingem
Cela ostatni infrastruktura (prohlizec, OS, HW pro networking) je smeska vseho mozneho, typicky C, C++, ObjC
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 07. 09. 2016, 15:50:40
Je právě vtipný, že i když je Java na obrovské věci, tak strčí do kapsy i skriptovací jazyky jako PHP a Python u webů. Prostě nejlepší.

Proto je práce s XSLT v Javě takový opruz?

Proč opruz? Co jsi používal za FW?

Saxon.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 07. 09. 2016, 15:52:25
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

A co když k té IP adrese ukládáš i user agenta? Potom je tvé šetření pamětí úplně zbytečné. Jako výhodu celočíselné reprezentace beru možnost selektování rozsahů.
Jasně, taky k té IP adrese můžu ukládat kilometrovej blob nějaké binární komunikace a procentuálně jsem ušetřil prd, ale ono je to trochu tady, trochu támhle... Jestli je jediným důvodem, proč ukládat adresu ve stringu to, že se odmítám naučit binární posun doleva, doprava, and a or, tak mi to přijde celkem ubohý. V tomto případě konkrétně to nemá absolutně žádnou obhajitelnou výhodu a spoustu nevýhod. Pokud bych z nějakého zvláštního důvodu opravdu potřeboval vidět adresy v databázi jako string, udělám si na to pohled a je to.
Pokud už bych IP adresy chtěl uchovávat v množství menším, než malém, pravděpodobně to bude kvůli nějakým statistikám a například vytáhnout z toho geografické údaje bude mnohonásobně efektivnější a jednodušší, než to tahat ze stringů.

Pokud se někdo bavil o IPv6, situace je obdobná, jen to uložím jako binary(16), případně jako dvě 64 bitové hodnoty.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 07. 09. 2016, 16:00:41
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

A co když k té IP adrese ukládáš i user agenta? Potom je tvé šetření pamětí úplně zbytečné. Jako výhodu celočíselné reprezentace beru možnost selektování rozsahů.
Jasně, taky k té IP adrese můžu ukládat kilometrovej blob nějaké binární komunikace a procentuálně jsem ušetřil prd, ale ono je to trochu tady, trochu támhle... Jestli je jediným důvodem, proč ukládat adresu ve stringu to, že se odmítám naučit binární posun doleva, doprava, and a or, tak mi to přijde celkem ubohý. V tomto případě konkrétně to nemá absolutně žádnou obhajitelnou výhodu a spoustu nevýhod. Pokud bych z nějakého zvláštního důvodu opravdu potřeboval vidět adresy v databázi jako string, udělám si na to pohled a je to.
Pokud už bych IP adresy chtěl uchovávat v množství menším, než malém, pravděpodobně to bude kvůli nějakým statistikám a například vytáhnout z toho geografické údaje bude mnohonásobně efektivnější a jednodušší, než to tahat ze stringů.

Pokud se někdo bavil o IPv6, situace je obdobná, jen to uložím jako binary(16), případně jako dvě 64 bitové hodnoty.

Proč bych měl používat bitový posun? Na převody mohu použít hotové funkce. Ukládáš ip adresy jako číslo i v lozích?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 07. 09. 2016, 16:24:10
A co když k té IP adrese ukládáš i user agenta? Potom je tvé šetření pamětí úplně zbytečné. Jako výhodu celočíselné reprezentace beru možnost selektování rozsahů.

Nezapomeň na 1NF.

Pokud bych z nějakého zvláštního důvodu opravdu potřeboval vidět adresy v databázi jako string, udělám si na to pohled a je to.

Lepší databáze na to mají datový typ. Taková IP je uložena binárně, ale prezentuje se textově.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 07. 09. 2016, 16:27:48
Nezapomeň na 1NF.

Na to kašlu. Prostě do jednoho sloupce uložím adresy tak jak je dostávám a do druhého převedené.
Název: Re:bitové operace
Přispěvatel: gl 07. 09. 2016, 17:43:40
Pro práci s IP a RGB se používají knihovny, často implementované v C.

Tak povídej přeháněj jak třeba v Javě převedeš matici intů na matici RGB a naopak. Pro jednoduchost klidně lineární color space.

Pokud myslíš separovat jednotlivé channely tak to jde např:

Kód: [Vybrat]
from PIL import Image
img = Image.open('image.png')
r, g, b, a = img.split()
r.show() # zobrazi pouze cerveny channel
img_new = Image.merge("RGB", [r, g, b])
img_new.show() # zobrazi znovuslozeny puvodni obrazek

Obecně provádět pythonovský kód pro každý pixel není dobrý nápad.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 07. 09. 2016, 19:04:18
A až si půjdeš vybrat/poslat peníze, tak si vzpomeň, kterým jazykem se s nimi manipuluje.
Vzpomněl jsem si na COBOL ;D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 07. 09. 2016, 19:08:19
U starších bank tam ještě malé části budou, ale vše podstatné už bude v tom nejlepším ;)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 07. 09. 2016, 19:19:40

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.

Tak jistě, to má skoro každý po několika letech. Právě proto nechápu, co tak hloupou otázkou získáš? Kromě opovržení uchazeče.
Po několika letech ve zvláštní škole?

Podle toho co jsi napsal bych tě odhadl tak mezi šestnácti a osmnácti roky. Jde o mentální věk, nikoliv fyzický, ten bych podle jiných tvých výroků hádal tak do pětadvaceti při IQ 92-95. Drž se lopaty, hochu, protože ty nemáš ani na BASIC!
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: atarist 07. 09. 2016, 23:30:33
U starších bank tam ještě malé části budou, ale vše podstatné už bude v tom nejlepším ;)

Nejsou "starsi banky" a "nove banky", vsechny banky provadeji clearing s CBN, dalsimi bankami, operace v jinych menach apod. Tyto veci jsou skutecne v Cobolu a RPG, neni moc duvodu to menit, protoze zelezo je pronajate, plne podporovane, HW akcelerace pro vsechno podstatne dela IBM (jak jsem zminovat HW karty pro kryptovani napriklad) a vlastne do toho radeji nikdo moc nehrabe - uz vubec ne mladi nagelovani frajirci, to mi ver (ti maji v bankach uuuuplne jine role)
Název: Re:bitové operace
Přispěvatel: atarist 07. 09. 2016, 23:34:43
Pro práci s IP a RGB se používají knihovny, často implementované v C.

Tak povídej přeháněj jak třeba v Javě převedeš matici intů na matici RGB a naopak. Pro jednoduchost klidně lineární color space.

Pokud myslíš separovat jednotlivé channely tak to jde např:

Kód: [Vybrat]
from PIL import Image
img = Image.open('image.png')
r, g, b, a = img.split()
r.show() # zobrazi pouze cerveny channel
img_new = Image.merge("RGB", [r, g, b])
img_new.show() # zobrazi znovuslozeny puvodni obrazek

Obecně provádět pythonovský kód pro každý pixel není dobrý nápad.

Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.
Název: Re:bitové operace
Přispěvatel: gl 08. 09. 2016, 00:35:58
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.
Název: Re:bitové operace
Přispěvatel: balki 08. 09. 2016, 01:29:44
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)
Název: Re:bitové operace
Přispěvatel: Ivan Nový 08. 09. 2016, 04:48:08
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)
V javě máte i operaci sčítání, přesto sčítat asi umíte, že.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: PetrM 08. 09. 2016, 07:24:07
Když vezmu programátora (ne webovýho grafika), tak by měl tušit, jak ten stroj funguje (že je program v paměti, že do RAMky se leze skrz nějakou adresu, jaký je rozdíl mezi bytem a wordem).  A reprezentace čísla v různých soustavách a operace s nima jsou prostě základ.

Tak třeba já bych měl docela problém přijmout účetní, která by nezvládna u pohovoru ručně spočítat na papír:
A stojí 100Kč + DPH 22%, B stojí 2200 Kč se slevou 10% + DPH 22%,  C stojí 500 Kč + DPH 5%, kolik zaplatíš celkem?

(A kdybych musel zaměstnat motyku Javamana, tak ho posadím k 8051 a dám mu do toho v Javě naimplementovat web server- Třeba by zjistil, že v Javě opravdu nejde vše).
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 08:04:15
Když vezmu programátora (ne webovýho grafika), tak by měl tušit, jak ten stroj funguje (že je program v paměti, že do RAMky se leze skrz nějakou adresu, jaký je rozdíl mezi bytem a wordem).  A reprezentace čísla v různých soustavách a operace s nima jsou prostě základ.

Protoze front-end/back-end developer pracujici v JavaScriptu neni grafik, tak si stojim za svym - je mu to uplne na nic. Muze tusit, jak to funguje, ale v praci mu to nepomuze. K RAM ani adresam/ukazatelum se nedostane, to stejne byte a word. Ruzne soustavy pouzije tak maximalne kdyz se mu neco bude prevadet na cislo z retezce s jinym radixem nez 10 (omsely chytak map + parseInt). A k tomu je nepotrebuje umet ani prevadet, proste vi, ze existuji a ze tady nesedi reprezentace v retezci s parsovanym cislem.

Tak třeba já bych měl docela problém přijmout účetní, která by nezvládna u pohovoru ručně spočítat na papír:
A stojí 100Kč + DPH 22%, B stojí 2200 Kč se slevou 10% + DPH 22%,  C stojí 500 Kč + DPH 5%, kolik zaplatíš celkem?

Jenomze tohle ona i v praci pouzit muze. Navic tohle je snad spis znalost ze zakladni skoly, takze ano, taky bych problem nekoho prijmout, kdo na toto koukal jako puk. Ale pokud se nekdo sekne v binarnich vypoctech na papir, ktere nikdy v praxi nepotreboval a ani na danem miste potrebovat nebude, tak v tom nevidim zadny problem - zadne minusove body, maximalne tak na srovnani jinak "stejnych" kandidatu.

(A kdybych musel zaměstnat motyku Javamana, tak ho posadím k 8051 a dám mu do toho v Javě naimplementovat web server- Třeba by zjistil, že v Javě opravdu nejde vše).

K cemu tento dovetek jako slouzil? K tomu, abys predvedl, ze jsi selhal pri volbe vhodne technologie nebo hardware? HW je ve vetsine pripadech mnohem levnejsi nez cas programatora, proto se vetsinou take voli lepsi HW a rychlejsi vyvoj, ne naopak.

BTW placat umim taky: A ja bych te posadil ke kulickovemu pocitadlu a zadal bych ti, at naimplementujes simulaci procesoru, at zjistis, ze znalost vnitrnosti neni vsespasna.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 08:13:35
Když vezmu programátora (ne webovýho grafika), tak by měl tušit, jak ten stroj funguje (že je program v paměti, že do RAMky se leze skrz nějakou adresu, jaký je rozdíl mezi bytem a wordem).  A reprezentace čísla v různých soustavách a operace s nima jsou prostě základ.

Protoze front-end/back-end developer pracujici v JavaScriptu neni grafik, tak si stojim za svym - je mu to uplne na nic. Muze tusit, jak to funguje, ale v praci mu to nepomuze. K RAM ani adresam/ukazatelum se nedostane, to stejne byte a word. Ruzne soustavy pouzije tak maximalne kdyz se mu neco bude prevadet na cislo z retezce s jinym radixem nez 10 (omsely chytak map + parseInt). A k tomu je nepotrebuje umet ani prevadet, proste vi, ze existuji a ze tady nesedi reprezentace v retezci s parsovanym cislem.
nedávno se tu někdo ptal, proč browsery žerou tolik paměti, tohle je tady asi odpověď :D base64 taky potkat nemůže? a jaké další operátory javascriptu teda znát nemusí?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 08:35:43
nedávno se tu někdo ptal, proč browsery žerou tolik paměti, tohle je tady asi odpověď :D base64 taky potkat nemůže? a jaké další operátory javascriptu teda znát nemusí?

Ale to je snad vec browseru (tj. C++, ne?), to JavaScript vyvojar nezachrani, kdyz pro byte, int, float a double ma na "vyber" z typu number (https://developer.mozilla.org/en-US/docs/Glossary/Number).

A opravdu ne, kdyz delate front-end, tak bitove operace nepouzivate. Hexa cislo vidite tak maximalne pro vyjadreni barev a tam zase zadne bitove operace nepouzivate, jedine co s nim potrebujete delat je umet ho zkopirovat z jednoho mista na druhe. Zadne operace nad nim ani jakekoliv interpretace nepotrebujete.

Binarni oprace v JS si dovedu predstavit tak u hernich enginu nebo velmi optimalizovanych knihoven, kterymi se ale zabyva mizive cislo vyvojaru pracujicich v JS. To je stejne jako v Jave/C#/Pythonu/Ruby, proste konzumujete potunene knihovny na potunenem VM/interpreteru.

Jak pro pouziti base64 potrebujete umet plynule pocitat v binarni nebo hexa soustave? Po pravde pro pouziti base64 vam staci znat, ze base64 existuje, co resi a jake metody zavolat pro konverzi. Priznam se, ze ani v prubehu studia na vejsce jsem nikdy neprevadel base64 z hlavy nebo na papire a to jsme na skole delali rucne hodne divne a vetsinou zbytecne veci (napr. programovnani v C na papir - body dolu za kazdou drobnost, fuj).

PS: Cena pameti je zanedbatelna, mam otevrenych ~20 tabu a nejsem ani na 1GB. 8GB pameti je za doslova tisicovku a muzete na tom provozovat desitky, asi i stovku, tabu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: lopata 08. 09. 2016, 08:46:59
A opravdu ne, kdyz delate front-end, tak bitove operace nepouzivate.

Frontend vývojář nikdy nepotřebuje celočíselně dělit dvěma? Jak jinak by to měl v JavaScriptu udělat, než takhle?
https://github.com/d3/d3-array/blob/master/src/bisector.js#L10
Nebo chceš tvrdit, že algoritmus hledání půlením intervalu je pro frontned vývojáře příliš pokročilý a nemusí ho znát ani nikdy implementovat? Tohle celou dobu tvrdíš?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 08:54:58
Ano, to tvrdim. A vzdyt jste nalinkoval presne to, co jsem psal - potunenou knihovnu. Normalne se nad VM takoveto mikrooptimalizace pri normalnim vyvoji (cti ne potunene knihovny, kde maji perf testy na kazdy radek) casto radeji ani nedelaji, protoze snizuji citelnost kodu, tj. udrzovatelnost, a navic nemusi vzdy ani zvysovat vykon. Nejde o to, jestli je ten algoritmus pokrocily nebo sebevic chytry, ale o to, ze dobry vyvojar nebude znovu implementovat kolo - radeji pouzije jiz hotove poradne kulate kolo, nez aby se placal se svym hranatym desetinasobne dele, nez by zabralo pouziti hotoveho, a ve vysledku tak jen marnil cas.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 09:00:57
A abych rekl pravdu, tak zrovna filtrovani/prohledavani dat se dela casteji na BE. Na projektech, na kterych jsem delal, tabulky vetsinou pres 100 polozek nesly, takze i pokud by se vyhledavalo hloupe po jednom, tak je to stejne zanedbatelne, protoze tech 100 porovnani je nic ve srovnani s parsovanim napr. obrazku nebo odpovedi od BE. Navic tedy malokdy v typickem front-endu, tj. nejakem IS, mate data serazena, takze ne, nemyslim si, ze zrovna hledani pulenim intervalu se moc pouziva na FE.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: lopata 08. 09. 2016, 09:04:14
A vlastně proč ne, k čemu by frontend vývojář někdy potřeboval celočíselné dělení dvěma, to je na frontend už příliš velký hi-tech. Myslím, že nebude potřebovat ani odčítání, protože 99% výpočtů jsou stejně jenom nudné průměry, kde odčítání vůbec nevyužije. Odčítání také snižuje udržovatelnost, protože ostatní kolegové by to nemuseli pochopit a oproti sčítání ani nezvyšuje výkon. Objektivně vzato odčítání frontend vývojář taky nepotřebuje.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 09:15:14
Kód: [Vybrat]
Math.floor(input/2);
^ Je proste citelnejsi. A pokud vim, tak toto se casto razi i jinde, nez v JS, ze se nepouzivaji shifty protoze jsou spatne citelne a davaji prednost deleni/nasobeni. Myslim, ze prave pro Javu jsem takova doporuceni cetl. A tedy v Jave to snad urcite muze optimalizovat prekladac (detekovat mocninu dvou a celociselny typ neni problem), takze tam to ani nezvysuje vykon, jen snizuje citelnost. V JS nevim, ale je mozne, ze lidi radeji davaji prednost udrzovatelnemu kodu, nez lustit veci typu:

Kód: [Vybrat]
((count << 2) + 3) >> 1
Priznavam, ze mozna pracuji na prilis podobnych projektech (IS), takze vzorek neni idealni, ale treba to deleni - verte neverte - pouzivam minimalne.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 09:20:41
Ano, to tvrdim. A vzdyt jste nalinkoval presne to, co jsem psal - potunenou knihovnu. Normalne se nad VM takoveto mikrooptimalizace pri normalnim vyvoji (cti ne potunene knihovny, kde maji perf testy na kazdy radek) casto radeji ani nedelaji, protoze snizuji citelnost kodu, tj. udrzovatelnost, a navic nemusi vzdy ani zvysovat vykon. Nejde o to, jestli je ten algoritmus pokrocily nebo sebevic chytry, ale o to, ze dobry vyvojar nebude znovu implementovat kolo - radeji pouzije jiz hotove poradne kulate kolo, nez aby se placal se svym hranatym desetinasobne dele, nez by zabralo pouziti hotoveho, a ve vysledku tak jen marnil cas.
Ano, běžný programátor je dnes obyčejný lempl. Mikrooptimalizace v rámci jednoho řádku tu vždy byly, většinou neušetřili nic závratného (občas ve smyčce ano), ale na druhou stranu, těch několik málo jednoduchých operací znal každý tak dobře, že to čitelnost nijak nesnižovalo. Když se v asm objevilo xor ax,ax, každý věděl, že je to to samé, jako mov ax,0, jenom o takt rychlejší, to samé instrukce shr a shl, prostě to byla samozřejmost. A stejné postupy se dají použít - a kupodivu používají - dodnes a to i ve vyšších jazycích. Chápu, že u prototypování je to zbytečné řešit, můžu si dovolit používat monstrózní knihovny kvůli jedné pětiřádkové fičuře, ale očekával bych, že každej obyčejnej kodér, kterej nic nevymýšlí a v zásadě jen přepisuje do lepší formy hotovou aplikaci, tak by drobné optimalizační procesy měl znát, měl by je používat a měl by mít dost soudnosti (pokud ji neměl bastlíř před ním) na to, aby vyházel zbytečné závislosti, pokud je to otázkou 5ti minut.
Název: Re:bitové operace
Přispěvatel: tisnik 08. 09. 2016, 09:21:36
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)

Neda, resp. da, ale za to bych Te v teamu zabil. Vsimni si, ze java.awt.Color (mimochodem existuje od 1.0) je immutable, tj. jedina moznost prevodu je udelat new Color(r,g,b) a potom ty zminovane metody getGreen, getRed , getBlue, getAlpha. Fakt si pro prevod bitmapy o velikosti rekneme 1024x1024 pixelu (zadne HD) nasekas a hned v GC nechaz zrusit milion objektu?

On je totiz duvod pro to, ze v jave existuji i nizkourovnove API pro bitmapy (Raster, WritableRaster etc.), ale tam se jaksi pocita s tim, ze programator zna >>, <<, & a |
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 09:28:42
Kód: [Vybrat]
((count << 2) + 3) >> 1
Prostě se na to podívám a vidím to tam, aniž bych o tom musel vůbec přemýšlet.
Název: Re:bitové operace
Přispěvatel: balki 08. 09. 2016, 10:43:35
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)

Neda, resp. da, ale za to bych Te v teamu zabil. Vsimni si, ze java.awt.Color (mimochodem existuje od 1.0) je immutable, tj. jedina moznost prevodu je udelat new Color(r,g,b) a potom ty zminovane metody getGreen, getRed , getBlue, getAlpha. Fakt si pro prevod bitmapy o velikosti rekneme 1024x1024 pixelu (zadne HD) nasekas a hned v GC nechaz zrusit milion objektu?

On je totiz duvod pro to, ze v jave existuji i nizkourovnove API pro bitmapy (Raster, WritableRaster etc.), ale tam se jaksi pocita s tim, ze programator zna >>, <<, & a |

Teoreticky staci na jednu farbu jeden objekt :) Ale uz nebudem drazdit  hada  bosou nohou. ( Co ked pojdem pracovat do RH )

Image processing som este nerobil (respektive raz navysokej),  ale zo dna na den som sa stal embedakom (nie micro edition ale J9 od ibm), tam som musel riesit veci, ze mi do jedneho bajtu narvali tri hodnoty a bez bitovych operacii by som sa pokakal + tam bolo treba velmi setrit pamatou.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 08. 09. 2016, 11:10:34
Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 11:30:35
Tusim, ze tak, ze nekdo napsal, ze vsichni vyvojari potrebuji umet pocitat v binarni aritmetice. JS FE dev byl protiargument.

Stejne tak ale podle me bude platit i o webari (BE nebo full-stack) v Pythonu, Ruby, JavaScriptu, Jave, C#. To, ze to jazyk podporuje, neznamena, ze se to ma pouzivat, nebo ze to dev musi umet. Na urcitych pozicich se neocekava, ze budete kouzlit s jazykem za kazdou cenu usporeneho znaku nebo 0.1% vykonu - napr. mit nekolikrat zanoreny operator ?: v JS neni moc dobra praktika, prestoze to muze usetrit hodne mista oproti pouzivani if. Stejne tak pouzivani bin. posunu >>, << a bezznamenkovych posunu >>>, <<< na FE neni stastne.

Ja chapu, ze v embeded je to bezna vec. Tam ale opravdu potrebujete sahat na bity, protoze jste tak blizko HW. Tam se dokonce i ty mikrooptimalizace muzou vyplatit, protoze ten HW muze byt velmi slaby a/nebo mit velmi malo mista v pameti. Koneckoncu C/C++ je mnohem blize ASM a strojovemu kodu, nez JavaScript nebo Java a neprovadi se zadny JIT, mate tedy mnohem vetsi jistotu, ze vase optimalizace neni zbytecna a VM ji neudela lepe, protoze za behu vyzkousel a zmeril nekolik mutaci. Cim vys v jazycich a frameworcich jdete, tim vyssi vykon se od HW ocekava a tim vetsi abstrakce by jste meli pouzivat. A na ty opravdu vykonostne kriticke operace mate potunenou knihovnu, engine nebo VM.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 08. 09. 2016, 11:35:13
Kód: [Vybrat]
Math.floor(input/2);

Přesně toto je právě odstrašující příklad. Kdyby mi toto někdo napsal u pohovoru, rozhodně bych se ho na to začal vyptávat. A velmi pochybuji, že by si to dokázal obhájit.

Přesně toto je ten fachidiotismus, o němž jsem tu psal. Pro mě by to byl jasný důkaz, že tomu člověku to prostě nemyslí, že u své práce nepoužívá hlavu a že v teamu udělá víc škody než užitku.

Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?

To je jeden z druhů argumentačního klamu. Už jsem se s ním vícekrát setkal při vedení pohovoru. Řekneš, že k něčemu obecnému je třeba X. A on si za něco obecného dosadí něco konkrétního, co se mu hodí, a tím se snaží dokázat, že mé původní tvrzení neplatí. Někteří, jako třeba v této diskusi, si tam dosadí i něco úplně jiného, co s tím něčím obecným vlastně vůbec nesouvisí.
V praxi to u nás funguje tak, že zadám úkol, a uchazeč místo jeho řešení, nebo aspoň nějakého pokusu o něj, začne rozvíjet teorie, k čemu že by to vlastně mohlo být dobré, že se to k ničemu nemůže hodit, "a co když...", "a co kdyby někdo chtěl...", "...a pak by se to dalo dělat tak a tak a na to už jsou knihovny a tak to vlastně nikdo ani nepotřebuje nikdy dělat..." Dříve jsem takovým uchazečům poděkoval za zájem o pozici a řekl jim, že práce, která by se po nich požadovala, by asi nebyla dle jejich gusta a že jistě snadno najdou někde jinde místo, které jim bude vyhovovat daleko více. Když jsem se jednou v reakci na toto uchazeče dotázal, zda někdy uvažoval o jiné profesi, nejlépe nějaké manuální, ještě si na mne pak stěžoval. Dnes to tedy řeším demonstrativním roztrháním jejich vytištěného životopisu a pozdravem "s bohem". Bohužel takto končívám pohovor čím dál častěji.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 11:39:55
ROFL. Takový lopaty potkávám na pohovorech pořád častěji. Buď rád, že máš vůbec práci, když jsi tak mimo :D Tebe tak postavit maximálně k pokladně s tím přístupem.

Ale to je tak, když dostane zodpovědnost lopata...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 08. 09. 2016, 11:46:08
ROFL. Takový lopaty potkávám na pohovorech pořád častěji. Buď rád, že máš vůbec práci, když jsi tak mimo :D Tebe tak postavit maximálně k pokladně s tím přístupem.

Ale to je tak, když dostane zodpovědnost lopata...

Potrefená husa zakejhala.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 11:48:54
ROFL. Takový lopaty potkávám na pohovorech pořád častěji. Buď rád, že máš vůbec práci, když jsi tak mimo :D Tebe tak postavit maximálně k pokladně s tím přístupem.

Ale to je tak, když dostane zodpovědnost lopata...

Potrefená husa zakejhala.

Tys to asi myslel jako srandu, já fakt podobné lopaty normálně potkávám a nikdy bych před tím nevěřil, že někdo podobně hloupý může dělat v IT a ještě nábor. Dneska je to tak 90 % lidí tam. Protože tam sou ty peníze!
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 11:51:11
Kód: [Vybrat]
Math.floor(input/2);

Přesně toto je právě odstrašující příklad. Kdyby mi toto někdo napsal u pohovoru, rozhodně bych se ho na to začal vyptávat. A velmi pochybuji, že by si to dokázal obhájit.

Přesně toto je ten fachidiotismus, o němž jsem tu psal. Pro mě by to byl jasný důkaz, že tomu člověku to prostě nemyslí, že u své práce nepoužívá hlavu a že v teamu udělá víc škody než užitku.

Na tom, co si u vas obhaji moc nezalezi. Jiste, chapu, pokud se zabyvate psanim JavaScriptu, kde je vykon tim nejvyssim pozadavkem i za cenu citelnosti a udrzovatelnosti. Coz si IMO trochu odporuje, to uz rovnou muzete psat C/C++, ale mozna se tim nekdo zabyva.

Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?

To je jeden z druhů argumentačního klamu. Už jsem se s ním vícekrát setkal při vedení pohovoru. Řekneš, že k něčemu obecnému je třeba X. A on si za něco obecného dosadí něco konkrétního, co se mu hodí, a tím se snaží dokázat, že mé původní tvrzení neplatí.

Aha, takze logika vam nic nerika? Kdyz nekdo tvrdi, ze "kazdy vyvojar potrebuje umet pocitat v bin. aritmetice" (ne, nebyl to ten prvni prispevek), tak staci najit jeden protipriklad a puvodni tvrzeni je vyvracene (i FE dev je vyvojar ;)). Jeden protipriklad (navic zadne mizive % v celkovem poctu vyvojaru) jsem uvedl -> vyvratil jsem puvodni tvrzeni.

Dříve jsem takovým uchazečům poděkoval za zájem o pozici a řekl jim, že práce, která by se po nich požadovala, by asi nebyla dle jejich gusta a že jistě snadno najdou někde jinde místo, které jim bude vyhovovat daleko více. Když jsem se jednou v reakci na toto uchazeče dotázal, zda někdy uvažoval o jiné profesi, nejlépe nějaké manuální, ještě si na mne pak stěžoval. Dnes to tedy řeším demonstrativním roztrháním jejich vytištěného životopisu a pozdravem "s bohem". Bohužel takto končívám pohovor čím dál častěji.

 ??? To se jako jeste vychloubate svou drzosti? V takove firme tedy musi byt radost pracovat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 11:52:56
ROFL. Takový lopaty potkávám na pohovorech pořád častěji. Buď rád, že máš vůbec práci, když jsi tak mimo :D Tebe tak postavit maximálně k pokladně s tím přístupem.

Ale to je tak, když dostane zodpovědnost lopata...
Ne, to je tak, když se na odborné pozice hlásí motyky jako jsi ty. Vždy, když se narazí na něco konkrétního, tak je to podle tebe pro tebe moc jednoduchý a proto to neumíš - vyřeší to lopaty. Vlastně jediná pozice, která tvoje bludy splňuje je, že balíš média s hotovými aplikacemi do krabic někde na lince - lopaty už to naprogramovaly a ty to "doděláš". A tvých slavných 100+ je možná tak hodinová hrubá mzda v korunách, možná spíš za zkrácenou směnu někde v chráněné dílně (a po odečtění tebou způsobených škod to bude sotva stačit na zmrzlinu).

Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 11:54:43
??? To se jako jeste vychloubate svou drzosti? V takove firme tedy musi byt radost pracovat.

Spíše hloupostí. To je taky dnes moderní.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: jurdo 08. 09. 2016, 11:55:42
ROFL. Takový lopaty potkávám na pohovorech pořád častěji. Buď rád, že máš vůbec práci, když jsi tak mimo :D Tebe tak postavit maximálně k pokladně s tím přístupem.

Ale to je tak, když dostane zodpovědnost lopata...

vy sa v tom blazinci hrate na personalistov a potencionalnych zamestnancov?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 12:03:42
??? To se jako jeste vychloubate svou drzosti? V takove firme tedy musi byt radost pracovat.
Je to smutné, ale souhlasím s jeho přístupem. Byl jsem u několika pohovorů, jen z pozice budoucího možná kolegy, ale většinou bych za drzost považoval spíš to, že tam vůbec někteří lidi přijdou a mrhají časem několika dalších lidí. Pokud ti třeba na pohovor na linux admina přijde člověk, kterej klidně prohlásí, že neví, co je shell, ale že ho nepotřebuje, protože síť na serveru může naklikat v "takovým tom okýnku", tak je to na facku. Několikrát jsem podobným lidem podstrčil svůj NB se shozenýma Xkama, většina z nich se toho bála dotknout a jeden asi 3x vztekle zkoušel "ipconfig", než pochopil, že tudy cesta nevede.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 08. 09. 2016, 12:05:59
Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?

To je jeden z druhů argumentačního klamu. Už jsem se s ním vícekrát setkal při vedení pohovoru. Řekneš, že k něčemu obecnému je třeba X. A on si za něco obecného dosadí něco konkrétního, co se mu hodí, a tím se snaží dokázat, že mé původní tvrzení neplatí.

Aha, takze logika vam nic nerika? Kdyz nekdo tvrdi, ze "kazdy vyvojar potrebuje umet pocitat v bin. aritmetice" (ne, nebyl to ten prvni prispevek), tak staci najit jeden protipriklad a puvodni tvrzeni je vyvracene (i FE dev je vyvojar ;)). Jeden protipriklad (navic zadne mizive % v celkovem poctu vyvojaru) jsem uvedl -> vyvratil jsem puvodni tvrzeni.


Sice to nebyla reakce na mne, ale jakým způsobem jste všichni dospěli k názoru, že VŠECHNY otázky při pohovoru musí být jednoznačně zodpovězeny a že tak zaměstnavatel MUSÍ dávat jen a pouze otázky, na které MUSÍ kandidát odpověď znát???

Vždyť to je přeci nesmysl. Takhle život nefunguje.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 12:09:13
Několikrát jsem podobným lidem podstrčil svůj NB se shozenýma Xkama, většina z nich se toho bála dotknout a jeden asi 3x vztekle zkoušel "ipconfig", než pochopil, že tudy cesta nevede.

Tomu říkám dobrý výběr kandidátů :D Tak to nezapomeň hodit na ostatní, že neumíte pozvat někoho slušného.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 12:23:17
??? To se jako jeste vychloubate svou drzosti? V takove firme tedy musi byt radost pracovat.
Je to smutné, ale souhlasím s jeho přístupem. Byl jsem u několika pohovorů, jen z pozice budoucího možná kolegy, ale většinou bych za drzost považoval spíš to, že tam vůbec někteří lidi přijdou a mrhají časem několika dalších lidí. Pokud ti třeba na pohovor na linux admina přijde člověk, kterej klidně prohlásí, že neví, co je shell, ale že ho nepotřebuje, protože síť na serveru může naklikat v "takovým tom okýnku", tak je to na facku. Několikrát jsem podobným lidem podstrčil svůj NB se shozenýma Xkama, většina z nich se toho bála dotknout a jeden asi 3x vztekle zkoušel "ipconfig", než pochopil, že tudy cesta nevede.

Prominte, ale je rozdil mezi tim, ze uchazec o misto front-end vyvojare v JavaScriptu nezna/nepouziva << a tim, ze admin nevi, co je shell. To by bylo blize neco ve smyslu, ze FE dev nevi, co je objekt v JavaScriptu, pak bych tu drzost asi pochopil. On ten FE dev totiz umi vydelit dvema, jinym zpusobem, vice citelnym a okamzite patrnym (do velkych tymu vhodnejsim), ale potencionalne pomalejsim (coz nas ale vetsinou na FE tolik neboli, tam je mnohem horsi problem v poctu nacitanych souboru, delay od BE atp.). Ale pokud to neni nejaka operace provadena v radech tisicu a vys, tak nema moc cenu resit takoveto mikrooptimalizace (opet, neni to typicke pro vyvoj FE, tam se bezne obrazky nebo velke tabulky nefiltruji nebo neco podobneho).
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 12:24:07
Tomu říkám dobrý výběr kandidátů :D Tak to nezapomeň hodit na ostatní, že neumíte pozvat někoho slušného.
No jo, když on podle životopisu každej šmudla všechno umí a pak skutek utek. Ty jsi taky nejlepší z nejlepších a přitom jsi nikdy nedokázal odpovědět na jedinou konkrétní otázku :D Tebe by normální zaměstnavatel přijal maximálně na pozici "junior manual earthmover"  :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 12:41:23
Prominte, ale je rozdil mezi tim, ze uchazec o misto front-end vyvojare v JavaScriptu nezna/nepouziva << a tim, ze admin nevi, co je shell. To by bylo blize neco ve smyslu, ze FE dev nevi, co je objekt v JavaScriptu, pak bych tu drzost asi pochopil. On ten FE dev totiz umi vydelit dvema, jinym zpusobem, vice citelnym a okamzite patrnym (do velkych tymu vhodnejsim), ale potencionalne pomalejsim (coz nas ale vetsinou na FE tolik neboli, tam je mnohem horsi problem v poctu nacitanych souboru, delay od BE atp.). Ale pokud to neni nejaka operace provadena v radech tisicu a vys, tak nema moc cenu resit takoveto mikrooptimalizace (opet, neni to typicke pro vyvoj FE, tam se bezne obrazky nebo velke tabulky nefiltruji nebo neco podobneho).
Ale já netvrdím, že to někdo musí používat, jenom považuju binární operace za jeden z naprostých základů pro jakýkoliv podobor IT. Pokud o tom nemá někdo ani páru, je to známkou toho, že se asi začal učit odprostředka, nešel nikdy do hloubky a je to určitý ukazatel, který je v závislosti na vyžadované činnosti více či méně důležitý. Ten člověk může mít klidně jiné kvality, kvůli kterým může kdokoliv usoudit, že je na juniora ten pravý, ale na libovolnou senior pozici bych to už považoval za dost velké mínus.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Michal Kovačič 08. 09. 2016, 12:47:55
...jenom považuju binární operace za jeden z naprostých základů pro jakýkoliv podobor IT. Pokud o tom nemá někdo ani páru, je to známkou toho, že se asi začal učit odprostředka, nešel nikdy do hloubky a je to určitý ukazatel, ...

+1
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 12:56:22
...jenom považuju binární operace za jeden z naprostých základů pro jakýkoliv podobor IT. Pokud o tom nemá někdo ani páru, je to známkou toho, že se asi začal učit odprostředka, nešel nikdy do hloubky a je to určitý ukazatel, ...

+1

No, nevim. Pokud někdo dělá třeba už 15 let v oboru, tak posledních 10 to vůbec nemusel zažít a nevybaví si to. Ví o tom, ale to je tak všechno. Takže člověka s 15 lety praxe nevezmete jen proto, že máte začátečnické požadavky.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 13:11:51
...jenom považuju binární operace za jeden z naprostých základů pro jakýkoliv podobor IT. Pokud o tom nemá někdo ani páru, je to známkou toho, že se asi začal učit odprostředka, nešel nikdy do hloubky a je to určitý ukazatel, ...

+1

No, nevim. Pokud někdo dělá třeba už 15 let v oboru, tak posledních 10 to vůbec nemusel zažít a nevybaví si to. Ví o tom, ale to je tak všechno. Takže člověka s 15 lety praxe nevezmete jen proto, že máte začátečnické požadavky.

Člověk s 15ti lety praxe většinou má co ukázat a na začátečnické otázky se ho nemusím ptát a raději s ním proberu, co už dokázal udělat. Je u něj jistý předpoklad (hraničící s jistotou), že mu nebude dělat problém, si na takové základy vzpomenout, pokud se dostane do situace, že je bude potřebovat. Stejně tak se na to nebudu ptát ani absolventa, pokud se už při studiu účastnil něčeho zajímavého a primárně se budu snažit zjistit, co vlastně dělal.

Ale pokud absolvent mává vysvědčením/diplomem, v CV má napsaný, že všechno ví, všechno zná a všude byl a nedokáže mi předložit žádnou svoji reálnou práci, tak nemám jinou možnost, než z něho vytáhnout znalosti teoretické, což může být samozřejmě horší a pro uchazeče i mnohem více stresující, než si jako rovný s rovným pokecat o práci.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 13:19:13
Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?

V pythonu operátor >> potřebuje ještě méně. Celočíselné dělení je // případně i / v pythonu 2. a >> b je to stejné co a//2**b. Jak píše noef, přehnaně optimalizovat kód webových aplikací je nesmysl. Hlavní je neselektovat z databáze víc dat než zobrazím.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 13:20:56
...jenom považuju binární operace za jeden z naprostých základů pro jakýkoliv podobor IT. Pokud o tom nemá někdo ani páru, je to známkou toho, že se asi začal učit odprostředka, nešel nikdy do hloubky a je to určitý ukazatel, ...

+1

No, nevim. Pokud někdo dělá třeba už 15 let v oboru, tak posledních 10 to vůbec nemusel zažít a nevybaví si to. Ví o tom, ale to je tak všechno. Takže člověka s 15 lety praxe nevezmete jen proto, že máte začátečnické požadavky.
To se ale nezapomíná, stejně jako víte, kdy je číslo dělitelné třemi. Je to otázka kultury, znalosti nesmí být přísně utilitární, ale musí mít jistý přesah. Tedy abyste nebyl jen tou lopatou.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 08. 09. 2016, 13:34:35
Kód: [Vybrat]
Math.floor(input/2);

Přesně toto je právě odstrašující příklad. Kdyby mi toto někdo napsal u pohovoru, rozhodně bych se ho na to začal vyptávat. A velmi pochybuji, že by si to dokázal obhájit.

Přesně toto je ten fachidiotismus, o němž jsem tu psal. Pro mě by to byl jasný důkaz, že tomu člověku to prostě nemyslí, že u své práce nepoužívá hlavu a že v teamu udělá víc škody než užitku.

Na tom, co si u vas obhaji moc nezalezi. Jiste, chapu, pokud se zabyvate psanim JavaScriptu, kde je vykon tim nejvyssim pozadavkem i za cenu citelnosti a udrzovatelnosti. Coz si IMO trochu odporuje, to uz rovnou muzete psat C/C++, ale mozna se tim nekdo zabyva.

* na tom, co si obhájí u pohovoru, záleží, jestli tu práci dostane; a vzhledem k tomu, že dorazil na pohovor, tak se asi dá předpokládat, že mu jde právě o to
* nečitelné je to právě jen a pouze pro ty fachidioty a to je to, co tu s dalšími neustále říkáme; je to to samé, jako kdyby se člověk, který má za sebou základy angličtiny, hlásil na pozici tlumočníka, ale rozčiloval se, že se ho někdo vyptává na znalost idiomů a předložkové vazby; ano, on se nějak bez nich domluví rukama, nohama, ale to sakra nestačí u někoho, kdo se tím chce živit jako profesionál; pokud si nějaký absolvent ekonomky sesmolí skript v excelovském VB, tak to vem čert, po něm nemůže nikdo chtít bitové operace, ale jestliže takto prasí někdo, kdo se považuje za profíka, tak má teda hodně vysoké sebevědomí

Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?

To je jeden z druhů argumentačního klamu. Už jsem se s ním vícekrát setkal při vedení pohovoru. Řekneš, že k něčemu obecnému je třeba X. A on si za něco obecného dosadí něco konkrétního, co se mu hodí, a tím se snaží dokázat, že mé původní tvrzení neplatí.

Aha, takze logika vam nic nerika? Kdyz nekdo tvrdi, ze "kazdy vyvojar potrebuje umet pocitat v bin. aritmetice" (ne, nebyl to ten prvni prispevek), tak staci najit jeden protipriklad a puvodni tvrzeni je vyvracene (i FE dev je vyvojar ;)). Jeden protipriklad (navic zadne mizive % v celkovem poctu vyvojaru) jsem uvedl -> vyvratil jsem puvodni tvrzeni.

Ne. Každý programátor nepotřebuje umět počítat v bináru. Každý programátor musí umět počítat v bináru, chce-li se nazývat programátorem! Bez ohledu na to, jestli to potřebuje nebo ne. Jinak to není žádný programátor, ale amatér, co si sem-tam dokáže něco jednoduššího v něčem namatlat a ono to třeba něco i bude nějak dělat, když bude náhodou zrovna vhodná konstelace. Na pozici programátora ale takový člověk nemá co pohledávat.
Podle vaší logiky nepotřebuje umět programátor vůbec nic. Protože u každé věci najdu příklad, u něhož dotyčný danou schopnost nevyužije.

Dříve jsem takovým uchazečům poděkoval za zájem o pozici a řekl jim, že práce, která by se po nich požadovala, by asi nebyla dle jejich gusta a že jistě snadno najdou někde jinde místo, které jim bude vyhovovat daleko více. Když jsem se jednou v reakci na toto uchazeče dotázal, zda někdy uvažoval o jiné profesi, nejlépe nějaké manuální, ještě si na mne pak stěžoval. Dnes to tedy řeším demonstrativním roztrháním jejich vytištěného životopisu a pozdravem "s bohem". Bohužel takto končívám pohovor čím dál častěji.

 ??? To se jako jeste vychloubate svou drzosti? V takove firme tedy musi byt radost pracovat.

V čem vidíte drzost? A když si někdo vylže životopis, během hodiny na pohovoru nevyřeší ani jediný ze tří příkladů, které si může vybrat z šesti předložených - mimochodem, každý z těch příkladů je založený na něčem, co už u nás někdo musel řešit v rámci nějakého projektu -, a ještě si troufne říci u místa na pracovní smlouvu na dobu neurčitou o peníze, které se dávají zkušeným kontraktorům měsíčně na půlroční joby, tak to je podle vás co? To se opravdu stává! Místo aby po pár minutách bezradného zírání sám uznal, že by to na té pozici evidentně nezvládl, a hodil ručník do ringu, ještě zkouší svou neschopnost okecat a doufá, že tu práci snad dostane. A pak odchází uražený, nafouknutý jak balón.
Tak tomu zase říkám drzost já. Opravdu by mě zajímalo, co se takovým lidem honí hlavou. Že to je jen takové strašení, ale ve skutečnosti si pak z osmi hodin odsedí 6, které stráví na facebooku, na fotbálku, na kafíčku, na dvouhodinovém obědu, za což jim bude měsíčně chodit na účet 120k? Pravda, objeví se i tací, kteří se cítí na 20 hrubého a výsledky mají stejné. Ale dovedu si představit, jak pak tady na rootu trousí své sebevědomé kecy, léčíce si své komplexy.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 13:39:12
Ale pokud absolvent mává vysvědčením/diplomem, v CV má napsaný, že všechno ví, všechno zná a všude byl a nedokáže mi předložit žádnou svoji reálnou práci, tak nemám jinou možnost, než z něho vytáhnout znalosti teoretické, což může být samozřejmě horší a pro uchazeče i mnohem více stresující, než si jako rovný s rovným pokecat o práci.

Ta otázka se týká konkrétních operátorů v pythonu. Není moc teoretická. Jak jsem psal výše, člověk se s nimi vůbec nemusel setkat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: PetrM 08. 09. 2016, 13:40:26
Tusim, ze tak, ze nekdo napsal, ze vsichni vyvojari potrebuji umet pocitat v binarni aritmetice. JS FE dev byl protiargument.

Jenomže ten JS FE je asi tak vývojář, jako admin, co napíše skritík do CRONu, pokročilý uživatel, co si ze skriptu barví buňky v spreadsheetu podle hodnoty nebo matematik, co naháže dávku příkazů do Matlabu, nadefinuje si přiu tom pár funkcí a poštve to na nějaký data. Takže argumentačně mimo.

Stejne tak ale podle me bude platit i o webari (BE nebo full-stack) v Pythonu, Ruby, JavaScriptu, Jave, C#. To, ze to jazyk podporuje, neznamena, ze se to ma pouzivat, nebo ze to dev musi umet.

Je to syntaktická konstrukce v tom jazyku, sakra. Když někdo bude tvrdit, že zná jazyk, musí znát jeho syntaxi. To je pstě podmínka nutná, ale ne dostačující. Neznat některý  operátory je stejný, jako neznat switch a všechno řešit přes if-else.

Btw, každý jazyk, co jsem viděl, má někde v manuálu jednu tabulku, definují se v ní priority operátorů. Dohromady aritmetický a logický. Pokud netuší, co znamená &&, vsadil by ses o jednu výplatu, že správně seřadí priority ostatních operátorů?

Na urcitych pozicich se neocekava, ze budete kouzlit s jazykem za kazdou cenu usporeneho znaku nebo 0.1% vykonu - napr. mit nekolikrat zanoreny operator ?: v JS neni moc dobra praktika, prestoze to muze usetrit hodne mista oproti pouzivani if. Stejne tak pouzivani bin. posunu >>, << a bezznamenkovych posunu >>>, <<< na FE neni stastne.

Znáš to přísloví "10x nic umořilo vola"?

Ja chapu, ze v embeded je to bezna vec. Tam ale opravdu potrebujete sahat na bity, protoze jste tak blizko HW. Tam se dokonce i ty mikrooptimalizace muzou vyplatit, protoze ten HW muze byt velmi slaby a/nebo mit velmi malo mista v pameti. Koneckoncu C/C++ je mnohem blize ASM a strojovemu kodu, nez JavaScript nebo Java a neprovadi se zadny JIT, mate tedy mnohem vetsi jistotu, ze vase optimalizace neni zbytecna a VM ji neudela lepe, protoze za behu vyzkousel a zmeril nekolik mutaci. Cim vys v jazycich a frameworcich jdete, tim vyssi vykon se od HW ocekava a tim vetsi abstrakce by jste meli pouzivat. A na ty opravdu vykonostne kriticke operace mate potunenou knihovnu, engine nebo VM.

Jenomže ono je to nejenom o ovladačích a embedded, ale třeba i o zpracování signálů. Pokud děláš třeba konvoluční filtry, zpracování obrazu,... Tam co chvíli narazíš na SIMD, operace se saturací,... a když neznáš background, tak jsi v háji. A při tom může klidně jít třeba o nějaký pluginy v C#.

...jenom považuju binární operace za jeden z naprostých základů pro jakýkoliv podobor IT. Pokud o tom nemá někdo ani páru, je to známkou toho, že se asi začal učit odprostředka, nešel nikdy do hloubky a je to určitý ukazatel, ...

Souhlas.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 13:50:14
Když to tak čtu, tak se nedivím, že většina lidí tady je ráda i za 60 tisíc :D Mít málo a svůj svět, kde dělení třemi je důležité...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 13:57:13
Když to tak čtu, tak se nedivím, že většina lidí tady je ráda i za 60 tisíc :D Mít málo a svůj svět, kde dělení třemi je důležité...
Čím dýl ty tvoje kecy čtu, tím víc mě to baví. Za poslední dobu ti věřím akorát to, že obíháš pohovory :D A podle nárůstu počtu tvých "příspěvků" usuzuji, že tě asi ten "nejúžasnější minecraft" už přestal bavit, co? :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 13:59:44
Btw, každý jazyk, co jsem viděl, má někde v manuálu jednu tabulku, definují se v ní priority operátorů. Dohromady aritmetický a logický. Pokud netuší, co znamená &&, vsadil by ses o jednu výplatu, že správně seřadí priority ostatních operátorů?

Python nemá operátor &&.

Jenomže ono je to nejenom o ovladačích a embedded, ale třeba i o zpracování signálů. Pokud děláš třeba konvoluční filtry, zpracování obrazu,... Tam co chvíli narazíš na SIMD, operace se saturací,... a když neznáš background, tak jsi v háji. A při tom může klidně jít třeba o nějaký pluginy v C#.

A co když ten člověk zrovna tohle nedělá? I kdyby to dělal. Máš nějaký příklad filtru implementovaného v pythonu, kde se pužívá bitový posun, nebo si tu jen honíš triko?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 14:09:04
Kód: [Vybrat]
Math.floor(input/2);

Přesně toto je právě odstrašující příklad. Kdyby mi toto někdo napsal u pohovoru, rozhodně bych se ho na to začal vyptávat. A velmi pochybuji, že by si to dokázal obhájit.

Přesně toto je ten fachidiotismus, o němž jsem tu psal. Pro mě by to byl jasný důkaz, že tomu člověku to prostě nemyslí, že u své práce nepoužívá hlavu a že v teamu udělá víc škody než užitku.

Na tom, co si u vas obhaji moc nezalezi. Jiste, chapu, pokud se zabyvate psanim JavaScriptu, kde je vykon tim nejvyssim pozadavkem i za cenu citelnosti a udrzovatelnosti. Coz si IMO trochu odporuje, to uz rovnou muzete psat C/C++, ale mozna se tim nekdo zabyva.

* na tom, co si obhájí u pohovoru, záleží, jestli tu práci dostane; a vzhledem k tomu, že dorazil na pohovor, tak se asi dá předpokládat, že mu jde právě o to
* nečitelné je to právě jen a pouze pro ty fachidioty a to je to, co tu s dalšími neustále říkáme; je to to samé, jako kdyby se člověk, který má za sebou základy angličtiny, hlásil na pozici tlumočníka, ale rozčiloval se, že se ho někdo vyptává na znalost idiomů a předložkové vazby; ano, on se nějak bez nich domluví rukama, nohama, ale to sakra nestačí u někoho, kdo se tím chce živit jako profesionál; pokud si nějaký absolvent ekonomky sesmolí skript v excelovském VB, tak to vem čert, po něm nemůže nikdo chtít bitové operace, ale jestliže takto prasí někdo, kdo se považuje za profíka, tak má teda hodně vysoké sebevědomí

Pokud nebyl tento specialni pozadavek v inzeratu, pak se nedivim, ze 90% procent lidi vyrazite. Protoze ten pozadavek je nenormalni (ve smyslu neni bezny - na FE proste normalne s bity nepocitate).

Veci typu vlastni makra ve Scale, vlastni preprocesory pro JavaScript nebo psani kodu vypadajiciho ala ASM.js (protoze to je prece nejvykonejsi, podle stejne logiky, jakou prosazujete) bych mozna chapal v pripade, ze to vyvijte pro svou firmu. Ale to u FE jaksi bezne neplati, tam se snazite pouzivat standardni nastroje a kod co nejcitelnejci, aby to po vas mohl kdokoliv prevzit, pokud se klient rozhodne jit k nekomu jinemu (kdyby se rozkriklo, ze zamerne obfuscujete takto kod, tak moc zakazniku se k vam asi nepohrne, kdyz si plati za zdrojaky a tedy moznost pokracovat u jineho a pritom to nedostanou).

Lidi, zajímalo by mně, jak jste z textu "Ahoj, jsem programátor a programuju ve vyšších jazycích (hlavně python). Byl jsem u pohovoru, kde jsem dostal na papíru vyřešit úkol, který vypadal zhruba takto:" dovodili, že daný pohovor byl na pozici vývojáře FrontEnd řešení v JavaScriptu?

To je jeden z druhů argumentačního klamu. Už jsem se s ním vícekrát setkal při vedení pohovoru. Řekneš, že k něčemu obecnému je třeba X. A on si za něco obecného dosadí něco konkrétního, co se mu hodí, a tím se snaží dokázat, že mé původní tvrzení neplatí.

Aha, takze logika vam nic nerika? Kdyz nekdo tvrdi, ze "kazdy vyvojar potrebuje umet pocitat v bin. aritmetice" (ne, nebyl to ten prvni prispevek), tak staci najit jeden protipriklad a puvodni tvrzeni je vyvracene (i FE dev je vyvojar ;)). Jeden protipriklad (navic zadne mizive % v celkovem poctu vyvojaru) jsem uvedl -> vyvratil jsem puvodni tvrzeni.

Ne. Každý programátor nepotřebuje umět počítat v bináru. Každý programátor musí umět počítat v bináru, chce-li se nazývat programátorem! Bez ohledu na to, jestli to potřebuje nebo ne. Jinak to není žádný programátor, ale amatér, co si sem-tam dokáže něco jednoduššího v něčem namatlat a ono to třeba něco i bude nějak dělat, když bude náhodou zrovna vhodná konstelace. Na pozici programátora ale takový člověk nemá co pohledávat.
Podle vaší logiky nepotřebuje umět programátor vůbec nic. Protože u každé věci najdu příklad, u něhož dotyčný danou schopnost nevyužije.

A jsme zase u toho - neco se proste musi umet, na skole to chapu, v zamestnani ne. Pokud se programovanim zivi, je to programator, vic to nehodlam resit. Ano, asi nepotrebuje umet skoro nic, stejne jako Lojzovi staci vedet jak hazet lopatou, tak JS FE dev nepotrebuje umet pocitat v binarni soustave. Problem vaseho tvrzeni je, ze vy snad nehledate obecneho programatora, ale programatora front-endu v JavaScriptu, casto se znalosti konkretniho frameworku a tam uz mate dost schopnosti a znalosti, ktere jsou treba. A to jsou ty veci, co by se mely na pohovoru kontrolovat, ty, ktere opravdu pouzijete v budouci praci. Ne nejake pitominky, jak tu psal nekdo jiny, ktere se u vas ani nepouzivaji, nebo dokonce predpokladate, ze je nebude vedet a jen ho dusite.

Dříve jsem takovým uchazečům poděkoval za zájem o pozici a řekl jim, že práce, která by se po nich požadovala, by asi nebyla dle jejich gusta a že jistě snadno najdou někde jinde místo, které jim bude vyhovovat daleko více. Když jsem se jednou v reakci na toto uchazeče dotázal, zda někdy uvažoval o jiné profesi, nejlépe nějaké manuální, ještě si na mne pak stěžoval. Dnes to tedy řeším demonstrativním roztrháním jejich vytištěného životopisu a pozdravem "s bohem". Bohužel takto končívám pohovor čím dál častěji.

 ??? To se jako jeste vychloubate svou drzosti? V takove firme tedy musi byt radost pracovat.

V čem vidíte drzost? A když si někdo vylže životopis, během hodiny na pohovoru nevyřeší ani jediný ze tří příkladů, které si může vybrat z šesti předložených - mimochodem, každý z těch příkladů je založený na něčem, co už u nás někdo musel řešit v rámci nějakého projektu -, a ještě si troufne říci u místa na pracovní smlouvu na dobu neurčitou o peníze, které se dávají zkušeným kontraktorům měsíčně na půlroční joby, tak to je podle vás co? To se opravdu stává! Místo aby po pár minutách bezradného zírání sám uznal, že by to na té pozici evidentně nezvládl, a hodil ručník do ringu, ještě zkouší svou neschopnost okecat a doufá, že tu práci snad dostane. A pak odchází uražený, nafouknutý jak balón.
Tak tomu zase říkám drzost já. Opravdu by mě zajímalo, co se takovým lidem honí hlavou. Že to je jen takové strašení, ale ve skutečnosti si pak z osmi hodin odsedí 6, které stráví na facebooku, na fotbálku, na kafíčku, na dvouhodinovém obědu, za což jim bude měsíčně chodit na účet 120k? Pravda, objeví se i tací, kteří se cítí na 20 hrubého a výsledky mají stejné. Ale dovedu si představit, jak pak tady na rootu trousí své sebevědomé kecy, léčíce si své komplexy.

Ale o tom jste v puvodnim prispevku nic nepsal :). Tam nebyla ani carka o tom, ze kecali v CV, nebo ze to bylo v inzeratu. Pouze jste popsal, jak je arogantne vyhazujete. Po tomto doplneni to uz dava vetsi smysl, pokud si clovek vymysli v CV, tak tam je divadlo na miste.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 14:33:10
Máš nějaký příklad filtru implementovaného v pythonu, kde se pužívá bitový posun, nebo si tu jen honíš triko?
https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L153
Ale proč to sem vlastně dávám, je mi jasné, že podle místních frikulínů tohle vlasně nikdo nedělá a ani nepotřebuje znát...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 14:47:46
Máš nějaký příklad filtru implementovaného v pythonu, kde se pužívá bitový posun, nebo si tu jen honíš triko?
https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L153
Ale proč to sem vlastně dávám, je mi jasné, že podle místních frikulínů tohle vlasně nikdo nedělá a ani nepotřebuje znát...

To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole. Normální člověk by to napsal takto:

Kód: [Vybrat]
x = np.arange(0, N * 2 ** J, dtype=float) / (2 ** J)

Na rychlosti tady opravdu nezáleží.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 14:51:32
Tusim, ze tak, ze nekdo napsal, ze vsichni vyvojari potrebuji umet pocitat v binarni aritmetice. JS FE dev byl protiargument.

Jenomže ten JS FE je asi tak vývojář, jako admin, co napíše skritík do CRONu, pokročilý uživatel, co si ze skriptu barví buňky v spreadsheetu podle hodnoty nebo matematik, co naháže dávku příkazů do Matlabu, nadefinuje si přiu tom pár funkcí a poštve to na nějaký data. Takže argumentačně mimo.

Ok, tady je definice:

Citace: wiki
Vývojář je osoba, která je zapojena do procesu vytváření programového vybavení (software). Role vývojáře se z velké části dá ztotožnit s rolí programátora, ale není to zcela přesné. Vývojář totiž může plnit i úkoly spojené s procesem návrhu aplikací, designem (ve smyslu vytváření programových šablon) a vedením projektu. Záběr jeho činnosti je tak širší než u programátora. Obecně se dá konstatovat, že vývojář se podílí na vývoji aplikace na obecnější úrovni, nikoli pouze na úrovni jednotlivých úkolů, které spočívají v naprogramování konkrétní funkčnosti. S touto náplní práce jsou také spojeny větší nároky na samostatné uvažování a individuální zodpovědnost než u programátora.

Kde presne je tam podminka, podle ktere JS FE programator nikdy nemuze byt vyvojarem? I kdyby navrhl architekturu jen pro FE, tak snad porad spada do kategorie vyvojar. Si vemte SPA, kde klidne muze byt FE slozitejsi, nez BE :D. Stejne tak v malych tymech je IMO bezne, ze kecat do vyvoje i navrhu bude i front-endak.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 08. 09. 2016, 15:13:10
A co když ten člověk zrovna tohle nedělá? I kdyby to dělal. Máš nějaký příklad filtru implementovaného v pythonu, kde se pužívá bitový posun, nebo si tu jen honíš triko?

Jenže, jak vidíš, celé tohle vlákno vzniklo kvůli tomu, že se ho zrovna na tohle někdo u pohovoru zeptal. A je to něco, co rozhodně patří mezi základy programátorského řemesla, takže neexistuje žádný důvod, proč by se ho na to neměl ptát.

Mimochodem, chtít po truhláři předvést, jak umí udělat spoj na ozub, to se smí, nebo je to taky nepatřičné, když před tím jen sesazoval z polotovarů kuchyňské linky, kde se s tím nesetkal, a hlásí se na pozici truhlář - nábytkář, kde se s tím v dnešní době asi tak příliš nesetká? A co když přijde zakázka, kde to bude zapotřebí? Nebo co když mě jen zajímá, jak čistě a přesně umí pracovat a kolik na práci v dané kvalitě potřebuje času?

Tohle je opravdu legrační. Nejen, že děcka chtějí nařizovat školám, co je (ne)mají učit, ale ona chtějí i nařizovat zaměstnavatelům, co od nich (ne)mají požadovat. To je neuvěřitelné!

Pokud nebyl tento specialni pozadavek v inzeratu, pak se nedivim, ze 90% procent lidi vyrazite. Protoze ten pozadavek je nenormalni (ve smyslu neni bezny - na FE proste normalne s bity nepocitate).

Ale to je přece absurdní! Jak by měl ten inzerát vypadat?
"Sháníme člověka na pozici programátora, předpokládáme znalost Javy, navíc dále požadujeme:
* znalost konstrukce if-then-else
* znalost operátorů &&, || a !
* znalost operátorů <<, >>, ~, |, &
* znalost operátorů +, -, *, /
* znalost cyklu while
* znalost klíčových slov class, int, return, static, final
* schopnost definovat pole
* schopnost pracovat s polem
* schopnost definovat třídu
* schopnost definovat metodu
* schopnost definovat proměnnou
..." ????

Když někdo prohlásí, že umí Javu, no tak snad z toho plyne, že zná i ty jednotlivé věci výše, ať už se s nimi někdy v praxi setkal nebo ne. Chápu, že amatér se nemusel s řadou věcí setkat, protože se učil přesně jen to, co on potřeboval a co nepotřeboval nebo nechápal, to prostě přeskočil. Jenže hlásí-li se někdo na pozici programátora, tak je snad jasné, že se požaduje profesionál a u něho je něco takového naprosto nepřijatelné. Profesionál se od amatéra liší právě v tom, že musí znát i to, co by se mohlo z titulu jeho profese od něj očekávat, nejen to, co ho baví. Programátor, který neumí pracovat s bity, je jako řidič, který neumí couvat. Strejdů, co neumějí zacouvat do dvora, do garáže nebo mezi auta, potká člověk spoustu. Ale pokud toto neumí profesionální řidič, tak je asi něco špatně. A má podle vás psát zaměstnavatel do inzerátu, že hledá řidiče, který umí navíc i couvat?

Nevím, proč tu pořád propíráte ten front-end. Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 15:18:39
Truhláš není vývojář, lopato.

Nebo kdyby kuchař neuměl nakrájet cibuli, co?  ;D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: noef 08. 09. 2016, 15:21:24
Nevím, proč tu pořád propíráte ten front-end.

Mozna proto, ze jste na prispevek s tim reagoval v prve rade?

Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.

No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 15:24:17
Nebo kdyby kuchař neuměl nakrájet cibuli, co?  ;D
spíš jako by neuměl uvařit polívku jinak než z prášku
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 15:33:04
Máš nějaký příklad filtru implementovaného v pythonu, kde se pužívá bitový posun, nebo si tu jen honíš triko?
https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L153
Ale proč to sem vlastně dávám, je mi jasné, že podle místních frikulínů tohle vlasně nikdo nedělá a ani nepotřebuje znát...

To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole. Normální člověk by to napsal takto:

Kód: [Vybrat]
x = np.arange(0, N * 2 ** J, dtype=float) / (2 ** J)

Na rychlosti tady opravdu nezáleží.
A takové věci právě vznikají, když programátor dobře nezná tyto operace, pak při přepisování kódu, který byl původně v C do pythonu, tam ponechá právě tyto zbytečné konstrukce.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 15:37:20
Nebo kdyby kuchař neuměl nakrájet cibuli, co?  ;D
spíš jako by neuměl uvařit polívku jinak než z prášku

Problém je v tom, že zaměňuješ manuální dělníky s vývojářem. Vývoj se nedá naučit.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 15:39:35
Nebo kdyby kuchař neuměl nakrájet cibuli, co?  ;D
spíš jako by neuměl uvařit polívku jinak než z prášku

Problém je v tom, že zaměňuješ manuální dělníky s vývojářem. Vývoj se nedá naučit.
problém (jeden z problémů) je, že jste pitomec
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 15:40:39
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 15:41:15
Máš nějaký příklad filtru implementovaného v pythonu, kde se pužívá bitový posun, nebo si tu jen honíš triko?
https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L153
Ale proč to sem vlastně dávám, je mi jasné, že podle místních frikulínů tohle vlasně nikdo nedělá a ani nepotřebuje znát...

To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole. Normální člověk by to napsal takto:

Kód: [Vybrat]
x = np.arange(0, N * 2 ** J, dtype=float) / (2 ** J)

Na rychlosti tady opravdu nezáleží.
A takové věci právě vznikají, když programátor dobře nezná tyto operace, pak při přepisování kódu, který byl původně v C do pythonu, tam ponechá právě tyto zbytečné konstrukce.

Kód: [Vybrat]
N * (1 << J)

by vypadalo divně i v C. Proč ne jen N  << J?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ondra Satai Nekola 08. 09. 2016, 15:42:20
Problém je v tom, že zaměňuješ manuální dělníky s vývojářem. Vývoj se nedá naučit.

Tak urcite. A ty jsi vypadnul z Diovy hlavy.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 15:43:07
A takové věci právě vznikají, když programátor dobře nezná tyto operace, pak při přepisování kódu, který byl původně v C do pythonu, tam ponechá právě tyto zbytečné konstrukce.
Další co se vůbec neobtěžoval podívat se na kód: https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L98
Tady je to opravdu samá lopata...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 15:45:10
Nebo kdyby kuchař neuměl nakrájet cibuli, co?  ;D
spíš jako by neuměl uvařit polívku jinak než z prášku

Problém je v tom, že zaměňuješ manuální dělníky s vývojářem. Vývoj se nedá naučit.
problém (jeden z problémů) je, že jste pitomec

A? Jak to souvisí s tvým zaměňováním?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 15:49:57
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 15:52:25

Kód: [Vybrat]
N * (1 << J)

by vypadalo divně i v C. Proč ne jen N  << J?

No nevím, zřejmě proto, aby generovalo v cyklu N * další_násobek_2, tedy řadu n*2, n*4, n*8, ... pokud by J iterovalo od 1 .. 64


Ale zase na druhé straně, kdyby někdo chtěl v Pythonu implementovat generátor náhodných čísel ISAAC, tak by operace shift potřeboval, a nebo ne, a vystačil by s násobením a dělením 2? :-)))
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 15:55:34
A takové věci právě vznikají, když programátor dobře nezná tyto operace, pak při přepisování kódu, který byl původně v C do pythonu, tam ponechá právě tyto zbytečné konstrukce.
Další co se vůbec neobtěžoval podívat se na kód: https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L98
Tady je to opravdu samá lopata...

a ??
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 15:55:46
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
Proč? Protože to někdo nejprve přepsal z Fortranu do assembleru, pak z assembleru do céčka, pak někdo další z céčka do Pythonu :-)))
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 15:55:56
Problém je v tom, že zaměňuješ manuální dělníky s vývojářem. Vývoj se nedá naučit.
Problém je v tom, že u manuálního dělníka se velmi lehce a rychle pozná, jestli něco umí a těžto to okecá, zatímco u vývojářské motyky je okecávání často to jediný, co umí. Neboj, tebe se to netýká, o tobě si tu už nikdo nemyslí, že by jsi byl vývojář, ty jsi čistokrevný okecávač bez vývojářských ambic :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 15:57:12
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
<< je bitový posun, ** je umocnění, jedno funguje jen s celými čísly, druhé i s floating point čísly, u matematických vzorců bývá uveden "datový type"
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:00:08
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
<< je bitový posun, ** je umocnění, jedno funguje jen s celými čísly, druhé i s floating point čísly, u matematických vzorců bývá uveden "datový type"

jak zapíšeš jedním bitovým posunem 3**5?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 16:00:55
Navíc si jsem jistý, že << není rychlejší než **.

To už záleží jen a pouze na kompileru/interpreteru a jeho optimalizacích. Na úrovni CPU je bitový posun odjakživa rychlejší. Kompilátor to může za určitých okolností zoptimalizovat a udělat z toho identický kód, ale taky může klidně teoreticky ten shift natolik zprasit, že to bude výrazně horší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 16:04:13
jak zapíšeš jedním bitovým posunem 3**5?
a jak zapíšeš mocninou x<<n tak, aby ta samotná operace proběhla jednou instrukcí v jednom taktu?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 16:09:39
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
<< je bitový posun, ** je umocnění, jedno funguje jen s celými čísly, druhé i s floating point čísly, u matematických vzorců bývá uveden "datový type"

jak zapíšeš jedním bitovým posunem 3**5?
netuším co to melete, pardon
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:11:20
jak zapíšeš jedním bitovým posunem 3**5?
a jak zapíšeš mocninou x<<n tak, aby ta samotná operace proběhla jednou instrukcí v jednom taktu?

Tím se nemá smysl v Pythonu zabývat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 08. 09. 2016, 16:11:48
No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.

Přijímejte na ty pozice profesionály a spousta takových problémů odpadne. Tady je úskalí spíše u managementu, který bývá těžké přesvědčit o tom, že amatér problémy neřeší, ale rozmnožuje, a tedy že ani 10 amatérů nikdy nevyváží jednoho profíka.
Pokud zbytek týmu neumí používat nástroje ke své práci, tak jste holt do zbytku týmu nabrali špatné lidi. Vřele doporučuji ten čas a úsilí tomu věnovat, protože jak už jsem psal výše, ačkoli je v IT neustále nedostatek lidí, i tak se vyplatí vybírat ty, kteří za něco stojí a něco umějí. Což je asi tak každý desátý, který zavolá. U lidí dodávaných personálkami se situace kupodivu stále zlepšuje.

Navíc si jsem jistý, že << není rychlejší než **.

Pokud použitý procesor nemá násobičku, tak vem jed na to, že to rychlejší je. A to tak, že podstatně.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?

Ano, jakožto programátorovi mi to připadá přirozenější, pokud mám implementovat výpočet v celočíselné nebo fixed-pointové aritmetice. To je právě ta otázka návyků. A naopak - vidím-li v nějakém takovém výpočtu násobení či dělení, hned to upoutá mou pozornost a přemýšlím, nejde-li to šikovněji.
Ono třeba takové Hornerovo schéma taky není tak přirozené, jako když napíšu sumu mocnin. Ale implementovat výpočet nějaké mocninné řady přesně tak, jak se zapisuje v matematice, protože to je přirozené, to je opravdu na kopanec.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:14:28
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
<< je bitový posun, ** je umocnění, jedno funguje jen s celými čísly, druhé i s floating point čísly, u matematických vzorců bývá uveden "datový type"

jak zapíšeš jedním bitovým posunem 3**5?
netuším co to melete, pardon

sorry, špatně jsem to přečetl. Stejně není pravda, že ** funguje s floating point. Pokud jsou operandy celočíselné.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:20:14
Navíc si jsem jistý, že << není rychlejší než **.
Pokud použitý procesor nemá násobičku, tak vem jed na to, že to rychlejší je. A to tak, že podstatně.

Na kterém takovém procesoru funguje scipy? Navíc je to úplně jedno, ta operace se provede jen jednou, oproti následnému dělení N << J čísel je to zanedbatelné.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:23:17
Ano, jakožto programátorovi mi to připadá přirozenější, pokud mám implementovat výpočet v celočíselné nebo fixed-pointové aritmetice. To je právě ta otázka návyků. A naopak - vidím-li v nějakém takovém výpočtu násobení či dělení, hned to upoutá mou pozornost a přemýšlím, nejde-li to šikovněji.
Ono třeba takové Hornerovo schéma taky není tak přirozené, jako když napíšu sumu mocnin. Ale implementovat výpočet nějaké mocninné řady přesně tak, jak se zapisuje v matematice, protože to je přirozené, to je opravdu na kopanec.

Kopejte si do svých kolegů jak chcete. Každopádně ztrácíte čas optimalizací, kde to nedává smysl.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 16:28:05
Tento thread mě děsí. Pro všechy frikulíny, operace
Kód: [Vybrat]
N * (1 << J)
N ** 2 * J
NEJSOU EKVIVALENTNÍ.

Protože:
Kód: [Vybrat]
>>> 2 * 2 ** 4.2
36.75834735990512
>>> 2 * (1 << 4.2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'int' and 'float'

Ten kód je napsaný naprosto správně, protože J MUSÍ být integer, jinak ten algoritmus nemá smysl a má skončít chybou. Autor to má správně a přepsáním byste ten kód úplně rozbili, bohužel to nejste schopni pochopit, protože nechápete bitové operace...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 16:29:57
sorry, špatně jsem to přečetl. Stejně není pravda, že ** funguje s floating point. Pokud jsou operandy celočíselné.
právě, že posun s fp nefunguje, viz gamer Dnes v 16:28:05
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:31:19
Tento thread mě děsí. Pro všechy frikulíny, operace
Kód: [Vybrat]
N * (1 << J)
N ** 2 * J
NEJSOU EKVIVALENTNÍ.

Protože:
Kód: [Vybrat]
>>> 2 * 2 ** 4.2
36.75834735990512
>>> 2 * (1 << 4.2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'int' and 'float'

Ten kód je napsaný naprosto správně, protože J MUSÍ být integer, jinak ten algoritmus nemá smysl a má skončít chybou. Autor to má správně a přepsáním byste ten kód úplně rozbili, bohužel to nejste schopni pochopit, protože nechápete bitové operace...

J je parametr té funkce. Jeho datový typ by se měl kontrolovat na začátku, případně anotací.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 08. 09. 2016, 16:32:50
Tento thread mě děsí. Pro všechy frikulíny, operace
Kód: [Vybrat]
N * (1 << J)
N ** 2 * J
NEJSOU EKVIVALENTNÍ.

Protože:
Kód: [Vybrat]
>>> 2 * 2 ** 4.2
36.75834735990512
>>> 2 * (1 << 4.2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'int' and 'float'

Ten kód je napsaný naprosto správně, protože J MUSÍ být integer, jinak ten algoritmus nemá smysl a má skončít chybou. Autor to má správně a přepsáním byste ten kód úplně rozbili, bohužel to nejste schopni pochopit, protože nechápete bitové operace...

J je parametr té funkce. Jeho datový typ by se měl kontrolovat na začátku, případně anotací.
to není pythonické :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:36:16
sorry, špatně jsem to přečetl. Stejně není pravda, že ** funguje s floating point. Pokud jsou operandy celočíselné.
právě, že posun s fp nefunguje, viz gamer Dnes v 16:28:05

Nic takového nepsal. Píšu, že 2**J pro celočíselné J je to stejné jako 1 << J. V pythonu jsou celá čísla neomezená. Bity při posunu nemají kam utéct. Vždy to vrátí stejný výsledek.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:38:33
Tento thread mě děsí. Pro všechy frikulíny, operace
Kód: [Vybrat]
N * (1 << J)
N ** 2 * J
NEJSOU EKVIVALENTNÍ.

Protože:
Kód: [Vybrat]
>>> 2 * 2 ** 4.2
36.75834735990512
>>> 2 * (1 << 4.2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'int' and 'float'

Ten kód je napsaný naprosto správně, protože J MUSÍ být integer, jinak ten algoritmus nemá smysl a má skončít chybou. Autor to má správně a přepsáním byste ten kód úplně rozbili, bohužel to nejste schopni pochopit, protože nechápete bitové operace...

J je parametr té funkce. Jeho datový typ by se měl kontrolovat na začátku, případně anotací.
to není pythonické :D

Na to kašlu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 16:40:36
Pythonické je nezabývat se tím, jestli je něco pythonické.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Jozko 08. 09. 2016, 16:44:22

Vediet bitovu manipulaciu a vediet pocitat binarne je minimum.
Nech sa na mna nikto nehneva, to sa uci na strednych skolach.
Ak niekto videl ASM alebo C, tak urcite sa s tym stretol.

Co sa tyka jeho pozicie, je na zamestnavatelovi ake si urci podmienky. Najskor uznal, ze tymto sa rozoznavaju takzvane "lopaty" od toho co chce on.

Ak by som bol zamestnavatel a beriem si programatora, ktory ani nema ani stipku tusenia ako funguje pocitac, i ked luska javascript. Tak by som nebol velmi rad.

Osobne nevidim nejake velke plus, ak niekto vie v XYZ frameworkov ,ale ak niekto rozumie ako to funguje, tak to je otazka zopar dni sa to doucit. Skor ide o tie principy a preco to tak funguje, technologie sa menia kazde 2 roky, ale principy zostavaju trocha dlhsie.

Ak chcete kopirantov zo stack overflow, tak si ich kludne prijmite.




Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 16:54:28
To není filtr. To je jen výpočet mocniny dvojky v parametru funkce vytvářející pole.
Asi nerozumím řeči tvého kmene... To si jako představuješ, že je nějaký filtr implementovaný na jeden řádek? Viděl jsi ten kód kolem, nebo ses vůbec neobtěžoval?

Normální člověk by to napsal takto:
Takže normální je ten, kdo nepoužívá a pokud možno ani nezná bitové operace. Když je použije, tak je nenormální. Hrozná demagogie.

Pod filtrem jsem si představoval operaci, která bude praváděna mnohokrát, bude tedy dávat smysl ji optimalizovat. Ten kód co jsi poslal, spočte konstantu, vytvoří pole a po prvcích ho vydělí konstantou. Tu konstantu ale spočte jen jednou. Navíc si jsem jistý, že << není rychlejší než **.

Tobě opravdu nepřijde přirozenější zapisovat umocňování jako umocňování a ne jako bitový posun? V matematických vzorcích také píšeš 1 << N namísto 2^N?
<< je bitový posun, ** je umocnění, jedno funguje jen s celými čísly, druhé i s floating point čísly, u matematických vzorců bývá uveden "datový type"
<< == ** jen v případě 1 << n, << == * jen v případě n << m = n * 2 * m.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kiwi 08. 09. 2016, 17:00:05
Na to kašlu.

Jako z Cimrmanů... "O programování už nepište nic... A raději neprogramujte vůbec."  :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 17:04:48

Vediet bitovu manipulaciu a vediet pocitat binarne je minimum.
Nech sa na mna nikto nehneva, to sa uci na strednych skolach.
Ak niekto videl ASM alebo C, tak urcite sa s tym stretol.

Co sa tyka jeho pozicie, je na zamestnavatelovi ake si urci podmienky. Najskor uznal, ze tymto sa rozoznavaju takzvane "lopaty" od toho co chce on.

Ak by som bol zamestnavatel a beriem si programatora, ktory ani nema ani stipku tusenia ako funguje pocitac, i ked luska javascript. Tak by som nebol velmi rad.

Osobne nevidim nejake velke plus, ak niekto vie v XYZ frameworkov ,ale ak niekto rozumie ako to funguje, tak to je otazka zopar dni sa to doucit. Skor ide o tie principy a preco to tak funguje, technologie sa menia kazde 2 roky, ale principy zostavaju trocha dlhsie.

Ak chcete kopirantov zo stack overflow, tak si ich kludne prijmite.
Zase na mechanickou programátorskou práci je lepší lopata. Pracuje rychleji i s tím copy and paste. A ta mechanická práce podle cizího vzoru je neotravuje.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 17:10:29
Je zajímavé, že téměř každý, kromě javamana samozřejmě, tu evidentně bitové operace zná a nemá s nimi zásadní problém (i když je nechce používat). A to i přesto, že to jak sami tvrdí někteří nikdy nepotřebovali. Celkem by mě zajímalo, jak k tomu přišli? Že by to opravdu patřilo k základům? Ale proč tedy to nepochopitelné obhajování neznalosti? Opravdu se tolik vyplatí zaměstnávat motyky za minimální mzdu, na nějaký js barvičkování tlačítek a potom je buď učit a zvedat mzdu, nebo raději vyhodit, když se něco naučí a chtěly by víc?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 17:18:48
Zase na mechanickou programátorskou práci je lepší lopata. Pracuje rychleji i s tím copy and paste. A ta mechanická práce podle cizího vzoru je neotravuje.
Ano... a výsledkem je 80 použitých pochybných knihoven, všechny na to samé, ale každá trochu jiná a z každé použitý jen zlomek. Půlka kódu násilně zobjektovaná, druhá násilně odobjektovaná, 8 proměnných s tou stejnou hodnotou, jenom pokaždé jinak, podle toho, co která knihovna zrovna z nějakého důvodu chce, ošetření chybových stavů žádné, ale hlavně, že to alespoň dva ze tří pokusů nespadne a jednou za čas to i něco udělá správně. Když už se náááhodou někdo obtěžuje s testama, tak jsou tak ohnutý, aby prošly a hurá... jsem programátor a pod 100k nevstanu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 17:21:51
Je zajímavé, že téměř každý, kromě javamana samozřejmě, tu evidentně bitové operace zná a nemá s nimi zásadní problém (i když je nechce používat). A to i přesto, že to jak sami tvrdí někteří nikdy nepotřebovali. Celkem by mě zajímalo, jak k tomu přišli? Že by to opravdu patřilo k základům? Ale proč tedy to nepochopitelné obhajování neznalosti? Opravdu se tolik vyplatí zaměstnávat motyky za minimální mzdu, na nějaký js barvičkování tlačítek a potom je buď učit a zvedat mzdu, nebo raději vyhodit, když se něco naučí a chtěly by víc?
Ano vyplatí se to, protože rutinní práce ubijí ... člověk který o práci uvažuje se na spoustu míst nehodí, protože na nich má slepě plnit příkazy.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 17:25:14
Zase na mechanickou programátorskou práci je lepší lopata. Pracuje rychleji i s tím copy and paste. A ta mechanická práce podle cizího vzoru je neotravuje.
Ano... a výsledkem je 80 použitých pochybných knihoven, všechny na to samé, ale každá trochu jiná a z každé použitý jen zlomek. Půlka kódu násilně zobjektovaná, druhá násilně odobjektovaná, 8 proměnných s tou stejnou hodnotou, jenom pokaždé jinak, podle toho, co která knihovna zrovna z nějakého důvodu chce, ošetření chybových stavů žádné, ale hlavně, že to alespoň dva ze tří pokusů nespadne a jednou za čas to i něco udělá správně. Když už se náááhodou někdo obtěžuje s testama, tak jsou tak ohnutý, aby prošly a hurá... jsem programátor a pod 100k nevstanu.
Rozhoduje rychlost a ne kvalita. Ono ani není jisté, zda dokončený projekt se chytí a zaplatí. A rozhoduje kdo s tím přijde první. Ten pak má větší šanci na to udržet se. Musíte to vidět i z této strany.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 17:28:01
Zase na mechanickou programátorskou práci je lepší lopata. Pracuje rychleji i s tím copy and paste. A ta mechanická práce podle cizího vzoru je neotravuje.
Ano... a výsledkem je 80 použitých pochybných knihoven, všechny na to samé, ale každá trochu jiná a z každé použitý jen zlomek. Půlka kódu násilně zobjektovaná, druhá násilně odobjektovaná, 8 proměnných s tou stejnou hodnotou, jenom pokaždé jinak, podle toho, co která knihovna zrovna z nějakého důvodu chce, ošetření chybových stavů žádné, ale hlavně, že to alespoň dva ze tří pokusů nespadne a jednou za čas to i něco udělá správně. Když už se náááhodou někdo obtěžuje s testama, tak jsou tak ohnutý, aby prošly a hurá... jsem programátor a pod 100k nevstanu.
V DNA to vypadá taky tak. A to máme miliony let ověřený kód. Prostě tak funguje reálný svět.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 17:43:31
V DNA to vypadá taky tak. A to máme miliony let ověřený kód. Prostě tak funguje reálný svět.
To je sice pravda, ale život obecně má neuvěřitelnou schopnost korekce chyb a přizpůsobení se. Některé formy to řeší kvalitou (třeba některé šelmy), některé kvantitou (třeba hmyz), ale kupodivu i v přírodě se stane, že v některých společenstvích dokáže přežít i nekvalitní jedinec (třeba bez nohy). V IT to zatím neplatí, korekční mechanismy jsou nespolehlivé a často způsobí více problémů, než užitku a IS těžko přežije s upadlou databázovou, nebo aplikační částí a každá závažnější chyba, třeba na první pohled nezjistitelná, může způsobit různé nekonzistence.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 08. 09. 2016, 17:53:33
V DNA to vypadá taky tak. A to máme miliony let ověřený kód. Prostě tak funguje reálný svět.
To je sice pravda, ale život obecně má neuvěřitelnou schopnost korekce chyb a přizpůsobení se. Některé formy to řeší kvalitou (třeba některé šelmy), některé kvantitou (třeba hmyz), ale kupodivu i v přírodě se stane, že v některých společenstvích dokáže přežít i nekvalitní jedinec (třeba bez nohy). V IT to zatím neplatí, korekční mechanismy jsou nespolehlivé a často způsobí více problémů, než užitku a IS těžko přežije s upadlou databázovou, nebo aplikační částí a každá závažnější chyba, třeba na první pohled nezjistitelná, může způsobit různé nekonzistence.
To jistě ano, ale plýtvat cenné zdroje na něco, co se ani neujme, je zbytečné. Pokud se něco ujme, stejně se to celé předělá znovu a pořádně.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 17:53:48
Je zajímavé, že téměř každý, kromě javamana samozřejmě, tu evidentně bitové operace zná a nemá s nimi zásadní problém (i když je nechce používat). A to i přesto, že to jak sami tvrdí někteří nikdy nepotřebovali. Celkem by mě zajímalo, jak k tomu přišli? Že by to opravdu patřilo k základům? Ale proč tedy to nepochopitelné obhajování neznalosti? Opravdu se tolik vyplatí zaměstnávat motyky za minimální mzdu, na nějaký js barvičkování tlačítek a potom je buď učit a zvedat mzdu, nebo raději vyhodit, když se něco naučí a chtěly by víc?

Pochybuju, že tě u pozic 80+ bude někdo otravovat se zbytečnostmi typu bitového počítání na papíře. To můžeš zkoušet na lopaty, ale smysl to pořád nemá žádný.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 18:03:42
Je zajímavé, že téměř každý, kromě javamana samozřejmě, tu evidentně bitové operace zná a nemá s nimi zásadní problém (i když je nechce používat). A to i přesto, že to jak sami tvrdí někteří nikdy nepotřebovali. Celkem by mě zajímalo, jak k tomu přišli? Že by to opravdu patřilo k základům? Ale proč tedy to nepochopitelné obhajování neznalosti? Opravdu se tolik vyplatí zaměstnávat motyky za minimální mzdu, na nějaký js barvičkování tlačítek a potom je buď učit a zvedat mzdu, nebo raději vyhodit, když se něco naučí a chtěly by víc?

Pochybuju, že tě u pozic 80+ bude někdo otravovat se zbytečnostmi typu bitového počítání na papíře. To můžeš zkoušet na lopaty, ale smysl to pořád nemá žádný.
Však taky nikdo nenabízí 80+ absolventům, kterým jsou podobný motykoviny určený. Pokud chce někdo 80+, tak musí mít praxi, pokud má praxi, probírají se na pohovoru jeho minulé projekty a zkušenosti a ne počítání jedniček a nul na papíře, protože se dá předpokládat, že o tom něco ví a v případě potřeby si ochotně vzpomene. Ale to už jsem ti psal.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: borekz 08. 09. 2016, 18:32:10
Na úrovni CPU je bitový posun odjakživa rychlejší.
Jak kdy.
Asi od 80386 je nejrychlejší násobení 1,2,4,8. Interně to je asi shift, ale v assembleru se to zapisuje jako násobení konstantou.
Na druhém místě je instrukce shl a na třetím místě imul. Od Pentium 2 trvá násobení jen 4 cykly a propustnost jeden cyklus, takže to asi není třeba řešit. Pro zajímavost, instrukce cyklické rotace přes carry flag (rcr,rcl) trvají na Skylaku 6 cyklů, tedy déle než násobení.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 18:50:59
Na to kašlu.

Jako z Cimrmanů... "O programování už nepište nic... A raději neprogramujte vůbec."  :)

Pojď si poměřit síly v nějaké programátorské soutěži.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 18:56:02
Na úrovni CPU je bitový posun odjakživa rychlejší.
Jak kdy.
Asi od 80386 je nejrychlejší násobení 1,2,4,8. Interně to je asi shift, ale v assembleru se to zapisuje jako násobení konstantou.
Na druhém místě je instrukce shl a na třetím místě imul. Od Pentium 2 trvá násobení jen 4 cykly a propustnost jeden cyklus, takže to asi není třeba řešit. Pro zajímavost, instrukce cyklické rotace přes carry flag (rcr,rcl) trvají na Skylaku 6 cyklů, tedy déle než násobení.
To násobení se dokonce kompilovalo jako posuny, to byla mikrooptimalizace některých kompilerů. Jinak v průběhu doby se děly různé věci, byly drobné rozdíly mezi Intel, AMD, Cyrixem a nevím, kdo ještě to kopíroval. V pentiích byly floating point operace rychlejší než celočíselné atd atd...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 18:59:43
Na úrovni CPU je bitový posun odjakživa rychlejší.
Jak kdy.
Asi od 80386 je nejrychlejší násobení 1,2,4,8. Interně to je asi shift, ale v assembleru se to zapisuje jako násobení konstantou.
Na druhém místě je instrukce shl a na třetím místě imul. Od Pentium 2 trvá násobení jen 4 cykly a propustnost jeden cyklus, takže to asi není třeba řešit. Pro zajímavost, instrukce cyklické rotace přes carry flag (rcr,rcl) trvají na Skylaku 6 cyklů, tedy déle než násobení.
To násobení se dokonce kompilovalo jako posuny, to byla mikrooptimalizace některých kompilerů. Jinak v průběhu doby se děly různé věci, byly drobné rozdíly mezi Intel, AMD, Cyrixem a nevím, kdo ještě to kopíroval. V pentiích byly floating point operace rychlejší než celočíselné atd atd...

A tohle Java dělá za mě, takže se můžu soustředit na opravdovou práci. Lopaty budou přemýšlet, jestli použít posun :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Petr M 08. 09. 2016, 19:14:29
Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.

No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.

Ale houby. Dobrá aplikace je psaná tak, aby byla funkční a efektivní. A když něco píšu, tak to napíšu tak, jak nejlíp umím. Nebudu prasit ani architekturu, ani kód jenom proto, že může přijít nějaký Pat nebo  Mat. A když tomu nerozumí, tak ať se to naučí, nebo jde dělat weby.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 19:16:14
Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.

No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.

Ale houby. Dobrá aplikace je psaná tak, aby byla funkční a efektivní. A když něco píšu, tak to napíšu tak, jak nejlíp umím. Nebudu prasit ani architekturu, ani kód jenom proto, že může přijít nějaký Pat nebo  Mat. A když tomu nerozumí, tak ať se to naučí, nebo jde dělat weby.

Noef píše o dělání webů.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 08. 09. 2016, 19:44:41
Na úrovni CPU je bitový posun odjakživa rychlejší.
Jak kdy.
Asi od 80386 je nejrychlejší násobení 1,2,4,8. Interně to je asi shift, ale v assembleru se to zapisuje jako násobení konstantou.
Na druhém místě je instrukce shl a na třetím místě imul. Od Pentium 2 trvá násobení jen 4 cykly a propustnost jeden cyklus, takže to asi není třeba řešit. Pro zajímavost, instrukce cyklické rotace přes carry flag (rcr,rcl) trvají na Skylaku 6 cyklů, tedy déle než násobení.
To násobení se dokonce kompilovalo jako posuny, to byla mikrooptimalizace některých kompilerů. Jinak v průběhu doby se děly různé věci, byly drobné rozdíly mezi Intel, AMD, Cyrixem a nevím, kdo ještě to kopíroval. V pentiích byly floating point operace rychlejší než celočíselné atd atd...

A tohle Java dělá za mě, takže se můžu soustředit na opravdovou práci. Lopaty budou přemýšlet, jestli použít posun :D
Ano, java vyrábí pro každou platformu bugy a díry zvlášť. To, že něco neumíš, prostě neokecáš. JVM, stejně jako fyzický HW pracuje s jedničkama a nulama a jestli se ti to nelíbí, zůstaň u své oblíbené lopaty a nepleť se mezi inteligentnější lidi. Stejně to z tebe lepšího člověka neudělá, akorát jseš víc a víc za šaška.
Název: Re:bitové operace
Přispěvatel: tisnik 08. 09. 2016, 20:11:53
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)

Neda, resp. da, ale za to bych Te v teamu zabil. Vsimni si, ze java.awt.Color (mimochodem existuje od 1.0) je immutable, tj. jedina moznost prevodu je udelat new Color(r,g,b) a potom ty zminovane metody getGreen, getRed , getBlue, getAlpha. Fakt si pro prevod bitmapy o velikosti rekneme 1024x1024 pixelu (zadne HD) nasekas a hned v GC nechaz zrusit milion objektu?

On je totiz duvod pro to, ze v jave existuji i nizkourovnove API pro bitmapy (Raster, WritableRaster etc.), ale tam se jaksi pocita s tim, ze programator zna >>, <<, & a |

Teoreticky staci na jednu farbu jeden objekt :) Ale uz nebudem drazdit  hada  bosou nohou. ( Co ked pojdem pracovat do RH )

Image processing som este nerobil (respektive raz navysokej),  ale zo dna na den som sa stal embedakom (nie micro edition ale J9 od ibm), tam som musel riesit veci, ze mi do jedneho bajtu narvali tri hodnoty a bez bitovych operacii by som sa pokakal + tam bolo treba velmi setrit pamatou.

My jsme v RH docela hodni :-) toho bych se nebal (btw tech objektu muze byt az 2^24, tedy dost). Btw na cem ta J9 valila? Skutecne nejaky embedded procesor?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 08. 09. 2016, 20:22:23
Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.

No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.

Ale houby. Dobrá aplikace je psaná tak, aby byla funkční a efektivní. A když něco píšu, tak to napíšu tak, jak nejlíp umím. Nebudu prasit ani architekturu, ani kód jenom proto, že může přijít nějaký Pat nebo  Mat. A když tomu nerozumí, tak ať se to naučí, nebo jde dělat weby.

Noef píše o dělání webů.
Správně. "Dělání webů" není programování.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 20:37:57
Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.

No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.

Ale houby. Dobrá aplikace je psaná tak, aby byla funkční a efektivní. A když něco píšu, tak to napíšu tak, jak nejlíp umím. Nebudu prasit ani architekturu, ani kód jenom proto, že může přijít nějaký Pat nebo  Mat. A když tomu nerozumí, tak ať se to naučí, nebo jde dělat weby.

Noef píše o dělání webů.
Správně. "Dělání webů" není programování.

Je jedno jak tomu říkáš. Ten pohovor se možná týkal dělání webů.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 08. 09. 2016, 20:39:06
Ale i kdyby, tak bych ani na to nevzal někoho, kdo neumí základní programátorskou latinu, protože bych neměl tušení, co všechno ještě neumí. Ostatně podívá-li se člověk namátkou na JS kódy spousty webů, jen to dokazuje, že je to zmatlané bez elementárního přemýšlení, neefektivně, nepřehledně, nešikovně. Prostě amatérsky.

No, ale to jsem v podstate napsal - na urcitych pozicich a zamerenich se naopak preferuje kdyz pouzivate takove ficury jazyka, se kterymi umi delat zbytek tymu. Takove obraty v kodu, ktere jsou na prvni pohled pro vetsinu lidi na dane pozici/zamereni jasne, a pripadne budou jasne i potencionalnimu budoucimu "udrzovateli" kodu. Tomu se rika udrzovatelny kod.

Ale houby. Dobrá aplikace je psaná tak, aby byla funkční a efektivní. A když něco píšu, tak to napíšu tak, jak nejlíp umím. Nebudu prasit ani architekturu, ani kód jenom proto, že může přijít nějaký Pat nebo  Mat. A když tomu nerozumí, tak ať se to naučí, nebo jde dělat weby.

Noef píše o dělání webů.
Správně. "Dělání webů" není programování.

Je jedno jak tomu říkáš. Ten pohovor se možná týkal dělání webů.
Možná. Možná taky ne. A možná to bylo na nějaké embedded věci. Není tam o tom ani slovo.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 20:41:07
Ano, java vyrábí pro každou platformu bugy a díry zvlášť. To, že něco neumíš, prostě neokecáš. JVM, stejně jako fyzický HW pracuje s jedničkama a nulama a jestli se ti to nelíbí, zůstaň u své oblíbené lopaty a nepleť se mezi inteligentnější lidi. Stejně to z tebe lepšího člověka neudělá, akorát jseš víc a víc za šaška.

Neokecávám to, prostě to není potřeba. Lopaty často považují zbytečnosti za důležité, protože ony samy to umí a vůbec nechápou, že existují i jiné věci, protože jim nerozumí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: hawran diskuse 08. 09. 2016, 20:52:50
Ano, java vyrábí pro každou platformu bugy a díry zvlášť. To, že něco neumíš, prostě neokecáš. JVM, stejně jako fyzický HW pracuje s jedničkama a nulama a jestli se ti to nelíbí, zůstaň u své oblíbené lopaty a nepleť se mezi inteligentnější lidi. Stejně to z tebe lepšího člověka neudělá, akorát jseš víc a víc za šaška.

Neokecávám to, prostě to není potřeba. Lopaty často považují zbytečnosti za důležité, protože ony samy to umí a vůbec nechápou, že existují i jiné věci, protože jim nerozumí.

(https://i.imgur.com/PoKpxJs.gif)
Název: Re:bitové operace
Přispěvatel: balki 08. 09. 2016, 21:06:00
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)

Neda, resp. da, ale za to bych Te v teamu zabil. Vsimni si, ze java.awt.Color (mimochodem existuje od 1.0) je immutable, tj. jedina moznost prevodu je udelat new Color(r,g,b) a potom ty zminovane metody getGreen, getRed , getBlue, getAlpha. Fakt si pro prevod bitmapy o velikosti rekneme 1024x1024 pixelu (zadne HD) nasekas a hned v GC nechaz zrusit milion objektu?

On je totiz duvod pro to, ze v jave existuji i nizkourovnove API pro bitmapy (Raster, WritableRaster etc.), ale tam se jaksi pocita s tim, ze programator zna >>, <<, & a |

Teoreticky staci na jednu farbu jeden objekt :) Ale uz nebudem drazdit  hada  bosou nohou. ( Co ked pojdem pracovat do RH )

Image processing som este nerobil (respektive raz navysokej),  ale zo dna na den som sa stal embedakom (nie micro edition ale J9 od ibm), tam som musel riesit veci, ze mi do jedneho bajtu narvali tri hodnoty a bez bitovych operacii by som sa pokakal + tam bolo treba velmi setrit pamatou.

My jsme v RH docela hodni :-) toho bych se nebal (btw tech objektu muze byt az 2^24, tedy dost). Btw na cem ta J9 valila? Skutecne nejaky embedded procesor?

Bohuzial uz si nepamatam, ale bol to nejaky velmi podtaktovany arm, aby to malo malu spotrebu, operacny system bol custom, 16 MB RAM, nejake 4 MB na uzivatelske data, okrem mojich veci tam bezali ine, takze ja som mal k dispozicii 1 MB, pricom som vzdy loadoval nemale podklady. Osobne som sa divil, preco tam bezi java. Normalne som zacal mat obdiv k programatorom, co programovali kedysi pre 48 kB RAM.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Petr M 08. 09. 2016, 21:22:50
Noef píše o dělání webů.

Jenomže ještě nepochopil, že opravdový profesionál bez ohledu na obor má nějakou profesní čest. A ta mu nedovolí odflinknout dílo. Profík si netroufne prodávat stůl s kratší nohou, přesolený žrádlo, jiskřící rozvaděč, lak na autě samou bublinu nebo program, u kterýho neví, jak vlastně funguje.

Vymlouvat se, že to sám umí líp, ale ostatní jsou matláci a jenom se jim přizpůsobuje, a ještě se tím chlubit, zvládne jenom ten "nejlepší z nejlepších".
Název: (
Přispěvatel: Petr M 08. 09. 2016, 21:40:57
A ke zpracování signálů na jednom řádku - mezi zpracování signálů se dá započítat třeba FIR filtr 1. řádu u ADC na potlačení šumu.

Třeba derivační článek xn+1 = 7/8*xn + 1/8*a se napíše v C v přerušení 12b ADC takto:

Kód: [Vybrat]

volatile uint16_t x = 0;

void ADC_ISR(void) {
  x = ((x << 3) - x + ADC_VALUE) >> 3;
}

Třeba u ARMu s barrel shifterem je to velice efektivní metoda. Jenom vědět, jak na to bez násobení a floatů.

Python nedělám, ale pokud by chtěl stejně filtrovat data, tak princip bude pořád stejný. A taky se to asi vejde na jednu lajnu...
Název: Re:bitové operace
Přispěvatel: javaman (( 08. 09. 2016, 21:45:11
Osobne som sa divil, preco tam bezi java.

Tak to já se vůbec nedivím. Prostě chápali, co je nejlepší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 21:56:04
Noef píše o dělání webů.

Jenomže ještě nepochopil, že opravdový profesionál bez ohledu na obor má nějakou profesní čest. A ta mu nedovolí odflinknout dílo. Profík si netroufne prodávat stůl s kratší nohou, přesolený žrádlo, jiskřící rozvaděč, lak na autě samou bublinu nebo program, u kterýho neví, jak vlastně funguje.

Vymlouvat se, že to sám umí líp, ale ostatní jsou matláci a jenom se jim přizpůsobuje, a ještě se tím chlubit, zvládne jenom ten "nejlepší z nejlepších".

Je normální používat jen podmnožinu jazyka. Proto existují různé lintery a přepínače use strict. Google také zakazuje používat některé featury, které jsou jinde ok https://google.github.io/styleguide/pyguide.html?showone=Power_Features#Power_Features

Já osobně nevidím důvod k používání bitových posunů jako náhrady za vhodnější matematické operace. Zejména ve vysokoúrovňovém jazyce. Když budu slovy popisovat ten algoritmus, který tu byl odkazován, tak budu říkat 2 na n-tou a ne 1 bitově posunuto o n doleva. Zápis je stejně dlouhý, rychlost nepodstatná. Bitový posun určitě použiji tam, kde zkrátí zápis. Pokud to někdo používá všude, tak mi to nevadí, ale ať se nenaváží do lidí, kteří to nepoužívají.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 22:03:50
Hlavně se to přeloží úplně stejně, takže matlák má smůlu a jeho cool fíčura je cool jen na rootu. Ale když jsem byl malej, taky jsem si říkal, jak krutý vychytávky používám.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 22:05:48
A tohle Java dělá za mě, takže se můžu soustředit na opravdovou práci. Lopaty budou přemýšlet, jestli použít posun :D

Java to za tebe neudělá, protože ani java compiler nemá křišťálovou kouli.
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}
Za domácí úkol se zkus zamyslet, proč jsi lopata.
Název: Re:(
Přispěvatel: gl 08. 09. 2016, 22:07:53
A ke zpracování signálů na jednom řádku - mezi zpracování signálů se dá započítat třeba FIR filtr 1. řádu u ADC na potlačení šumu.

Třeba derivační článek xn+1 = 7/8*xn + 1/8*a se napíše v C v přerušení 12b ADC takto:

Kód: [Vybrat]

volatile uint16_t x = 0;

void ADC_ISR(void) {
  x = ((x << 3) - x + ADC_VALUE) >> 3;
}

Třeba u ARMu s barrel shifterem je to velice efektivní metoda. Jenom vědět, jak na to bez násobení a floatů.

Python nedělám, ale pokud by chtěl stejně filtrovat data, tak princip bude pořád stejný. A taky se to asi vejde na jednu lajnu...

v Pythonu na běžném procesoru je IMHO

Kód: [Vybrat]
x = (x*7 + ADC_VALUE)//8

stejně rychlé a je to přesnější přepis toho vzorce. Snáz se to čte.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 22:11:30
A tohle Java dělá za mě, takže se můžu soustředit na opravdovou práci. Lopaty budou přemýšlet, jestli použít posun :D

Java to za tebe neudělá, protože ani java compiler nemá křišťálovou kouli.
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}
Za domácí úkol se zkus zamyslet, proč jsi lopata.

A co jsi tím teda chtěl říct?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 22:13:27
A co jsi tím teda chtěl říct?

Ty nerozumíš ani tak jednoduchému kódu, že? Chceš nějakou nápovědu?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 08. 09. 2016, 22:26:55
A co jsi tím teda chtěl říct?

Ty nerozumíš ani tak jednoduchému kódu, že? Chceš nějakou nápovědu?

Motyce nevysvětlíš, co je to lopata :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 08. 09. 2016, 22:27:29
A co jsi tím teda chtěl říct?

Ty nerozumíš ani tak jednoduchému kódu, že? Chceš nějakou nápovědu?

Ano.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 22:43:59
A co jsi tím teda chtěl říct?

Ty nerozumíš ani tak jednoduchému kódu, že? Chceš nějakou nápovědu?

Ano.

Můžeš začít tady: http://stackoverflow.com/questions/8373415/difference-between-shl-and-sal-in-80x86
a pak se zkus zamyslet, co taková instrukce udělá se signed číslem, když není rozdíl mezi arithmetic a logical shiftem.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 08. 09. 2016, 22:48:38
A co jsi tím teda chtěl říct?

Ty nerozumíš ani tak jednoduchému kódu, že? Chceš nějakou nápovědu?

Ano.

Můžeš začít tady: http://stackoverflow.com/questions/8373415/difference-between-shl-and-sal-in-80x86
a pak se zkus zamyslet, co taková instrukce udělá se signed číslem, když není rozdíl mezi arithmetic a logical shiftem.

Ale hlavne, Math.pow(a,b) vracia double, takze skumat, ci sa jeden long castovany na double nerovna s double pomocou opereratora "!="  je trosku nerozum :) Len tak na margo :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 08. 09. 2016, 22:50:38
Double neporovnavat pomocou ==  a != . To robia vietekto :)

ked uz mam prispiet k dnesnemu flame :)
Název: Re:(
Přispěvatel: gl 08. 09. 2016, 23:00:25
A ke zpracování signálů na jednom řádku - mezi zpracování signálů se dá započítat třeba FIR filtr 1. řádu u ADC na potlačení šumu.

Třeba derivační článek xn+1 = 7/8*xn + 1/8*a se napíše v C v přerušení 12b ADC takto:

Kód: [Vybrat]

volatile uint16_t x = 0;

void ADC_ISR(void) {
  x = ((x << 3) - x + ADC_VALUE) >> 3;
}

Třeba u ARMu s barrel shifterem je to velice efektivní metoda. Jenom vědět, jak na to bez násobení a floatů.

Python nedělám, ale pokud by chtěl stejně filtrovat data, tak princip bude pořád stejný. A taky se to asi vejde na jednu lajnu...

v Pythonu na běžném procesoru je IMHO

Kód: [Vybrat]
x = (x*7 + ADC_VALUE)//8

stejně rychlé a je to přesnější přepis toho vzorce. Snáz se to čte.

Ještě bych dodal, že nemá smysl snažit se takovéhle věci implementovat efektivně v pythonu. To nejde. Existuje spousta hotových filtrů implementovaných v C:

http://docs.scipy.org/doc/scipy/reference/signal.html

O zpracování signálů nic nevím, ale předpokládám, že tam najdete co potřebujete.

Případně existují způsoby jak snadno kombinovat C a python:

Kód: [Vybrat]
import numpy as np
import scipy as sp

from scipy.weave import inline

def my_fir(arr):
    assert isinstance(arr, np.ndarray)
    n = len(arr)
    code = """
    int x = 0;
    for(int i = 0; i < n; i++)
    {
    x = ((x << 3) - x + arr[i]) >> 3;
    arr[i] = x;
    }
    """
    inline(code, ['arr', 'n'], compiler='gcc')
    return arr

arr = np.array(range(20))

newarr = my_fir(arr)

print newarr

Případně existují řešení kompilující podmnožinu pythonu:

http://numba.pydata.org/

Asi úplně nejlepší je přejít na Julii. Dohadovat se, jestli je v Pythonu rychlejší bitový posun nebo dělení a násobení je nesmysl. Mnohom většího zrychlení dosáhnete přechodem na jiný jazyk.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 23:01:28
Ano, to je samozřejmě další důvod, proč nejde zaměňovat pow a shift... Nicméně tady není problém s double ani s přesností:
pow(63): 9.223372036854776E18
shift(63): -9.223372036854776E18
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 08. 09. 2016, 23:08:32
Ano, to je samozřejmě další důvod, proč nejde zaměňovat pow a shift... Nicméně tady není problém s double ani s přesností:
pow(63): 9.223372036854776E18
shift(63): -9.223372036854776E18

Tak tohle je čistě problém Javy. V Pythonu mají integery nekonečnou přesnost. Při posunu se nic neztrácí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 08. 09. 2016, 23:25:03
Ano, to je samozřejmě další důvod, proč nejde zaměňovat pow a shift... Nicméně tady není problém s double ani s přesností:
pow(63): 9.223372036854776E18
shift(63): -9.223372036854776E18

Zhodou to vyslo a zistil si, ze typy v jave su signed, gratulujem :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 08. 09. 2016, 23:54:45
Zhodou to vyslo a zistil si, ze typy v jave su signed, gratulujem :D

Takže co v javě použiješ, když potřebuješ spočítat 2^x ? Shift, pow, něco jiného, nebo je to podle tebe jedno, jak si někteří myslí?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 08. 09. 2016, 23:58:14
Ano, to je samozřejmě další důvod, proč nejde zaměňovat pow a shift... Nicméně tady není problém s double ani s přesností:
pow(63): 9.223372036854776E18
shift(63): -9.223372036854776E18

Tak tohle je čistě problém Javy. V Pythonu mají integery nekonečnou přesnost. Při posunu se nic neztrácí.

Nejde o to, ze by sa nieco stracalo, ale long v jave je signed a pouziva dvojkovy doplnok.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 00:11:19
Zhodou to vyslo a zistil si, ze typy v jave su signed, gratulujem :D

Takže co v javě použiješ, když potřebuješ spočítat 2^x ? Shift, pow, něco jiného, nebo je to podle tebe jedno, jak si někteří myslí?

Zavisi pripad od pripadu. Treba vediet, kde je zrada a podla toho sa zariadit.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 00:13:35
Tak tohle je čistě problém Javy. V Pythonu mají integery nekonečnou přesnost. Při posunu se nic neztrácí.

Nejde o to, ze by sa nieco stracalo, ale long v jave je signed a pouziva dvojkovy doplnok.

Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 00:15:38
Zavisi pripad od pripadu. Treba vediet, kde je zrada a podla toho sa zariadit.

No výborně, začínáme se dostávat k jádru věci. Záleží to na kontextu. Nejde slepě používat násobení nebo umocňování místo bitových operací. O tom je celý tento thread, někteří to ale bohužel ještě nepochopili.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 00:19:09
Tak tohle je čistě problém Javy. V Pythonu mají integery nekonečnou přesnost. Při posunu se nic neztrácí.

Nejde o to, ze by sa nieco stracalo, ale long v jave je signed a pouziva dvojkovy doplnok.

Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.

Pre lopaty a javamana mame v jave typ BigInteger.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 00:21:19
Zavisi pripad od pripadu. Treba vediet, kde je zrada a podla toho sa zariadit.

No výborně, začínáme se dostávat k jádru věci. Záleží to na kontextu. Nejde slepě používat násobení nebo umocňování místo bitových operací. O tom je celý tento thread, někteří to ale bohužel ještě nepochopili.

Tenhle thread byl původně o Pythonu a tam je to úplně jedno. Můžeš posunovat a umocňovat kolik ti výkon počítače dovolí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 00:28:48
Tenhle thread byl původně o Pythonu a tam je to úplně jedno. Můžeš posunovat a umocňovat kolik ti výkon počítače dovolí.

Není to jedno:
Kód: [Vybrat]
>>> 2 ** 4.1
17.148375400580687
>>> 1 << 4.1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'int' and 'float'
Pokud nechápeš rozdíl, je to tvůj problém.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 00:31:48
Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.

Pre lopaty a javamana mame v jave typ BigInteger.

Poněkud nepraktické, když Python, Lisp a hromada dalších jazyků s tím pracuje nativně. Podobně bychom dopadli třeba i s komplexními čísly, racionálními čísly, případně s finančními částkami.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 00:32:12
Tenhle thread byl původně o Pythonu a tam je to úplně jedno. Můžeš posunovat a umocňovat kolik ti výkon počítače dovolí.

Není to jedno:
Kód: [Vybrat]
>>> 2 ** 4.1
17.148375400580687
>>> 1 << 4.1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'int' and 'float'
Pokud nechápeš rozdíl, je to tvůj problém.

Samozřejmě pokud umocňuješ a posouváš celým číslem. Pro reálný exponent to nemá smysl porovnávat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 00:45:27
Ano, to je samozřejmě další důvod, proč nejde zaměňovat pow a shift... Nicméně tady není problém s double ani s přesností:
pow(63): 9.223372036854776E18
shift(63): -9.223372036854776E18

Tak tohle je čistě problém Javy. V Pythonu mají integery nekonečnou přesnost. Při posunu se nic neztrácí.

Nejde o to, ze by sa nieco stracalo, ale long v jave je signed a pouziva dvojkovy doplnok.

Navic 63 je int a u toho je konstanta pro posun nejdrive maskovana 0x1f, tedy napriklad 1<<64 == 1>>64 == 1

(omlouvam se, ze pouzivam hexadecimalni cisla, to je asi dneska taky uz prezitek? :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 00:50:23
Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.

Pre lopaty a javamana mame v jave typ BigInteger.

Poněkud nepraktické, když Python, Lisp a hromada dalších jazyků s tím pracuje nativně. Podobně bychom dopadli třeba i s komplexními čísly, racionálními čísly, případně s finančními částkami.

Java pracuje default s 32bit signed integermi. Komu sa nelubi, ten nech si zatrubi. Je to prakticke aj neprakticke. Zalezi od ulohy. Ked prijde sef a spyta sa "kolko pamati to zaberie" a ja mu poviem - "huh neviem" moc nadseny z toho nebyva.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 00:52:27
Navic 63 je int a u toho je konstanta pro posun nejdrive maskovana 0x1f, tedy napriklad 1<<64 == 1>>64 == 1

Při shiftu longu (64-bit) je konstanta pro posun maskována 0x3F.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 01:22:03
(omlouvam se, ze pouzivam hexadecimalni cisla, to je asi dneska taky uz prezitek? :)

Nic se neděje. Mám po ruce kalkulačku.

Navic 63 je int a u toho je konstanta pro posun nejdrive maskovana 0x1f, tedy napriklad 1<<64 == 1>>64 == 1

Takže posun o 31 je to stejné  co posun o 63?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 01:26:31
Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.

Pre lopaty a javamana mame v jave typ BigInteger.

Poněkud nepraktické, když Python, Lisp a hromada dalších jazyků s tím pracuje nativně. Podobně bychom dopadli třeba i s komplexními čísly, racionálními čísly, případně s finančními částkami.

Java pracuje default s 32bit signed integermi. Komu sa nelubi, ten nech si zatrubi. Je to prakticke aj neprakticke. Zalezi od ulohy. Ked prijde sef a spyta sa "kolko pamati to zaberie" a ja mu poviem - "huh neviem" moc nadseny z toho nebyva.

Nikdo ti nebrání používat numpy.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Mirek 09. 09. 2016, 05:52:53
Zavisi pripad od pripadu. Treba vediet, kde je zrada a podla toho sa zariadit.

No výborně, začínáme se dostávat k jádru věci. Záleží to na kontextu. Nejde slepě používat násobení nebo umocňování místo bitových operací. O tom je celý tento thread, někteří to ale bohužel ještě nepochopili.

Tenhle thread byl původně o Pythonu a tam je to úplně jedno. Můžeš posunovat a umocňovat kolik ti výkon počítače dovolí.
Opravdu je to thread o Pythonu? Já myslel, že je o otázce, kterou na blíže nespecifikovaném pohovoru na blíže nespecifikovanou pozici dostal člověk, který programuje např. V Pythonu...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: franto 09. 09. 2016, 07:23:50
tvl vy jste fakt volove. ale ze totalni. vlakno o bitovych operacich se natahne na 20 stranek. ty blaho, to je mozny jenom na rootu, kam si chodej lidi honit triko.
Název: Re:(
Přispěvatel: PetrM 09. 09. 2016, 07:25:28
A ke zpracování signálů na jednom řádku - mezi zpracování signálů se dá započítat třeba FIR filtr 1. řádu u ADC na potlačení šumu.

Třeba derivační článek xn+1 = 7/8*xn + 1/8*a se napíše v C v přerušení 12b ADC takto:

Kód: [Vybrat]

volatile uint16_t x = 0;

void ADC_ISR(void) {
  x = ((x << 3) - x + ADC_VALUE) >> 3;
}

Třeba u ARMu s barrel shifterem je to velice efektivní metoda. Jenom vědět, jak na to bez násobení a floatů.

Python nedělám, ale pokud by chtěl stejně filtrovat data, tak princip bude pořád stejný. A taky se to asi vejde na jednu lajnu...

v Pythonu na běžném procesoru je IMHO

Kód: [Vybrat]
x = (x*7 + ADC_VALUE)//8

stejně rychlé a je to přesnější přepis toho vzorce. Snáz se to čte.

A to, že je to stejně rychlý, jsi vzal kde? Na (8x-x) potřebuješ jeden shift o tři bity (u ARMu barrel shifter) a jeden rozdíl. To jsou dvě instrukce a stačí ti dva registry CPU. Pro násobení sedmi potřebuješ 3x shift o 1b a 3x součet a pravděpodobně si to vezme i jeden registr procesoru navíc. Takže samotná operace, pokud to kompilátor nepřevede na 8x-x, je 3x pomalejší. A pokud to vezme jako obecný násobení 16x16->32 bez HW násobičky, tak je to dokonce 16x pomalejší. Ve zpracování v časově kritickým přerušení nebo na větším objemu dat je to sakra poznat.

Kolega jednou dělal něco v C# na x86_64 a použil knihovní funkce. Přechrchlání dat za cca 2,5 minuty.
Vyhodil knihovní funkce, použil vnitřek (s floatama) přímo. Stáhl to na 80s.
Přešel na integer, byl na 20s.
Po úpravě konstant tak, aby to byly mocniny dvojky nebo maximálně dvě jedničky v konstantě (kompilátor mohl používat shifty) se dostal na 3,5s.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 09. 09. 2016, 07:27:36
Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.

Pre lopaty a javamana mame v jave typ BigInteger.

Poněkud nepraktické, když Python, Lisp a hromada dalších jazyků s tím pracuje nativně. Podobně bychom dopadli třeba i s komplexními čísly, racionálními čísly, případně s finančními částkami.

Ale to je správná filosofie Javy, aby v ní nešlo dělat vše, ale jen to, co jazykem povolené typy umožňují. Aby nešlo používat << k aritmetickým operacím, aby se neoptimalizovalo na rychlost. Filosofií Javy je přenositelnost a podobné triky tu přenositelnost znemožňují, protože na každém procesoru je to trochu jinak. Optimalizovat na rychlost u Javy se má VM a ne aplikace.

Maximálně můžete použít k optimalizaci na úrovni bytekódu například pomocí tohoto frameworku https://github.com/Sable/soot .
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 09. 09. 2016, 07:34:13
Nebo k optimalizaci výkonu se v Javě dá použít přímo instrukce VM, viz například zde http://www.beyondjava.net/blog/quick-guide-writing-byte-code-asm/
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 07:53:50
To se nám to tu pěkně zaflejmilo :D
Otázka do do davu:
Potřebuje účetní umět spočítat 2+5?
Odpověď:
Nepotřebuje, má kalkulačku.
Otázka:
Zaměstnáte účetní, o které víte, že neumí jednoduché sčítání?
Odpověď si doplňte.
Název: Re:(
Přispěvatel: Ivan Nový 09. 09. 2016, 07:55:59
A ke zpracování signálů na jednom řádku - mezi zpracování signálů se dá započítat třeba FIR filtr 1. řádu u ADC na potlačení šumu.

Třeba derivační článek xn+1 = 7/8*xn + 1/8*a se napíše v C v přerušení 12b ADC takto:

Kód: [Vybrat]

volatile uint16_t x = 0;

void ADC_ISR(void) {
  x = ((x << 3) - x + ADC_VALUE) >> 3;
}

Třeba u ARMu s barrel shifterem je to velice efektivní metoda. Jenom vědět, jak na to bez násobení a floatů.

Python nedělám, ale pokud by chtěl stejně filtrovat data, tak princip bude pořád stejný. A taky se to asi vejde na jednu lajnu...

v Pythonu na běžném procesoru je IMHO

Kód: [Vybrat]
x = (x*7 + ADC_VALUE)//8

stejně rychlé a je to přesnější přepis toho vzorce. Snáz se to čte.

A to, že je to stejně rychlý, jsi vzal kde? Na (8x-x) potřebuješ jeden shift o tři bity (u ARMu barrel shifter) a jeden rozdíl. To jsou dvě instrukce a stačí ti dva registry CPU. Pro násobení sedmi potřebuješ 3x shift o 1b a 3x součet a pravděpodobně si to vezme i jeden registr procesoru navíc. Takže samotná operace, pokud to kompilátor nepřevede na 8x-x, je 3x pomalejší. A pokud to vezme jako obecný násobení 16x16->32 bez HW násobičky, tak je to dokonce 16x pomalejší. Ve zpracování v časově kritickým přerušení nebo na větším objemu dat je to sakra poznat.

Kolega jednou dělal něco v C# na x86_64 a použil knihovní funkce. Přechrchlání dat za cca 2,5 minuty.
Vyhodil knihovní funkce, použil vnitřek (s floatama) přímo. Stáhl to na 80s.
Přešel na integer, byl na 20s.
Po úpravě konstant tak, aby to byly mocniny dvojky nebo maximálně dvě jedničky v konstantě (kompilátor mohl používat shifty) se dostal na 3,5s.
Zřejmě i v Pythonu v tom bude nějaký rozdíl, viz příklad

Kód: [Vybrat]

import dis

def shift(a):
x = a << 4

def mul(a):
x = a * 4

print(dis.dis(shift))
print(dis.dis(mul))

a výsledek
Kód: [Vybrat]
4           0 LOAD_FAST                0 (a)
              3 LOAD_CONST               1 (4)
              6 BINARY_LSHIFT
              7 STORE_FAST               1 (x)
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE
None
  7           0 LOAD_FAST                0 (a)
              3 LOAD_CONST               1 (4.1)
              6 BINARY_LSHIFT
              7 STORE_FAST               1 (x)
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE
None
 10           0 LOAD_FAST                0 (a)
              3 LOAD_CONST               1 (4)
              6 BINARY_MULTIPLY
              7 STORE_FAST               1 (x)
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE
None
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 09:53:50
Samozřejmě pokud umocňuješ a posouváš celým číslem. Pro reálný exponent to nemá smysl porovnávat.

Takže podle tebe je tohle ekvivalentní? V klidu by jsi vyměnil foo za bar?
Kód: [Vybrat]
def foo(x):
    return x << 2
def bar(x):
    return x * 4
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: grg 09. 09. 2016, 09:55:21
tvl vy jste fakt volove. ale ze totalni. vlakno o bitovych operacich se natahne na 20 stranek. ty blaho, to je mozny jenom na rootu, kam si chodej lidi honit triko.
No a čo, nikto ťa nenúti to čítať. Pre mňa sú takéto diskusie vždy dobrým zdrojom zábavy a prokrastinácie v práci.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 10:10:42
Java přece jen není tak univerzální, jak by si mnozí přáli. Některé záležitosti se v ní dělat nedají a jiné se v ní dělají blbě.

Pre lopaty a javamana mame v jave typ BigInteger.

Poněkud nepraktické, když Python, Lisp a hromada dalších jazyků s tím pracuje nativně. Podobně bychom dopadli třeba i s komplexními čísly, racionálními čísly, případně s finančními částkami.

Java pracuje default s 32bit signed integermi. Komu sa nelubi, ten nech si zatrubi. Je to prakticke aj neprakticke. Zalezi od ulohy. Ked prijde sef a spyta sa "kolko pamati to zaberie" a ja mu poviem - "huh neviem" moc nadseny z toho nebyva.

Nikdo ti nebrání používat numpy.

Ale to je externa, kniznica, toje nepr...   , nechajme to tak :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 10:27:23
Navic 63 je int a u toho je konstanta pro posun nejdrive maskovana 0x1f, tedy napriklad 1<<64 == 1>>64 == 1

Při shiftu longu (64-bit) je konstanta pro posun maskována 0x3F.

Presne tak, ja jen, ze v te ukazce to nebylo uplne jasne - u shiftu zalezi na typu LEVEHO operandu, takze 1L<<x versus 1<<x  ale uz ne na typu operandu druheho  1<<10L == 1<<10

Skutecne na okraj - i s timto se lze na pohovoru setkat, nema smysl mit testik, kde to da kazdej po svem prvnim Hello World na 100%, proto jsou tam speky pro ty lepsi a jeste lepsi, i kdyz v praxi se s tim skutecne malokdo setka.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 10:30:23
(omlouvam se, ze pouzivam hexadecimalni cisla, to je asi dneska taky uz prezitek? :)

Nic se neděje. Mám po ruce kalkulačku.

Navic 63 je int a u toho je konstanta pro posun nejdrive maskovana 0x1f, tedy napriklad 1<<64 == 1>>64 == 1

Takže posun o 31 je to stejné  co posun o 63?

Pokud se posunuje int a ne long, tak ano, zde konkretne s vysledkem 1<<31 == 1<<63 == Integer.MIN_VALUE (protoze dvojkovy doplnek, ale to uz taky asi neni zapotrebi dneska znat :)

Naproti tomu zdanlive to stejne s longy vypada jinak 1L<<31 != 1L<<63, tam dostanes Integer.MIN_VALUE a ve druhem pripade Long.MIN_VALUE.

Btw by me fakt zajimalo, jestli se toto jeste na SS/VS uci, tj. dvojkovy doplnek, proc funguje, jak funguje atd. My to pocitali na papire, byla to docela sranda a navic v podstate dobre znamky za "nic".
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 09. 09. 2016, 10:38:34
protoze dvojkovy doplnek, ale to uz taky asi neni zapotrebi dneska znat :)
tak samozřejmě, na to jsou dneska optimalizované frameworky, zalez kam geologicky patříš dinosaure
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: franto 09. 09. 2016, 10:55:01
kokoti uz tady nespamujte. delejte neco uzitecnyho. co kdyby jsme zalozili vlastni forum, ktere by bylo na urovni?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Ivan Nový 09. 09. 2016, 12:00:28
protoze dvojkovy doplnek, ale to uz taky asi neni zapotrebi dneska znat :)
tak samozřejmě, na to jsou dneska optimalizované frameworky, zalez kam geologicky patříš dinosaure
Dnes je trendy pure, pure css (bez js), pure javascript (bez jquery), ...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 12:11:08
Btw by me fakt zajimalo, jestli se toto jeste na SS/VS uci, tj. dvojkovy doplnek, proc funguje, jak funguje atd. My to pocitali na papire, byla to docela sranda a navic v podstate dobre znamky za "nic".

Na SŠ se učí nejen dvojkový doplněk, ale i IEEE 754.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 12:15:01
protoze dvojkovy doplnek, ale to uz taky asi neni zapotrebi dneska znat :)
tak samozřejmě, na to jsou dneska optimalizované frameworky, zalez kam geologicky patříš dinosaure
Dnes je trendy pure, pure css (bez js), pure javascript (bez jquery), ...

Zapomněl jsi na pure PHP, které používám.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 12:36:37
kokoti uz tady nespamujte. delejte neco uzitecnyho. co kdyby jsme zalozili vlastni forum, ktere by bylo na urovni?
Ne, fórum se nezakládá, ale musí se naprogramovat. Vše co bylo v minulosti uděláno je špatně a bylo by dobré si to udělat po svém a dokonale. Kdo do toho jde? :D By mě zajímalo, na čem by to ztroskotalo, ale předpokládám, že už na výběru jazyka :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: franto 09. 09. 2016, 12:37:28
+1 :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 13:08:01
Btw by me fakt zajimalo, jestli se toto jeste na SS/VS uci, tj. dvojkovy doplnek, proc funguje, jak funguje atd. My to pocitali na papire, byla to docela sranda a navic v podstate dobre znamky za "nic".

Na SŠ se učí nejen dvojkový doplněk, ale i IEEE 754.

Aj my sme sa to ucili na vysokej. Boli to znamky za nic, ale pravdu povediac vzdy mi to vyleti z hlavy a musim si to zopakovat, ked to potrebujem. Uz to nepouzivam denne.

O.T. Zaujimava zbierka low level hackov z casov PDP-11 je v tejto knizke http://www.hackersdelight.org/
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 13:16:48
Samozřejmě pokud umocňuješ a posouváš celým číslem. Pro reálný exponent to nemá smysl porovnávat.

Takže podle tebe je tohle ekvivalentní? V klidu by jsi vyměnil foo za bar?
Kód: [Vybrat]
def foo(x):
    return x << 2
def bar(x):
    return x * 4

Na blbce jako ty už nebudu reagovat. Kde jsem psal něco o násobení?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 13:38:54
Na blbce jako ty už nebudu reagovat. Kde jsem psal něco o násobení?

Argumenty ti už došly, že? Takže speciálně pro tebe:
Kód: [Vybrat]
def foo(x):
    return 1 << x
def bar(x):
    return 2 ** x
Je to ekvivalentní? Můžeš vyměnit foo za bar, jak tady celou dobu tvrdíš?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 13:43:48
Je to ekvivalentní? Můžeš vyměnit foo za bar, jak tady celou dobu tvrdíš?
Může. Stejně jako může každej vyměnit cokoliv za cokoliv jinýho. Programátor má tu moc udělat z 1+1 třeba 3 a nikdo mu v tom nezabrání. Otázkou spíš je, jestli je to tak správně a jestli to k něčemu bude.
Název: Re:(
Přispěvatel: gl 09. 09. 2016, 13:51:10
A ke zpracování signálů na jednom řádku - mezi zpracování signálů se dá započítat třeba FIR filtr 1. řádu u ADC na potlačení šumu.

Třeba derivační článek xn+1 = 7/8*xn + 1/8*a se napíše v C v přerušení 12b ADC takto:

Kód: [Vybrat]

volatile uint16_t x = 0;

void ADC_ISR(void) {
  x = ((x << 3) - x + ADC_VALUE) >> 3;
}

Třeba u ARMu s barrel shifterem je to velice efektivní metoda. Jenom vědět, jak na to bez násobení a floatů.

Python nedělám, ale pokud by chtěl stejně filtrovat data, tak princip bude pořád stejný. A taky se to asi vejde na jednu lajnu...

v Pythonu na běžném procesoru je IMHO

Kód: [Vybrat]
x = (x*7 + ADC_VALUE)//8

stejně rychlé a je to přesnější přepis toho vzorce. Snáz se to čte.

A to, že je to stejně rychlý, jsi vzal kde? Na (8x-x) potřebuješ jeden shift o tři bity (u ARMu barrel shifter) a jeden rozdíl. To jsou dvě instrukce a stačí ti dva registry CPU. Pro násobení sedmi potřebuješ 3x shift o 1b a 3x součet a pravděpodobně si to vezme i jeden registr procesoru navíc. Takže samotná operace, pokud to kompilátor nepřevede na 8x-x, je 3x pomalejší. A pokud to vezme jako obecný násobení 16x16->32 bez HW násobičky, tak je to dokonce 16x pomalejší. Ve zpracování v časově kritickým přerušení nebo na větším objemu dat je to sakra poznat.

Kolega jednou dělal něco v C# na x86_64 a použil knihovní funkce. Přechrchlání dat za cca 2,5 minuty.
Vyhodil knihovní funkce, použil vnitřek (s floatama) přímo. Stáhl to na 80s.
Přešel na integer, byl na 20s.
Po úpravě konstant tak, aby to byly mocniny dvojky nebo maximálně dvě jedničky v konstantě (kompilátor mohl používat shifty) se dostal na 3,5s.

Kód: [Vybrat]
>>> timeit("""x=0\nfor i in range(10000):x = ((x << 3) - x + 1) >> 3""", number=10000)
21.526970521983458

>>> timeit("""x=0\nfor i in range(10000):x = (x*7 + 1)//8""", number=10000)
13.707707367982948

za ADC_VALUE jsem dosadil 1. Asi to není moc vypovídající, ale verze s posuny mi vyšla dvakrát pomalejší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 13:57:05
Na blbce jako ty už nebudu reagovat. Kde jsem psal něco o násobení?

Argumenty ti už došly, že? Takže speciálně pro tebe:
Kód: [Vybrat]
def foo(x):
    return 1 << x
def bar(x):
    return 2 ** x
Je to ekvivalentní? Můžeš vyměnit foo za bar, jak tady celou dobu tvrdíš?

Ano můžu. Pro celočíselné x to vrací vždy stejný výsledek.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 14:06:02
No jo, to je mi ale překvapení... já se tedy k těm bechmarkům taky přidám a zkusíme použít posun v takovém případě, aby měl opravdu smysl a nemusel kvůli tomu dělat dvě operace místo jedné, ju?

Kód: [Vybrat]
>>> timeit("""x=0\nfor i in range(10000):x = ((x << 3) + 1) >> 3""", number=10000)
15.1547691822052
>>> timeit("""x=0\nfor i in range(10000):x = ((x * 8) + 1)//8""", number=10000)
20.367625951766968

Týýý jo, to jsem nečekal :O :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 14:07:15
Kód: [Vybrat]
>>> timeit('2 ** 10',number=10**9)
22.888786771014566
>>> timeit('1 << 10',number=10**9)
22.891730467992602
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 14:08:39
Kód: [Vybrat]
>>> timeit('2 ** 10',number=10**9)
22.888786771014566
>>> timeit('1 << 10',number=10**9)
22.891730467992602
nečekáš, že to něco opravdu počítá, že ne? :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 14:13:21
Kód: [Vybrat]
>>> timeit('x=2;x ** 10',number=10**8)
55.42527198791504
>>> timeit('x=1;x << 10',number=10**8)
15.809034824371338

edit, omlouvám se, server něco v té době dělal, toto je přiměřenější výsledek:

Kód: [Vybrat]
>>> timeit('x=2;x ** 10',number=10**8)
18.263038873672485
>>> timeit('x=1;x << 10',number=10**8)
8.662003993988037
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 14:15:25
Ano můžu. Pro celočíselné x to vrací vždy stejný výsledek.

Ne nemůžeš, protože nevíš, jakého je x typu. Stejnou chybu jsi udělal už tady a bohužel jsi to pořád nepochopil:
http://forum.root.cz/index.php?topic=13803.msg177901#msg177901
chtěl jsi nahradit
Kód: [Vybrat]
x = np.arange(0, N * (1 << J), dtype=float) / (1 << J)
tímto:
Kód: [Vybrat]
x = np.arange(0, N * 2 ** J, dtype=float) / (2 ** J)

ale to NESMÍŠ, protože ten kód ROZBIJEŠ. Z funkčního kódu jsi udělal kód nefunkční. To J tam chodí zvenku:
https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L96
a MUSÍ to být integer. Tady nejde o žádné optimalizace rychlosti, tady jde o to, že operátory << a ** NELZE jen tak zaměňovat. Zkus se nad tím prosím zamyslet. Je smutné, když programátor rozbije fukční kód jen proto, že něco nepochopil.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 14:16:02
Kód: [Vybrat]
>>> timeit('x=2;x ** 10',number=10**8)
55.42527198791504
>>> timeit('x=1;x << 10',number=10**8)
15.809034824371338

Bavíme se o speciálním případu, 2 ** x a 1 << x. Spíš by mě zajímal reálný kód, kde na rychlosti téhle operace záleží.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 14:18:59
Ano můžu. Pro celočíselné x to vrací vždy stejný výsledek.

Ne nemůžeš, protože nevíš, jakého je x typu. Stejnou chybu jsi udělal už tady a bohužel jsi to pořád nepochopil:
http://forum.root.cz/index.php?topic=13803.msg177901#msg177901
chtěl jsi nahradit
Kód: [Vybrat]
x = np.arange(0, N * (1 << J), dtype=float) / (1 << J)
tímto:
Kód: [Vybrat]
x = np.arange(0, N * 2 ** J, dtype=float) / (2 ** J)

ale to NESMÍŠ, protože ten kód ROZBIJEŠ. Z funkčního kódu jsi udělal kód nefunkční. To J tam chodí zvenku:
https://github.com/scipy/scipy/blob/master/scipy/signal/wavelets.py#L96
a MUSÍ to být integer. Tady nejde o žádné optimalizace rychlosti, tady jde o to, že operátory << a ** NELZE jen tak zaměňovat. Zkus se nad tím prosím zamyslet. Je smutné, když programátor rozbije fukční kód jen proto, že něco nepochopil.

Takže potřebuješ i speciální operátor +, který bere jen celá čísla? Pokud potřebuješ kontrolovat typ, máš jiné možnosti.

Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 14:22:16
Takže potřebuješ i speciální operátor +, který bere jen celá čísla? Pokud potřebuješ kontrolovat typ, máš jiné možnosti.

Nepotřebuju, + je definováno jak pro float tak pro integer. Bitový posun je definovaný jen pro integer. Čemu na tom pořád nerozumíš? Pokusím se to vysvětlit nějak jinak...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 09. 09. 2016, 14:26:14
docela by mě zajímalo, jak se to přihodilo, že se diskuze točí prakticky výhradně kolem použití posunu doleva pro optimalizaci násobení 2**n
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 14:29:33
Přesně :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 14:33:19
docela by mě zajímalo, jak se to přihodilo, že se diskuze točí prakticky výhradně kolem použití posunu doleva pro optimalizaci násobení 2**n

Protože jediná ukázka reálného kódu, kterou tu někdo poslal, používala << pro výpočet mocniny dvou u nějaké hodnoty. Jen jednou za celé volání funkce. Podle místních expertů je to veledůležitá optimalizace.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 14:34:29
docela by mě zajímalo, jak se to přihodilo, že se diskuze točí prakticky výhradně kolem použití posunu doleva pro optimalizaci násobení 2**n

Díváš se na to úplně opačně. Operátor logického posunu se v pythonu nepoužívá pro optimalizaci 2**n. V pythonu to nemá žádný smysl, protože je obojí stejně rychlé. Operátor logického posunu se v pythonu používá, protože dělá něco jiného než 2**n. Kdyby dělal to stejné, nemělo by smysl mít dva různé operátory. Je potřeba umět rozhodnout, kdy a na co se má který operátor použít. Tento thread dokazuje, že to zjevně není triviální problém a spousta lidí s tím má potíže...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 14:35:56
Kód: [Vybrat]
>>> timeit('x=2;x ** 10',number=10**8)
55.42527198791504
>>> timeit('x=1;x << 10',number=10**8)
15.809034824371338

Bavíme se o speciálním případu, 2 ** x a 1 << x. Spíš by mě zajímal reálný kód, kde na rychlosti téhle operace záleží.

Asi bych se nerozhodoval kvůli rychlosti, ale kvůli sémantice. Někdy potřebuji násobení nebo umocňování, jindy bitový posun.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 14:39:12
Asi bych se nerozhodoval kvůli rychlosti, ale kvůli sémantice. Někdy potřebuji násobení nebo umocňování, jindy bitový posun.
Přesně tak.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 09. 09. 2016, 14:39:35
docela by mě zajímalo, jak se to přihodilo, že se diskuze točí prakticky výhradně kolem použití posunu doleva pro optimalizaci násobení 2**n

Díváš se na to úplně opačně. Operátor logického posunu se v pythonu nepoužívá pro optimalizaci 2**n. V pythonu to nemá žádný smysl, protože je obojí stejně rychlé. Operátor logického posunu se v pythonu používá, protože dělá něco jiného než 2**n. Kdyby dělal to stejné, nemělo by smysl mít dva různé operátory. Je potřeba umět rozhodnout, kdy a na co se má který operátor použít. Tento thread dokazuje, že to zjevně není triviální problém a spousta lidí s tím má potíže...
to jste jen jinými slovy popsal to na co jsem upozorňoval, bitové operace mají úplně jiný smysl než pochybnou optimalizaci, někdo tu poukazoval na bitové pole v pythonu a já jsem zmiňoval třeba base64
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 14:41:08
docela by mě zajímalo, jak se to přihodilo, že se diskuze točí prakticky výhradně kolem použití posunu doleva pro optimalizaci násobení 2**n

Díváš se na to úplně opačně. Operátor logického posunu se v pythonu nepoužívá pro optimalizaci 2**n. V pythonu to nemá žádný smysl, protože je obojí stejně rychlé. Operátor logického posunu se v pythonu používá, protože dělá něco jiného než 2**n. Kdyby dělal to stejné, nemělo by smysl mít dva různé operátory. Je potřeba umět rozhodnout, kdy a na co se má který operátor použít. Tento thread dokazuje, že to zjevně není triviální problém a spousta lidí s tím má potíže...

Pokud chceš posouvat, použiješ posun. Pokud chceš spočítat mocninu 2, můžeš použít umocňování i posun. Posun je asi rychlejší, umocňování je explicitnější a pro přepis matematického vzorce IMHO vhodnější.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 14:43:24
Teda pánové, před pár dny jsem zahlídl tohle nové vlákno, ve kterém si tazatel postěžoval na vlastní neznalost bitových operací a přitom se nazval programátorem ;D. Hned mu na to odpověděli, jak se to dá vyřešit jednoduše v hlavě (a to se to dá řešit i jinak než klasickým x * 2 ** y), tak jsem si řekl, no jo, další patlal, co si myslí, že když umí pár věcí v nějakém vyšším programovacím jazyce, že je programátor, takových jsem už zažil hromady. Buď se poučí, má na to být programátorem a vyjde si na start cesty programátora a za 10 let se ohlídne a poděkuje za životní lekci v době, kdy byl tak naivní, že si říkal programátor nebo to vzdá, protože si uvědomí, že na to nemá. C'est la vie!

Že se z toho, ale stane taková dlouhá diskuze a najde se taková hromada patlalů, schopných obhajovat vlastní blbost a neznalost jako výhodu, to bych nečekal, obzvlášť, když si ještě ve své hlouposti dokáží otevírat chlebárny na ty, co to umí a chápou proč tyhle operátory i vyšší programovací jazyky mají, protože vědí, že základy bitových operací a booleovy algebry jsou pro programátora absolutní nutností a přes to nejede vlak ať programuje v jakémkoli jazyce, stejně jako třeba převody z dvojkové soustavy do osmičkové, desítkové, šestnáctkové a zpět z hlavy. Protože s booleovou algebrou či bitovými/binárními operacemi se totiž každý programátor potýká vlastně u každé podmínky, bez ohledu o jaký programovací jazyk jde. Na (momentálním) konci vlákna dokonce znalí ukazují, že i ve vyšších programovacích jazycích jsou bitové posuny daleko rychlejší než jejich náhrada např. násobením či mocninami. Důvody zazněly v diskuzi víckrát, je zbyčné je opakovat.

A pro ty co to pořád nechápou a myslí si, že jejich neznalost je v pořádku mám principiálně stejný příklad:

Operace násobení se taky dá nahradit sčítáním ve smyčce, to ale to neznamená, že násobení nemusím znát a že bych měl násobit takovým kravským způsobem. To samé se dá říct o dělení (odečítání) a dalších matematických či jiných operacích. Doučte se a raději nedávejte na odiv svou blbost, podivuhodná sice je, ale ne tak, jak si vy myslíte 8)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 14:47:58
kokoti uz tady nespamujte. delejte neco uzitecnyho. co kdyby jsme zalozili vlastni forum, ktere by bylo na urovni?
Ne, fórum se nezakládá, ale musí se naprogramovat. Vše co bylo v minulosti uděláno je špatně a bylo by dobré si to udělat po svém a dokonale. Kdo do toho jde? :D By mě zajímalo, na čem by to ztroskotalo, ale předpokládám, že už na výběru jazyka :D

Samozrejme je potreba vybrat predevsim jazyk "novy" a "moderni", tedy BEZ bitovych operaci a podobnych veci z doby kamenne :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 14:50:34
Pokud chceš posouvat, použiješ posun. Pokud chceš spočítat mocninu 2, můžeš použít umocňování i posun. Posun je asi rychlejší, umocňování je explicitnější a pro přepis matematického vzorce IMHO vhodnější.

Posun je výpočet mocniny dvou. Ale NEMŮŽEŠ je libovolně zaměňovat, protože ty operátory dělají úplně jinou matematickou operaci. Jeden z těch operátorů je definovaný jen na integerech a druhý na floatech (i integerech). Občas ty operátory dávají stejné výsledky, ale vypočítají se úplně jinou metodou. Že je v pythonu nějaká optimalizace pro 2**N kde N je integer je irelevantní. Jsou to jiné operátory s jinou funkcí a chovají se i navenek jinak.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 14:58:30
kokoti uz tady nespamujte. delejte neco uzitecnyho. co kdyby jsme zalozili vlastni forum, ktere by bylo na urovni?
Ne, fórum se nezakládá, ale musí se naprogramovat. Vše co bylo v minulosti uděláno je špatně a bylo by dobré si to udělat po svém a dokonale. Kdo do toho jde? :D By mě zajímalo, na čem by to ztroskotalo, ale předpokládám, že už na výběru jazyka :D

Samozrejme je potreba vybrat predevsim jazyk "novy" a "moderni", tedy BEZ bitovych operaci a podobnych veci z doby kamenne :)

Obávám se, že většina nových a moderních jazyků bitové operace má bitové operace implementovány. Nemá smysl je diskvalifikovat kvůli této podmínce.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 15:00:42
Pokud chceš posouvat, použiješ posun. Pokud chceš spočítat mocninu 2, můžeš použít umocňování i posun. Posun je asi rychlejší, umocňování je explicitnější a pro přepis matematického vzorce IMHO vhodnější.

Posun je výpočet mocniny dvou. Ale NEMŮŽEŠ je libovolně zaměňovat, protože ty operátory dělají úplně jinou matematickou operaci. Jeden z těch operátorů je definovaný jen na integerech a druhý na floatech (i integerech). Občas ty operátory dávají stejné výsledky, ale vypočítají se úplně jinou metodou. Že je v pythonu nějaká optimalizace pro 2**N kde N je integer je irelevantní. Jsou to jiné operátory s jinou funkcí a chovají se i navenek jinak.

Naposledy. Pokud přepisuji nějaký vzorec, kde vystupuje mocnina dvou, tak požiju mocninu dvou i pokud by měla celočíselný exponent. Klidně se pohoršuj. Když někdo použije posun jedničky, vůbec mi to nevadí. Nejsem fašista jako ty. Abych se pořád pohoršoval nad cizím kódem. Mě zajímá, jestli to funguje. Pro typovou kontrolu používám vhodnější nástroje.

Posun má spoustu jiných použití než výpočet mocniny dvou. Tam ho samozřejmě použiju.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 15:02:47
Obávám se, že většina nových a moderních jazyků bitové operace má bitové operace implementovány. Nemá smysl je diskvalifikovat kvůli této podmínce.

Otázka je, jestli by vůbec něco smysluplného v čem programovat při této podmínce zbylo :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:04:53
Naposledy. Pokud přepisuji nějaký vzorec, kde vystupuje mocnina dvou, tak požiju mocninu dvou i pokud by měla celočíselný exponent. Klidně se pohoršuj. Když někdo použije posun jedničky, vůbec mi to nevadí. Nejsem fašista jako ty. Abych se pořád pohoršoval nad cizím kódem. Mě zajímá, jestli to funguje. Pro typovou kontrolu používám vhodnější nástroje.

Taky už naposledy. Nepohoršuju se nad cizím kódem, pohoršuju se nad tím, že rozbiješ fungující kód a ještě to obhajuješ. I mě zajímá, jestli to funguje, takže se ti snažím vysvětlit, že bys kód rozbíjet neměl a měl bys operátory << a ** používat správně.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 15:05:00
Tento thread dokazuje, že to zjevně není triviální problém a spousta lidí s tím má potíže...

Triviální to je, jen zdejší lopaty nechtějí pochopit, že vývojáře vůbec nezajímá.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:07:28
Triviální to je, jen zdejší lopaty nechtějí pochopit, že vývojáře vůbec nezajímá.
Vývojáře to zajímá, lopaty to nezajímá.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 15:08:58
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:10:40
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 15:12:05
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Když někdo umí víc, tak pro normálního je to důvod pro jeho obdiv nebo výzvou k dohnání ve znalostech. Ubožák se místo toho snaží z jeho větších znalostí udělat něco méně a poplivat to. I takoví jsou mezi námi ;D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 15:20:50
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

Ah to porovnavanie doublov cez  "!='' .


(https://2ch.hk/diy/src/86974/14228593160810.jpg)

Ked nadavat javamanovi do lopat, tak aspon menej hlupo.

Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 15:22:08
kokoti uz tady nespamujte. delejte neco uzitecnyho. co kdyby jsme zalozili vlastni forum, ktere by bylo na urovni?
Ne, fórum se nezakládá, ale musí se naprogramovat. Vše co bylo v minulosti uděláno je špatně a bylo by dobré si to udělat po svém a dokonale. Kdo do toho jde? :D By mě zajímalo, na čem by to ztroskotalo, ale předpokládám, že už na výběru jazyka :D

Samozrejme je potreba vybrat predevsim jazyk "novy" a "moderni", tedy BEZ bitovych operaci a podobnych veci z doby kamenne :)

Obávám se, že většina nových a moderních jazyků bitové operace má bitové operace implementovány. Nemá smysl je diskvalifikovat kvůli této podmínce.

No ale potom se spousta lidi dostane do deadlocku, protoze tvrdi:
1) bitove operatory v jazyku XYZ nemusim znat protoze.... (doplnit neco o dinosaurech a knihovnach, FE...)
2) znam jazyk XYZ
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:23:48
Ah to porovnavanie doublov cez  "!='' .
Oprav to, vytvoř elementární příklad, který bude lepší. Rád se na něj podívám.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 09. 09. 2016, 15:24:25
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

Ah to porovnavanie doublov cez  "!='' .


(https://2ch.hk/diy/src/86974/14228593160810.jpg)

Ked nadavat javamanovi do lopat, tak aspon menej hlupo.
nejde 2 na celé číslo v iee754 vyjádřit přesně?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:27:39
nejde 2 na celé číslo v iee754 vyjádřit přesně?
Jde. Nicméně i tak má ten kód svoje problémy. Balki se akorát chytil elementárního příkladu, který se snažil být co nejjednodušší. Tak jsem zvědavý, jak to udělá lepší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 15:30:30
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

Ah to porovnavanie doublov cez  "!='' .


(https://2ch.hk/diy/src/86974/14228593160810.jpg)

Ked nadavat javamanovi do lopat, tak aspon menej hlupo.
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 15:34:50
nejde 2 na celé číslo v iee754 vyjádřit přesně?
Jde. Nicméně i tak má ten kód svoje problémy. Balki se akorát chytil elementárního příkladu, který se snažil být co nejjednodušší. Tak jsem zvědavý, jak to udělá lepší.

BigInteger ma metodu pow a metodu equals. Tak by som to zriesil cez to.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:37:09
Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...
A kde se v tom mém kódu takové operace dělají? Může je dělat jen Math.pow, což je černá skříňka, nicméně pro potřeby toho elementárního příkladu funguje dobře.

Dost ale řečí, kritizovat umí každý, dej sem svůj kód, který bude lepší a pořád dostatečně jednoduchý.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 15:41:18
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 15:47:49
nejde 2 na celé číslo v iee754 vyjádřit přesně?
Jde. Nicméně i tak má ten kód svoje problémy. Balki se akorát chytil elementárního příkladu, který se snažil být co nejjednodušší. Tak jsem zvědavý, jak to udělá lepší.

BigInteger ma metodu pow a metodu equals. Tak by som to zriesil cez to.

Kód: [Vybrat]
import java.math.BigInteger;

class Javaman
{
    public static void main(String[] args)
    {
        if (!pow(62).equals(shift(62)))
        {
            System.out.println("javaman je borec");
        }
        if (!pow(63).equals(shift(63)))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static BigInteger pow(long exponent)
    {
        BigInteger dva = BigInteger.valueOf(2);
        return dva.pow((int)exponent);
    }

    public static BigInteger shift(long exponent)
    {

        long hovno = 1L << exponent;
        return BigInteger.valueOf(hovno);

    }
}

Ospravedlnujem sa za ten casting long na int, no furt lepsie, nez porovnavat double.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 15:53:24
Ospravedlnujem sa za ten casting long na int, no furt lepsie, nez porovnavat double.
Takže casting tam máš, jediné čeho ses zbavil je porovnání doublů, které se dají reprezentovat přesně a máš tam konstrukce typu:
Kód: [Vybrat]
f (!pow(62).equals(shift(62)))
místo
Kód: [Vybrat]
if (pow(62) != shift(62))

No nevím, podle vkusu každého soudruha. Podle mě by měly být elementární příklady co nejjednodušší.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 15:57:26
Už mě to asi přestává bavit pořád dokola.

Nikoho do bitových operací nenutím, jen si myslím, že patří k základním znalostem každého člověka, motajícího se kolem IT.

Kde je použít a kde je nepoužít, to záleží z velké části na zkušenostech, ne vždy jsou vhodné, ne vždy udělají to, co od nich motyka očekává, ale to už je na posouzení každého.

Pokud potřebuju celočíselnou hodnotu vynásobit mocninou dvojky, většinou to automaticky řeším posunem a zápis x*8 a x<<3 vidím úplně stejně, aniž bych nad tím musel přemýšlet, ale to je dáno několika lety assembleru a nemusí to tak mít každý.

Realita je taková, že pokud se nesnažíme vymýšlet syntetické příklady, kam bitové operace lámeme přes koleno, tak většinou prostě posun JE rychlejší, ale pokud se operace provádí jednou za 10 minut, když někdo otevře nějakou stránku, tak je to úplně jedno a nepřipadne mi ani na jedné variantě vůbec nic divnýho.

Pokud operaci provádím ve smyčce na místě, kde je rychlost kritická, pak se podle mě není o čem bavit a každý, kdo něco takového má potřebu někdy provádět, tak to prostě musí zvládnout ve tři ráno po tahu. Ostatní musí být schopní takový kód s určitým úsilím přečíst a když nejsou, tak jsou to buď lopaty, motyky, nebo javaman.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 15:57:36
Ospravedlnujem sa za ten casting long na int, no furt lepsie, nez porovnavat double.
Takže casting tam máš, jediné čeho ses zbavil je porovnání doublů, které se dají reprezentovat přesně a máš tam konstrukce typu:
Kód: [Vybrat]
f (!pow(62).equals(shift(62)))
místo
Kód: [Vybrat]
if (pow(62) != shift(62))

No nevím, podle vkusu každého soudruha. Podle mě by měly být elementární příklady co nejjednodušší.

Double sa neporovnavaju != , bodka.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 15:58:50
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.

Napada mi z fleku acos(cos(1)) , toto nebude presne ani v pythone.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 16:02:18
Double sa neporovnavaju != , bodka.

Někdy to jde a ta operace je naprosto přesně definovaná a bezpečná. Pokud se toho bojíš a nedokážeš domyslet kdy, tak si je neporovnávej, mně je to jedno. Mimochodem ten tvůj příklad tak úplně nefunguje:
Kód: [Vybrat]
return dva.pow((int)exponent);
pow na BigIntu není definované pro záporný exponent. Ten můj příklad funguje i pro záporný exponent. Oprav to.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 16:04:05
Double sa neporovnavaju != , bodka.

Někdy to jde a ta operace je naprosto přesně definovaná a bezpečná. Pokud se toho bojíš a nedokážeš domyslet kdy, tak si je neporovnávej, mně je to jedno. Mimochodem ten tvůj příklad tak úplně nefunguje:
Kód: [Vybrat]
return dva.pow((int)exponent);
pow na BigIntu není definované pro záporný exponent. Ten můj příklad funguje i pro záporný exponent. Oprav to.

Heh, skoda casu.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 16:04:30
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.

Napada mi z fleku acos(cos(1)) , toto nebude presne ani v pythone.

Výsledkem funkce cos(1) není celé číslo. Nesplňuje to tedy vstupní podmínku.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 16:09:11
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.

Napada mi z fleku acos(cos(1)) , toto nebude presne ani v pythone.

Výsledkem funkce cos(1) není celé číslo. Nesplňuje to tedy vstupní podmínku.

No lebo vysledkom operacii je vzdy 2^n...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 16:50:19
Zajímavé... debata o binárních operacích se plynule zvrtla v debatu o neschopnosti posoudit vhodnost libovolného postupu v libovolné situaci. To už si asi děláte srandu, ne? Snad pokud pracuju s celými čísly, tak to dělám tak, aby mi vždy vyšlo celé číslo. Nebo je tu někdo, kdo raději na každou kravinu používá double "pro jistotu", aby náhodou 1+1 nebylo 1.999999999?
A co by pánové řekli na špeky typu:

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

a

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x*y)/10;

Závorky jsou tam navíc, vím o tom, ale aby se někdo nemusel učit priority operací, který nikdy předtím nepotřeboval, tak jsem je tam pro názornost dal.

A jakej bude asi výsledek?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 17:01:57
Heh, skoda casu.
Takže to shrnem, měl do být elementární příklad a dodal jsi kód, který je delší, složitější, méně přehledný a nefunguje (a to tak, že vůbec) pro záporný exponent. Gratuluji. Opravdu škoda času.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:02:31
Zajímavé... debata o binárních operacích se plynule zvrtla v debatu o neschopnosti posoudit vhodnost libovolného postupu v libovolné situaci. To už si asi děláte srandu, ne? Snad pokud pracuju s celými čísly, tak to dělám tak, aby mi vždy vyšlo celé číslo. Nebo je tu někdo, kdo raději na každou kravinu používá double "pro jistotu", aby náhodou 1+1 nebylo 1.999999999?
A co by pánové řekli na špeky typu:

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

a

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x*y)/10;

Závorky jsou tam navíc, vím o tom, ale aby se někdo nemusel učit priority operací, který nikdy předtím nepotřeboval, tak jsem je tam pro názornost dal.

A jakej bude asi výsledek?

Prve bude z=0.

To druhe je nejaky chytak, tam mi vychaza z=5.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:04:53
Heh, skoda casu.
Takže to shrnem, měl do být elementární příklad a dodal jsi kód, který je delší, složitější, méně přehledný a nefunguje (a to tak, že vůbec) pro záporný exponent. Gratuluji. Opravdu škoda času.

Dobre ze ta nepoznam, ty budes nejaky blbsi.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 17:09:39
A co by pánové řekli na špeky typu:
Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

Na tomhle si vylámalo zuby už dost lidí, typicky při programování grafického prvku typu teploměr.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:12:06
A co by pánové řekli na špeky typu:
Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

Na tomhle si vylámalo zuby už dost lidí, typicky při programování grafického prvku typu teploměr.

Na tomto si vylamal zuby uz snad kazdy.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 17:15:37
Dobre ze ta nepoznam, ty budes nejaky blbsi.
Čemu nerozumíš na větě tvůj kód nefunguje pro záporný exponent? Čekal jsem, že to opravíš, ale místo toho se zmůžeš jenom na nadávky...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:16:30
Dobre ze ta nepoznam, ty budes nejaky blbsi.
Čemu nerozumíš na větě tvůj kód nefunguje pro záporný exponent? Čekal jsem, že to opravíš, ale místo toho se zmůžeš jenom na nadávky...

v priklade nebol zaporny exponent, ked to chces po tvojom.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: v 09. 09. 2016, 17:16:49
Dobre ze ta nepoznam, ty budes nejaky blbsi.
Čemu nerozumíš na větě tvůj kód nefunguje pro záporný exponent? Čekal jsem, že to opravíš, ale místo toho se zmůžeš jenom na nadávky...
použití záporného exponentu z vašeho příkladu neplyne, pokud chcete použití zobecnit, tak platí i balkiho argument proti použití !=
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 17:22:33
použití záporného exponentu z vašeho příkladu neplyne, pokud chcete použití zobecnit, tak platí i balkiho argument proti použití !=
Balkiho argument neplatí, můj příklad funguje s != i pro záporný exponent. Můj příklad je prostě obecnější a přehlednější. Ano, má to chyby, ale je to elementární příklad, má bý to nejjednodušší. Balkiho příklad je nepřehledný a nefunguje.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:31:25
použití záporného exponentu z vašeho příkladu neplyne, pokud chcete použití zobecnit, tak platí i balkiho argument proti použití !=
Balkiho argument neplatí, můj příklad funguje s != i pro záporný exponent. Můj příklad je prostě obecnější a přehlednější. Ano, má to chyby, ale je to elementární příklad, má bý to nejjednodušší. Balkiho příklad je nepřehledný a nefunguje.

Navrhujem karieru v politike.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 17:49:20
Zajímavé... debata o binárních operacích se plynule zvrtla v debatu o neschopnosti posoudit vhodnost libovolného postupu v libovolné situaci. To už si asi děláte srandu, ne? Snad pokud pracuju s celými čísly, tak to dělám tak, aby mi vždy vyšlo celé číslo. Nebo je tu někdo, kdo raději na každou kravinu používá double "pro jistotu", aby náhodou 1+1 nebylo 1.999999999?
A co by pánové řekli na špeky typu:

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

a

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x*y)/10;

Závorky jsou tam navíc, vím o tom, ale aby se někdo nemusel učit priority operací, který nikdy předtím nepotřeboval, tak jsem je tam pro názornost dal.

A jakej bude asi výsledek?

Prve bude z=0.

To druhe je nejaky chytak, tam mi vychaza z=5.

Mi to vychází stejně a jako chyták mi to nepřijde. Prostě jen musíte vědět, jak se zachází při matematických operacích s celými čísly.

A ano, ty závorky jsou tam zcela zbytečné a jestli s tím někdo má bez závorek problém, je to čistě jeho problém s jeho neznalostí :-)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:58:31
Zajímavé... debata o binárních operacích se plynule zvrtla v debatu o neschopnosti posoudit vhodnost libovolného postupu v libovolné situaci. To už si asi děláte srandu, ne? Snad pokud pracuju s celými čísly, tak to dělám tak, aby mi vždy vyšlo celé číslo. Nebo je tu někdo, kdo raději na každou kravinu používá double "pro jistotu", aby náhodou 1+1 nebylo 1.999999999?
A co by pánové řekli na špeky typu:

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

a

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x*y)/10;

Závorky jsou tam navíc, vím o tom, ale aby se někdo nemusel učit priority operací, který nikdy předtím nepotřeboval, tak jsem je tam pro názornost dal.

A jakej bude asi výsledek?

Prve bude z=0.

To druhe je nejaky chytak, tam mi vychaza z=5.

Mi to vychází stejně a jako chyták mi to nepřijde. Prostě jen musíte vědět, jak se zachází při matematických operacích s celými čísly.

A ano, ty závorky jsou tam zcela zbytečné a jestli s tím někdo má bez závorek problém, je to čistě jeho problém s jeho neznalostí :-)

Pri  z = 10 / 2 / 5 by som si nebol taky isty. Delenie ma prednost, co teraz :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 17:59:44
Zajímavé... debata o binárních operacích se plynule zvrtla v debatu o neschopnosti posoudit vhodnost libovolného postupu v libovolné situaci. To už si asi děláte srandu, ne? Snad pokud pracuju s celými čísly, tak to dělám tak, aby mi vždy vyšlo celé číslo. Nebo je tu někdo, kdo raději na každou kravinu používá double "pro jistotu", aby náhodou 1+1 nebylo 1.999999999?
A co by pánové řekli na špeky typu:

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x/10)*y;

a

Kód: [Vybrat]
int x=5;
int y=10;
int z=(x*y)/10;

Závorky jsou tam navíc, vím o tom, ale aby se někdo nemusel učit priority operací, který nikdy předtím nepotřeboval, tak jsem je tam pro názornost dal.

A jakej bude asi výsledek?

Prve bude z=0.

To druhe je nejaky chytak, tam mi vychaza z=5.

Mi to vychází stejně a jako chyták mi to nepřijde. Prostě jen musíte vědět, jak se zachází při matematických operacích s celými čísly.

A ano, ty závorky jsou tam zcela zbytečné a jestli s tím někdo má bez závorek problém, je to čistě jeho problém s jeho neznalostí :-)

Pri  z = 10 / 2 / 5 by som si nebol taky isty. Delenie ma prednost, co teraz :D

Vlastne to je ten prvy priklad.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 18:16:42
Pri  z = 10 / 2 / 5 by som si nebol taky isty. Delenie ma prednost, co teraz :D

Výraz se vyhodnocuje zleva doprava. Násobení a dělení má stejnou prioritu. z==1.

Prefixový či postfixový zápis to řeší i bez priorit.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gamer 09. 09. 2016, 18:23:09
Citace: balki
Navrhujem karieru v politike.
[/quote

A nějaký technický argument by nebyl?

Abych to odlehčil, do toho tvého kódu se navážím, protože sis honil triko na elementárním přïkladu, který je maximálně osekaný a neřeší okrajové podmínky. Jak vidíš, není tak jednoduché jít s kůží na trh, tvůj kód
má zase jiné problémy. Kdyby ten přïklad měl být robustní, byl by delší a jeho účel (operace << a pow nelze zaměňovat), by se v tom ztrácel.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 18:30:15
Ach jo, klasika. Jak se objeví konkrétní příklad, javouš zmizí a vrátí se až je po všem, aby mohl zase házet lopatou. :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 18:42:25
Citace: balki
Navrhujem karieru v politike.
[/quote

A nějaký technický argument by nebyl?

Abych to odlehčil, do toho tvého kódu se navážím, protože sis honil triko na elementárním přïkladu, který je maximálně osekaný a neřeší okrajové podmínky. Jak vidíš, není tak jednoduché jít s kůží na trh, tvůj kód
má zase jiné problémy. Kdyby ten přïklad měl být robustní, byl by delší a jeho účel (operace << a pow nelze zaměňovat), by se v tom ztrácel.

Mno dobre, ale porovnavat  double "!=" je fuj, to je ako by ste srali v kostole, alebo tak. Za urcitych podmienok sa to tiez moze.

Ja som to vypichol, lebo priklad bol navazka do javamana. :)  Mne bolo jasne, o co ide. Ucelom bolo rypat.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 18:45:26
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.

Scitani odcitani ve chvili, kdy je rozdil exponentu vetsi nez pocet bitu pro mantissu?
Mozna se +- mylim o jeden bit
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 18:46:34
Ach jo, klasika. Jak se objeví konkrétní příklad, javouš zmizí a vrátí se až je po všem, aby mohl zase házet lopatou. :D

Pozoruje, ako to tu hori, sedi za kompom a zerie pukance :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 09. 09. 2016, 18:52:59
Pri  z = 10 / 2 / 5 by som si nebol taky isty. Delenie ma prednost, co teraz :D

Výraz se vyhodnocuje zleva doprava. Násobení a dělení má stejnou prioritu. z==1.

Prefixový či postfixový zápis to řeší i bez priorit.
10/5(1+1)

A teď se předveď ;D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 19:02:13
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.

Scitani odcitani ve chvili, kdy je rozdil exponentu vetsi nez pocet bitu pro mantissu?
Mozna se +- mylim o jeden bit

To jsem si mohl myslet, že přijdeš s těmito limitními stavy. Jasně, v takových případech už mé tvrzení neplatí.

IEEE 754 de facto pracuje s racionálními čísly, u kterých je jmenovatel vždy nějaká mocnina dvou. Při velkých rozdílech mezi exponenty se občas nějaká část informace ztratí.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 19:08:58
Ještě mě napadá jedna věc. Někdo tvrdil, že bitové posuny jsou nepřehledné, ale když se nad tím zamyslíte, jak třeba násobíte deseti z hlavy? Sčítáte číslo desetkrát, nebo jen přidáte nulu?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 19:18:44
Ještě mě napadá jedna věc. Někdo tvrdil, že bitové posuny jsou nepřehledné, ale když se nad tím zamyslíte, jak třeba násobíte deseti z hlavy? Sčítáte číslo desetkrát, nebo jen přidáte nulu?

A jak to násobní deseti zapisuješ?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 19:25:18
Pri  z = 10 / 2 / 5 by som si nebol taky isty. Delenie ma prednost, co teraz :D

Výraz se vyhodnocuje zleva doprava. Násobení a dělení má stejnou prioritu. z==1.

Prefixový či postfixový zápis to řeší i bez priorit.
10/5(1+1)

A teď se předveď ;D

Kód: [Vybrat]
Forth: 10 5 / 1 1 + * . bye
Kód: [Vybrat]
Lisp: (* (/ 10 5) (+ 1 1))
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 19:30:47
Ještě mě napadá jedna věc. Někdo tvrdil, že bitové posuny jsou nepřehledné, ale když se nad tím zamyslíte, jak třeba násobíte deseti z hlavy? Sčítáte číslo desetkrát, nebo jen přidáte nulu?

A jak to násobní deseti zapisuješ?

Při násobení z hlavy se zapisuje až výsledek. Prostě připíšeš nulu nebo posuneš desetinnou čárku.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 19:41:11
Ještě mě napadá jedna věc. Někdo tvrdil, že bitové posuny jsou nepřehledné, ale když se nad tím zamyslíte, jak třeba násobíte deseti z hlavy? Sčítáte číslo desetkrát, nebo jen přidáte nulu?

A jak to násobní deseti zapisuješ?
Většinou jako x<<3+x<<1 (coz bylo mimochodem ještě na 386ce rychlejší, než MUL), ale někdy i jako 3.3333333*x*3, zaleží to na množství alkoholu v krvi :D
Jinak ho nezapisuju nijak, buď řeším něco, co zapsal někdo jiný, nebo píšu rovnou výsledek vypočítány posunem v hlavě. Každopádně tuto operaci předávám osobní neuronové výpočetní jednotce jako posun.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: tisnik 09. 09. 2016, 19:45:13
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

Které? Sčítání, odčítání, násobení a dokonce v mnohých případech i dělení je bezproblémové.

Scitani odcitani ve chvili, kdy je rozdil exponentu vetsi nez pocet bitu pro mantissu?
Mozna se +- mylim o jeden bit

To jsem si mohl myslet, že přijdeš s těmito limitními stavy. Jasně, v takových případech už mé tvrzení neplatí.

IEEE 754 de facto pracuje s racionálními čísly, u kterých je jmenovatel vždy nějaká mocnina dvou. Při velkých rozdílech mezi exponenty se občas nějaká část informace ztratí.

Ja jsem vedel, ze ty to budes vedet, nicmene pro nekoho to muze by dobra lekce (developeri ridiciho systemu Arianne by mohli vypravet :)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 09. 09. 2016, 20:08:38
Pri  z = 10 / 2 / 5 by som si nebol taky isty. Delenie ma prednost, co teraz :D

Výraz se vyhodnocuje zleva doprava. Násobení a dělení má stejnou prioritu. z==1.

Prefixový či postfixový zápis to řeší i bez priorit.
10/5(1+1)

A teď se předveď ;D

Kód: [Vybrat]
Forth: 10 5 / 1 1 + * . bye
Kód: [Vybrat]
Lisp: (* (/ 10 5) (+ 1 1))
Hm, špatně. Dvakrát špatně.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 20:16:04
Ja jsem vedel, ze ty to budes vedet, nicmene pro nekoho to muze by dobra lekce (developeri ridiciho systemu Arianne by mohli vypravet :)

Přesně s tímto jsem se setkal, když jsem si udělal prototyp na metodu Runge-Kutta 4. řádu a zkoušel jsem vliv na výsledek, pokud budu zdvojnásobovat počet kroků. Zpočátku se přesnost zvyšovala, od určitého počtu kroků však začala klesat. Na vině byla samozřejmě nepřesná kumulace kroků h. Po úpravě algoritmu už k tomu nedocházelo.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 20:18:07
10/5(1+1)

A teď se předveď ;D

Kód: [Vybrat]
Forth: 10 5 / 1 1 + * . bye
Kód: [Vybrat]
Lisp: (* (/ 10 5) (+ 1 1))
Hm, špatně. Dvakrát špatně.

V tom případě to máš i ty špatně, protože ve všech případech je správným výsledkem číslo 4.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: balki 09. 09. 2016, 20:25:20
10/5(1+1)

A teď se předveď ;D

Kód: [Vybrat]
Forth: 10 5 / 1 1 + * . bye
Kód: [Vybrat]
Lisp: (* (/ 10 5) (+ 1 1))
Hm, špatně. Dvakrát špatně.

V tom případě to máš i ty špatně, protože ve všech případech je správným výsledkem číslo 4.

Imho syntax error :)  Alebo 2 2.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 20:43:45
Ach jo, klasika. Jak se objeví konkrétní příklad, javouš zmizí a vrátí se až je po všem, aby mohl zase házet lopatou. :D

Tak já vůbec nechápu, co pořád řešíte :D Nikdy jsem to nepotřeboval a lopaty to milují. Nechápu...
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 20:47:51
Ach jo, klasika. Jak se objeví konkrétní příklad, javouš zmizí a vrátí se až je po všem, aby mohl zase házet lopatou. :D

Tak já vůbec nechápu, co pořád řešíte :D Nikdy jsem to nepotřeboval a lopaty to milují. Nechápu...
Děkuju :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 20:53:13
Ale určitě vím, že pokud byste nebyly lopaty, tak 10 stran tohle určitě neřešíte :D Jako asi cool někde u programování švábů, ale za to moc nedostanete. Pořádný vývoj je jinde a platí se i jinak.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 21:02:30
Ale určitě vím, že pokud byste nebyly lopaty, tak 10 stran tohle určitě neřešíte :D Jako asi cool někde u programování švábů, ale za to moc nedostanete. Pořádný vývoj je jinde a platí se i jinak.
Pořádný vývoj vyžaduje vývojáře, kteří pořádně neznají ani jazyk, ani platformu. Tak určitěééé, ještě něco nám řekni :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 21:03:57
Jak ti znalost jazyka udělá architekturu? Jazyk znám, ale ne nějaký píčovinky s posunem.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 21:36:53
Jak ti znalost jazyka udělá architekturu? Jazyk znám, ale ne nějaký píčovinky s posunem.
Aha... a to jsou nějaká obecná pravidla, co je potřeba pro "pořádný" vývoj znát? Nebo je dokonce povinnost něco neznat, aby člověk nebyl motyka?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 21:40:34
To právě nejsou. To si myslí jen lopaty, které jsou už z definice hloupé. Na vývoj se prostě musíš narodit a je úplně jedno, jestli něco znáš. Daleko lepší je pro mě vývojář, který nikdy neprogramoval, než lopata, která "programuje" 15 let v kuse.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 09. 09. 2016, 21:42:24
10/5(1+1)

A teď se předveď ;D

Kód: [Vybrat]
Forth: 10 5 / 1 1 + * . bye
Kód: [Vybrat]
Lisp: (* (/ 10 5) (+ 1 1))
Hm, špatně. Dvakrát špatně.

V tom případě to máš i ty špatně, protože ve všech případech je správným výsledkem číslo 4.
Omyl, 4 je nesprávný výsledek. Ale je možné že to máme blbě oba :o

Tak schválně:
1=1
Proti tomu se asi nedá nic namítat, žejo.
1/1=1
Stále správně, ne?
10/10=1
To by také mělo být v pohodě.
10/(5+5)=1
Trochu houstne atmosféra, ale pořád dobré.
10/5(1+1)=1
Vytýkání před závorku je celkem triviální operace.
A teď podle tebe, pěkně zleva doprava:
2(2)=1
To už vypadá divně.
4=1
A tohle se mi ani trochu nelíbí!
Takže jak, syntax error? ;)

Když si vezmu na pomoc výpočetní techniku, tak tu mám několik kalkulaček kterým 10/5(1+1) vyjde 1, ale když se zadá 10/5x(1+1) tak vypočítají 4. Nebude náhodou právě v tomhle zakopaný pes?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 09. 09. 2016, 21:43:04
Jak ti znalost jazyka udělá architekturu? Jazyk znám, ale ne nějaký píčovinky s posunem.
Přečti si Knutha, woe 8)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: javaman (( 09. 09. 2016, 21:53:58
Jak ti znalost jazyka udělá architekturu? Jazyk znám, ale ne nějaký píčovinky s posunem.
Přečti si Knutha, woe 8)

To je low-level shit, který ti moc u velkých systémů nepomůže :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 21:55:45
Když si vezmu na pomoc výpočetní techniku, tak tu mám několik kalkulaček kterým 10/5(1+1) vyjde 1, ale když se zadá 10/5x(1+1) tak vypočítají 4. Nebude náhodou právě v tomhle zakopaný pes?

Hromada kalkulaček neumí správně prioritu operátorů nebo záleží jak se vzorec vloží :-), v prvním případě to počítají takto:

10
----------
5 * (1+1)

ve druhém takto:

10
--- * (1+1)
 5

což je to samé jako:

10 * (1+1)
-----------
      5

každopádně 10/5(1+1) je při tomhle zápisu správně matematicky 4 - kalkulačka to zjevně při tomhle zápisu pochopí jako to, že 5(1+1) patří k sobě a má při výpočtu prioritu. Aby to vyšlo jedna, muselo by se to zapsat takto: 10/[5(1+1)]. Pak je jedno jestli se na znak násobení za pětkou zapomene nebo ne.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 21:59:02
10/5(1+1)

A teď se předveď ;D

Kód: [Vybrat]
Forth: 10 5 / 1 1 + * . bye
Kód: [Vybrat]
Lisp: (* (/ 10 5) (+ 1 1))
Hm, špatně. Dvakrát špatně.

V tom případě to máš i ty špatně, protože ve všech případech je správným výsledkem číslo 4.
Omyl, 4 je nesprávný výsledek. Ale je možné že to máme blbě oba :o

Tak schválně:
1=1
Proti tomu se asi nedá nic namítat, žejo.
1/1=1
Stále správně, ne?
10/10=1
To by také mělo být v pohodě.
10/(5+5)=1
Trochu houstne atmosféra, ale pořád dobré.
10/5(1+1)=1
Vytýkání před závorku je celkem triviální operace.
A teď podle tebe, pěkně zleva doprava:
2(2)=1
To už vypadá divně.
4=1
A tohle se mi ani trochu nelíbí!
Takže jak, syntax error? ;)

Když si vezmu na pomoc výpočetní techniku, tak tu mám několik kalkulaček kterým 10/5(1+1) vyjde 1, ale když se zadá 10/5x(1+1) tak vypočítají 4. Nebude náhodou právě v tomhle zakopaný pes?

Tu tvojí kalkulačku bych chtěl vidět.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 22:00:07
Jak ti znalost jazyka udělá architekturu? Jazyk znám, ale ne nějaký píčovinky s posunem.
Přečti si Knutha, woe 8)

To je low-level shit, který ti moc u velkých systémů nepomůže :D
Tak konečně nahoď, co jsi tak velkýho udělal. Motyko :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: gl 09. 09. 2016, 22:01:20
Jak ti znalost jazyka udělá architekturu? Jazyk znám, ale ne nějaký píčovinky s posunem.
Přečti si Knutha, woe 8)

To je low-level shit, který ti moc u velkých systémů nepomůže :D

Jakou literaturu doporučuješ?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 22:03:44
Je to 4.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Kit 09. 09. 2016, 22:05:57
Když si vezmu na pomoc výpočetní techniku, tak tu mám několik kalkulaček kterým 10/5(1+1) vyjde 1, ale když se zadá 10/5x(1+1) tak vypočítají 4. Nebude náhodou právě v tomhle zakopaný pes?

Když si vezmu na pomoc kalkulačku, tak mi výraz "10/5(1+1)" nezbaští, neboť je v něm chyba:
Kód: [Vybrat]
10/5(1+1)
(standard_in) 1: syntax error

Když tam vložím znak násobení:
Kód: [Vybrat]
10/5*(1+1)
4
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 22:06:38
Tu tvojí kalkulačku bych chtěl vidět.

To není třeba chodit daleko, v KDE 4:

(https://s16.postimg.org/nul3q6lt1/vypocet1.png) (https://postimg.org/image/ea1h3awgx/)

(https://s16.postimg.org/wqvvu4cf9/vypocet2.png) (https://postimg.org/image/btznpgee9/)
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Tuxik 09. 09. 2016, 22:13:01
Tu tvojí kalkulačku bych chtěl vidět.

To není třeba chodit daleko, v KDE 4:

(https://s16.postimg.org/nul3q6lt1/vypocet1.png) (https://postimg.org/image/ea1h3awgx/)

(https://s16.postimg.org/wqvvu4cf9/vypocet2.png) (https://postimg.org/image/btznpgee9/)
V plasmě 5 to první výraz odmítá spočítat, google tvrdí 4 v obou případech. A google nikdy nelže. :D
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Radovan. 09. 09. 2016, 22:52:54
Tu tvojí kalkulačku bych chtěl vidět.
http://www.catawiki.com/catalog/calculators/manufacturers-brands/casio/2753311-casio-oh-7700g-overhead-projection-unit
http://www.walk-street.org/goods.php?id=1144570265
Té první se na displej vejdou oba ty výpočty i s různými výsledky současně, ale předvést ti to nemůžu, chcíply baterky. Dlouho jsem jí nepoužíval, dneska frčí jiné technologie než Meotar.
Ta druhá byla za 49 u rákosníků, ale kromě trochu horších materiálů je shodná s originálem:
https://www.snapdeal.com/product/casio-fx82ms-2line-display-scientific/629922611106
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: ByCzech 09. 09. 2016, 22:55:10
Tu tvojí kalkulačku bych chtěl vidět.

To není třeba chodit daleko, v KDE 4:

(https://s16.postimg.org/nul3q6lt1/vypocet1.png) (https://postimg.org/image/ea1h3awgx/)

(https://s16.postimg.org/wqvvu4cf9/vypocet2.png) (https://postimg.org/image/btznpgee9/)
V plasmě 5 to první výraz odmítá spočítat, google tvrdí 4 v obou případech. A google nikdy nelže. :D

Což si myslím, že tak je to správně v KDE 5. Ale jak říkám, normálně klasické kalkulačky to dělají jak jsem teď ukázal v KDE 4. Asi to chtěli emulovat a v KDE 5 to opravili ;-). Google to má taky správně, ten zápis bez znaku násobení je pro lidi, protože se to v zápisech běžně zkracuje a ví se, že tam je násobení. Strojový zápis má být vždy se znakem násobení. WolframAlfa to má taky v obou případech s výsledkem 4.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Pe 08. 10. 2018, 18:15:44
Figl na to jiste je. 42 kvuli disjunkci s 2 neni treba prevadet do bin cele, staci zjistit, zda je na konci 10. To lze prevodem delenim, tedy 42:2 = 21, zbytek je 0 a to je posledni pozice. 21:2=10, zb 1, tedy na konci je 10bin a tedy 42&2=10bin. Pridam 2 nuly kvuli posunu a prava cast je 1000. Levou desitku prevedu na bin za 2 vteriny, za dalsi 2 mam levou stranu  po posunu 1010000. To prevadet na dec nemusim, kdyz vim, ze jeden posun je nasobeni dvojkou, tedy 10*2*2*2=80 . No a k nim prictu 1000bin, coz musi byt 8, protoze: 1000bin jiste nasleduje po 111bin a max cislo vyjadritelne na trech pozicich je 2 na treti minus jedna - tedy 111bin =7dec. No a mam 88, pritom stacil jen jeden 'slozitejsi' prevod dec do bin.
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: Pep 08. 10. 2018, 18:23:02
Tu tvojí kalkulačku bych chtěl vidět.

To není třeba chodit daleko, v KDE 4:

(https://s16.postimg.org/nul3q6lt1/vypocet1.png) (https://postimg.org/image/ea1h3awgx/)

(https://s16.postimg.org/wqvvu4cf9/vypocet2.png) (https://postimg.org/image/btznpgee9/)
V plasmě 5 to první výraz odmítá spočítat, google tvrdí 4 v obou případech. A google nikdy nelže. :D

Což si myslím, že tak je to správně v KDE 5. Ale jak říkám, normálně klasické kalkulačky to dělají jak jsem teď ukázal v KDE 4. Asi to chtěli emulovat a v KDE 5 to opravili ;-). Google to má taky správně, ten zápis bez znaku násobení je pro lidi, protože se to v zápisech běžně zkracuje a ví se, že tam je násobení. Strojový zápis má být vždy se znakem násobení. WolframAlfa to má taky v obou případech s výsledkem 4.
Co to meleš?
Název: Re:Bitové operace ve vyšších jazycích
Přispěvatel: wannabe programator 17. 10. 2018, 01:00:21
Je zajímavé, že téměř každý, kromě javamana samozřejmě, tu evidentně bitové operace zná a nemá s nimi zásadní problém (i když je nechce používat). A to i přesto, že to jak sami tvrdí někteří nikdy nepotřebovali. Celkem by mě zajímalo, jak k tomu přišli? Že by to opravdu patřilo k základům? Ale proč tedy to nepochopitelné obhajování neznalosti? Opravdu se tolik vyplatí zaměstnávat motyky za minimální mzdu, na nějaký js barvičkování tlačítek a potom je buď učit a zvedat mzdu, nebo raději vyhodit, když se něco naučí a chtěly by víc?

Pochybuju, že tě u pozic 80+ bude někdo otravovat se zbytečnostmi typu bitového počítání na papíře. To můžeš zkoušet na lopaty, ale smysl to pořád nemá žádný.
Však taky nikdo nenabízí 80+ absolventům, kterým jsou podobný motykoviny určený. Pokud chce někdo 80+, tak musí mít praxi, pokud má praxi, probírají se na pohovoru jeho minulé projekty a zkušenosti a ne počítání jedniček a nul na papíře, protože se dá předpokládat, že o tom něco ví a v případě potřeby si ochotně vzpomene. Ale to už jsem ti psal.

Hmm ja programuju < 2 roky, praxe jeste mensi, absolvent nejsem, 80k+ mam a do ted jsem bitwise operatory neumel. Ocividne udelali na pohovoru nekde chybu