[OT] QBasic

Loading thread data ...

Jakoś nie wierzę.

Bardzo zły pomysł.

Kiedy to było? Już zapomniałem.

Przy takiej wielkości używa się już baz danych do sortowania (szybciej będzie zaindeksować).

Reply to
RoMan Mandziejewicz

On 2014-06-12 12:46, RoMan Mandziejewicz wrote: (ciap)

Proponuję dBaseII

Włodek ;-)

Reply to
invalid unparseable

A masz gdzieś instalkę? ;) Dałby radę.

FoxBase 2.0 nie uruchamia się na nowszych systemach...

Reply to
RoMan Mandziejewicz

W dniu 2014-06-12 12:59, RoMan Mandziejewicz pisze:

No to Firebird.

Reply to
Mario

Że co? ...a, no chyba że w QBasic.. ;-)

pzdr bartekltg

Reply to
bartekltg

W dniu 2014-06-12 12:31, Robert Wańkowski pisze:

Pamiętam tylko, że pojawiło się cos takiego w czasach, gdy dość intensywnie używałem Turbo Pascala i Turbo C, ale bliższej znajomości z QBasicem nie zawarłem :) To program dosowy, więc pewnie ma albo ograniczenie wszystkich danych łącznie do 64k, albo "postarali się" i każda tablica ma swój segment:offset w adresie i jest tak jak piszesz, czyli max 64k na każdą tablicę. Tak czy inaczej, pamięci DOSa będzie trochę mało, żeby te Twoje tablice pomieścić. Jeśli czas sortowania nie jest krytyczny, można spróbować jakiegoś algorytmu sortowania danych w plikach. Te algorytmy były rozwijane i optymalizowane w czasach, gdy pamięci RAM miały bardzo małą pojemność i w powszechnym użyciu było sortowanie polegające na przepisywaniu rekordów między plikami, zapisywanymi najpierw na taśmach magnetycznych, później na dyskach. Czyli pozostaje szukanie algorytmu pt. jak posortować plik z dużą ilością danych i nie zajeździć przy tym napędu taśmy :) Tu jakiś pierwszy z brzegu przykład:

formatting link

Reply to
ajt

Że masz zastrzeżenia co do tego, że indeksowanie bazy jest szybsze od jej fizycznego posortowania? ;)

Zapomnij o QBasic. Nawet w dużych systemach nie sortuje się już baz fizycznie, zawsze przez indeks - tak jest szybciej. Choć niekoniecznie użytkownik/programatoł (programista wie) musi o tym wiedzieć.

Reply to
RoMan Mandziejewicz

W dniu 2014-06-12 13:57, ajt pisze:

Rodzaj sortowania bąbelkowego? Dość ciekawe. Może dla zabawy rozpiszę sobie to choćby we wspomnianym QBasicu, i zapodam mu jakieś dane do "przegryzienia" - choćby listę kontrahentów z bazy SQL.

Reply to
Adam

A jak duża ta baza, bo możesz potrzebować sporo czasu ;)

Reply to
RoMan Mandziejewicz

W dniu 2014-06-12 14:36, RoMan Mandziejewicz pisze:

No i o to chodzi ;) Bo może być, że czas przetwarzania rośnie z kwadratem ilości rekordów.

Sortowanie bąbelkowe powoli się bąbelkowało - z tego co pamiętam, był to jeden z najwolniejszych algorytmów.

Reply to
Adam

Coś więcej o systemie powiesz? Z reguły każda implementacja Basic-a jest inna. Na pewno da się posortować tablicę tej wielkości, z tym zastrzeżeniem, że jeśli RAMu nie starczy, to będzie to trwało odpowiednio długo. K.

Reply to
John Smith

"Bazy"? Zbiór danych;>

To jest zależne od rozmiaru pojedyńcxzego klocka.

Posortowanie intów (czy kwaternionów na doublach;)) będzie znacznie szybsze (do tego znacząco mniej pamięciożerne, a potem użycie tej struktury znów będzie znacznie szybsze*) Jeśli natomiast klockiem jest kilobajtowi struktura, a do tego jej porównanie jest szybkie, to posortowanie listy indeksów/wskaźników będzie szybsze, bo omijamy spore kopiowania.

Nikt nie mówił o _bazie_. Pytacz ma małą (no, chyba, że siedzi na atmedze 'tablicę'. Baz się nie sortuje, bo najczęściej klocek jest tam duży, a potrzebujemy _wielu_ indeksów.

Bazy danych i ich zastosowania to szczególny dział programowania. I poza nim cały czas sortuje się bezpośrednio dane gdy jest to szybsze, bo nierzadko jest to szybsze.

Zresztą, nie ma co wierzyć, każdy może sam sprawdzić.

*) posortowane dane służą w uproszczeniu do dwóch rzeczy, wyszukania czegoś i przetworzenia w kolejności jakiegoś porządku.

Głupie wyszukiwanie binarne będzie miało 2 razy więcej cache miss w przypadku posortowania indeksów. Przetwaranie sekwencyjne to przejście jednej tablicy po kolei i drugiej praktycznie losowo (to też dobrze zobaaczyć). Tak będzie zawsze, oczywiście dla odpowiednio dużych klocków samo sortowanie będzie na tyle dłuższe, że pochłonie jakikolwiek zysk z naddatkiem.

pzdr bartekltg

Reply to
bartekltg
Reply to
Robert Wańkowski

W dniu 2014-06-12 16:52, Robert Wańkowski pisze:

Czy ty czasem nie mylisz QBasic (DOS) z VBasic (Visual Basic, Windows)?

JK

Reply to
JK

7x100000

I umiejętności programisty... I użytych narzędzi. Bo sortowanie takiej tablicy w pamięci banalne nie jest.

Pytacz chciał to robić w QBasicu... Ja, mając takie narzędzia jak mam, niemal z zamkniętymi oczami zassałbym dane do bazy (bo jakoś one są zapisane, nieprawdaż?) i za chwilę byłyby posortowane „z palca” - komendami xBase, nawet bez pisania programu. Ewentualnie program musiałbym napisać do samego zaimportowania danych.

Różnie bywa, zależy od skali.

[...]
Reply to
RoMan Mandziejewicz
Reply to
Robert Wańkowski

To czemu qbasic?

A piszą to o Twojej wersji QBasica? Bo ta uwaga możę dotyczy interpretera w MS-DOS?

BTW, Dla danych powyżęj pewnej wielkośći lepiej użyć pamięci dynamicznej. Visual Basic na pewno to umożliwiał, Q chyba też:

formatting link

To jest o tym dosowym starociu.

Problem chyba tu już opisywałeś.

Jeśli wybór QBasica bierze się z tego, że ten język znasz to ściągnij choćby to:

formatting link
darmowa wersja visual basica, starsza, ale dzięki temu pójdzie pod windows XP.

Na zachętę:

formatting link
formatting link
żadnych problemów z ograniczeniem wielkości. Ile RAMu i przestrzeni adresowej, taka tablica.

pzdr bartekltg

Reply to
bartekltg

Siedemset tysiety klocków czy tablica dwuwymiarowa 7x100 000, tego dalej nie wiem.

Takiej? Jeśli mieści się w pamięci, jest trywialne. Autor napsiał, że ma kilka GB dostępnej.

Czyli jednak moja uwaga 'a, no chyba, ze w Qbasicu' była słuszna.

W czymkolwiek innym, gdzie nie masz ograniczeń co do wielkości tablicy zwykłe sortowanie będzie szybsze. Choćby o komunikacje.

I machać taką garstką danych tam i z powrotem, miedzy 10 programami, wyciągać kombajn jak baza danych... Autor wyraźnie chce przetwarzać te dane dalej.

Skala była podana. <1M elementów. Jeśli byłoby ich na TBajty, rzeczywiście baza danych byłaby wartym rozważenie rozwiązaniem. Sortowanie z użyciem dysku nie jest bardzo trudne, ale napisanie już będzie czasochłonne (jest fajny algorytm z dwoma przebiegami zapisu i odczytu, obecnie chyba najszybszy do takich zdań przy niazbyt wielkich danych (TB) ).

pzdr bartekltg

Reply to
bartekltg

"bartekltg"

I tu chyba trafiłeś. Myślałem że jak coś się nazywa QBasic to niezależnie pod jakim system będzie działać to możliwości będa takie same.

Ten mój QBasic jakiś nowszy. Cytaty z jego helpa "QB64 is a BASIC compatible Editor and C++ compiler that creates working Executable files from Qbasic BAS files that can be run on 32 or 64 bit PC's using WINDOWS(XP, Vista and newer), LINUX or MAC(OSX only). The goal is to be

100% compatible with QuickBasic 4.5 plus add hundreds of new abilities such as program icons and custom sized windows and a great Editor with a new Help Menu." Po wpisaniu LPRINT 10*8 drukarka USB (Win XP) wydrukowała wynik.

Robert

Reply to
Robert Wańkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.