ďťż
 
lista dowolnych typów ďťż
 
lista dowolnych typów
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

lista dowolnych typów



duzy - 23-01-2006 10:06
lista dowolnych typów
  Witam.

Potrzebuje stworzyć listę do której będę dokładać dynamicznie (podczas
wykonywania programu) przypisywać zmienne dowolnych typów, najczęściej
zdefiniowanych wcześniej struktur. Czy jest jakaś standardowa lista dająca
takie możliwości? Wydaje mi sie że sie kiedyś z tym spotkałem, ale mogę sie
mylić.
Będę wdzięczny ze wszelką pomoc.

Pozdrowienia
Duzy





Stachu 'Dozzie' K. - 23-01-2006 10:06

  On 22.01.2006, duzy <piotrko@o2.pl> wrote:
> Potrzebuje stworzyć listę do której będę dokładać dynamicznie (podczas
> wykonywania programu) przypisywać zmienne dowolnych typów, najczęściej
> zdefiniowanych wcześniej struktur. Czy jest jakaś standardowa lista dająca
> takie możliwości? Wydaje mi sie że sie kiedyś z tym spotkałem, ale mogę sie
> mylić.

Ależ oczywiście, że są takie listy. W Perlu są @tablice, w Rubym
i Pythonie takoż tablice (ale już bez @małpy). W Tclu tak naprawdę
wszystko jest stringiem, więc wszystko można w listę wpakować bezkarnie.
Podobnie w Javie, wszystko praktycznie jest pochodną klasy Object, na
czym zresztą do niedawna opierały się wszystkie kontenery.

BTW. Spraw sobie jakiś czytnik news albo dokonfiguruj ałtlóka.

--
Feel free to correct my English
Stanislaw Klekot




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 23-01-2006 10:06

  duzy wrote:
> Potrzebuje stworzyć listę do której będę dokładać dynamicznie (podczas
> wykonywania programu) przypisywać zmienne dowolnych typów, najczęściej
> zdefiniowanych wcześniej struktur. Czy jest jakaś standardowa lista dająca
> takie możliwości? Wydaje mi sie że sie kiedyś z tym spotkałem, ale mogę sie
> mylić.
> Będę wdzięczny ze wszelką pomoc.

Jakbyś jeszcze był łaskaw podać język programowania w jakim zamierzasz
to wykonać to byłoby cool :-)))

Polecam:
http://www.catb.org/~esr/faqs/smart-...html#beprecise

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 23-01-2006 10:06

  "Stachu 'Dozzie' K." <dozzie@dynamit.im.pwr.wroc.pl.nospam> writes:

[...]

> W Perlu są @tablice, w Rubym i Pythonie takoż tablice

W Pythonie tablice są, ale jako rozszerzenie. Podstawowe struktury
danych to krotki, listy i słowniki.





Marcin 'Qrczak' Kowalczyk - 23-01-2006 10:06

  pdemb@gazeta.pl (Piotr Dembiński) writes:

>> W Perlu są @tablice, w Rubym i Pythonie takoż tablice
>
> W Pythonie tablice są, ale jako rozszerzenie. Podstawowe struktury
> danych to krotki, listy i słowniki.

To, co Python nazywa listą, według tradycyjnej terminologii należy
nazywać tablicą.

--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 23-01-2006 10:06

  Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> writes:

> pdemb@gazeta.pl (Piotr Dembiński) writes:
>
>>> W Perlu są @tablice, w Rubym i Pythonie takoż tablice
>>
>> W Pythonie tablice są, ale jako rozszerzenie. Podstawowe struktury
>> danych to krotki, listy i słowniki.
>
> To, co Python nazywa listą, według tradycyjnej terminologii należy
> nazywać tablicą.

O. Podasz link do definicji tablicy i listy?




Marcin 'Qrczak' Kowalczyk - 23-01-2006 10:06

  pdemb@gazeta.pl (Piotr Dembiński) writes:

>> To, co Python nazywa listą, według tradycyjnej terminologii należy
>> nazywać tablicą.
>
> O. Podasz link do definicji tablicy i listy?

Nie ma tutaj formalnych definicji i oba pojęcia są wieloznaczne,
ale pewne cechy są dość powszechnie przyjęte.

Tablica (array) - Dostęp do elementu o danym indeksie w czasie O(1).
Obliczenie długości również. Prawie zawsze jest mutable, tzn. wymiana
elementu na inny w miejscu w czasie O(1). Zwiększenie i zmniejszenie
długości może być możliwe albo nie, różnie w różnych językach.

Lista (list) - Tutaj jest większa różnorodność. Dodanie i usunięcie
elementu na początku w czasie O(1) albo zbudowanie nowej listy z nowym
elementem dodanym na początku bądź z pierwszym elementem usuniętym
w czasie O(1). Czasem można też dodać i usunąć element na końcu
w czasie O(1). Może być możliwe dodanie albo usunięcie elementu ze
środka w czasie O(1), ale nie musi (dotarcie do tego miejsca ma czas
liniowy względem odległości od końca).

(Ściśle mówiąc te O(1) są oszukane, ale nie chcę wnikać.)

--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/




duzy - 23-01-2006 10:06

  > duzy wrote:
>> Potrzebuje stworzyć listę do której będę dokładać dynamicznie (podczas
>> wykonywania programu) przypisywać zmienne dowolnych typów, najczęściej
>> zdefiniowanych wcześniej struktur. Czy jest jakaś standardowa lista
>> dająca takie możliwości? Wydaje mi sie że sie kiedyś z tym spotkałem, ale
>> mogę sie mylić.
>> Będę wdzięczny ze wszelką pomoc.
>
> Jakbyś jeszcze był łaskaw podać język programowania w jakim zamierzasz to
> wykonać to byłoby cool :-)))
Słuszna uwaga <skrucha>.
Pisze w c++

Pozdrowienia
Duzy




duzy - 23-01-2006 10:06

  A wiesz jak jest w c++?
> BTW. Spraw sobie jakiś czytnik news albo dokonfiguruj ałtlóka.
A co jest nie tak?
Pozdrowienia
Duzy




Stachu 'Dozzie' K. - 23-01-2006 10:06

  On 22.01.2006, duzy <piotrko@o2.pl> wrote:
> A wiesz jak jest w c++?

Jak co jest w C++? Cytuj to, do czego się odnosisz.

>> BTW. Spraw sobie jakiś czytnik news albo dokonfiguruj ałtlóka.
> A co jest nie tak?

Brak zadeklarowanego kodowania.

--
Feel free to correct my English
Stanislaw Klekot




duzy - 23-01-2006 10:06

 
Użytkownik "Stachu 'Dozzie' K." <dozzie@dynamit.im.pwr.wroc.pl.nospam>
napisał w wiadomości news:slrndt7knl.4cb.dozzie@hans.zsh.bash.org.pl...
> On 22.01.2006, duzy <piotrko@o2.pl> wrote:
>> Potrzebuje stworzyć listę do której będę dokładać dynamicznie (podczas
>> wykonywania programu) przypisywać zmienne dowolnych typów, najczęściej
>> zdefiniowanych wcześniej struktur. Czy jest jakaś standardowa lista
>> dająca
>> takie możliwości? Wydaje mi sie że sie kiedyś z tym spotkałem, ale mogę
>> sie
>> mylić.
>
> Ależ oczywiście, że są takie listy. W Perlu są @tablice, w Rubym
> i Pythonie takoż tablice (ale już bez @małpy). W Tclu tak naprawdę
> wszystko jest stringiem, więc wszystko można w listę wpakować bezkarnie.
> Podobnie w Javie, wszystko praktycznie jest pochodną klasy Object, na
> czym zresztą do niedawna opierały się wszystkie kontenery.

A jak jest w c++?

ps. czy kodowanie sie poprawiło?

Pozdrowienia
Duzy




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 23-01-2006 10:06

  duzy wrote:
>
> ps. czy kodowanie sie poprawiło?

Tak. Widzę w nagłówkach taką deklarację:

charset="iso-8859-2";

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 23-01-2006 10:06

  duzy wrote:
>>duzy wrote:
>>
>>>Potrzebuje stworzyć listę do której będę dokładać dynamicznie (podczas
>>>wykonywania programu) przypisywać zmienne dowolnych typów, najczęściej
>>>zdefiniowanych wcześniej struktur. Czy jest jakaś standardowa lista
>>>dająca takie możliwości? Wydaje mi sie że sie kiedyś z tym spotkałem, ale
>>>mogę sie mylić.
>>>Będę wdzięczny ze wszelką pomoc.
>>
>>Jakbyś jeszcze był łaskaw podać język programowania w jakim zamierzasz to
>>wykonać to byłoby cool :-)))
>
> Słuszna uwaga <skrucha>.
> Pisze w c++

A widzisz, no to takiej "standardowej" struktury to ja nie znam.
Oczywiście, mógłbyś się pobawić z variant'ami, mógłbyś stworzyć
hierarchię klas (klasa bazowa i specjalizowane przez dziedziczenie)
i w liście trzymać obiekty tych różnych bo specjalizowanych typów przez
interfejs klasy bazowej (wskaźnik,referencja), ale to ma oczywiste
ograniczenia. Możesz stosować tylko określony ograniczony zestaw typów
(podtypów bazowego typu).

Mógłbyś pokusić się o sklecenie czegoś na bazie typów z Boost.
Poczytaj o:
http://boost.org/doc/html/any.html
http://boost.org/doc/html/variant.html

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




Doker - 24-01-2006 10:43

  >> Słuszna uwaga <skrucha>.
>> Pisze w c++
>
> A widzisz, no to takiej "standardowej" struktury to ja nie znam.
> Oczywiście, mógłbyś się pobawić z variant'ami, mógłbyś stworzyć
> hierarchię klas (klasa bazowa i specjalizowane przez dziedziczenie)
> i w liście trzymać obiekty tych różnych bo specjalizowanych typów przez
> interfejs klasy bazowej (wskaźnik,referencja), ale to ma oczywiste
> ograniczenia. Możesz stosować tylko określony ograniczony zestaw typów
> (podtypów bazowego typu).
a listy do wskazników typu void nie mozna zrobic?




duzy - 24-01-2006 10:43

 
Użytkownik "Doker" <doker0@wp.pl> napisał w wiadomości
news:dr30vn$2ag1$1@node3.news.atman.pl...
>>> Słuszna uwaga <skrucha>.
>>> Pisze w c++
>>
>> A widzisz, no to takiej "standardowej" struktury to ja nie znam.
>> Oczywiście, mógłbyś się pobawić z variant'ami, mógłbyś stworzyć
>> hierarchię klas (klasa bazowa i specjalizowane przez dziedziczenie)
>> i w liście trzymać obiekty tych różnych bo specjalizowanych typów przez
>> interfejs klasy bazowej (wskaźnik,referencja), ale to ma oczywiste
>> ograniczenia. Możesz stosować tylko określony ograniczony zestaw typów
>> (podtypów bazowego typu).
> a listy do wskazników typu void nie mozna zrobic?
no proszę. tak prosta odpowiedź, a tak długo na nią czekałem.
Już sprawdziłem, i działa.
Dzięki wielkie.
Duzy




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 24-01-2006 10:43

  Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> writes:

> pdemb@gazeta.pl (Piotr Dembiński) writes:
>
>>> To, co Python nazywa listą, według tradycyjnej terminologii należy
>>> nazywać tablicą.
>>
>> O. Podasz link do definicji tablicy i listy?
>
> Nie ma tutaj formalnych definicji i oba pojęcia są wieloznaczne,
> ale pewne cechy są dość powszechnie przyjęte.

Tak przy okazji, nie wiesz, czy w ogóle jest zdefiniowane pojęcie
imperatywnego języka programowania?

> Tablica (array) - Dostęp do elementu o danym indeksie w czasie O(1).
> Obliczenie długości również. Prawie zawsze jest mutable, tzn.
> wymiana elementu na inny w miejscu w czasie O(1). Zwiększenie
> i zmniejszenie długości może być możliwe albo nie, różnie w różnych
> językach.
>
> Lista (list) - Tutaj jest większa różnorodność. Dodanie i usunięcie
> elementu na początku w czasie O(1) albo zbudowanie nowej listy z nowym
> elementem dodanym na początku bądź z pierwszym elementem usuniętym
> w czasie O(1). Czasem można też dodać i usunąć element na końcu
> w czasie O(1). Może być możliwe dodanie albo usunięcie elementu ze
> środka w czasie O(1), ale nie musi (dotarcie do tego miejsca ma czas
> liniowy względem odległości od końca).

Chodziło właśnie o funkcjonalność: insert, remove, append, pop.
To wszystko jest w listach pajtonowych. Nie analizowałem złożoności
czasowych, ale chyba jak się nazywają 'listy', to mają takie, jak
podałeś. W końcu po kiego grzyba Guido nazywałby to 'list', jak
by nie spełniało założeń co do listy?

> (Ściśle mówiąc te O(1) są oszukane, ale nie chcę wnikać.)

Chodzi o koszt amortyzowany?

--
http://www.piotr.dembiński.prv.pl




tomasz sobkowiak - 24-01-2006 10:43
=?ISO-8859-2?Q?Re:_lista_dowolnych_typ=F3w?=
  duzy <piotrko@o2.pl> napisał(a):

>
> Użytkownik "Doker" <doker0@wp.pl> napisał w wiadomości
> news:dr30vn$2ag1$1@node3.news.atman.pl...
> >>> Słuszna uwaga <skrucha>.
> >>> Pisze w c++
> >>
> >> A widzisz, no to takiej "standardowej" struktury to ja nie znam.
> >> Oczywiście, mógłbyś się pobawić z variant'ami, mógłbyś stworzyć
> >> hierarchię klas (klasa bazowa i specjalizowane przez dziedziczenie)
> >> i w liście trzymać obiekty tych różnych bo specjalizowanych typów przez
> >> interfejs klasy bazowej (wskaźnik,referencja), ale to ma oczywiste
> >> ograniczenia. Możesz stosować tylko określony ograniczony zestaw typów
> >> (podtypów bazowego typu).
> > a listy do wskazników typu void nie mozna zrobic?
> no proszę. tak prosta odpowiedź, a tak długo na nią czekałem.
> Już sprawdziłem, i działa.
> Dzięki wielkie.
> Duzy

To juz lepiej boost::any.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 24-01-2006 10:43

  Doker wrote:
>>> Słuszna uwaga <skrucha>.
>>> Pisze w c++
>>
>>
>> A widzisz, no to takiej "standardowej" struktury to ja nie znam.
>> Oczywiście, mógłbyś się pobawić z variant'ami, mógłbyś stworzyć
>> hierarchię klas (klasa bazowa i specjalizowane przez dziedziczenie)
>> i w liście trzymać obiekty tych różnych bo specjalizowanych typów
>> przez interfejs klasy bazowej (wskaźnik,referencja), ale to ma
>> oczywiste ograniczenia. Możesz stosować tylko określony ograniczony
>> zestaw typów (podtypów bazowego typu).
>
> a listy do wskazników typu void nie mozna zrobic?

duzy pisze w C++ to niech zastosuje rozwiązanie na miare C++ a nie C :-)

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 24-01-2006 10:43

  duzy wrote:
>
> Użytkownik "Doker" <doker0@wp.pl> napisał w wiadomości
> news:dr30vn$2ag1$1@node3.news.atman.pl...
>
>>>> Słuszna uwaga <skrucha>.
>>>> Pisze w c++
>>>
>>>
>>> A widzisz, no to takiej "standardowej" struktury to ja nie znam.
>>> Oczywiście, mógłbyś się pobawić z variant'ami, mógłbyś stworzyć
>>> hierarchię klas (klasa bazowa i specjalizowane przez dziedziczenie)
>>> i w liście trzymać obiekty tych różnych bo specjalizowanych typów
>>> przez interfejs klasy bazowej (wskaźnik,referencja), ale to ma
>>> oczywiste ograniczenia. Możesz stosować tylko określony ograniczony
>>> zestaw typów (podtypów bazowego typu).
>>
>> a listy do wskazników typu void nie mozna zrobic?
>
> no proszę. tak prosta odpowiedź, a tak długo na nią czekałem.
> Już sprawdziłem, i działa.
> Dzięki wielkie.

Duzy, jak bardzo chcesz programować w C++ tworząc kod w C
to nie będę Cię wstrzymywał ale przed
pozwolę sobie zaapelować do Ciebie i przeczytaj Waść ten tekst:

http://www.kuro5hin.org/story/2002/5/1/142321/9513

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




=?ISO-8859-2?Q?Marcin_Miel=BFy=F1ski?= - 24-01-2006 10:43

  duzy wrote:
>

>
> A jak jest w c++?
>

W C++ jest średnio, ponieważ nie ma w języku/bibliotece standardowej
zdefiniowanej ściśle klasy korzenia z której cała reszta się wywodzi
(jak np: w Javie, C#, Smalltalku, Pythonie, Rubym, etc).
Są dwa wyjścia, musisz stworzyć taką klasę sam i zniej wywieść całą
resztę (lub stworzyć klasę proxy) albo jechać na np: void* (to drugie
odradzam, bo nonstop będzie rzutowanie). Resztę załatwia np: boost/stl.

lopex




=?ISO-8859-2?Q?Marcin_Miel=BFy=F1ski?= - 24-01-2006 10:43

  Piotr Dembiński wrote:

>
> Chodziło właśnie o funkcjonalność: insert, remove, append, pop.
> To wszystko jest w listach pajtonowych. Nie analizowałem złożoności
> czasowych, ale chyba jak się nazywają 'listy', to mają takie, jak
> podałeś. W końcu po kiego grzyba Guido nazywałby to 'list', jak
> by nie spełniało założeń co do listy?
>

No właśnie to co jest list w Pythonie w całej reszcie to jest array, co
może być trochę mylące. Listy pythonowe są po prostu tablicami
wskaźników (przy zmianie rozmiaru o jakis interwał wołany jest
memcpy/malloc/realloc).

Listy (po ich prawdziwą nazwą) mają liniowy czas dostępu do ntego
elementu. Można to poprawić na przykład łańcuchując dłuższe kawałki
tablic lub stosując skipwęzły (ale i tak czas zostanie liniowy O(n) ),
dodatkowo utrudnia to aktualizację.

Po za tym zawsze w tyłu siedzi memory manager którego zachowanie bardzo
mocno zależy od stanu pamięci (np: realloc może być bardzo kosztowny).

lopex




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 24-01-2006 10:43

  Marcin Mielżyński wrote:
> duzy wrote:
>
>>
>
>>
>> A jak jest w c++?
>>
>
> W C++ jest średnio,

średnio to znaczy jak?

> ponieważ nie ma w języku/bibliotece standardowej
> zdefiniowanej ściśle klasy korzenia z której cała reszta się wywodzi
> (jak np: w Javie, C#, Smalltalku, Pythonie, Rubym, etc).

I hAlleluja, że w C++ nie ma jak w w/w :-)

> Są dwa wyjścia, musisz stworzyć taką klasę sam i zniej wywieść całą
> resztę (lub stworzyć klasę proxy) albo jechać na np: void* (to drugie
> odradzam, bo nonstop będzie rzutowanie).

Większy problem to brak bezpieczeństwa typów. boost::any to załatwia.
Choć są i tacy co narzekają na performance (ja nie narzekam :-))
to sobie i piszą swoje wersje:
http://www.codeproject.com/cpp/dynamic_typing.asp

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




Michal Przybylek - 24-01-2006 10:43
=?iso-8859-2?Q?Re:_lista_dowolnych_typ=F3w?=
  "Piotr Dembiński" <pdemb@gazeta.pl> wrote:

> Tak przy okazji, nie wiesz, czy w ogóle jest zdefiniowane pojęcie
> imperatywnego języka programowania?

Pewnie da sie zdefiniowac to pojecie, choc nie tak, jakbys zapewne
oczekiwal.

Problem w tym, ze informatycy uzywaja nieformalnego jezyka i posluguja sie
namietnie machaniem rekami (przy czym wierze, ze to wynika z natury
skomplikowania informatycznego swiata), a nie scislymi definicjami. Zas, jak
praktyka pokazuje, do zdefiniowania imperatywnosci potrzeba czegos wiecej.

Wydaje mi sie, ze przy formalnym zdefiniowaniu gramatyki i semantyki jezyka
w podejsciu algebraicznym, mozna by pokombinowac w nastepujacym kierunku:
jezyk nazwamy "nieimperatywnym", lub "czystym", jezeli istnieje
_kompozycjonalna_ semantyka w algebre semantyczna majaca rodzaje wylacznie w
typach danego jezyka.

Przy czym... niektorzy twierdza, ze "imperatywnosc" to co innego niz
"niezmienniczosc". W tym podejsciu (mi blizszym) traktuje sie imperatywnosc
jako pewien sposob myslenia o wykonywaniu sie programu. Ten sposob myslenia
przy patrzeniu na jedne jezyki jest naturalny i prosty (te jezyki nazywamy
imperatywnymi), zas przy patrzeniu na inne jezyki - skomplikowany i
nienaturalny (te jezyki nazywamy deklaratywnymi).

W tym podejsciu granica jest rozmyta.

To podejscie z samego zalozenia nie posiada scislej definicji. Bazuje na
osobistych odczuciach, ktore, szczesliwie, sa dosc podobne dla wiekszosci
populacji.

BTW: Pewnie mozna by nawet prostote wydefiniowac formalnie, ale nie
zamierzam teraz w to wchodzic :-)

mp




=?ISO-8859-2?Q?Marcin_Miel=BFy=F1ski?= - 24-01-2006 10:44

  Mateusz Łoskot wrote:
> Marcin Mielżyński wrote:
>> duzy wrote:
>>
>>>
>>
>>>
>>> A jak jest w c++?
>>>
>>
>> W C++ jest średnio,
>
> średnio to znaczy jak?
>

Trochę jest bałagan typeid, dynamic_cast, wołania wirtualne (choć dla
prymitywów odpadają)

>> ponieważ nie ma w języku/bibliotece standardowej zdefiniowanej ściśle
>> klasy korzenia z której cała reszta się wywodzi (jak np: w Javie, C#,
>> Smalltalku, Pythonie, Rubym, etc).
>
> I hAlleluja, że w C++ nie ma jak w w/w :-)
>

jest demokracja :D

> Większy problem to brak bezpieczeństwa typów. boost::any to załatwia.
Pierwsza część zdania faktycznie.

any a="string"; // ?

lopex




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 24-01-2006 10:44

  Marcin Mielżyński wrote:
> Mateusz Łoskot wrote:
>> Marcin Mielżyński wrote:
>>> duzy wrote:
>>>> A jak jest w c++?
>>>
>>> W C++ jest średnio,
>>
>> średnio to znaczy jak?
>
> Trochę jest bałagan typeid, dynamic_cast, wołania wirtualne (choć dla
> prymitywów odpadają)

Pachnie Javą :-)

>>> ponieważ nie ma w języku/bibliotece standardowej zdefiniowanej ściśle
>>> klasy korzenia z której cała reszta się wywodzi (jak np: w Javie, C#,
>>> Smalltalku, Pythonie, Rubym, etc).
>>
>> I hAlleluja, że w C++ nie ma jak w w/w :-)
>
> jest demokracja :D

Albo zdrowy rozsądek.

>> Większy problem to brak bezpieczeństwa typów. boost::any to załatwia.
>
> Pierwsza część zdania faktycznie.
>
> any a="string"; // ?

boost::any a = std::string("asdf");

albo

boost::any a(std::string("asdf"));

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




Michal Przybylek - 24-01-2006 10:44
=?iso-8859-2?Q?Re:_lista_dowolnych_typ=F3w?=
  "Michal Przybylek" <mrp@neostrada.pl> wrote:

> Wydaje mi sie, ze przy formalnym zdefiniowaniu gramatyki
> i semantyki jezyka w podejsciu algebraicznym, mozna
> by pokombinowac w nastepujacym kierunku: jezyk nazwamy
> "nieimperatywnym", lub "czystym", jezeli istnieje _kompozycjonalna_
> semantyka w algebre semantyczna majaca rodzaje wylacznie w
> typach danego jezyka.

Tfu, nie, to jest bez sensu.

W kazdym razie, pewnie gdzies w tym kierunku - trzeba nalozyc ograniczenia
na algebre semantycza, aby nie dalo sie przepachac zmian stanu i sama
semantyke wziasc kompozycjonalna aby zagwarantowac zadane zachowanie takze
lokalnie.

Ale nie mam czasu teraz nad tym myslec...

mp




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 24-01-2006 10:44

  Marcin Mielżyński <lopexx@autograf.pl> writes:

[...]

> No właśnie to co jest list w Pythonie w całej reszcie to jest array,
> co może być trochę mylące. Listy pythonowe są po prostu tablicami
> wskaźników (przy zmianie rozmiaru o jakis interwał wołany jest
> memcpy/malloc/realloc).
>
> Listy (po ich prawdziwą nazwą) mają liniowy czas dostępu
> do ntego elementu.

No tak, tyle że O(1) jest również O(n).




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 24-01-2006 10:44

  "Michal Przybylek" <mrp@neostrada.pl> writes:

> "Michal Przybylek" <mrp@neostrada.pl> wrote:
>
>> Wydaje mi sie, ze przy formalnym zdefiniowaniu gramatyki
>> i semantyki jezyka w podejsciu algebraicznym, mozna by pokombinowac
>> w nastepujacym kierunku: jezyk nazwamy "nieimperatywnym", lub
>> "czystym", jezeli istnieje _kompozycjonalna_ semantyka w algebre
>> semantyczna majaca rodzaje wylacznie w typach danego jezyka.
>
> Tfu, nie, to jest bez sensu.
>
> W kazdym razie, pewnie gdzies w tym kierunku - trzeba nalozyc
> ograniczenia na algebre semantycza, aby nie dalo sie przepachac
> zmian stanu i sama semantyke wziasc kompozycjonalna aby
> zagwarantowac zadane zachowanie takze lokalnie.
>
> Ale nie mam czasu teraz nad tym myslec...

W gruncie rzeczy miałem nadzieję na odesłanie do jakiejś szacownej
pozycji literaturowej, ale jak już zaczynasz kombinować z semantyką,
to osobiście widzę to tak, że imperatywny język programowania to taki
język, którego semantykę można w naturalny sposób zdefiniować
na maszynie RAM. Analogicznie: semantykę języka funkcyjnego można
w naturalny sposób zdefiniować na rachunku lambda.

Problem w tym, że przy takim podejściu nie wiemy, co dokładnie znaczy
fraza 'naturalny sposób' :>

--
http://www.piotr.dembiński.prv.pl




=?ISO-8859-2?Q?Marcin_Miel=BFy=F1ski?= - 24-01-2006 10:44

  Mateusz Łoskot wrote:

>>
>> Trochę jest bałagan typeid, dynamic_cast, wołania wirtualne (choć dla
>> prymitywów odpadają)
>
> Pachnie Javą :-)
>

dlaczego od razu Javą :D ? (tam już są klapki na oczy)
>>
>> any a="string"; // ?
>
> boost::any a = std::string("asdf");
>
> albo
>
> boost::any a(std::string("asdf"));
>

No właśnie to miało wyjść na jaw, jest niepełny...

lopex




tomasz sobkowiak - 24-01-2006 10:44
=?ISO-8859-2?Q?Re:_lista_dowolnych_typ=F3w?=
  Marcin Mielżyński <lopexx@autograf.pl> napisał(a):

> Mateusz Łoskot wrote:
>
> >>
> >> Trochę jest bałagan typeid, dynamic_cast, wołania wirtualne (choć dla
> >> prymitywów odpadają)
> >
> > Pachnie Javą :-)
> >
>
> dlaczego od razu Javą :D ? (tam już są klapki na oczy)
> >>
> >> any a="string"; // ?
> >
> > boost::any a = std::string("asdf");
> >
> > albo
> >
> > boost::any a(std::string("asdf"));
> >
>
> No właśnie to miało wyjść na jaw, jest niepełny...

Ale co?? Wg mnie to nie jest zadna wada. Przynajmnije dokaldnie widac co
bedzie w a po wykonaniu tego.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




=?ISO-8859-2?Q?Mateusz_=A3oskot?= - 24-01-2006 10:44

  Marcin Mielżyński wrote:
> Mateusz Łoskot wrote:
>>
>>> any a="string"; // ?
>>
>> boost::any a = std::string("asdf");
>>
>> albo
>>
>> boost::any a(std::string("asdf"));
>>
>
> No właśnie to miało wyjść na jaw, jest niepełny...

Co jest niepełne?
Takie jest wymaganie boost::any, że ValueType przechowywany musi być
wspierać kopiowanie i przypisywanie, więc jakbyś to widział dla zwykłego
char*? W C++ std::string jest zalecanym sposobem zabawy z napisami,
jeśli chcesz tutaj w interfejsie używać napisów z języka C, to nic nie
stoi na przeszkodzie aby opakować sobie boost::any strukturą wraz z
konstrukorem, który zezwoli na konwersję char* do std::string implicite.

IMHO sprzeczki "ja wolę char* od std::string" to sztuka dla sztuki.

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net




Michal Przybylek - 25-01-2006 15:39
=?iso-8859-2?Q?Re:_lista_dowolnych_typ=F3w?=
  "Piotr Dembiński" <pdemb@gazeta.pl> wrote:

> W gruncie rzeczy miałem nadzieję na odesłanie do jakiejś
> szacownej pozycji literaturowej,

Powazni ludzie nie zajmuja sie tak niepowaznymi rzeczami, zas czytanie
niepowaznych ludzi jest delikatnie mowiac... niepowazne.

Powaznie.

Matematycznie te pojecia maja bardzo niewielki sens (roznica jest taka, ze
funkcja semantyczna ma w jednym przypadku takie-a-takie wlasnosci, a w
drugim inne).

Informatycznie najlepiej definiowac te pojecia przez ekstensje (bo inaczej
moze sie okazac, ze wszystkie uzywane w praktyce jezyki sa np. imperatywne)
:-)

> ale jak już zaczynasz kombinować z semantyką,
> to osobiście widzę to tak, że imperatywny język programowania to taki
> język, którego semantykę można w naturalny sposób zdefiniować
> na maszynie RAM. Analogicznie: semantykę języka funkcyjnego można
> w naturalny sposób zdefiniować na rachunku lambda.

To jest wlasnie to drugie podejscie do rozumienia imperatywnosci,
nieformalne. Myslenie o programie jak o pewnym przebiegu wykonania,
zmieniajacym na swojej drodze stany.

Uwaga, te dwa podejscia do rozumienia nie sa sobie rownowazne.

> Problem w tym, że przy takim podejściu nie wiemy, co dokładnie
> znaczy fraza 'naturalny sposób' :>

Akurat "naturalny sposob" ma scisla matematyczna definicje. Nie, nie taka,
jakiej sie moglbys spodziewac :-)

mp




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 25-01-2006 15:40

  "Michal Przybylek" <mrp@neostrada.pl> writes:

> "Piotr Dembiński" <pdemb@gazeta.pl> wrote:
>
>> W gruncie rzeczy miałem nadzieję na odesłanie do jakiejś
>> szacownej pozycji literaturowej,
>
> Powazni ludzie nie zajmuja sie tak niepowaznymi rzeczami,

Niepoważnymi? Jest podział na imperatywne i deklaratywne, to ja się
pytam, gdzie znajdę normalne, ludzkie definicje tych pojęć. I nie
chodziło mi o żadne monografie, tylko o link do jakiegoś poważnego
słownika informatycznego lub czegoś w tym stylu.

[...]

> Matematycznie te pojecia maja bardzo niewielki sens (roznica jest
> taka, ze funkcja semantyczna ma w jednym przypadku takie-a-takie
> wlasnosci, a w drugim inne).

Ostatnio przeglądałem sobie strony WWW i wyszło mi, że samych sposobów
definiowania semantyki języka prog. jest co najmniej kilka.

> Informatycznie najlepiej definiowac te pojecia przez ekstensje (bo
> inaczej moze sie okazac, ze wszystkie uzywane w praktyce jezyki sa
> np. imperatywne) :-)

ZTCW to wszystkie, które mają interpretery, są implementowane
na maszynach działających zgodnie z założeniami maszyny RAM:
Intelach,SPARCach etc.

>> ale jak już zaczynasz kombinować z semantyką, to osobiście widzę
>> to tak, że imperatywny język programowania to taki język, którego
>> semantykę można w naturalny sposób zdefiniować na maszynie RAM.
>> Analogicznie: semantykę języka funkcyjnego można w naturalny sposób
>> zdefiniować na rachunku lambda.
>
> To jest wlasnie to drugie podejscie do rozumienia imperatywnosci,
> nieformalne. Myslenie o programie jak o pewnym przebiegu wykonania,
> zmieniajacym na swojej drodze stany.
>
> Uwaga, te dwa podejscia do rozumienia nie sa sobie rownowazne.

Jasne. Chodziło mi o tę ściślejszą definicję, ew. intuicyjną, tylko
podaną przez jakiś światowej klasy autorytet.

>> Problem w tym, że przy takim podejściu nie wiemy, co dokładnie
>> znaczy fraza 'naturalny sposób' :>
>
> Akurat "naturalny sposob" ma scisla matematyczna definicje. Nie, nie
> taka, jakiej sie moglbys spodziewac :-)

To taki 'matematyczny naturalny sposób', który istnieje na podobnej
zasadzie jak matematyczne pojęcie ideału w (bodajże) algebrze
abstrakcyjnej?

--
http://www.piotr.dembiński.prv.pl




Michal Przybylek - 25-01-2006 15:40
=?iso-8859-2?Q?Re:_lista_dowolnych_typ=F3w?=
  "Piotr Dembiński" <pdemb@gazeta.pl> wrote:

> > Powazni ludzie nie zajmuja sie tak niepowaznymi rzeczami,
>
> Niepoważnymi? Jest podział na imperatywne i deklaratywne, to ja się
> pytam, gdzie znajdę normalne, ludzkie definicje tych pojęć.

Nie ma takiego podzialu. Jest tylko duzo szumu i machania rekami. Kazdy
rozumie przez te pojecia, to co mu wygodnie. I ja sie smieje z wiekszosci z
tych rozumien...

W jakims sensie jest "cos" w tym rozgraniczeniu, ale to "cos" bazuje mocno
na osobistych uczuciach, ktore krystalizuja sie w miare praktyki i obcowania
z oboma podejsciami.

Ja, jak mowilem wczesniej, pewnie dal bym rade zdefiniowac formalnie wlasne
odczucia. Ale watpie aby to bylo z jakichkolwiek wzgledow ciekawe.

> Jasne. Chodziło mi o tę ściślejszą definicję, ew. intuicyjną, tylko
> podaną przez jakiś światowej klasy autorytet.

Zdanie nie nabiera sensu na wiesc, ze zostalo wypowiedziane przez autorytet.

> > Akurat "naturalny sposob" ma scisla matematyczna definicje. Nie, nie
> > taka, jakiej sie moglbys spodziewac :-)
>
> To taki 'matematyczny naturalny sposób', który istnieje na podobnej
> zasadzie jak matematyczne pojęcie ideału w (bodajże) algebrze
> abstrakcyjnej?

Troche inaczej (pozatym, ze pojecia idealu nie definiuje sie ogolnie w
algebrze).

To bylo tak, ze najpierw pojawily sie pewne "schematy przejsc" (w
topologii), ktore wygladaly tak naturalnie, ze az chcialo sie zdefiniowac je
formalnie. Ale do ich definicji na odpowiednim poziomie ogolnosci potrzeba
bylo zbudowac cala nowa piekna teorie. Tak wlasnie, w ubieglym wieku MacLane
wprowadzil do matematyki...

Czyli, to my mielismy "naturalne przejscia" i one istnialy. A do tego, aby
je dobrze zdefiniowac dorobilismy teorie. W tym sensie "naturalne przejscia"
sa czyms pierwotnym ("naturalny sposob" to sposob za pomoca "naturalnego
przejscia").

Przy czym, od rzeczy naturalnych dla topologa normalnym ludziom wlos na
glowie sie jezy :-)

mp




Marcin 'Qrczak' Kowalczyk - 25-01-2006 15:40

  pdemb@gazeta.pl (Piotr Dembiński) writes:

> Chodziło właśnie o funkcjonalność: insert, remove, append, pop.
> To wszystko jest w listach pajtonowych. Nie analizowałem złożoności
> czasowych, ale chyba jak się nazywają 'listy', to mają takie, jak
> podałeś.

Wydaje mi się, że słowo "lista" jest mocno wieloznaczne.

Może oznaczać to, co ja nazywam "ciągiem" ("sequence"), czyli ogólny
rodzaj struktury danych, abstrahując od efektywności i reprezentacji.
Może też oznaczać różne konkretne struktury danych, przy czym różne
rodzaje list mają różne zestawy szybkich operacji.

Podstawowe rodzaje listy są takie:

1. Jednokierunkowe, immutable, używane w sposób funkcyjny.

Operacje O(1): uzyskanie listy z elementem dodanym albo usuniętym
na początku.

Przykłady: SML, OCaml, Erlang, Kogut.

2. Jednokierunkowe, mutable, używane w sposób funkcyjny.

Operacje O(1): uzyskanie listy z elementem dodanym albo usuniętym
na początku, rozcięcie listy (mając wskaźnik w środek), połączenie
dwóch list (mając wskaźnik na koniec pierwszej).

Przykłady: Lisp, Scheme, Dylan.

3. Jednokierunkowe, mutable, używane w sposób imperatywny.

Operacje O(1): dodanie albo usunięcie elementu na początku,
rozcięcie listy (mając wskaźnik w środek), połączenie dwóch list
(mając wskaźnik na koniec pierwszej).

4. Dwukierunkowe, mutable, używane w sposób imperatywny.

Operacje O(1): dodanie albo usunięcie elementu na początku
albo na końcu, rozcięcie listy (mając wskaźnik w środek),
połączenie dwóch list.

Przykład: C++ (częściowo, bo rozcięcie nie ma gwarantowanego
stałego czasu i w różnych implementacjach jest różnie, bo niektóre
trzymają w liście długość, co w tym przeszkadza).

Java ma LinkedList, które mogłoby należeć do 4 grupy, ale nie
wykorzystuje potencjału reprezentacji: nie ma rozcinania ani
łączenia.

>> (Ściśle mówiąc te O(1) są oszukane, ale nie chcę wnikać.)
>
> Chodzi o koszt amortyzowany?

Nie. Przy strukturze wielkości N wskaźnik albo indeks ma wielkość log N,
więc teoretycznie wszystkie operacje na wskaźnikach i indeksach mają
koszt co najmniej O(log N).

W praktyce tego nie widać, bo N i tak jest ograniczone przez stałą
(rozmiar pamięci), więc log N też jest stałą zależną od architektury
(np. 32 albo 64). Formalny asymptotyczny koszt nie wystarcza do oceny,
co jest szybsze; może być tak, że dla rozmiarów danych spotykanych
w praktyce stałe współczynniki mają większy wpływ niż jakiś czynnik
log N.

--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/




=?iso-8859-2?q?Piotr_Dembi=F1ski?= - 25-01-2006 15:40

  Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> writes:

> pdemb@gazeta.pl (Piotr Dembiński) writes:
>
>> Chodziło właśnie o funkcjonalność: insert, remove, append, pop.
>> To wszystko jest w listach pajtonowych. Nie analizowałem złożoności
>> czasowych, ale chyba jak się nazywają 'listy', to mają takie, jak
>> podałeś.
>
> Wydaje mi się, że słowo "lista" jest mocno wieloznaczne.
>
> Może oznaczać to, co ja nazywam "ciągiem" ("sequence"), czyli ogólny
> rodzaj struktury danych, abstrahując od efektywności
> i reprezentacji. Może też oznaczać różne konkretne struktury danych,
> przy czym różne rodzaje list mają różne zestawy szybkich operacji.

Właśnie sobie przypomniałem, że ISO udostępnia na swojej stronie
internetowej standard 11404, w którym są zdefiniowane struktury
danych, m.in. sekwencje i tablice. Można by porównać z pajtonowymi.

[...]

>>> (Ściśle mówiąc te O(1) są oszukane, ale nie chcę wnikać.)
>>
>> Chodzi o koszt amortyzowany?
>
> Nie. Przy strukturze wielkości N wskaźnik albo indeks ma wielkość
> log N, więc teoretycznie wszystkie operacje na wskaźnikach
> i indeksach mają koszt co najmniej O(log N).

Jak się abstrahuje od sprzętu, to nawet operacje na liczbach
32-bitowych mają swoje złożoności czasowe zależne od długości liczby.

> W praktyce tego nie widać, bo N i tak jest ograniczone przez stałą
> (rozmiar pamięci), więc log N też jest stałą zależną od architektury
> (np. 32 albo 64). Formalny asymptotyczny koszt nie wystarcza
> do oceny, co jest szybsze; może być tak, że dla rozmiarów danych
> spotykanych w praktyce stałe współczynniki mają większy wpływ niż
> jakiś czynnik log N.

ZTCW to utarło się, że najpierw patrzymy na koszt asymptotyczny.
Analiza kosztów stałych to w gruncie rzeczy kwestia dla ludzi
od optymalizacji na konkretny sprzęt.

--
http://www.piotr.dembiński.prv.pl
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?iso-8859-2?q?NET_i_ODBC_-_Lista_dostawc=F3w_danych?= Sql Serv 2000 - String z lista parametrem funkcji ? [Struts] rozwijana lista za pomoca html:optionsCollection Lista =?ISO-8859-2?Q?uporz=B1dkowana?= w relacji OPTIMA - lista =?ISO-8859-2?Q?kontrahent=F3w?= Lista poslow, ktorzy nie poparli zycia Lista mailingowa - czy jest taka opcja?? exceptions w PL/SQL - lista [MSSQL] Lista baz firebird lista uzytkownikow
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tejsza.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com