🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #267905

Re: Ciemna strona C++

#267905
From: Maciej Piechotka
Date: Thu, 13 Dec 2007 20:40
76 lines
4632 bytes
>> Może twoim zdaniem powinny one mieć wszystkie te same metody, wszystkie
>> te same zależności, wszystkie te same wymagania, a nawet jeszcze niech
>> mają taką samą implementację. Wtedy będą spójne. A nie, cholera, będą
>> miały inne nazwy.
> 
> Nonsens. Zgubiłeś problem.
> Operacje robiące to samo mają mieć interfejs taki sam. A nie mają.
> 
> Dlaczego map::iterator iteruje po parach a vector::iterator nie --
> przecież oba są zbiornikami danych do których można się odwoływac po
> kluczu -- w przypadku vectora kluczem jest indeks, w mapie obiekt
> dowolnej porównowywalnego i przypisywalnego typu. Mapa powinna mieć dwa
> iteratory -- jeden po wartościach i *inny* po kluczach (tylko stały).
> Zbiór zaś powinien mieć tylko stały iterator -- po kluczach. Nie stały
> interator w zbiorze to jest w ogóle kompletna porażka.
> 

Jeśli dobrze rozumiem std::map i std::set to jest tam niejasne założenie 
korzystania z drzewa(choćby brak możliwości określenia jednoznacznego 
hashu takiego że (a == b) => (hash(a) == hash(b)) - gdzie == oznacza 
przeciążony operator). Chociaż są niestandardowe implementacje 
'std::hash_map'.

Jeśli zrobić iteracje tylko po kluczach i wartościach to uzyskujemy czas 
dostępu logarytmiczny (bo musimy go jeszcze raz wyszukać) jeśli mamy klucz 
a nie mamy pary (tzn. trzeba wyszukać).

Dlatego w Javie mamy metody Map<K, V>:
Set<Map.Entry<K, V>> entrySet(); //Tak jak w C++
Set<K> keySet();
Collection<V> values();

Jeśli zdefinjujesz wszystkie trzy std::map odstawałby - posiadaniem 6 
iteratorów zamiast 2. I tak źle. Mapy na tyle odstają od innych kolekcji, 
że w Javie nie są kolekcją.


>> [ciach]

Co do wyjątków w Javie to ostatnio piszę kod podobny do tego:
public class MojaKlasa extends AbstractList<Costam> {
	//...
	public Costam get(int index) {
		try {
			//...
		} catch(IOException ex) {
			Logger.log(Level.SERVE, null, ex);
			throw new RuntimeException(ex);
		}
	}
	//...
}

Nie mogę po prostu oznaczyć metody get jako wyrzucającej IOException bo 
interfejs tego wyjątku nie wyszczególnia. 

>>>Pobaw się trochę z sygnałami na systemie bez NPTL a poitem z NPTL :)
>> 
>>>Albo choćby taki "szczegół" jak get_pid() :)
>> 
>> Ano to ja wiem, że implementacja LinuxThreads jest niezgodna z POSIX.
>> Ale szczęściem nie mam dziś nigdzie w użyciu systemu z jądrem sprzed
>> 2.6.
> 
> Ty nie, ale się trafia.
> 

Można to uznać za błąd naprawiony? Bo wytykanie błędów implementacji 
poprzedniej głęzi nie ma sensu (i tak tego nie zmienią bo już zmienili i 
naprawili).

Pozdrawiam
-- 
I've probably left my head... somewhere. Please wait untill I find it.
Homepage (pl_PL): http://uzytkownik.jogger.pl/
(GNU/)Linux User: #425935 (see http://counter.li.org/)
Technical Details
Message-ID: <guh835-u3p.ln1@router.piechotka.com.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!nnrpd.internetia.pl
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh2lj6$qkh$1@news.vectranet.pl> <fha3as$pap$1@bozon2.softax.pl> <fhaj8u$e02$1@news.vectranet.pl> <fhf09d$ohq$1@bozon2.softax.pl> <fhfi9l$640$1@news.vectranet.pl> <fhurmu$5d9$1@bozon2.softax.pl> <fhv020$8k1$1@news.vectranet.pl> <fi1bs4$nn3$1@bozon2.softax.pl> <fi27ds$gt1$1@kujawiak.man.lodz.pl> <fi458p$fmv$1@bozon2.softax.pl> <fi9ckc$2u5$1@kujawiak.man.lodz.pl> <fimb7n$80v$1@bozon2.softax.pl> <fj5k6j$r3e$1@kujawiak.man.lodz.pl> <fj68ei$vbo$1@bozon2.softax.pl> <fjmo4o$a5r$1@kujawiak.man.lodz.pl> <fjouia$gr3$1@bozon2.softax.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!nnrpd.internetia.pl
From: Maciej Piechotka <uzytkownik2@gmail.com>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Thu, 13 Dec 2007 21:40:16 +0100
Organization: Netia S.A.
Lines: 77
Message-ID: <guh835-u3p.ln1@router.piechotka.com.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh2lj6$qkh$1@news.vectranet.pl> <fha3as$pap$1@bozon2.softax.pl> <fhaj8u$e02$1@news.vectranet.pl> <fhf09d$ohq$1@bozon2.softax.pl> <fhfi9l$640$1@news.vectranet.pl> <fhurmu$5d9$1@bozon2.softax.pl> <fhv020$8k1$1@news.vectranet.pl> <fi1bs4$nn3$1@bozon2.softax.pl> <fi27ds$gt1$1@kujawiak.man.lodz.pl> <fi458p$fmv$1@bozon2.softax.pl> <fi9ckc$2u5$1@kujawiak.man.lodz.pl> <fimb7n$80v$1@bozon2.softax.pl> <fj5k6j$r3e$1@kujawiak.man.lodz.pl> <fj68ei$vbo$1@bozon2.softax.pl> <fjmo4o$a5r$1@kujawiak.man.lodz.pl> <fjouia$gr3$1@bozon2.softax.pl>
NNTP-Posting-Host: 87-205-247-21.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: mx1.internetia.pl 1197579896 10749 87.205.247.21 (13 Dec 2007 21:04:56 GMT)
X-Complaints-To: abuse@inetia.pl
NNTP-Posting-Date: Thu, 13 Dec 2007 21:04:56 +0000 (UTC)
X-Tech-Contact: usenet@internetia.pl
X-Orig-Path: router.piechotka.com.pl!news
User-Agent: Pan/0.132 (Waxed in Black)
X-Server-Info: http://www.internetia.pl/news/
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit