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:a37:9547:: with SMTP id x68mr456564qkd.2.1546084283792; Sat, 29
    Dec 2018 03:51:23 -0800 (PST)
    X-Received: by 2002:a37:9547:: with SMTP id x68mr456564qkd.2.1546084283792; Sat, 29
    Dec 2018 03:51:23 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.
    iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no32
    55986qtk.0!news-out.google.com!h3ni7637qtk.1!nntp.google.com!v55no3255979qtk.0!
    postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 29 Dec 2018 03:51:23 -0800 (PST)
    In-Reply-To: <5...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.0.80.166;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 31.0.80.166
    References: <c...@g...com>
    <f...@g...com>
    <a...@g...com>
    <7...@g...com>
    <a...@g...com>
    <6...@g...com>
    <0...@g...com>
    <a...@g...com>
    <5...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <d...@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: Sat, 29 Dec 2018 11:51:23 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 148
    Xref: news-archive.icm.edu.pl pl.comp.programming:213087
    [ ukryj nagłówki ]

    W dniu sobota, 29 grudnia 2018 07:13:22 UTC+1 użytkownik s...@g...com napisał:

    > > > I to jest kod pełen
    > > > anty-wzorców, których źródłem są właśnie złe nawyki.
    > >
    > > Dobrze. To może lepiej pokazać dobre wzorce na dobrym kodzie?
    >
    > Wzorce i antywzorce nie zależą od języka programowania! Podobnie jak wspomniane
    nawyki.

    Pewne języki stawiają barierę na wyrażanie pewnych rzeczy, i coś,
    co w jednych językach może być wyrażone (nazwane) bezpośrednio, w innych
    musi pozostać "wzorcem".

    > > Nadal nie wiemy, czy należy zmienić język, żeby pisać dobrze.
    > > Albo, wracając do pierwszego pytania, czy C++ jest (nie)dobry do nauki.
    >
    > Jest dobry:
    > + jest prawdziwy (w nim się pisze wszelkie poważne systemy - nawet oprogramowanie
    do F-35 napisano w C++ rzucając wcześniej stosowaną Adę np. w F-22 i Euro Fighter
    2000)

    Nawet jeśli tak jest, niekoniecznie czyni to go dobrym do nauki.

    > + jest kompatybilny (z najważniejszymi językami: Asemblerem i C, a do pozostałych
    języków można w nim tworzyć rozszerzenia)

    Prawie każdy używany współcześnie język umożliwia wywoływanie natywnych
    funkcji

    > + produkuje bardzo szybki, natywny kod (nie wymaga żadnej wirtualnej maszyny czy
    interpretera)
    > + jest dobrze rozwinięty i nadal rozwijany
    > + jest dobrze zrozumiany i jest sprawdzony

    Oto przykład na to, jak dobrze jest zrozumiany:
    http://flyingfrogblog.blogspot.com/2013/10/herb-sutt
    ers-favorite-c-10-liner.html

    > + jest wieloplatformowy (jeśli się użyje odpowiednich bibliotek: Stl, Boost, Sdl,
    OpenGl czy Qt i jeśli się umiejętnie wydziela wywołania nieprzenośnych funkcji)

    Tzn. jest wieloplatformowy, jeśli na każdą platformę pisze się osobny kod?

    > + jest obiektowy

    A dlaczego to jest dobre?

    > + wspiera wielodziedziczenie

    A dlaczego to jest dobre?
    I czy jesteś w stanie podać przykład jakiegoś problemu,
    dla którego wielodziedziczenie byłoby dobrym (albo jedynym sensownym)
    rozwiązaniem?

    Robiłem ostatnio rozeznanie w temacie, i trafiłem na książkę
    "Object Oriented Programming. An evolutionary approach", gdzie
    jako przykład podano, że języki z wielodziedziczeniem pozwalają
    reprezentować "zabawkową ciężarówkę" jednocześnie jako rodzaj
    zabawki, jak i rodzaj ciężarówki.
    Firmy logistyczne będą zachwycone.

    > + ma możliwość przeładowania operatorów

    A dlaczego to jest dobre?

    > + ma wsparcie dla metaprogramowania (szablony)

    C również ma "wsparcie dla metaprogramowania" (preprocesor).
    Są języki, które mają naprawdę o wiele lepsze wsparcie dla
    metaprogramowania (Lisp, OCaml, Haskell)

    > + wspiera wyjątki (jako sposób obsługi błędów)

    A dlaczego to jest dobre?

    > + wspiera wiele stylów programowania i wiele paradygmatów programowania

    Podobnie jak wiele innych języków.

    > + darmowy

    Podobnie jak wiele innych języków.

    > + ma bardzo dobre BIBLIOTEKI DO WSZYSTKIEGO na liberalnych licencjach

    Podobnie jak wiele innych języków.

    > + jest przyjazny dla ucznia (można go poznawać stopniowo - w miarę potrzeb)

    A znasz jakiś język, którego nie można poznawać stopniowo?

    > + jest wiele podręczników (z Opus Magnum Jerzego Grębosza na czele)

    Nie czytałem, to się nie wypowiem.
    Ale "Język C++" Stroustrupa to w moim odczuciu naprawdę kiepska książka.
    Zresztą nawet Scott Meyers, autor książek z serii "Effective C++",
    już sobie odpuścił.
    https://www.youtube.com/watch?v=KAWA1DuvCnQ&feature=
    youtu.be

    > + jest standardem w konkursach dla programistów

    W jakich konkursach?
    Wszystkie, z którymi ja miałem styczność, dawały uczestnikom dużą swobodę
    w wyborze języka.

    > Wady:
    > - koszmarne komunikaty linkera (Gnu g++)
    > - koszmarne komunikaty kompilatora gdy coś nie gra w użytych szablonach (Gnu g++)
    > - słaby debuger Gnu gdb lub jego interfejs w Qt Creator (w porównaniu do debugera
    Borlanda w C++ Builder).

    To akurat nie brzmi jak wada C++, tylko jakiegoś tam narzędzia.

    > - ręczne zarządzanie pamięcią

    Jak to? A unique_ptr i shared_ptr? A BDW GC?

    > - brak konsekwencji w stosowaniu nazewnictwa między bibliotekami (np. w Stl i Qt)
    (do przeżycia)

    Również brak konsekwencji w stosowaniu nazewnictwa w obrębie biblioteki
    (STL, zob. prezentację Meyersa).

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: