-
Data: 2012-06-27 21:51:31
Temat: Re: Nie mieszczę się w tym garniturku część 2: Java i parametry in/out
Od: Edek Pienkowski <e...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia Wed, 27 Jun 2012 18:52:09 +0000, Stachu 'Dozzie' K. napisal:
> On 2012-06-27, Edek Pienkowski <e...@g...com> wrote:
>>>> No to już dzisiaj mam za sobą przejrzenie jej ponownie przy świeżym
>>>> umyśle i po prostu jej logika jest skomplikowana. Ja wiem, że obsługa
>>>> eventu "Zosiu, wprowadź do systemu chęć Pani do zakupu pietruszki" 30
>>>> zmiennych nie wymaga, ale czasami pisze się rzeczy bardziej złożone.
>>>
>>> Te rzeczy bardziej złożone rozkłada się na drobniejsze, prostsze
>>> przypadki. Przynajmniej tak słyszałem, bo IANAP (w każdym razie
>>> oficjalnie).
>>
>> No tak, dlaczego ja na to nie wpadłem, dzięki.
>
> Spójrz na to z naszej perspektywy. Przychodzisz na grupę i mówisz, że
> masz metody z 30+ parametrami długie na kilkaset linii. Twierdzisz, że
> nie da się tego uprościć, ale w żaden sposób nie uzasadniasz tej tezy.
> Reszta grupy z doświadczenia wie, że właściwie wszystkiemu się daje
> uprościć interfejs, więc bez dowodu, przy samym żonglowaniu ogólnikami,
> nikt ci nie uwierzy.
Czyli wszyscy wiedzą, że da się pisać krótkie metody. Very well, my
friend, ja też to wiem. Nie mogę przedstawić kodu, sorry, praca, nie
za takie rzeczy potrafią człowieka zjeść. No więc abstrakcyjnie:
----------------------------------------------------
-------------
Mam zakres 0..x, naturalne liczby, x jest gdzieś pomiędzy kilkaset
tysięcy i sky is the limit, ale powiedzmy kilkadziesiąt milionów.
Dzielę ten zakres na mniejsze, tak, aby w drzewie każdy rodzic
zawierał gałązki i gałązki się nie pokrywają. Każda gałąź
to zakres [a,b). Gałąź bez rozgałęzień możemy nazwać liściem,
mi to nie przeszkadza, ale ogólnie wszystkie gałęzie mają
istotne parametry, nie tylko liście.
Drzewo ma dowolny kształt.
Mam na tym zakresie 0..x znaczniki o określonej pozycji, lub określonych
pozycjach, jest ich z 10 typów. Niektóre wprost decydują, gdzie
zakresy mogą się zaczynać i kończyć, bardzo liczebne, są w
miejscach gdzie mogą być granice. Mógłbym zredukować zakres 0..x
do samych znaczników eliminując przestrzeń pomiędzy, ale chwilowo
nie widzę powodu, wystarczy je posortować i opcjonalnie
powiązać inne znczniki do zakresów pomiędzy tymi, które wyznaczają
możliwy podział.
Część znaczników, jak się tworzy drzewo, ma kilka powiązanych pozycji i
przez to należy do więcej niż jednej gałęzi, szczegóły pominę.
Niektóre typy znaczników dodają ograniczenia, ich 4 pozycje muszą się
zmieścić w jednej gałęzi. Jest ich b. mało, ale komplikują
metodę, bo to twarde ograniczenie.
Inne typy mogą należeć do więcej niż jednej gałęzi (w sensie
node), ale to jest koszt. W pierwszym przybliżeniu koszt to
a * b, gdzie a i b to koszt dzielonych znaczników dwóch typów,
przy czym w dość nieokreślony sposób koszt jest tym większy,
im dalej w dół drzewa. Tych znaczników jest b.duzo,
w zakresie 0..99 byłoby ich po kilkanaście tak średnio,
dośc nieprzewidywalnie rozrzuconych, ale ogólnie z tendencją
do lokalności w większości przypadków.
Każda gałąź ma z grubsza dodatkowy stały koszt i maksymalny rozmiar,
więc nie mogą być za duże, ale lepiej żeby nie były za małe
ze względu na stały koszt. Gałęzi ma być docelowo sądząc
po rozmiarze od dwóch sztuk do kilku tysięcy, co oczywiście
zależy od x.
Oczywiście mam wszystkie dane, takie jak
ile znaczników jest dzielonych pomiędzy node'ami, ile
pomiędzy node'em i rekursywnie dziećmi itd., to wszystko
jest w metodach z jakimś podziałem na klasy, nieistotnym
w tym momencie, ale każda taka operacja ma swoją złożoność.
Mam też w każdym punkcie stos niektórych znaczników,
można go używać jako podpowiedź, ile co może kosztować,
ale można go pominąć. Te znaczniki w stosie mają zakres.
Ogólnie jest sporo chodzenia w górę i w dół pomiędzy
gałęziami, ale to jest detal implementacji.
Chcę znaleźć nie tyle minimum, co rozsądnie mało kosztujący
podział drzewa, przy czym czas analizy też kosztuje tak jak
i rezultat, którym jest dość duży generowany na tej podstawie kod;
oczywiście samo generowanie kodu jest nietrywialne, ale
już sobie jest. A, dzielenie drzewa na gałązki ma ogólnie
dwa rodzaje, dwa rodzaje znaczników określają możliwy
dla ich typu rodzaj podziału na dwa rodzaje generowanego
kodu.
-------------------------------------------------
Jeżeli to podchodzi pod jakiś znany problem ze znanym
na wikipedii lub gdzieś ogólnym rozwiązaniem, to chętnie
przeczytam. Oczywiście, musi mieć poniżej 30 zmiennych na
metodę, ja na razie mam jedną tak rozbudowaną.
Troszkę się chyba rozpędziłem, ale to powinno działać.
Mam też wrażenie, że z jednej strony to już jest dość
nietrywialne, a z drugiej może o czymś zapomniałem,
co mogłoby uprościć sprawę, ale w tej chwili nie wiem
co to może być. Może w ogóle warto całość zrobić inaczej
zupełnie, czekam na przebłysk geniuszu, i chyba mogę sobie
czekać.
Edek
PS. Dopóki tego nie spisałem wyglądało jeszcze normalnie
i do ogarnięcia, ale opis wygląda nieciekawie.
PS2. To teraz może się nie będę na grupie pokazywał
przez tydzień, będę zajęty rzecz jasna ;)
PS3. Nie zamierzam rozwiązywać tego problemu,
coś co jest "wystarczająco dobre" mi wystarczy.
Następne wpisy z tego wątku
- 29.06.12 05:15 M.M.
- 29.06.12 08:07 Edek Pienkowski
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-04 GNSS Motorola G85 vs Redmi Note 9 pro
- 2024-11-04 Katowice => SAP BTP Consultant (mid/senior) <=
- 2024-11-04 Katowice => Spedytor międzynarodowy <=
- 2024-11-04 Warszawa => Specjalista/tka ds. Zamówień publicznych <=
- 2024-11-04 Poznań => QA Engineer <=
- 2024-11-04 Poznań => QA Inżynier <=
- 2024-11-04 Polskie sądy są bardzo wyrozumiałe...
- 2024-11-04 Wrocław => SAP Project System/EPPM Consultant <=
- 2024-11-04 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-04 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-04 Kraków => Software .Net Developer <=
- 2024-11-04 Kraków => Programista Full Stack .Net <=
- 2024-11-04 Warszawa => Key Account Manager <=
- 2024-11-04 Warszawa => Spedytor Międzynarodowy <=
- 2024-11-04 Warszawa => E-COMMERCE specialist <=