eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
  • X-Received: by 2002:a0c:b917:: with SMTP id u23mr389797qvf.6.1545951212237; Thu, 27
    Dec 2018 14:53:32 -0800 (PST)
    X-Received: by 2002:a0c:b917:: with SMTP id u23mr389797qvf.6.1545951212237; Thu, 27
    Dec 2018 14:53:32 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.
    com!news.xlned.com!peer01.fr7!futter-mich.highwinds-media.com!peer02.iad!feed-m
    e.highwinds-media.com!news.highwinds-media.com!v55no534952qtk.0!news-out.google
    .com!h3ni6219qtk.1!nntp.google.com!v55no534948qtk.0!postnews.google.com!glegrou
    psg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 27 Dec 2018 14:53:31 -0800 (PST)
    In-Reply-To: <6...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.0.80.71;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 31.0.80.71
    References: <c...@g...com>
    <f...@g...com>
    <a...@g...com>
    <7...@g...com>
    <a...@g...com>
    <6...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <0...@g...com>
    Subject: Re: Jaki język polecić początkującemu? - komentarz do artykułu w
    Programista 9/2018
    From: g...@g...com
    Injection-Date: Thu, 27 Dec 2018 22:53:32 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 6428
    X-Received-Body-CRC: 1163697354
    Xref: news-archive.icm.edu.pl pl.comp.programming:213082
    [ ukryj nagłówki ]

    W dniu czwartek, 27 grudnia 2018 19:20:20 UTC+1 użytkownik Maciej Sobczak napisał:
    > > > Jakich złych nawyków?
    > >
    > > Pewnie teraz nawet sobie nie jestem w stanie tego wszystkiego
    > > uświadomić.
    >
    > Ale chociaż ze dwa przykłady, dla potomności.

    Przykłady podałem w linku (i szczerze wątpię, żeby potomność
    zechciała kiedykolwiek grzebać na tym śmietnisku).

    > > Z rzeczy najbardziej oczywistych byłoby to używanie
    > > operatora przypisania tam, gdzie nie jest to konieczne.
    >
    > Np. gdzie nie jest konieczne?
    > I dlaczego to jest zły nawyk?

    W większości miejsc nie jest konieczne.
    A jest to zły nawyk, ponieważ - mówiąc skrótowo - zwiększa złożoność
    środków analizy programów i tworzy "przypadkową złożoność".
    Dokładniej jest to wyjaśnione tutaj:
    https://mitpress.mit.edu/sites/default/files/sicp/fu
    ll-text/book/book-Z-H-20.html#%_sec_3.1.3
    ale wyjaśnienie odwołuje się do sekcji 1.1.5.

    > > Inna rzecz, to bałaganiarskie podejście do projektowania interfejsów,
    > > które wydaje się w środowiskach C++-owych na porządku dziennym.
    >
    > "Bałaganiarskie", "wydaje się", "w środowiskach"? Brzmi jak słaba propaganda.

    To nie jest propaganda, więc nie może to być "słaba propaganda".
    Nic nikomu nie sprzedaję.
    Pytasz o moje doświadczenia, to Ci mówię.
    Jeżeli Cię nie interesują albo masz sobie z nich szydzić,
    to nie pytaj.

    > > Dużo rzeczy opisałem tutaj:
    > > https://www.quora.com/What-are-some-examples-of-bad-
    code/answer/Panicz-Godek
    >
    > Nie czytałem całości, bo na początku artykułu okazało się, że znalazłeś gdzieś w
    necie źle napisany kod i postanowiłeś go skrytykować. OK, takie artykuły są
    potrzebne, ale nie odpowiadają na moje pytanie o *złe nawyki*. Coś, co jest cechą
    języka. Czyli coś, co musi być złe, bo język narzuca to zło użytkownikowi. Niczego
    takiego pobieżnie nie zauważyłem w tym artykule.

    Nawyki nie są "cechą języka", tylko ludzi.
    Języki mogą pomagać wykształcać w ludziach takie czy inne nawyki.
    Więcej, wokół języków tworzą się kultury.
    Artykuł, który podlinkowałem, to nie jest "po prostu randomowy
    kod który znalazłem gdzieś w necie": to jest kod, którym ktoś
    się podzielił, żeby inni mogli go czytać. I to jest kod pełen
    anty-wzorców, których źródłem są właśnie złe nawyki. To jest kod,
    który utrwala w ludziach złe nawyki. I, co znamienne, to jest kod,
    który nie jest nietypowy dla programistów C++. Powiedziałbym
    (na podstawie swoich doświadczeń), że jest bardzo typowy.
    W przeciwnym razie nie zadawałbym sobie trudu, żeby o nim pisać.

    Mogę też spróbować sformułować tę myśl inaczej:
    postaraj się odpowiedzieć na pytanie, dlaczego
    taki "zły kod" powstaje.

    (Oczywiście, specyfika C++ odgrywa tutaj pewną istotną rolę:
    w C++ trudno się programuje generycznie. Nie twierdzę, że się nie da,
    ale w C++ łatwiej się operuje na konkretnych reprezentacjach, niż na
    abstrakcyjnych generycznych interfejsach. Podczas pisania artykułu
    szukałem różnych generycznych implementacji algorytmu A* w C++,
    i żadna z nich nie była dobra. Z kolei w Haskellu jest odwrotnie:
    tutaj łatwo napisać jedną ogólną interpretację i ukonkretniać ją
    dla poszczególnych problemów, zaś pewne antywzorce, które są w C++
    powszechne, takie jak przekazywanie informacji przez zmienne globalne,
    są bardzo trudne do wyrażenia)

    > Czyli na razie ten artykuł wpada u mnie w kategorię "C++ jest zły, bo znalazłem
    kiepski kod w necie". To nie jest odpowiedź na moje pytanie.

    Interesujące.
    Mogę wskazać wiele quorowych odpowiedzi wyjaśniających, dlaczego
    C++ jest zły, ale artykuł, który napisałem, w żadnym stopniu tego
    nie dotyczy.

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: