eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCzym jest programowanie?Re: Czym jest programowanie?
  • Data: 2012-06-15 00:41:40
    Temat: Re: Czym jest programowanie?
    Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 14.06.2012 21:49, Wojciech Muła wrote:
    > W dniu czwartek, 14 czerwca 2012 21:18:20 UTC+2 użytkownik Michoo napisał:
    >> On 14.06.2012 12:31, Wojciech Mu�a wrote:
    >>> W dniu czwartek, 14 czerwca 2012 01:39:27 UTC+2 u�ytkownik Michoo napisa�:
    >>> A to co, jak nie podanie explicite zakresu dost�pu.
    >> Sposobu dost�pu - warto�� czy referencja (czy brak).
    >
    > Ale po co? Gdy wprowadzasz nowy zakres (np. ifem) to nie
    > musisz pisać jaki będzie sposób dostępu do zmiennych
    > z zewnętrznych zakresów.
    Ale tego ifa nie możesz wyekspediować w inne miejsce. To znaczy właśnie
    w formie lambdy możesz, więc musisz powiedzieć jaki ma bagaż ze sobą zabrać.

    [] - kompilator zapewni, że nie weźmie lokalnego kontekstu
    [=] - skopiuje użyte zmienne
    [&] - weźmie przez referencję

    W ten sposób problem:
    utwórz funktory, które "wiedzą" w której iteracji je wywołano i
    jednocześnie współdzielą kontekst można zapisać jako
    {
    zmiene współdzielone;
    for(int i=0;i<max_it;i++){
    ...
    [&,iteration](){...};
    ...
    }
    wywoływanie lambd

    >
    >>> O tym pisa�em, �e programista *musi* przy definicji
    >>> ustali�, do czego funkcja ma dost�p.
    >> Zarzucasz, �e je�yk daje za du�e mo�liwo�ci programi�cie zamiast
    >> ograniczy� si� do jedynej s�usznej wersji? No bez jaj...
    >
    > Sorry, ale to klepanie 3 znaków bez sensu. :)
    No nie bez sensu. Dzięki tym trzem znakom to programista a nie twórcy
    języka decydują jak się dana lambda zachowa.

    W javie masz na przykład możliwość przekazania tylko zmiennej final,
    więc żeby np przekazać do "lambdy" [1] stringa, który może zostać
    zmodyfikowany pomiędzy utworzeniem obiektu a jego użyciem musisz tego
    stringa zapakować w klasę - tam to dopiero jest pisania (albo
    programiści, którym się nie chce robić dodatkowej klasy robią numery
    pokroju:
    list<String> l1 = new ArrayList<String>();
    l1.add("some string");
    final list<String> l2 = l1;
    new clas ...
    l2.get(0);
    ...
    l2.set(0,"other string");

    a to dopiero zaciemnia zapis.
    )

    [1] Czyli klasy/implementacji interface inline.
    >
    >>> BTW funkcje anonimowe s� og�lnie przereklamowane.
    >> Uwa�am, �e s� wygodne:
    >> [...]
    >
    > Nie twierdzę, że niewygodne, jednak sama idea mnie nie
    > porywa, nawet w ukochanym pythonie nie używam dla onlinerów.
    >
    > BTW jestem ciekaw, jak wygląda debuggowanie takich
    > anonimowych cudaków.
    Na gcc generuje symbole postaci:
    _ZNSt8functionIFivEEC2IZ3foovEUlvE_EET_NSt9enable_if
    IXntsrSt11is_integralIS4_E5valueENS1_8_UselessEE4typ
    eE


    --
    Pozdrawiam
    Michoo

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: