🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #334858

Re: [outro] ]Re: Delphi do zastosowan domowych

#334858
From: Wojciech "Spook" Sura
Date: Fri, 20 Jan 2012 11:57
97 lines
5311 bytes
Dnia 20.01.2012 o 11:16 AndrzejS <"AndrewStasiewicz[x]"@gmail.com>  
napisał(a):

>> Cieszę się natomiast, że w Delphi są już funkcje anonimowe :) Tak, to
>> jest funkcja anonimowa aka wyrażenie lambda. Jako ciekawostkę mogę
>> opisać zawartość kwadratowych nawiasów - otóż deklaruje się tam, w jaki
>> sposób mają być traktowane zmienne lokalne w zakresie lambdy. [&SL]
>> oznacza, że SL ma być przekazany przez referencję, ale można też
>> zablokować dostęp do zmiennych poza lambdą ( [] ), ustalić, że wszystkie
>> mają być przez wartość ( [=] ), przez referencję ( [&] ) albo na
>> przykład ustalić, że niektóre mają być przez referencję, a pozostałe
>> przez wartość ( [=, &a] ).
>
> Zdaniem niemlodego czlowieka (znaczy moim) jest to zasmiecanie jezyka.
> Skoro c++ udaje sie byc jezykiem niecalkowicie obiektowym, po co
> wdeptywac w takie g? Nazwalbym to (obrazliwie) pytonizajcą jezyka.

Ale co jest? Funkcje anonimowe? To jest kwestia mocno dyskusyjna; w tej  
chwili chyba każdy większy współczesny język umożliwia pisanie ich, więc  
chyba jednak coś jest na rzeczy. A kontrola dostępu do zmiennych lokalnych  
jest stosunkowo przydatna :)

> [...]
>>
>> Kolejna ciekawostka: konstruktory i operatory w C++ są w pełni
>> modyfikowalne. Mogę na przykład zdefiniować klasę, której nie da się
>> zaalokować na stercie:
>>
>> class C
>> {
>> private:
>> void * operator new(unsigned int * size); // Bez implementacji
>>
>> (...)
>> };
>>
>
> Dobrze byloby jeszcze doszczelnic alokacje tablicowe:
> ...
> void * operator new[](unsigned int * size);

Jasne, chodziło mi tylko o samą ideę.

> Ostatnio (w c++11) pojawil sie oznacznik metod "delete",
> znaczy ze metody nie ma:
> ...
> void * operator new[](unsigned int * size) = delete;
>
> Wydaje sie to czytelniejsze niz sztuczka z ukryciem w "private".
>
> A o tym, ze mozna bez implementacji, to nie slyszalem :(

To jest specyfika C++. Jeśli jakaś zadeklarowana funkcja nie zostanie  
nigdzie użyta, to nie jest kompilowana, więc w powyższej sytuacji  
kompilator nie zgłosi problemu z brakiem implementacji. A schowaliśmy  
operator właśnie po to, aby nie dało się go nigdzie użyć :)

To jest równolegle błogosławieństwo i przekleństwo C++ - można zapomnieć o  
zaimplementowaniu jakiejś metody, a wyjdzie to nagle po roku, gdy zacznie  
być potrzebna...

> (Nie slyszalem tez o kims, kto ukrywalby operator new.)

Uniemożliwienie alokacji na stercie było jednym z zadań, które dostałem na  
pewnej rozmowie kwalifikacyjnej. Firma zajmuje się oprogramowaniem  
urządzeń, a współcześnie elektronika jest już tak rozwinięta, że można  
swobodnie pisać oprogramowanie w C++, a nie w C. Jednak jestem w stanie  
wyobrazić sobie, że w takich szczególnych okolicznościach może zależeć nam  
na tym, aby dana klasa była alokowana tylko na stosie (albo tylko na  
stercie).

Niemniej, sam tego nie robię i nie widziałem też kodu, który potrzebowałby  
takiej własności.

> Spotkalem wykladowce, który wzbogaca wyjscie dzwiekiem. Bachory maja
> zabawe, a przy okazji ucza sie programowania. A kiedys tam dowiedza
> sie, co to jest "cout". Łatwo użyć, choc trudno zrozumiec ...

Ja niestety należę do takich, którzy mocno opornie uczą się czegoś nowego,  
jeśli nie wiedzą choć z grubsza, jak to działa. Bez odpowiedniej wiedzy  
polecenie cout << "Hello, world" jawiło mi się jako dziwne połączenie  
języka imperatywnego, obiektowego i skryptu wsadowego. Nie wyglądało to  
zbyt atrakcyjnie, a nikt nie był mi w stanie wyjaśnić, dlaczego to działa,  
odpowiedzią było zawsze, "tak się pisze i tak działa". Najwyraźniej więc  
niewiele osób miało aspiracje, żeby dowiedzieć się, co naprawdę siedzi za  
tą konstrukcją...

> pozdr serd

Pozdrawiam -- Spook.

-- 
! ._______. Warning: Lucida Console sig!    //)    !
! || spk ||    www.spook.freshsite.pl      / _ """*!
! ||_____||        spook at op.pl         / '  | ""!
! |  ___  |   tlen: spoko_ws gg:1290136  /. __/"\ '!
! |_|[]_|_|  May the SOURCE be with you! \/)     \ !
Technical Details
Message-ID: <op.v8dsudh3yumhbd@notebook.asus>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <1nva6kty8t73b$.dlg@hell.heaven> <jf99kg$t6e$1@news.dialog.net.pl> <162t4ulo0stz4.dlg@hell.heaven> <op.v8cee3coyumhbd@notebook.asus> <1i4rse32tw0m7.dlg@hell.heaven> <op.v8ciulumyumhbd@notebook.asus> <4f193eee$1@news.home.net.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Wojciech \"Spook\" Sura" <spook.no@spamming.op.pl>
Newsgroups: pl.comp.lang.delphi
Subject: Re: [outro] ]Re: Delphi do zastosowan domowych
Date: Fri, 20 Jan 2012 12:57:39 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 152
Message-ID: <op.v8dsudh3yumhbd@notebook.asus>
References: <1nva6kty8t73b$.dlg@hell.heaven> <jf99kg$t6e$1@news.dialog.net.pl> <162t4ulo0stz4.dlg@hell.heaven> <op.v8cee3coyumhbd@notebook.asus> <1i4rse32tw0m7.dlg@hell.heaven> <op.v8ciulumyumhbd@notebook.asus> <4f193eee$1@news.home.net.pl>
NNTP-Posting-Host: 89-76-141-48.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1327060645 10201 89.76.141.48 (20 Jan 2012 11:57:25 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Fri, 20 Jan 2012 11:57:25 +0000 (UTC)
X-User: spoko_ws
X-Antivirus: avast! (VPS 120120-0, 2012-01-20), Outbound message
X-Antivirus-Status: Clean
User-Agent: Opera Mail/11.60 (Win32)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit