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

gl

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


gl

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

Kit

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

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #33 kdy: 06. 09. 2016, 16:26:13 »

JSH

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


gl

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

Radovan.

Re:bitové operace
« Odpověď #36 kdy: 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

atarist

Re:bitové operace
« Odpověď #37 kdy: 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)

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Bitové operace ve vyšších jazycích
« Odpověď #38 kdy: 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 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.

gl

Re:bitové operace
« Odpověď #39 kdy: 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á.

čumil

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

čumil

Re:bitové operace
« Odpověď #41 kdy: 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

atarist

Re:bitové operace
« Odpověď #42 kdy: 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á.

javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #43 kdy: 06. 09. 2016, 18:20:57 »
Ta třída existuje, protože Java umí všechno. Ne že to každý musí používat.

atarist

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