Article View: pl.comp.lang.delphi
Article #334858Re: [outro] ]Re: Delphi do zastosowan domowych
From: Wojciech "Spook" Sura
Date: Fri, 20 Jan 2012 11:57
Date: Fri, 20 Jan 2012 11:57
97 lines
5311 bytes
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-mailReferences:
<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