-
291. Data: 2012-10-17 20:00:29
Temat: Re: sortowanie
Od: PK <P...@n...com>
On 2012-10-16, slawek <h...@s...pl> wrote:
> Lubisz grać w gry które cię nie bawią? Może jakieś historie z dzieciństwa
> nam opowiesz?
Chodzi o to, że w gry się nie tylko gra. "Gra" nie oznacza tylko formy
rozrywki. Tak jak "Chińczyk" nie oznacza tylko pewnej gry. Matematycy
nazywają "grami" pewne problemy/modele - głównie dlatego, że te modele
wywodzą się od "gier" rozumianych jako rozrywka.
Nie każda gra musi być rozrywką. Np. profesjonalny poker to po prostu
praca, ale nadal jest grą. Rosyjska ruletka też jest grą :).
pozdrawiam,
PK
-
292. Data: 2012-10-17 20:20:18
Temat: Re: sortowanie
Od: PK <P...@n...com>
On 2012-10-16, slawek <h...@s...pl> wrote:
> Kod MS Windows BYŁ dość ładny. Ale jaki jest teraz? Pewnie też względnie
> przyzwoity. Podobnie /dobre/ programy dla Linuksa itd.
Ja nie wiem jaki ten kod BYŁ i jaki JEST, bo nie jestem pracownikiem MS.
Chodzi wyłącznie o to, że w przypadku kodu pisanego przez
profesjonalistów istnieją jakieś teoretyczne podstawy sugerujące, że
najpewniej jest dobrej jakości. W przypadku programów pisanych przez
amatorów trzeba po prostu mieć nadzieję, że zrobili to dobrze.
> Tym bardziej dziwi, że newbie myślą iż przez syfiaste pisanie byle czego
> załapią się na światową czołówkę.
Ja nie wiem co sobie myślą "newbie". Ludzie po prostu coś piszą
i publikują. Robią to tak jak potrafią najlepiej. Niestety czasem
człowiek potrzebuje jakiegoś programu i jest skazany na takie niepewne
źródło.
> Nie łapię twojej logiki. Ale cóż, nie każdego trolla da się zrozumieć.
No to wyjaśnię. Jest sobie jakiś w miarę duży program. Nowe wersje
pojawiają się co kilkanaście dni. I pewnego dnia jedna aktualizacja
wychodzi powiedzmy o 10:42, a druga o 16:21. Umiesz mi podać jakiś powód
tej sytuacji poza tym, że kod nie był przetestowany (i albo jest to
cofnięcie do poprzedniej wersji albo wrzucenie "poprawnego")?
> (BTW, MS wszystko testuje i co? Średnio co 2 dni jest nowy "niezbędny" patch
> per system.)
Windows jest dużym systemem i dużo robi (bo jest zunifikowany, czyli
zapewne nikt nie wykorzystuje wszystkich funkcji). Jeśli uzbroisz sobie
dowolny inny OS (oczywiście aktywnie rozwijany) do takiego poziomu, to
też będziesz miał poprawki co 2 dni.
Ja mam dość skromnego Arch'a (naprawdę mało programów - okroiłem ile
się dało). Ale jest to system z "rolling release", do tego z bardzo
aktywną grupą developerów. W efekcie jakieś poprawki pojawiają mi się
każdego dnia. Jak przez weekend nie odpalam kompa, to w poniedziałek
mam do ściągnięcia z 500MB :).
Ale te poprawki oczywiście nie są obowiązkowe - tak jak patche od MS
nie są niezbędne. Jak masz ochotę, to możesz na Windows XP bez
ServicePacków siedzieć i nikt Cię za to nie napadnie w zaułku :).
pozdrawiam,
PK
-
293. Data: 2012-10-17 20:22:15
Temat: Re: sortowanie
Od: PK <P...@n...com>
On 2012-10-16, slawek <h...@s...pl> wrote:
> Komu jest potrzebny szybki zły generator?
Komuś kto generuje bardzo dużo liczb i nie przeszkadzają mu
wady prostych rozwiązań.
> Pytanie nie wymaga odpowiedzi, podobnie jak: "kto lubi zegarki Pobieda?"
Ale dobra odpowiedź istnieje, więc została zaprezentowana.
pozdrawiam,
PK
-
294. Data: 2012-10-17 20:26:35
Temat: Re: sortowanie
Od: PK <P...@n...com>
On 2012-10-16, slawek <h...@s...pl> wrote:
> Ale rozumiesz różnicę pomiędzy cytowaniem a plagiatem?
Jeśli autor wkleja treść i zamieszcza informację o źródle, to nazywamy
to cytowaniem.
Jeśli informacja o źródle się nie pojawia, to jest to plagiat.
O ile dobrze widzę, to dyskusja rozpoczęła się od jakiegoś uczestnika,
który napisał "korzystam z biblioteki Marka Cygana". Czyli zacytował
lub przytoczył.
> Studenci rżną wszystko co nie jest przybite gwoździkami. Niektórym to nawet
> gwoździki nie przeszkadzają.
Masz takie pojęcie o studentach jak o interpunkcji w języku polskim :).
pozdrawiam,
PK
-
295. Data: 2012-10-17 20:43:29
Temat: Re: sortowanie
Od: bartekltg <b...@g...com>
W dniu 2012-10-16 22:30, PK pisze:
> On 2012-10-16, bartekltg <b...@g...com> wrote:
>> http://www.cplusplus.com/reference/std/random/
>>
>> Bardzo się z tego cieszę;)
>
> No ja też, ale bez przesady. Przez te 10 lat zdążyłem napisać
> lub znaleźć biblioteki robiące to samo, ale fajnie, że się wreszcie
> ogarnęli. Nie skróci mi to czasu kodowania, ale skróci tłumaczenie innym
> / pisanie dokumentacji.
Jest też sansza, że taki generator zostanie dopieszczony
i będzie ciut szybszy.
>> A co do szybkości rand - nieraz do 'pierdółek'
>> przydałby się szybszy:)
>
> Jak Ci zależy na szybkości, to zrób to, co ludzie robią od dziesiątek
> (no... setek) lat. Przygotuj sobie randomy wcześniej :).
W tym wątku to by się właśnie nie sprawdziło.
Robiłem testy iluś tam sortowań dla różnych
parametrów i długości tablicy.
Oczywiście, 40e6 intów zostało wygenerowane na dzień dobry,
a potem tylko kopiowane do drugiej tablicy i ta testowana.
Jednak zajmowało to swoje sekundy. Jak widać, porządne
własności nie są tu potrzebne zypełnie.
Pewnie jakby mi bardzo zależało, wygenerowałbym
ciągi długości, powiedzmy 3491 i 3499 i brał
z nich cykliczną sumę (modulo zakres).
> Kiedyś trzeba było je kupić i przesyłać (początkowo w kopercie ;P).
A ci od kopert wytwarzali je kostkami do gry;)
> Teraz wystarczy puścić na kilka godzin jakiś bardzo dobry generator
> (albo zły, ale odpowiadający Twoim potrzebom) i masz spokój.
> Do testów i jakichś prostych zastosowań ideał, bo zazwyczaj i tak używa
> się stałego seed'a, a wszystko przyspiesza kilkukrotnie.
> Jeśli Twoje programy robią jakieś skomplikowane obliczenia między
> losowaniami, to można puścić oddzielny proces z RNG (i np. bufor
> na RAMdisk'u). Wtedy to randomy czekają na program, a nie odwrotnie :).
Jak leci jakieś MC i obliczana funkcja jest ciężka obliczeniowo,
koszt radoma jest proporcjonalnie mały. Ale pomysł wart zapamiętania.
> Poza tym sprzętowe generatory są już na tyle tanie i małe, że pewnie
> niedługo po prostu trafią do kompów jako kolejny "ficzer" na płycie
> głównej albo doklejone do CPU/GPU.
O ile będą odpowiednio wydajne. W sensie ciągłej
produkcji, a nie zbuforowania megabajta losowych danych.
pzdr
bartekltg
-
296. Data: 2012-10-17 22:28:30
Temat: Re: sortowanie
Od: Baranosiu <r...@w...pl>
Dnia 17.10.2012 Edek Pienkowski <e...@g...com> napisał/a:
>> Nie mam pojęcia co przyświecało "geniuszowi" który postanowił
>> zaoszczędzić na pamięci rejestrów, przecież gdyby to były fizycznie
>> osobne komórki pamięci w procesorze, to nie byłoby żadnych problemów z
>> tym związanych.
>
> Rejestr to nie jest komórka pamięci. To znaczy może masz generalnie
> rację, ale to nie jest takie proste. Na wszystkim większym od jakiegoś
> małego Atomka istnieje "register rename", "retire unit", i pozostałe
> elementy pipeline, a z tego wynika, że rejestr o ile w ogóle
> istnieje jako komórka pamięci (jedna lub w ogóle) to łączy się z całą
> architekturą wokoło. Być może MMX/FPU są prościej zaimplementowane,
> być może też jest to historyczna naleciałość - nawet nie wiedziałem.
Z technicznego punktu widzenia rejestr to taka sama pamięć jak RAM czy
cache, a że nie jest podpięty do szyny adresowej i że jego
szyna danych jest podpięta pod inne komponenty, to już inna
bajka, tak po prostu jest w przypadku x86, ale już na przykład w
niektórych procesorach RISC (choćby takie małe Atmegi z rdzeniem AVR)
rejestry są jak najbardziej adresowalne. Takie pierdoły jak "register
rename" wynikają z prostego faktu, że nawet tanie mikrokontrolery za
20zł mają 32 ortogonalne rejestry (nawet Amiga 30 lat temu miała
16 rejestrów 32-bitowych, choć nie w pełni ortogonalnych) a Intel robi
"wielką rewolucję" że w 64-bitowej maszynie raptem dodaje 8
dodatkowych rejestrów do 4 już istniejących (reszta to indeksowe i
segmentowe) i tylko dlatego, że AMD to zrobiło wcześniej, więc trzeba
było "dogonić" konkurencję :D
Pipeline? W 1996 roku na studiach programowałem procesor
SparcUltra, który (pomijając że w pełni 64-bitowy) wykonywał dwie
instrukcje w jednym cyklu zegara i trzeba było uważać jak się pisało
programy w assemblerze, bo jak się po CALL _adres nie dało instrukcji
NOP, to drugi potok mógł zdążyć wykonać instrukcję za "CALL" zanim się
skok wykonał :D Nie daj się złapać na Intelowski marketing, tam po
prostu wewnętrznie siedzi "normalny" RISC na którym chodzi
"interpreter" x86 tylko po to, żeby że tak powiem API procesora było
zgodne w dół (zresztą Intel sam oficjalnie twierdzi, że nie jest to
procesor hardwired, tylko działa na zasadzie mikrokodu :D).
Programowałem w swoim życiu w assemblerze na kilkanaście różnych
architektur, od małych mikrokontrolerów, które nie miały nawet pamięci
RAM (jedyną pamięcią było 16 rejestrów, nawet stosu nie było,
architektura harvardzka, program w pamięci EPROM), do
wieloprocesorowych maszyn SunMicrosystems (EP10000 z 32 dwurdzeniowymi
64-bitowymi, wielopotokowymi procesorami na pokładzie :D) i przyznam
szczerze, że moim zdaniem dwa najgorzej zaprojektowane procesory z
jakimi miałem do czynienia, to rodzina Zilog Z80 i rodzina Intel
x86 (no i mój własnego projektu 6-bitowy procesor zbudowany na
układach TTL, ale to inna bajka, po pół roku pracy cieszyłem się, że w
ogóle ruszył, a zainspirował mnie projekt www.homebrewcpu.com :D)
Podejrzewam (to tylko hipoteza), że w momencie gdy AMD zaczęło
stanowić poważną konkurencję dla Intela (na samych początkach Intel
współpracował z AMD i nawet zlecał im niektóre projekty :D), to trzeba
było wymyśleć jakiś chwyt marketingowy i wymyślili MMX,
zaimplementowali te instrukcje w mikrokodzie i wykorzystali rejestry
FPU aby nie trzeba było hardware modyfikować :D No a potem zgodnie z
filozofią pełnej zgodności wstecz, ta niedoróbka ciągnie się do
dzisiaj (AMD miało odwagę zrezygnować z 3DNow! :D).
> W każdym razie takie eax na pewno istnieje w asm i jako zapisany
> przed context switchem stan (czy w core), ale istnienia fizycznego
> dawno nikt nie udowodnił. Asm definiuje maszynę a procesor ją
> implementuje, ale ma wolną rękę jak to robi.
Definiuje to specyfikacja a nie assembler, assemblerów na dany
procesor może być bardzo wiele i nie mam tu na myśli samych programów
assemblujących czy mnemoniki rozkazów tylko kod maszynowy. Na
przykład w procesorach zrealizowanych na bazie układów FPGA można w
trakcie pracy zmieniać ich architekturę (nie poprzez podmianę
mikrokodu, tylko fizycznie zmienić konfigurację bramek logicznych!).
"Nikt nie widział eax" bo pewnie nikt do środka nie zaglądał :D A tak
na serio, to Intele nie są procesorami tzw. hardwired (takie są na
przykład ARM-y, AVR-y itd.) tylko mają prosty rdzeń i mikrokodem
załatwiają resztę :D W sumie mogliby udostępnić możliwość ładowania
własnego mikrokodu, wtedy każdy mógłby stworzyć swój assembler (choć
od takich rzeczy, to akurat układy FPGA są lepsze :D).
-
297. Data: 2012-10-18 01:33:43
Temat: Re: sortowanie
Od: Andrzej Jarzabek <a...@g...com>
On 17/10/2012 19:20, PK wrote:
>
> Chodzi wyłącznie o to, że w przypadku kodu pisanego przez
> profesjonalistów istnieją jakieś teoretyczne podstawy sugerujące, że
> najpewniej jest dobrej jakości.
Jakie?!?
-
298. Data: 2012-10-18 02:30:54
Temat: Re: sortowanie
Od: Baranosiu <r...@w...pl>
Dnia 17.10.2012 PK <P...@n...com> napisał/a:
> On 2012-10-16, slawek <h...@s...pl> wrote:
>> Kod MS Windows BYŁ dość ładny. Ale jaki jest teraz? Pewnie też względnie
>> przyzwoity. Podobnie /dobre/ programy dla Linuksa itd.
>
> Ja nie wiem jaki ten kod BYŁ i jaki JEST, bo nie jestem pracownikiem MS.
Kod Win95 jest tu: http://jola.comm.pl/wst_g/ekstra.htm :D
> Chodzi wyłącznie o to, że w przypadku kodu pisanego przez
> profesjonalistów istnieją jakieś teoretyczne podstawy sugerujące, że
> najpewniej jest dobrej jakości. W przypadku programów pisanych przez
> amatorów trzeba po prostu mieć nadzieję, że zrobili to dobrze.
Profesjonalista od amatora różni się tym, że profesjonalista bierze
kasę za to, co amator robi dla samej pasji. Poza tym moim zdaniem nie
ma innej różnicy, są "profesjonaliści" piszący beznadziejny kod i są
"amatorzy" piszący bardzo dobry kod. Czy istnieje jakaś statystyka
tego nie wiem. Sam zaczynałem jako "amator" w wieku kilkunastu lat
pisząc proste gierki i intra na Commodore C64, a kilka lat później
były studia informatyczne, zarówno jedno jak i drugie dało mi bardzo
wiele :D
>
>> Tym bardziej dziwi, że newbie myślą iż przez syfiaste pisanie byle czego
>> załapią się na światową czołówkę.
>
> Ja nie wiem co sobie myślą "newbie". Ludzie po prostu coś piszą
> i publikują. Robią to tak jak potrafią najlepiej. Niestety czasem
> człowiek potrzebuje jakiegoś programu i jest skazany na takie niepewne
> źródło.
Jeśli dla ciebie "gwarancją" jest fakt, że jakiś produkt powstał w
komercyjnej firmie, to niestety ale jedyny przypadek udzielania
gwarancji przez producenta jaki znam, to system TeX autorstwa Donalda
Knutha - jakby nie patrzeć, to produkt amatorski (w tym sensie, że
napisany na własne potrzeby i nie w celach zarobkowych, choć autor to
fachowiec z górnej półki), reszta producentów wręcz zastrzega w
licencjach, że "nie odpowiadają za żadne szkody wynikłe z użytkowania
programu" :D Już widzę, jak na przykład Microsoft uwzględnia
roszczenia gwarancyjne z powodu działania systemu niezgodnie ze
specyfikacją :D
Między teorią i praktyką potrzebny jest balans. Newbie czasem myślą,
że studiowanie teorii to "marnowanie czasu na akademickie pierdoły" a
spotkałem też teoretyków, którzy wykładają na uniwerkach inżynierię
oprogramowania a sami nie napisali nigdy kodu dłuższego niż 1000 linii
:D
>> Nie łapię twojej logiki. Ale cóż, nie każdego trolla da się zrozumieć.
>
> No to wyjaśnię. Jest sobie jakiś w miarę duży program. Nowe wersje
> pojawiają się co kilkanaście dni. I pewnego dnia jedna aktualizacja
> wychodzi powiedzmy o 10:42, a druga o 16:21. Umiesz mi podać jakiś powód
> tej sytuacji poza tym, że kod nie był przetestowany (i albo jest to
> cofnięcie do poprzedniej wersji albo wrzucenie "poprawnego")?
Czasem autor nie jest w stanie przetestować wszystkiego (chociażby na
różnorodność sprzętową komputerów), wypuszcza coś, ktoś zgłasza błąd,
że "w takiej to a takiej sytuacji na takim to i takim
komputerze/systemie itd. pojawia się błąd X", jeśli to prosta do
usunięcia usterka, to autor poprawia błąd i wypuszcza poprawioną
wersję jeszcze tego samego dnia (a czasem błędy są typu nieprawidłowe
ustawienie zależności w samym pakiecie czy literówka w komunikatach
wyświetlanych przez program), nie rozumiem co w tym złego, że autor
programu/pakietu poprawia to na bieżąco i od razu udostępnia.
>> (BTW, MS wszystko testuje i co? Średnio co 2 dni jest nowy "niezbędny" patch
>> per system.)
>
> Windows jest dużym systemem i dużo robi (bo jest zunifikowany, czyli
> zapewne nikt nie wykorzystuje wszystkich funkcji). Jeśli uzbroisz sobie
> dowolny inny OS (oczywiście aktywnie rozwijany) do takiego poziomu, to
> też będziesz miał poprawki co 2 dni.
A czasem jest tak, że znana powszechnie "dziura" w Windowsach zostaje
załatana dopiero po kilku miesiącach :D Zarówno amatorzy jak i
profesjonaliści (czy wielkie firmy) popełniają błędy, różnica polega
na tym, że o kolejnych wersjach w przypadku projektów amatorskich
decydują programiści, a w przypadku produktów komercyjnych często
decydują "księgowi" (na zasadzie "rynek się nasycił, sprzedaż spada,
czas wypuścić kolejną wersję Windowsa" :D).
> Ja mam dość skromnego Arch'a (naprawdę mało programów - okroiłem ile
> się dało). Ale jest to system z "rolling release", do tego z bardzo
> aktywną grupą developerów. W efekcie jakieś poprawki pojawiają mi się
> każdego dnia. Jak przez weekend nie odpalam kompa, to w poniedziałek
> mam do ściągnięcia z 500MB :).
Uczepiłeś się Arch'a, a czemu na przykład nie poruszysz przykładu typu
kernel linuxa, GCC, PostgreSQL i nie porównasz tego z kernelem
Windowsa, Internet Explorerem, MS SQL Serverem itd. :) A jeśli nie
podoba Ci się Arch, to wypróbuj Git-a :D
> Ale te poprawki oczywiście nie są obowiązkowe - tak jak patche od MS
> nie są niezbędne. Jak masz ochotę, to możesz na Windows XP bez
> ServicePacków siedzieć i nikt Cię za to nie napadnie w zaułku :).
Mam znajomych, którzy administrują serwerami z bazami MS SQL Server,
zawsze jak się pojawia poprawka, to "ciągną zapałki" kto pierwszy łatę
zainstaluje i przetestuje, czy się system nie wyłoży :D To jest
niestety urząd, minister rozpisał przetarg, wygrało rozwiązanie oparte
na produktach Microsoftu i wszystkie urzędy marszałkowskie mają
obowiązek tego używać (nazwy firmy nie wymienię, powiem tylko, że ich
systemy chodzą też w PKO BP :D)
-
299. Data: 2012-10-18 11:07:55
Temat: Re: sortowanie
Od: "slawek" <h...@s...pl>
Użytkownik "PK" napisał w wiadomości grup
dyskusyjnych:s...@n...notb-home.
..
>Jeśli autor wkleja treść i zamieszcza informację o źródle, to nazywamy
>to cytowaniem.
Jeżeli np. wkleisz treść biblioteki IMSL do swojego programu i zamieścisz
informację o źródle, to nie będzie to cytowanie, ale po pierwsze akt
piractwa komputerowego, a po drugie akt beznadziejnej głupoty (zakładając,
że nie masz wykupionej licencji).
Aby uznać coś za cytat muszą być spełnione rozmaite warunki - samo podanie
źródeł nie wystarcza. W przypadku zwykłych utworów (poezja, proza, muzyka,
film) ważne jest m.i. jak długi jest fragment i jak się ma on do dzieła w
którym był zacytowany. W przypadku programów komputerowych - o, to ciekawe,
bo są jeszcze potężne różnice prawne UE/USA itd. Normalnie niezbyt mnie to
obchodzi (kto komu nadepnął na patentowy odcisk), ale w przypadku konkursu
mającego być wcieleniem zasady fair play... no cóż, budzi poważne
wątpliwości.
>O ile dobrze widzę, to dyskusja rozpoczęła się od jakiegoś uczestnika,
>który napisał "korzystam z biblioteki Marka Cygana". Czyli zacytował
>lub przytoczył.
Problem leży w tym, że dwóch uczestników (nazwijmy ich A i B) użyło jako
rozwiązania tego co zrobił trzeci z uczestników (nazwijmy go C) TEGO SAMEGO
KONKURSU.
Czyli de facto jeżeli dostali wysokie noty - to po części za umiejętność
copy-paste z tego co zrobił lider.
-
300. Data: 2012-10-18 11:28:36
Temat: Re: sortowanie
Od: "slawek" <h...@s...pl>
Użytkownik "PK" napisał w wiadomości grup
dyskusyjnych:s...@n...notb-home.
..
>i publikują. Robią to tak jak potrafią najlepiej. Niestety czasem
>człowiek potrzebuje jakiegoś programu i jest skazany na takie niepewne
>źródło.
To trochę jak z piciem alkoholu z Czech lub zajadaniem się grzybami
niewiadomego pochodzenia.
Niektórzy tak robią i żyją. Inni tak zrobili i nie żyją.
>No to wyjaśnię. Jest sobie jakiś w miarę duży program. Nowe wersje
>pojawiają się co kilkanaście dni. I pewnego dnia jedna aktualizacja
>wychodzi powiedzmy o 10:42, a druga o 16:21. Umiesz mi podać jakiś powód
>tej sytuacji poza tym, że kod nie był przetestowany (i albo jest to
Jednym z uzasadnień mogłoby być usuwanie równolegle dwóch błędów - gdy
usunięto jeden z nich pojawił się patch z 10:42, gdy usunięto drugi ten z
16:21. Niekoniecznie musi być tak, że nad programem siedzi jeden PK i sam
wszystko robi, każdą łatę "tymi ryncami".