Ostatnio błądzę po dziwnych rejonach internetów. Wczoraj wrzucałem pociągi i samoloty, dzisiaj przyszedł czas na fixed point arithmetic.
Arytmetyka stałoprzecinkowa powinna być dobrze znana każdemu programiście, który pracował nad czymś więcej niż przeciętny crud. Czyli połowa programistów 15k z tego portalu ze śmiesznymi obrazkami w ogóle o niej nie słyszała (a druga połowa z bólem pewnej części ciała musiała się męczyć dzisiaj na lekcji pszyry w podstawówce w tym roku szkolnym).
No dobra, wujek groman już nie będzie się znęcał nad mirkami ( ͡º͜ʖ͡º) Arytmetyka stałoprzecinkowa jest teoretycznie łopatologicznie prosta. No ale dobranie odpowiedniej reprezentacji i zadbanie żeby nie było żadnych niespodziewanych overflowów już nie jest takie proste. Na szczęście dobrzy ludzie napisali konkretną bibliotekę, która może pomóc nam w tym wszystkim - https://github.com/enclustra/en_cl_fix
Dodatkowo możecie obejrzeć webinar, który opisuje problem. A w pic rel kawałek biblioteki, który opisuje jak policzyć liczbę bitów tak, żeby zapisać wynik dodawania.
@groman43: na studiach musiałem na kartce liczyć operacje na różnego rodzaju floatach zapisanych binarnie. Nie uważam że mnie to rozwinęło jako człowieka ani się do czegoś przydało
@groman43 byku, ale pokazujesz butę i wielkie ego tym postem. Pracowałem kilka razy z ludzi, którzy pisali na timsach w podobnym tonie. I nikt nie chciał z nimi pracować.
@groman43: w jakich zastosowaniach liczby stałoprzecinkowe mają zastosowanie na "normalnym" sprzęcie tj. PC/Serwer? W swoich życiu widziałem: * wolne, niezawodne typy jak BigDecimal, który zawsze działają albo są wolne i wymagają dużo pamięci. Najczęściej wystarczające * prosta reprezentacja jak mnożymy wszystko razy 100 przez co nie ma j*****a z groszami. Szybkie i większość przydatnych operacji nie powoduje żadnych problemów z precyzją * floaty. Jak epsilon nie przeszkadza to
@Saly: Dokładnie. Biblioteka standardowa z BigDecimalami i nie ma co wynajdywać koła od początku.
Szczególnie że to nic skomplikowanego w implementacji a tylko zajmuje czas.
No chyba że ktoś pisze sterowniki, gry lub coś innego wymagającego dużej wydajności. W większości biznesowych systemów obliczeń wcale nie ma dużo i procesy raczej czekają sobie na I/O a nie są zajęte arytmetyką.
@Saly: Problemy ze zmiennym przecinkiem są dwa - może być drogi w implementacji, ale zwykle masz bajabongo w to jeśli sprzęt, z którego korzystasz, ma wsparcie hardware'owe dla zmiennego przecinka - błedy numeryczne, które możesz dostać, nie są pod kontrolą. Coś może Ci się zaokrąglić, coś może Ci się nie równać zero, błąd może Ci się zakumolować po milionie iteracji, etc. A w aplikacjach typu CAD czy innych symulatorach takie
@cwlmod biorąc pod uwagę, że zawodowo zajmuje się DSP i projektuje takie rzeczy, pozwolę sobie nie zgodzić się z Twoim twierdzeniem.
Na koniec odwiedziła mnie refleksja i zostawiła mi taką myśl w prezencie - crudziarze mają cholernie ograniczoną perspektywę i myślą, że skoro oni z czegoś nie korzystają, to automatycznie oznacza, że nikt z tego nie korzysta i w ogóle jest to niepotrzebne.
BigDecimal to chyba libka w Javie, a na tym języku świat się nie kończy.
@groman43: Nie chodzi o samą libkę a po prostu w pewnym sensie wykonywanie operacji na stringach reprezentujących liczby a nie rejestrach / komórkach pamięci z krótką ograniczoną ilością bajtów.
Inne platformy / języki mają analogiczne biblioteki.
No chyba że ktoś pisze sterowniki, gry lub coś innego wymagającego dużej wydajności. W większości biznesowych systemów obliczeń wcale nie ma dużo i procesy raczej czekają sobie na I/O a nie są zajęte arytmetyką.
@groman43: Czyli jednak uczysz się programowania xD
My programuje na wyższych poziomach i nie zajmujemy się jakimiś p----------i dla plebsu ;)
A tak poważnie to chyba masz jakieś skrzywienie i nie widzisz w jakim guanie pracujesz. Tobie może się podobać i spoko ale takich jak ty jest garstka. Bawienie się oprogramowywanie mikrokontrolerów jest zwyczajnie nuuuuudne ( ͡°͜ʖ͡°)
@cwlmod wolę takie guano niż bycie code monke i generycznym miszczem frameworków, których na rynku jest mnóstwo i których w każdej chwili można zastąpić kimś tańszym.
@groman43: Poza pracą na pieniądzach to nigdy nie miałem potrzeby używania liczb stałoprzecinkowych. Floaty zazwyczaj zdecydowanie szybsze i łatwiejsze w użyciu.
Arytmetyka stałoprzecinkowa powinna być dobrze znana każdemu programiście, który pracował nad czymś więcej niż przeciętny crud. Czyli połowa programistów 15k z tego portalu ze śmiesznymi obrazkami w ogóle o niej nie słyszała (a druga połowa z bólem pewnej części ciała musiała się męczyć dzisiaj na lekcji pszyry w podstawówce w tym roku szkolnym).
No dobra, wujek groman już nie będzie się znęcał nad mirkami ( ͡º ͜ʖ͡º) Arytmetyka stałoprzecinkowa jest teoretycznie łopatologicznie prosta. No ale dobranie odpowiedniej reprezentacji i zadbanie żeby nie było żadnych niespodziewanych overflowów już nie jest takie proste. Na szczęście dobrzy ludzie napisali konkretną bibliotekę, która może pomóc nam w tym wszystkim - https://github.com/enclustra/en_cl_fix
Dodatkowo możecie obejrzeć webinar, który opisuje problem. A w pic rel kawałek biblioteki, który opisuje jak policzyć liczbę bitów tak, żeby zapisać wynik dodawania.
#programowanie #programista15k #programista25k #pracait i trochę #fpga oraz #matematyka
źródło: Screenshot 2024-09-03 at 21.12.13
Pobierz* wolne, niezawodne typy jak
BigDecimal, który zawsze działają albo są wolne i wymagają dużo pamięci. Najczęściej wystarczające* prosta reprezentacja jak
mnożymy wszystko razy 100 przez co nie ma j*****a z groszami. Szybkie i większość przydatnych operacji nie powoduje żadnych problemów z precyzją* floaty. Jak epsilon nie przeszkadza to
Szczególnie że to nic skomplikowanego w implementacji a tylko zajmuje czas.
No chyba że ktoś pisze sterowniki, gry lub coś innego wymagającego dużej wydajności. W większości biznesowych systemów obliczeń wcale nie ma dużo i procesy raczej czekają sobie na I/O a nie są zajęte arytmetyką.
Komentarz usunięty przez autora
- może być drogi w implementacji, ale zwykle masz bajabongo w to jeśli sprzęt, z którego korzystasz, ma wsparcie hardware'owe dla zmiennego przecinka
- błedy numeryczne, które możesz dostać, nie są pod kontrolą. Coś może Ci się zaokrąglić, coś może Ci się nie równać zero, błąd może Ci się zakumolować po milionie iteracji, etc. A w aplikacjach typu CAD czy innych symulatorach takie
Nie martw się, nie przyda ci się ( ͡° ͜ʖ ͡°)
Na koniec odwiedziła mnie refleksja i zostawiła mi taką myśl w prezencie - crudziarze mają cholernie ograniczoną perspektywę i myślą, że skoro oni z czegoś nie korzystają, to automatycznie oznacza, że nikt z tego nie korzysta i w ogóle jest to niepotrzebne.
@groman43: Nie chodzi o samą libkę a po prostu w pewnym sensie wykonywanie operacji na stringach reprezentujących liczby a nie rejestrach / komórkach pamięci z krótką ograniczoną ilością bajtów.
Inne platformy / języki mają analogiczne biblioteki.
My programuje na wyższych poziomach i nie zajmujemy się jakimiś p----------i dla plebsu ;)
A tak poważnie to chyba masz jakieś skrzywienie i nie widzisz w jakim guanie pracujesz. Tobie może się podobać i spoko ale takich jak ty jest garstka. Bawienie się oprogramowywanie mikrokontrolerów jest zwyczajnie nuuuuudne ( ͡° ͜ʖ ͡°)
Powodzenia i żeby ci się buty zgodziły