Reklama
Strona 175 z 358 PierwszaPierwsza ... 75125165173174175176177185225275 ... OstatniaOstatnia
Pokazuje wyniki od 2,611 do 2,625 z 5367

Temat: Programowanie - temat ogólny

  1. #2611
    Avatar 2cztery7
    Data rejestracji
    2014
    Posty
    628
    Siła reputacji
    10

    Domyślny

    w ogóle poza kilkoma algorytmami rekurencja jest gdzieś szeroko używana? wszystkie zastosowania jakie mi przychodzą do głowy można spokojnie zastąpić pętlami.
    mówię o językach typu java, c++, python, a nie typowo funkcyjnych jak właśnie prolog czy (chyba) haskell.

  2. #2612

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj 2cztery7 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    w ogóle poza kilkoma algorytmami rekurencja jest gdzieś szeroko używana? wszystkie zastosowania jakie mi przychodzą do głowy można spokojnie zastąpić pętlami.
    mówię o językach typu java, c++, python, a nie typowo funkcyjnych jak właśnie prolog czy (chyba) haskell.
    Programy w językach ala erlang?
    No nie wiem, może być RabbitMQ?

  3. Reklama
  4. #2613
    Avatar 2cztery7
    Data rejestracji
    2014
    Posty
    628
    Siła reputacji
    10

    Domyślny

    chodzi mi o to, czy rekurencja jest stosowana w "profesjonalnych" programach pisanych właśnie w javie czy c++ lub podobnych językach. na przykład czy zdarzyło wam się kiedyś w pracy jej użyć? bo wg mnie dużo łatwiej, a na pewno czytelniej jest użyć pętli (chyba zawsze się da?)

  5. #2614
    Avatar Bazan
    Data rejestracji
    2008
    Wiek
    31
    Posty
    1,909
    Siła reputacji
    18

    Domyślny

    Tak nie raz juz musialem uzyc rekurencji.
    Teraz mojego konkretnego przykladu nie pamietam, ale dam na szybko przyklad z wordpressa.

    System shortcodów.

    Mozesz zarejestrowac shortcode [galeria] - jak ktos go wpisze wpisze w tresci posta, to pojawi sie zamiast niego galeria, to samo co bbcode.

    Dalej - mozesz zarejestrowac
    Kod:
        [galeria]
            [video id="5"]
            [image id="33"]
            [post id="251"]
        [/galeria]
    Kazdy z tych kodow to inny shortcode, ale jesli chcesz aby w galerii, w srodku wpisane shortcody byly tez zamieniane na odpowiednie elementy, to trzeba znowu wywolac funkcje konwertujaca [video] na odpowiedni kod html.

    To jest wlasnie rekurencja. Wewnatrz konwersji stringa, natykasz na string ktory rowniez musi byc skonwertowany, ktory rowniez zawiera string ktory musi byc skonwertowany.



    Raz nawet popelnilem gwalt na kompilacji PHP.
    Zrobiłem plik tree-leaf.php ktory w kodzie mial
    include('tree-leaf.php');

    Zapewne bylo to zajebiscie nieefektywne, bo include nie jest kompilowane - za kazdym razem parsowany jest plik od nowa. Gdyby plik byl duzy bo bylaby niezla klapa, ale w tym przypadku byl maly, i zagniezdzony maksymalnie 5x, wiec zostawilem jak jest, bo i tak roznica nie zauwazalna.

    Czy latwiej/czytelniej? Wszystko zalezy od problemu. Kazda funkcje rekurencyjna da sie zapisac jako iteracyjna, i odwrotnie. Roznica jest jednak ogromna, na studiach nam wykladowca pokazywal funkcje rekurencyjna ktora zajmowala 15 linijek, a jej odpowiednik iteracyjny wymagal okolo 350linii kodu, zeby zrobic to samo.

    A czytelniej - na pewno rekurencyjna jest bardziej czytelna :D

    Sortowanie quicksort/heapsort nie ma sensu bez rekurencji. Cale jego sedno opiera sie na podzieleniu problemu na mniejszy, i zrobienia tego samego.
    Ostatnio zmieniony przez Bazan : 10-01-2015, 03:47
    Dreaming by drumming. ˆˆ™

  6. #2615

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj 2cztery7 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    chodzi mi o to, czy rekurencja jest stosowana w "profesjonalnych" programach pisanych właśnie w javie czy c++ lub podobnych językach. na przykład czy zdarzyło wam się kiedyś w pracy jej użyć? bo wg mnie dużo łatwiej, a na pewno czytelniej jest użyć pętli (chyba zawsze się da?)
    <facepalm>
    Erlang to niby nie jest "profesjonalny" język?

    Tak, użyłem multum razy, chociażby po to, aby parsować rekurencyjnie rzeczy, pchanie tego w pętlę zupełnie nie ma sensu.

    Rekurencja > Pętle :p

    @edit
    I oczywiście rekurencje są dużo bardziej czytelne niż pętle, nie wiem kto Ci kurwa powiedział, że jest odwrotnie xD

  7. #2616
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    @Alex Fortune ;
    http://ideone.com/wXiAn9

    powiedz mi, ze to jest czytelne :)

    albo chociaz tyle, ze bardziej czytelne od tego:
    http://ideone.com/Qw8FDZ

    nie chodzi mi to jak kod wygląda, ale o interpretacje kodu
    Ostatnio zmieniony przez Kusterek : 10-01-2015, 12:02

    irc: freenode.net in #torgdevs

  8. #2617
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    niektóre problemy są czytelniejsze w postaci rekurencyjnej, inne w iteracyjnej
    trzeba wybrać odpowiednie rozwiązanie (rekurencja ma wyższą złożoność pamięciową nie?)
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  9. #2618
    Avatar 2cztery7
    Data rejestracji
    2014
    Posty
    628
    Siła reputacji
    10

    Domyślny

    Cytuj Alex Fortune napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    <facepalm>
    Erlang to niby nie jest "profesjonalny" język?

    Tak, użyłem multum razy, chociażby po to, aby parsować rekurencyjnie rzeczy, pchanie tego w pętlę zupełnie nie ma sensu.

    Rekurencja > Pętle :p

    @edit
    I oczywiście rekurencje są dużo bardziej czytelne niż pętle, nie wiem kto Ci kurwa powiedział, że jest odwrotnie xD
    nie napisałem, że erlang jest nieprofesjonalny, ale ponieważ jest językiem funkcyjnym, to rekurencja zapewne występuje w nim na porządku dziennym. chodziło mi o to, czy w językach z zupełnie innej rodziny, np. c++, java używa się powszechnie (albo przynajmniej dość często) rekurencji.
    dzięki za wszystkie odpowiedzi ;P

  10. #2619
    Avatar matex06
    Data rejestracji
    2006
    Wiek
    28
    Posty
    735
    Siła reputacji
    18

    Domyślny

    Czy książka
    Język C. Szkoła programowania - Wydanie V - Stephen Prata
    Jest dobra dla totalnego laika z programowania?

    Anime-Planet.com - anime | manga | reviews

  11. #2620
    Avatar Killavus
    Data rejestracji
    2005
    Położenie
    Wrocław
    Wiek
    32
    Posty
    915
    Siła reputacji
    19

    Domyślny

    Cytuj 2cztery7 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    nie napisałem, że erlang jest nieprofesjonalny, ale ponieważ jest językiem funkcyjnym, to rekurencja zapewne występuje w nim na porządku dziennym. chodziło mi o to, czy w językach z zupełnie innej rodziny, np. c++, java używa się powszechnie (albo przynajmniej dość często) rekurencji.
    dzięki za wszystkie odpowiedzi ;P
    Rozwiązania niektórych problemów bez użycia rekurencji bywają trudne. Lecz w językach imperatywnych warto unikać jej stosowania - w językach funkcyjnych są one wydajne, ponieważ kompilator/interpreter pod spodem często jest w stanie zamienić je na pętle (tzw. TCO - tail call optimalisation). Dla komputera jako takiego pętla jest naturalniejszą konstrukcją sterowania niż rekurencja, która na mikropoziomie jest dosyć droga (alokacja wywołania na stosie itd.).

    Co do problemu czytelności, jest to bardzo względne. Ja często z przyjemnością czytam rekurencje, które układają się w przebieg indukcji strukturalnej względem struktury danych - z łatwością wtedy potrafię to sobie przeparsować w głowie, o wiele łatwiej niż pętle w takiej sytuacji ;).

    Przykład:
    Kod:
    (Haskell)
    search needle treeNode@(TreeNode left value right) | value > needle = search needle right
                                                       | value < needle = search needle left
                                                       | otherwise = treeNode
    Pozdrawiam
    Killavus
    Ostatnio zmieniony przez Killavus : 10-01-2015, 13:38

  12. #2621

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj Killavus napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Rozwiązania niektórych problemów bez użycia rekurencji bywają trudne. Lecz w językach imperatywnych warto unikać jej stosowania - w językach funkcyjnych są one wydajne, ponieważ kompilator/interpreter pod spodem często jest w stanie zamienić je na pętle (tzw. TCO - tail call optimalisation). Dla komputera jako takiego pętla jest naturalniejszą konstrukcją sterowania niż rekurencja, która na mikropoziomie jest dosyć droga (alokacja wywołania na stosie itd.).

    Co do problemu czytelności, jest to bardzo względne. Ja często z przyjemnością czytam rekurencje, które układają się w przebieg indukcji strukturalnej względem struktury danych - z łatwością wtedy potrafię to sobie przeparsować w głowie, o wiele łatwiej niż pętle w takiej sytuacji ;).

    Przykład:
    Kod:
    (Haskell)
    search needle treeNode@(TreeNode left value right) | value > needle = search needle right
                                                       | value < needle = search needle left
                                                       | otherwise = treeNode
    Pozdrawiam
    Killavus
    Zaraz zaraz, przecież praktycznie dowolny kompilator języka imperatywnego wyciąga zagnieżdżone calle. o_o

    Cytuj Kusterek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    @Alex Fortune ;
    http://ideone.com/wXiAn9

    powiedz mi, ze to jest czytelne :)

    albo chociaz tyle, ze bardziej czytelne od tego:
    http://ideone.com/Qw8FDZ

    nie chodzi mi to jak kod wygląda, ale o interpretacje kodu
    Dla mnie wersja 1 jest dużo czytelniejsza, czy tylko ja tak mam xD?

    Also ideone to fajna zabawka, można tam sobie execować dowolny kod

  13. #2622
    Avatar Bazan
    Data rejestracji
    2008
    Wiek
    31
    Posty
    1,909
    Siła reputacji
    18

    Domyślny

    Cytuj Kusterek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    @Alex Fortune ;
    http://ideone.com/wXiAn9

    powiedz mi, ze to jest czytelne :)

    albo chociaz tyle, ze bardziej czytelne od tego:
    http://ideone.com/Qw8FDZ

    nie chodzi mi to jak kod wygląda, ale o interpretacje kodu
    Ale tutaj jest złe porównanie trochę. Na siłę zrobiona rekurencja, do problemu który rekurencyjny nie jest. Tutaj dodawane są kolejne elementy. A rekurencja jest przydatna, wtedy gdy wynik zależny jest od wyniku poprzedniego wywołania.

    Chodzi o wszelkie zagnieżdzenia, np tablic.
    Chcesz wyswietlic WSZYSTKIE wartosci tablicy. Coś co w php robi się za pomocą var_dump albo print_r.

    Kod PHP:
    <?php 
    function pokaz_zawartosc($tablica) {
        foreach ($tablica as $pole) {
            if (is_array($pole)) {
                pokaz_zawartosc($pole);
            } else {
                echo $pole."\n"; 
            }
        }
    }
    ?>
    http://ideone.com/XFpK9U
    Tutaj az sie prosi o rekurencje. Cholernie krotki kod. Ktory pokaze kazde zagniezdzenie. Naturalna jest tutaj rekurencja, nawet nie przychodzi mi pomysl jak to zrobic iteracyjnie :P
    Ostatnio zmieniony przez Bazan : 10-01-2015, 15:20
    Dreaming by drumming. ˆˆ™

  14. #2623
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    Cytuj Bazan napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    http://ideone.com/XFpK9U
    Tutaj az sie prosi o rekurencje. Cholernie krotki kod. Ktory pokaze kazde zagniezdzenie.
    no tak, i nie wyobrazam sobie innego rozwiazania niz rekurencyjne.

    W moim przypadku ta rekurencje jest wzięta tak z dupy, że od tygodnia patrze na nią i i nie wiem jak to działa ;D

    irc: freenode.net in #torgdevs

  15. #2624
    Avatar Killavus
    Data rejestracji
    2005
    Położenie
    Wrocław
    Wiek
    32
    Posty
    915
    Siła reputacji
    19

    Domyślny

    Cytuj Alex Fortune napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Zaraz zaraz, przecież praktycznie dowolny kompilator języka imperatywnego wyciąga zagnieżdżone calle. o_o



    Dla mnie wersja 1 jest dużo czytelniejsza, czy tylko ja tak mam xD?

    Also ideone to fajna zabawka, można tam sobie execować dowolny kod
    Z tego co wiem, standard ANSI C / C++, Ruby itp. pozostawia TCO jako opcjonalny ficzer - kompilatory mogą, ale nie muszą tego robić.

    A ja nie ufam niczemu, co nie jest zapisane w standardzie jeżeli chodzi o języki ;).

    Pozdrawiam
    Killavus

  16. #2625
    Avatar Rollercoster
    Data rejestracji
    2011
    Wiek
    29
    Posty
    1,247
    Siła reputacji
    14

    Domyślny

    Czytając kod javy z blogów itd. zauważyłem, że ludzie mając oznaczone pola jako private odwołują się do nich po prostu "field" zamiast "this.field".
    Np:
    Kod PHP:
    
    public class ItemEntity {
    
        private String url;
    
        public String getUrl()
       {
         return url;
       }
    
    }
    Nawet IDEA tak genereuje gettery.
    Seter musi wyglądać tak, jeżeli parametr ma taką samą nazwę:
    Kod PHP:
    
    public class ItemEntity {
    
        private String url;
    
        public ItemEntity(String url)
        {
            this.url = url;
        }
    
    }
    Czego lepiej używać? Jak odwoływać się do pól prywatnych? W PHP to było jasne i klarowne :D

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Star Wars: The Old Republic - temat ogólny
    Przez Mefistos w dziale Inne gry
    Odpowiedzi: 106
    Ostatni post: 21-11-2012, 14:28
  2. League of Legends //dla potomnosci: League of Legends - temat ogolny.
    Przez ZinC w dziale Inne gry
    Odpowiedzi: 30145
    Ostatni post: 24-03-2012, 02:33
  3. Cities XL 2012 - temat ogólny
    Przez Bezdomny w dziale Inne gry
    Odpowiedzi: 0
    Ostatni post: 20-10-2011, 18:11
  4. Dragon Ball Legend temat ogólny
    Przez Mugenoo w dziale Tematy serwerów
    Odpowiedzi: 20
    Ostatni post: 02-03-2011, 16:47

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •