-
X-Received: by 10.49.108.229 with SMTP id hn5mr529135qeb.14.1366184887497; Wed, 17
Apr 2013 00:48:07 -0700 (PDT)
X-Received: by 10.49.108.229 with SMTP id hn5mr529135qeb.14.1366184887497; Wed, 17
Apr 2013 00:48:07 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
news-out.readnews.com!news-xxxfer.readnews.com!209.85.216.88.MISMATCH!ca1no1490
41qab.0!news-out.google.com!ef9ni24qab.0!nntp.google.com!ca1no149035qab.0!postn
ews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 17 Apr 2013 00:48:07 -0700 (PDT)
In-Reply-To: <kkkjpe$b54$1@news.task.gda.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.195.164.27;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 213.195.164.27
References: <kkdqot$5rl$1@node2.news.atman.pl> <kkdtr5$9n9$1@node1.news.atman.pl>
<2...@g...com>
<kkec03$n4h$1@node2.news.atman.pl>
<a...@g...com>
<kkfd89$o9b$1@news.task.gda.pl>
<0...@g...com>
<kkh42k$81t$1@news.task.gda.pl>
<b...@g...com>
<kkhr56$a62$1@news.task.gda.pl>
<3...@g...com>
<kkkjpe$b54$1@news.task.gda.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8...@g...com>
Subject: Re: Podpis cyfrowy większej ilości podmiotów
From: "M.M." <m...@g...com>
Injection-Date: Wed, 17 Apr 2013 07:48:07 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:202610
[ ukryj nagłówki ]On Wednesday, April 17, 2013 12:36:30 AM UTC+2, Edek Pienkowski wrote:
> Jedyną metodą sprawdzenia byłoby poświęcenie mnóstwa czasu programom
> szachowym, przeze mnie oczywiście. Nie planuję. Mówię to dlatego,
> że strasznie się przyczepiłeś do tych szachów
Przyczepiłem się bo jest to działka w której dużo czasu poświęciłem na
poprawę implementacji i mini-algorytmów, ale także jest to taka działka, w
której mogłem się przyjrzeć jak to robiło wielu innych programistów - po
prostu dla tej działki mam dane.
> i na tej podstawie generalizujesz na optymalizację każdego kodu.
Wiem że taka generalizacja ma wady, ale nie mam danych z innych
dziedzin, nie mogę zrobić nic lepszego niż generalizowanie. Pytanie czy
te wady są istotne? Szachy to inny program niż np. symulowanie białek. Ale
czy w procesie optymalizowania kodu, szukania mikro-algorytmów,
kombinowania z alternatywnymi strukturami danych, programiści w innych
dziedzinach nie przebyli podobnej drogi? - To nie jest pytanie
retoryczne, mam nadzieję że ktoś coś napisze.
> A tak nie jest,
Właśnie nie wiem czy tak nie jest, może w dużym stopniu tak jest?
> i to nawet po odrzuceniu "przekładania dokumentów z kupki na kupkę"
> czy "relacyjnego mapowania rzeczywistości na projektowanie obiektowe"
> (czyli mamy dokumenty A, B i C i dzielimy na kupki A+B i C plus
> dodatkowe ze stemplem i radzimy sobie z wykładniczą eksplozją kombinacji
> myśląc wtedy w przerwie pomiędzy kodowaniem kolejnych kupek).
Hmmmm
> Ja na przykład aktualnie pracuję nad kodem analizującym dane (np. grafy)
> i jedyną opcją jest optymalizowanie w obrębie Javy - np. kolekcje double
> a nie Double, rozmieszczenie danych, itd. - i ewentualnie C++. A jest tak
> dlatego, że nikt nie ma zamiaru pisać osobno kodu dla Win32, Win64,
> SPARC, jakieś Power i potencjalnie innych. Już C++ wymaga odpowiedniego
> wysiłku, żeby na wszystkim utrzymywać działający build.
Czyli typowa sytuacja której nikt nie neguje, zwykle nie opłaca się
optymalizować, zwłaszcza gdy chodzi o optymalizowanie implementacji.
> Powiedz mi co w takim środowisku oznaczać miałoby określenie "optymalne".
Ja nie wiem, pisałem post wcześniej, że nikt w ogóle nie wie jaka
implementacja jest optymalna :) Ale... znaczenie tego słowa jest dość
proste - najszybszy kod danego zadania na danym zbiorze heterogenicznych
maszyn, czyli na każdą maszynę osobny kod.
> Wiesz, kluski z serem też da się spaprać a nie są szczytem sztuki
> kulinarnej.
Może mamy różny pogląd na to co jest implementacją rozsądną. Ty
nazywasz rozsądną taką, którą ja nazywam już lekko podrasowaną.
> Znajdź mi partię z trzema białymi wieżami na szachownicy.
Każda partia w której gracz dojechał pionkiem do linii promocji i wybrał
wieżę, często dla kaprysu tak gracze robią gdy partia jest na 100% wygrana.
Mało tego, czasami dla kaprysu programiści coś takiego implementują w
programach szachowy. Program zamienia pionka na laufra i daje w dwóch
ruchach mata. Widziałem wiele takich gier i są one zgodne z regulaminem.
> To że w tej dziedzinie wiedza się akumuluje nie jest niczym nadzwyczajnym.
> To że przy okazji akumulują się pośledniejsze pomysły też nie. Jak sam
> zauważyłeś pośledniejsze z czasem okazują się czasami lepsze, bo
> optymalizacja nie jest minimalizacją po gradiencie (niestety).
Właśnie. Można na osi Y przyjąć skalę od zera do jeden oznaczającą postęp.
Na osi X można dać skalę czasu, albo skalę ilości włożonej pracy. Rzadko
zaczynamy od zera, zwykle coś wiadomo w danej dziedzinie. Więc nasz wykres
postępu startuje od... powiedzmy 0.3. Potem dużo badaczy-mrówek
wkłada w zadanie dużo pracy i osiągają minimalny postęp, zwiększa się on
powiedzmy do 0.33. Potem ktoś odkrywa coś ważnego, mamy przełom, postęp
pionowo skacze do 0.45. Znowu pojawia się mrówcza praca wielu badaczy i
dochodzą do 0.5. Para mrówcza praca i przełom może powtórzyć się wiele
razy. Nie wiemy czy w danej dziedzinie jesteśmy gdzieś w okolicach 0.5
czy w okolicach 0.9. Jeśli jesteśmy w okolicach 0.9, to racja jest po
Twojej stronie - mamy program w okolicach 10% od optimum. Jeśli jesteśmy w
okolicach 0.5 to racja jest po mojej stronie.
> Czyli: optymalizacja jednak algorytmiczna.
Oczywiście że stosujemy optymalizację algorytmiczną jeśli tylko taka jest
możliwa. Jeśli nie jest możliwa, to stosujemy optymalizację implementacyjną.
Ale w procesie optymalizowania pojawia się jeszcze coś, co nazywam optymalizacją
mikro-algorytmiczną. W takich szachach jest główny algorytm: przeszukiwanie
drzewa gry i kilkadziesiąt algorytmów pobocznych. Algorytmy poboczne to np.
znajdowanie ruchów w węzłach, liczenie ilości ataków, liczenie odległości
pionków od linii promocji, liczenie różnych hash-key, różnych statystyk,
spamiętywanie częściowych wyników, itd. Zwykle jak się zmieni strukturę danych
żeby np. szybciej znajdować ruchy, to wolniej działa jakiś inny fragment.
Dlatego implementacja w szachach była tak trudna, trzeba było znaleźć
strukturę danych na które będzie działał wydajnie główny algorytm i wszystkie
algorytmy poboczne.
> Tobie o to chodzi, ja mówiłem o intuicyjności. W sensie "relacyjnego
> mapowania sposobu myślenia na kod" ;).
Hmmm... relacyjne mapowanie sposobu myślenia na kod... ładnie brzmi,
sprzedam to dalej :)
> Jasne, ostatecznie liczy się szybkośc działania a nie intuicyjność
> kodu.
> Wiesz, widziałem takich, którzy na podwójne kseony napisali
> program wielowątkowy tak, że jeden wątek działał a inne czekały.
> Czy to czegoś tak ogólnie dowodzi? Bo ja "widziałem".
No mamy problem z ustaleniem co jest implementacją rozsądną :)
> Niemożliwe do sprawdzenia. Do sprzwdzenia możliwe tylko jeżeli M$
> będzie porównywał .Net do reszty świata, czyli Perla, Pythona
> i co tam jeszcze jest najwolniejsze na świecie - wtedy będzie
> odpowiedni wynik badania.
Byśmy musieli wiedzieć na krzywej postępu leży dany program wraz
zastosowanymi w nim optymalizacjami algorytmicznymi i impementacyjnymi.
Jeśli leży w okolicach 0.9, to jest jak piszesz i każda próba
polepszenia nie ma sensu. Problem w tym, że nie wiemy czy jesteśmy w
okolicach 0.3 czy 0.9.
> Ja to faktycznie lubiłem, nie musiałem "trenować". Dzisiaj wciąż lubię,
> ale preferuję rozgrywkę po łyskaczu :).
Ja lubię patrzyć jak po implementacji jakiegoś algorytmu uczącego
mój program w każdym turnieju zdobywa więcej punktów :)
Pozdrawiam
Następne wpisy z tego wątku
- 17.04.13 10:30 firr kenobi
- 17.04.13 11:21 M.M.
- 17.04.13 12:21 firr kenobi
- 17.04.13 12:29 firr kenobi
- 17.04.13 13:01 M.M.
- 17.04.13 15:07 firr kenobi
- 17.04.13 15:35 M.M.
- 17.04.13 16:21 Edek
- 17.04.13 16:25 Edek
- 17.04.13 16:53 M.M.
- 17.04.13 17:16 Edek
- 17.04.13 17:47 firr kenobi
- 17.04.13 18:02 Edek
- 17.04.13 19:42 M.M.
- 17.04.13 19:48 AK
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-10-19 PUE ZUS -- administracyjna nuda...
- 2024-10-18 Marsz niepodleglosci
- 2024-10-18 Pożar parkingu w Luton
- 2024-10-18 Łódź => Spedytor Międzynarodowy <=
- 2024-10-18 Gdańsk => Technical Lead ( (Java Background)) <=
- 2024-10-18 Warszawa => Head of International Freight Forwarding Department <=
- 2024-10-18 uwazajmy na haczyki w umowach
- 2024-10-18 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-10-18 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-10-18 Gdańsk => Software .Net Developer <=
- 2024-10-18 Warszawa => Junior Rekruter <=
- 2024-10-18 Warszawa => Key Account Manager <=
- 2024-10-18 Przeróbka na zgrzewarkę "równoległą"
- 2024-10-18 Ostrów Wielkopolski => Laravel PHP Developer <=
- 2024-10-18 Warszawa => Data Scientist / Data Engineer (modele predykcyjne) <=