Bitové operace ve vyšších jazycích

Michal Kovačič

Re:Bitové operace ve vyšších jazycích
« Odpověď #15 kdy: 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...


gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #16 kdy: 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.


Nemo7

Re:Bitové operace ve vyšších jazycích
« Odpověď #17 kdy: 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í.  :)

Mirek

Re:Bitové operace ve vyšších jazycích
« Odpověď #18 kdy: 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?

Mirek

Re:Bitové operace ve vyšších jazycích
« Odpověď #19 kdy: 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ě.


javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #20 kdy: 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.

Re:Bitové operace ve vyšších jazycích
« Odpověď #21 kdy: 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.

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #22 kdy: 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.

javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #23 kdy: 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.

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #24 kdy: 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?

Mirek

Re:Bitové operace ve vyšších jazycích
« Odpověď #25 kdy: 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?

Mirek

Re:Bitové operace ve vyšších jazycích
« Odpověď #26 kdy: 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í.

lobo

Re:Bitové operace ve vyšších jazycích
« Odpověď #27 kdy: 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)

javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #28 kdy: 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...

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #29 kdy: 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í.