eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCo jest nie tak z C++ (było: Rust)Re: Co jest nie tak z C++ (było: Rust)
  • Data: 2017-08-23 12:14:59
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    > > Musiał. Musiał przeczytać o hd, tl, ttl, nil i null oraz wiedzieć, co robią
    operatory v oraz &. I jeszcze parę innych rzeczy.
    >
    > Nie.

    Urodził się z tą wiedzą? Naprawdę?

    > Musiał nauczyć się języka, który potem zmieścił się w jego głowie.

    To stwierdzenie dotyczy wszystkich języków. Mam wrażenie, że ideologizujesz i
    dorabiasz mitologię do czegoś, co na to nie zasługuje.

    > Ale przynajmniej będziesz miał szanse je wypowiedzieć bez dokumentacji.

    Ale przecież operatory w Wolframie też można wypowiedzieć. Np. operator indeksowania
    (to te podwójne nawiasy) nazywa się Part. I co ciekawe, jest to po prostu inna
    składnia na to samo, więc a[[idx]] oraz Part[a,idx] to są te same operacje. Różnią
    się tylko w pisowni. Podobnie, x+y to Plus[x,y]. Itd.
    Oznacza to też, że każdy program w Wolframie można napisać nie używając żadnych
    operatorów. Czyli jeśli nieczytelne operatory są dla Ciebie problemem i wolisz
    samodokumentujący się zapis słowny, to w Wolframie możesz mieć tego nawet więcej, niż
    w SmallTalku.

    > Jednak w moim odczuciu linijka
    >
    > oddsEvens(x) = append(odds(x), evens(x))
    >
    > jest zdecydowanie czytelniejsza od
    >
    > oddsEvens[x_] := Join[x[[1 ;; ;; 2]], x[[2 ;; ;; 2]]]

    No bez jaj. Naprawdę nie zrozumiałeś?

    oddsEvens[x_] := Join[odds[x], evens[x]]

    Teraz lepiej? Oczywiście, teraz potrzebujesz zdefiniować osobno czym jest odds[x_]
    oraz evens[x_], np.:

    odds[x_]:=x[[1 ;; ;; 2]]
    evens[x_]:=x[[2 ;; ;; 2]]

    albo nawet:

    odds[x_]:=Part[x, 1 ;; ;; 2]
    evens[x_]:=Part[x, 2 ;; ;; 2]

    jeśli bardzo nie lubisz podwójnych nawiasów.
    Ale uznałem, że taka "refaktoryzacja" jest tutaj przesadą, bo jeśli jakaś funkcja
    pomocnicza jest implementowana jedną operacją, to nie ma po co takiej funkcji
    definiować i można od razu rozwiązać właściwy (ten zadany) problem.

    > Nie przekonał do czego?

    A do czego miał przekonać? :-)

    > Że język jest narzędziem do myślenia.

    Każdy jest. Dlatego ten Twój przykład niczego szczególnego w tym zakresie nie
    pokazał. Ot, dawno temu jakiś koleś napisał długi i skomplikowany program na
    zrobienie prostej rzeczy. Dzisiaj proste rzeczy robi się krótkimi programami, dzięki
    czemu można podnieść poziom i łatwiej/szybciej myśleć o rzeczach bardziej
    skomplikowanych.

    --
    Maciej Sobczak * http://www.inspirel.com

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: