eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingRustRe: Rust
  • X-Received: by 10.31.142.14 with SMTP id q14mr88873vkd.19.1502456015167; Fri, 11 Aug
    2017 05:53:35 -0700 (PDT)
    X-Received: by 10.31.142.14 with SMTP id q14mr88873vkd.19.1502456015167; Fri, 11 Aug
    2017 05:53:35 -0700 (PDT)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder
    .usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews
    .com!border2.nntp.dca1.giganews.com!nntp.giganews.com!w51no230681qtc.0!news-out
    .google.com!i9ni139qte.0!nntp.google.com!s6no230493qtc.1!postnews.google.com!gl
    egroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Fri, 11 Aug 2017 05:53:34 -0700 (PDT)
    In-Reply-To: <a...@n...v.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=159.205.39.242;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 159.205.39.242
    References: <om4qli$mfm$1@node2.news.atman.pl>
    <a...@n...v.pl>
    <omcv1l$h2o$1@node1.news.atman.pl>
    <a...@n...v.pl>
    <f...@g...com>
    <a...@n...v.pl>
    <4...@g...com>
    <a...@n...v.pl>
    <d...@g...com>
    <a...@n...v.pl>
    <5...@g...com>
    <a...@n...v.pl>
    <f...@g...com>
    <a...@n...v.pl>
    <5...@g...com>
    <a...@n...v.pl>
    <1...@g...com>
    <omi0ce$trs$1@node2.news.atman.pl>
    <a...@n...v.pl>
    <5...@g...com>
    <b...@g...com>
    <omifua$d2f$1@node2.news.atman.pl>
    <9...@g...com>
    <a...@n...v.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <9...@g...com>
    Subject: Re: Rust
    From: "M.M." <m...@g...com>
    Injection-Date: Fri, 11 Aug 2017 12:53:35 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 106
    Xref: news-archive.icm.edu.pl pl.comp.programming:210975
    [ ukryj nagłówki ]

    On Friday, August 11, 2017 at 2:03:15 PM UTC+2, slawek wrote:
    > On Fri, 11 Aug 2017 02:34:20 -0700 (PDT), Maciej Sobczak
    > <s...@g...com> wrote:
    > > wraz z biblioteką Qt daje przenośność i możliwo?=
    > > ?ci". I tu ma rację, niezależnie od wad tego języka. Pokry=
    > > cie platform (przenośność) i niszy rynkowych (możliwo=
    > > ści) w C++ jest znacznie lepsze, niż w innych językach i dla=
    >
    > Narzędzia dla C i C++ są powszechnie dostępne, ale programy w nich
    > napisane nie są w 100% przenośne.
    >
    > Między innymi nie jest ustalone czym jest int.
    >
    > W dodatku Komitern ustala kolejne wersje, które są implementowane jak
    > komu się chce. Na przykład w C powinien być typ bool, a bywa że go
    > nie ma.
    >
    > Pod tym względem Java jest nieco lepsza.

    Pod względem przenośności i w ogóle pod względem wygody programowania?
    W moim odczuciu jest o niebo lepsza. Wiadomo, nie chodzi strikte o
    język, tylko też o narzędzia. Bo co stoi na przeszkodzie, aby
    napisać kompilatory do C++ na różne platformy w których int
    ma zawsze 32bity? Chyba poza wydajnością nie ma żadnych przeszkód?
    Generalnie to ja bym programował tylko w Javie. Bardzo lubię 
    Javę, miałem nawet okres w swoim życiu, gdy tylko programowałem w
    Javie i w C++ nie chciałem. Potem się zniechęciłem, nie do języka, nie
    zmieniło się nic pod tym względem że lubię Javę, nadal jakoś
    tak po prostu miło się pisze w Javie, kod jest taki przejrzysty,
    bez sieczki spowodowanej nadmierną ilością operatorów lub szablonów,
    dużo jest gotowych bibliotek, właśnie jest ta dobra przenośność, itd...

    Ale problemy były gdy uruchamiałem programy korzystające intensywnie z
    dużej pamięci. Gdy wezmę np. taką Wekę (pakiet do uczenia maszynowego) i
    wrzucę plik o rozmiarze rzędu 3MB, to Weka potrafi się wywalić gdy
    ma mniej niż 1GB !!! Zazwyczaj ustawiam 1.2GB do takiej zabawy. Gdy
    Weka zrobi jedną epokę w uczeniu multi layer perceptron, to moja
    implementacja zrobi może z 50, a też często używam wektorów a
    nie wskaźników. Wektor czy lista z szablonów C++ potrafi mieć
    narzut pamięciowy 2-3 krotny, jednak pomimo tego, napisane w C++ potem]
    działa lepiej, szybciej, jest tak jakby bardziej przewidywalne.

    Kiedyś kilka gier typu szachy-warcaby w Javie napisałem. Programy
    te nie korzystały intensywnie z pamięci, ponieważ większość
    pamięci było allokowane raz na starcie programu i potem trzymane w
    specjalnych tablicach. Innymi słowy nie robiłem ciągle new. Za to
    programy te miałem dużą tablicę hashującą. Okazało się, że w
    analogicznych programach w C++ ta duża tablica hashująca mogła
    być 2-3 razy większa, ponieważ właśnie w Javie był taki duży
    narzut pamięciowy.

    W Javie każdy obiekt i każda tablica są dynamiczne, wątpię żeby
    optymalizator potrafił tablicę lub obiekt położyć na stosie
    procesora. Allokowanie na stercie jest wolne. Dostęp do nowo
    zaalokowanej pamięci może jest w miarę szybki, ale w trakcie
    allokowania rzadko działa cache, a dostęp do niebuforowanej
    pamięci jest wolny.

    No i niestety, z wielką przykrością, rzadko sięgam po ten
    piękny, przyjemny i przenośny język programowania.

    Ktoś czytając to mógłby pomyśleć, że Java ma same wady, ale
    tak nie jest. Kompilatory mogą wygenerować z kodu bajtoweg
    Javy bardzo efektywny kod maszynowy, i już kiedyś widziałem
    jak ten sam algorytm napisany w Javie działa szybciej niż w
    C++. Ale po pierwsze w C++ jeszcze można było zoptymalizować,
    chociażby poprzez wstawki assemblerowe, a tamten algorytm
    nie korzystał intensywnie z dużej pamięci.

    Pozdrawiam


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: