🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Zabrali kopiowanie przy zapisie...

#309468
From: (fir)
Date: Thu, 12 Oct 2017 12:42
69 lines
5365 bytes
W dniu czwartek, 12 października 2017 01:22:45 UTC+2 użytkownik M.M. napisał:
> On Tuesday, October 10, 2017 at 9:31:03 AM UTC+2, Wojciech Muła wrote:
> > On Tuesday, October 10, 2017 at 3:35:56 AM UTC+2, bartekltg wrote:
> > > A na poważnie, dlaczego string ma być immutable? 
> > > Przecież moge chcieć tworzyć string literka po literce. 
> > 
> > Tu wracamy do tego, co napisałem na początku: C++ spieprzył
> > design stringa. (Chociaż ze string_view jest teraz trochę lepiej).
> > 
> > Powinny być osobne stringi immutable, osobne mutable, albo
> > lepiej buildery do stringów. Zauważ, że są różne sposoby
> > budowania napisów. Z mojej praktyki:
> > * doklejasz po jednym znaku;
> > * doklejasz inne stringi (np. sformatowane liczby);
> > * kasujesz podzakresy;
> > * zamieniasz jedne podciągi na inne;
> > * albo tylko zmieniasz literki (np. lowercase), bez zmiany długości
> > napisu.
> > 
> > Niestety, C++ upchnął za dużo odpowiedzialności w jedną klasę przez
> > co implementacja musi być generyczna, więc dla jednych scenariuszy
> > będzie szybka dla innych nie - i nie wiesz dla których. :)
> > 
> > A może w ogóle pomysł, żeby string musiał ciągłym obszarem pamięci
> > jest przesadą. Łatwiej byłoby przyjąć, że string to zbiór obszarów
> > pamięci. To się da łatwo ukryć za fasadą iteratora.
> > 
> > w.
> 
> Zazwyczaj to ja kroję włosa na czworo, ale teraz mam wrażenie, że to Wy
> kroicie :) String to string, ma być wygodny, nie nadaje się do pisania
> wyżyłowanych i wyspecjalizowanych implementacji.
> 

z tym ze ten wygodny string musi jakis byc,

jak bedzie taki to bedzie mialo jakies konsekwencje a jak bedzie inny bedzie mialo inne - nie znam za bardzo stringa z c++ ale na ile go znam to jest to string spieprzony, string w c (char*) tez jest spieprzony choc mniej

moja propozycja stronga w c padla, nazwalem go chunk
(jesli mowie o mijej implementacji bibliotecznej - jako wbudowany typ moglby miec predefiniowne wersje
np

chars txt = "ala ma kota";
//ew char[] txt = "ala ma kota";

to wyzej to niemal to samo co 

char* txt = "ala ma kota";

tylko ze txt nie jest jednym wskaznikiem a para wskaznikow i na koncu "ala ma kota" nie ma zera

(wskazniki sa dostepne przez txt.begin i txt.end 
jesli string jest realokowalny to mozna zmienic jego rozmiar przez przypisania size

txt.size += 10;

//itd

ten string moim zdaniem jest dosyc porzadny, dzili sie tez jak widac na dwie klasy nie tyle na mutable  i immutable co na resiziwalne i nieresizowalne (co prawda slowko na oznaczenie immutable tez by sie pewnie przydalo)

te ktore maja byc na stercie ja bym chyba robil dodajac slowo heap


heap chars txt;

tym ze satycznego ramu byc moze tez wartoby dac pewien zakers rozszeżalnosci, przez okreslenie folnego i gornego limitu 

chars(2 to 60) txt; czy cos w tym stylu ale tu nie jestem przekonany czy dokladnie tak (w tym wypadku wiadomo by bylo ze i tak zostanie zaalokowane 60 znakow wiec size ktore mialwaloby inne wartosci moze wydawac sie konfudujace ale tak naprawde takie size moglobybyc wygodne (zreszta takie hinty heapowi tez by sie przydaly, kwestia czy mozna robic takie resizowalne stringi na stosie zalezy od implementacji, te bez gornago limitu wydaje sie ze ewentualnie bez dodatkowego stosu chyba nie ale te z
limitami wydaje sie ze mozna nawet na jednym stosie - ( w wiekszosci wypadkow wydaje sie starcza stringi z limitami zwlaszcza na te stosie)
Technical Details
Message-ID: <960d1c29-bf51-433e-bb1e-9e2361cd8f54@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no303289qta.1!news-out.google.com!r5ni943qtc.1!nntp.google.com!k31no303287qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <or4v67$ene$1@node1.news.atman.pl> <72ac4d9c-806c-4c0d-9d17-e6a1bca634cb@googlegroups.com> <148be543-e417-4b7b-aaa1-5fad87fe41bd@googlegroups.com> <137swhz7qzvw7.dlg@tyczka.com> <6a1a94c7-2d75-4569-8fae-574fb23c919e@googlegroups.com> <d73024b7-92e0-49f9-b827-bfc7b639739b@googlegroups.com> <73ec442f-1a8b-43fc-a06f-a5534a6f3438@googlegroups.com> <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com> <c8b4dab5-5afa-45a4-a3d8-67bc8a5b2aee@googlegroups.com> <fe52664e-2569-46e3-b18c-750c30cd8963@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.55.77.130 with SMTP id a124mr1699913qkb.24.1507812148351;        Thu, 12 Oct 2017 05:42:28 -0700 (PDT)
X-Received: by 10.31.160.207 with SMTP id j198mr1118913vke.10.1507812148321; Thu, 12 Oct 2017 05:42:28 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k31no303289qta.1!news-out.google.com!r5ni943qtc.1!nntp.google.com!k31no303287qta.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Thu, 12 Oct 2017 05:42:27 -0700 (PDT)
In-Reply-To: <fe52664e-2569-46e3-b18c-750c30cd8963@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.47.5.218; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 37.47.5.218
References: <or4v67$ene$1@node1.news.atman.pl> <72ac4d9c-806c-4c0d-9d17-e6a1bca634cb@googlegroups.com> <148be543-e417-4b7b-aaa1-5fad87fe41bd@googlegroups.com> <137swhz7qzvw7.dlg@tyczka.com> <6a1a94c7-2d75-4569-8fae-574fb23c919e@googlegroups.com> <d73024b7-92e0-49f9-b827-bfc7b639739b@googlegroups.com> <73ec442f-1a8b-43fc-a06f-a5534a6f3438@googlegroups.com> <da509e00-e7ff-49bb-8870-b77b25bcc560@googlegroups.com> <c8b4dab5-5afa-45a4-a3d8-67bc8a5b2aee@googlegroups.com> <fe52664e-2569-46e3-b18c-750c30cd8963@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <960d1c29-bf51-433e-bb1e-9e2361cd8f54@googlegroups.com>
Subject: Re: Zabrali kopiowanie przy zapisie...
From: "(fir)" <profesor.fir@gmail.com>
Injection-Date: Thu, 12 Oct 2017 12:42:28 +0000
X-Received-Bytes: 5533
X-Received-Body-CRC: 2434633345
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit