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
  • Data: 2018-12-29 12:51:23
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: g...@g...com szukaj wiadomości tego autora
    [ pokaż wszystkie 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: