-
Data: 2015-09-18 22:50:00
Temat: Re: Tablica int i usuwanie duplikatów
Od: szemrany <s...@o...off> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Fri, 18 Sep 2015 21:36:40 +0200, bartekltg wrote:
>> Tak, tylko, że Delphi miało inne założenia produkcyjne i nie ma milionów
>
> Założenia miało te same. A nawet bardziej nastawione na biblioteki,
> bo było to tzw RAD. Miałeś szbyko budować aplikacje z klocków,
> nie pisać własny standardowy kontener.
Specjalnie nie napisałem założenia projektowe tylko produkcyjne, choć może
to też nieszczęśliwe słowo. Chodziło mi o to, że Delphi służy głównie do
pisania aplikacji bazodanowych z GUI, a nie wysoko wydajnych aplikacji do
przetwarzania danych.
Te klocki o których piszesz są na wyższym poziomie niż struktury danych i
algorytmy, to moduły typu system raportów, warstwa DAL, kontrolki wizualne
itd.
> > nie ma milionów
>> kontenerów jak C++. Muszę część rzeczy wydłubać sam.
>
> Po prostu nie wierzę.
Kilka lat temu znany tu Sebastian Biały wpadł na sąsiednią grupę delphi, bo
coś zrobić w Delphi musiał i pytał m.in. o hash table. Gdy się dowiedział,
że nie ma to dostał nomen omen białej gorączki i zbluzgał zarówno samo
Delphi jak i kilka postronnych osób ;-) Fakt, że pytał o Delphi 5, które
było z poprzedniego wieku. Teraz dodano kilka kontenerów, ale to jest
dosłownie KILKA.
> Tak, pascal jest mentalnie związany z uczeniem programowania,
> i każdy nowy programista koniecnzie musi pisać własnego
> qsorta i drzewo AVL, ale to szybko przechodzi, a jeśli
> język jest więcej niż parę osób używany komenrcyjnie (a Delphi
> jak mówisz, nadal jest, a jakis czas temu było bardzo poważnie
> używane), na pewno biblioteki są.
Mało, malutko, jeszcze mniej... bo 90% delphiarzy nie potrzebuje. Bo i po
co? Żeby robić szybką listę buttonów na formie czy ...szybko czekać na
odpowiedź serwera SQL? ;-)
> Zresztą, sam w poprzednim poście znalazłeś TDictionary,
> odpowiednik mapy, i to w wersja która wygląda na szablonową.
> Pewnie obok jest i zwykły zbiór, i tablica hashuhjąca.
> TDictionary wystarczy.
TDictionary<K, V> jest od 2009 roku w standardzie, jest generyczne (czy to
odpowiednik szablonów to nie wiem, jest podobne do tego co ma C#:
http://interactiveasp.net/blogs/spgilmore/archive/20
09/12/23/using-generics-in-delphi.aspx
).
Obok, rzeczywiście, jest jeszcze kilka:
TList<T> - oparty o array of T
TThreadList<T> - to samo tylko thread safe
TQueue<T> - oparte o array of T
TThreadedQueue<T> - j.w. thread safe
TStack<T> - oparte o array of T
oraz starsze:
THashedStringList - lista typu key-value, gdzie hash jest liczony w ten
sposób:
function TStringHash.HashOf(const Key: string): Cardinal;
var
I: Integer;
begin
Result := 0;
for I := 0 to Key.Length - 1 do
Result := ((Result shl 2) or (Result shr (SizeOf(Result) * 8 - 2))) xor
Ord(Key.Chars[I]);
end;
nie potrafię ocenić ile to warte.
TBucketList - hash lista na pointery oparta o array of array of pointer,
gdzie pierwsza tablica zawiera kubełki zbudowane przez proste przesunięcie
bitów w prawo, a druga zawiera już wartości dla konkretnego kubełka.
I to WSZYSTKO w standardzie.
Uwierzysz, że nia ma nawet prostej linked listy? Wszak to ją się pisze na 3
zajęciach z programowania, także kiedyś w pascalu. Nie wiem dlaczego tak
jest, ale widać rynek tego nie potrzebował.
Są co prawda fajne zewnętrzne projekty, a jeden z nich się rozwija od lat
poważnie i wygląda na to, że już nie padnie, jest nim Spring for Delphi:
https://bitbucket.org/sglienke/spring4d
ale jeszcze nie zdążyłem go produkcyjnie użyć, bo już raz się wpakowałem w
tego typu projekt, który potem zdechł i miałem dużo kłopotu z wymiksowaniem
się z niego. Teraz dmucham na zimne.
>> Nie chcę używać dziesiątek obcych bibliotek, bo to co teraz robię pakuję do
>> swojego frejmworka do użycia także w przyszłości, więc nie chcę mieć zbyt
>> wielu ogonów.
>
> Przejdź na ciemną stronę.
> C++, java, nawet python.
> Mniej czasu poświeceisz na nowy język niż na pokonywanie
> takich problemów. ;]
Gdybym zaczynał od zera to pewnie tak bym zrobił, ale mam mnóstwo
pracującego kodu już w Delphi i przy nim zostaję.
Poza tym C++, Java i Python odpadają, bo ja potrzebuję w dużej mierze pisać
aplikację okienkowe pod Windows, a żaden z nich nie jest konkurencyjny w
tym aspekcie dla Delphi. Zerkam na C# i czekam co będzie teraz z
Microsoftem i jego nowymi pomysłami. Otwarcie źródeł .NETa jest dobrym
początkiem:
https://github.com/Microsoft/dotnet
>> Stąd potrzebuję algorytmów niskopoziomowych, które sobie w tymże module
>> zaimplementuję. Jeśli okaże się, że użycie TDictionary da jakiś zysk na
>
> Przecież ni o tym pisałem.
> Wewnętrz algorytmu wyznaczajacego duplikaty używasz dołego
> TDictionary tak, jak w praktycznie wszystkich opisanych tu
> sposobach.
>
>> dużych tablicach względem algorytmu naiwnego z pętlami to tej wersji też
>> będę używał.
>
> Da. A jeszcze szybsze byłoby zrobienie kopii i sortowanie ;-)
Taką wersję też mam w roadmapie ;-)
--
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
Następne wpisy z tego wątku
- 19.09.15 03:08 bartekltg
- 19.09.15 11:34 szemrany
- 19.09.15 13:35 M.M.
- 19.09.15 13:57 M.M.
- 19.09.15 14:43 szemrany
- 19.09.15 14:50 M.M.
- 19.09.15 15:08 szemrany
- 19.09.15 15:23 M.M.
- 19.09.15 15:44 szemrany
- 19.09.15 18:10 bartekltg
- 19.09.15 18:13 bartekltg
- 19.09.15 18:20 bartekltg
- 19.09.15 18:58 M.M.
- 19.09.15 20:44 bartekltg
- 19.09.15 20:45 slawek
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-03 ROG
- 2025-07-03 OZE dały Polsce więcej prądu niż elektrownie węglowe
- 2025-07-03 Dlaczego nikt nie powiadamia służb!
- 2025-07-02 Jaka ładowarka sieciowa do Iphona?
- 2025-07-02 ,,The Plot to Get RFK" (,,Spisek, by pozbyć się RFK")
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Rozkaz 16-2025: 2025-06-19 Apelacja Do Wyroku Sądu Rej. w Sprawie IVRNs 295-23
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Inżynierowie... inżynierzy...
- 2025-07-02 Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 2025-07-02 Kto potrafi sprawdzić aku BMW 48V 10Ah Li-Ion do mini hybrydy, czy sprawny ?
- 2025-07-02 Warszawa => Senior IT Recruitment Consultant <=
- 2025-07-02 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-02 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-07-02 Warszawa => Inżynier oprogramowania .Net <=