eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Ilość wypowiedzi w tym wątku: 160

  • 81. Data: 2019-01-04 16:33:09
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: fir <p...@g...com>

    W dniu piątek, 4 stycznia 2019 15:42:28 UTC+1 użytkownik g...@g...com napisał:
    > W dniu piątek, 4 stycznia 2019 14:26:51 UTC+1 użytkownik fir napisał:
    > > W dniu piątek, 4 stycznia 2019 14:12:28 UTC+1 użytkownik g...@g...com
    napisał:
    > >
    > > > > - bo pamietam kiedys sam zajrzalem na jakis tutorial do lispa i nie wygladalo
    to tak zle jak w wydaniu kolegi, tyle ze czego tam sie nauczylem i tak w czesci
    zapomnielem)
    > > >
    > > > Masz gdzieś link do tego tutoriala?
    > > >
    > >
    > > przeczytalem kiedys tutorial dot chyba lispa czy schem a czy ahskela nie pamietam
    na takiej znanej stronce z sutorialiami tutorialspoint czy cos takiego (metne
    sredniociemnozielone logo)
    > >
    > > i cosmi tam to rozjasnilo, cho z nieststy
    > > czesc z tego zapomnielem
    > >
    > > u kolegi chwali sie ze che wyjasniac tego lispa ale szczerze mowiac kolegi
    umijetnosc tlumaczenia jest mz raczej slaba (by cos wytlumaczyc trzeba po kolei,
    spokojnie i podawac istote sprawy.. kolega tlumazy spokojnie al enie po kolei i
    czesto omija istote sprawy)
    > >
    > > takl ze mimo ze intencje kolega ma dobre wynik moze byc bardziej wkourwiajacy niz
    dobry ;c
    > >
    > >
    > > > > > Informatyka to nie jest religia. Jak w coś nie wierzysz, to możesz
    > > > >
    > > > > alez debilna wypowiedz... kolega powinien uwazac bo czasami osiaga poziom
    quelqebuga czy innego talatajstwa a na tym poziomie ja nie moge rozmawiac
    > > > >
    > > > > religie nie jest oparta na niewierzeniu,
    > > > > religie jest oparta na wierze;
    > > >
    > > > Otóż to. Dlatego tutaj nie ma co "wierzyć" albo "nie wierzyć".
    > > > Tutaj, żeby się dowiedzieć, wystarczy sprawdzić.
    > > >
    > >
    > > prosze bardzo neich koelga sprawdzi - co trzeba zrobic, zdisasemblowac kawalek
    kodu (odpowiadajacy temu co w tej funkci w c) i wkleic go tutaj,
    > >
    > > jak wyglada taki asm dla wersji w c to wiemy
    > >
    > > ja tego nie sprawdze bo nei znam lispa,
    > > nawet jakbym nie mial nic do roboty nim bym sie przegryzl przez setupy napisal i
    zdizasemblowal to by mi zajelo z 5 dni
    > > (a raczej bym sie zrazil bo nie mam zapalu ;c)
    >
    > Sprawdziłem (bez dizasemblacji, bo tam to bym się zagubił).
    >
    > Wygląda na to, że miałeś rację.
    > Zmieniłem test pierwszości na test parzystości (bo ciężko było napisać
    > równoważne metody testowania pierwszości)
    > Jak sumujemy kwadraty 10000000 liczb parzystych (przechowując sumę
    > w zmiennej typu Int32), to w C zajmuje to u mnie ok. 0.04 sekundy,
    > a w Haskellu jakieś 2 sekundy, czyli różnica jest nawet dość kolosalna.

    nie mialem racji bo nic takiego nie twierdzilem...
    po prostu nie mam co wierzyc z automatu w taka optymalizaje bo widac na oko ze tam
    byloby chyba sporo do upraszczania,niektore rzeczy mozna latwo uproscic ale niektore
    pewni enie tak latwo a nie wiem ktory to przypadek


  • 82. Data: 2019-01-04 16:35:55
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: fir <p...@g...com>

    W dniu piątek, 4 stycznia 2019 16:33:10 UTC+1 użytkownik fir napisał:
    > W dniu piątek, 4 stycznia 2019 15:42:28 UTC+1 użytkownik g...@g...com
    napisał:
    > > W dniu piątek, 4 stycznia 2019 14:26:51 UTC+1 użytkownik fir napisał:
    > > > W dniu piątek, 4 stycznia 2019 14:12:28 UTC+1 użytkownik g...@g...com
    napisał:
    > > >
    > > > > > - bo pamietam kiedys sam zajrzalem na jakis tutorial do lispa i nie
    wygladalo to tak zle jak w wydaniu kolegi, tyle ze czego tam sie nauczylem i tak w
    czesci zapomnielem)
    > > > >
    > > > > Masz gdzieś link do tego tutoriala?
    > > > >
    > > >
    > > > przeczytalem kiedys tutorial dot chyba lispa czy schem a czy ahskela nie
    pamietam na takiej znanej stronce z sutorialiami tutorialspoint czy cos takiego
    (metne sredniociemnozielone logo)
    > > >
    > > > i cosmi tam to rozjasnilo, cho z nieststy
    > > > czesc z tego zapomnielem
    > > >
    > > > u kolegi chwali sie ze che wyjasniac tego lispa ale szczerze mowiac kolegi
    umijetnosc tlumaczenia jest mz raczej slaba (by cos wytlumaczyc trzeba po kolei,
    spokojnie i podawac istote sprawy.. kolega tlumazy spokojnie al enie po kolei i
    czesto omija istote sprawy)
    > > >
    > > > takl ze mimo ze intencje kolega ma dobre wynik moze byc bardziej wkourwiajacy
    niz dobry ;c
    > > >
    > > >
    > > > > > > Informatyka to nie jest religia. Jak w coś nie wierzysz, to możesz
    > > > > >
    > > > > > alez debilna wypowiedz... kolega powinien uwazac bo czasami osiaga poziom
    quelqebuga czy innego talatajstwa a na tym poziomie ja nie moge rozmawiac
    > > > > >
    > > > > > religie nie jest oparta na niewierzeniu,
    > > > > > religie jest oparta na wierze;
    > > > >
    > > > > Otóż to. Dlatego tutaj nie ma co "wierzyć" albo "nie wierzyć".
    > > > > Tutaj, żeby się dowiedzieć, wystarczy sprawdzić.
    > > > >
    > > >
    > > > prosze bardzo neich koelga sprawdzi - co trzeba zrobic, zdisasemblowac kawalek
    kodu (odpowiadajacy temu co w tej funkci w c) i wkleic go tutaj,
    > > >
    > > > jak wyglada taki asm dla wersji w c to wiemy
    > > >
    > > > ja tego nie sprawdze bo nei znam lispa,
    > > > nawet jakbym nie mial nic do roboty nim bym sie przegryzl przez setupy napisal
    i zdizasemblowal to by mi zajelo z 5 dni
    > > > (a raczej bym sie zrazil bo nie mam zapalu ;c)
    > >
    > > Sprawdziłem (bez dizasemblacji, bo tam to bym się zagubił).
    > >
    > > Wygląda na to, że miałeś rację.
    > > Zmieniłem test pierwszości na test parzystości (bo ciężko było napisać
    > > równoważne metody testowania pierwszości)
    > > Jak sumujemy kwadraty 10000000 liczb parzystych (przechowując sumę
    > > w zmiennej typu Int32), to w C zajmuje to u mnie ok. 0.04 sekundy,
    > > a w Haskellu jakieś 2 sekundy, czyli różnica jest nawet dość kolosalna.
    >
    > nie mialem racji bo nic takiego nie twierdzilem...
    > po prostu nie mam co wierzyc z automatu w taka optymalizaje bo widac na oko ze tam
    byloby chyba sporo do upraszczania,niektore rzeczy mozna latwo uproscic ale niektore
    pewni enie tak latwo a nie wiem ktory to przypadek

    jesli swoja droga tam trwa to tak dlugo to pewnie dlategoz e ten kaskel produkuje
    fizycznie dluga liste w ramie i to moze byc przez to...dla 7 elementow mogloby nie
    byc takiej roznicy i byz obaczyc jak sobieradzi warto by zobaczyc raczej tego asma


  • 83. Data: 2019-01-04 17:48:20
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Roman Tyczka <n...@b...no>

    On Thu, 3 Jan 2019 08:30:55 -0800 (PST), g...@g...com wrote:

    >>> Jedyną osobą, która w tym wątku użyła określeń "C++ jest zły"
    >>> czy "C++ kreuje złe nawyki" jesteś Ty.
    >>
    >> Zgadnij kto to napisał:
    >>
    >> "ja sam musiałem oduczać się różnych złych nawyków, których
    >> nabrałem, ucząc się programowania poprzez takie języki
    >> jak C czy C++"
    >
    > Nie muszę zgadywać, bo to ja to pisałem.
    > I nie jest tam napisane ani "C++ jest zły",
    > ani "C++ kreuje złe nawyki".
    >
    > Jest tam napisane, że ja uczyłem się programowania w oparciu
    > o (m.in.) C i C++ i nabrałem wtedy wielu złych nawyków.
    >
    > Zagadnienie było zresztą dokładniej roztrząśnięte w dalszej
    > części tego wątku. I podkreśliłem tam, że nie napisałem,
    > że "C++ stworzył jakieś nawyki".
    >
    > Czego jeszcze nie rozumiesz?

    Ja wszystko rozumiem. Pytanie czego Ty nie rozumiesz w tym co sam
    napisałeś? No, ale jak się człek zapędzi w kozi róg to potem nagnie każdą
    rzeczywistość i udowodni, że białe jest czarne.

    --
    pozdrawiam
    Roman Tyczka


  • 84. Data: 2019-01-04 18:44:30
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: g...@g...com

    W dniu piątek, 4 stycznia 2019 17:48:21 UTC+1 użytkownik Roman Tyczka napisał:

    > >>> Jedyną osobą, która w tym wątku użyła określeń "C++ jest zły"
    > >>> czy "C++ kreuje złe nawyki" jesteś Ty.
    > >>
    > >> Zgadnij kto to napisał:
    > >>
    > >> "ja sam musiałem oduczać się różnych złych nawyków, których
    > >> nabrałem, ucząc się programowania poprzez takie języki
    > >> jak C czy C++"
    > >
    > > Nie muszę zgadywać, bo to ja to pisałem.
    > > I nie jest tam napisane ani "C++ jest zły",
    > > ani "C++ kreuje złe nawyki".
    > >
    > > Jest tam napisane, że ja uczyłem się programowania w oparciu
    > > o (m.in.) C i C++ i nabrałem wtedy wielu złych nawyków.
    > >
    > > Zagadnienie było zresztą dokładniej roztrząśnięte w dalszej
    > > części tego wątku. I podkreśliłem tam, że nie napisałem,
    > > że "C++ stworzył jakieś nawyki".
    > >
    > > Czego jeszcze nie rozumiesz?
    >
    > Ja wszystko rozumiem. Pytanie czego Ty nie rozumiesz w tym co sam
    > napisałeś? No, ale jak się człek zapędzi w kozi róg to potem nagnie każdą
    > rzeczywistość i udowodni, że białe jest czarne.

    Mhm. I rozumiem, że gdybym powiedział, że jak byłem na wsi, to się
    przeziębiłem, uznałbyś, że stwierdziłem, że wieś powoduje przeziębienie?


  • 85. Data: 2019-01-04 22:14:54
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Roman Tyczka <n...@b...no>

    On Fri, 4 Jan 2019 09:44:30 -0800 (PST), g...@g...com wrote:

    >>>>> Jedyną osobą, która w tym wątku użyła określeń "C++ jest zły"
    >>>>> czy "C++ kreuje złe nawyki" jesteś Ty.
    >>>>
    >>>> Zgadnij kto to napisał:
    >>>>
    >>>> "ja sam musiałem oduczać się różnych złych nawyków, których
    >>>> nabrałem, ucząc się programowania poprzez takie języki
    >>>> jak C czy C++"
    >>>
    >>> Nie muszę zgadywać, bo to ja to pisałem.
    >>> I nie jest tam napisane ani "C++ jest zły",
    >>> ani "C++ kreuje złe nawyki".
    >>>
    >>> Jest tam napisane, że ja uczyłem się programowania w oparciu
    >>> o (m.in.) C i C++ i nabrałem wtedy wielu złych nawyków.
    >>>
    >>> Zagadnienie było zresztą dokładniej roztrząśnięte w dalszej
    >>> części tego wątku. I podkreśliłem tam, że nie napisałem,
    >>> że "C++ stworzył jakieś nawyki".
    >>>
    >>> Czego jeszcze nie rozumiesz?
    >>
    >> Ja wszystko rozumiem. Pytanie czego Ty nie rozumiesz w tym co sam
    >> napisałeś? No, ale jak się człek zapędzi w kozi róg to potem nagnie każdą
    >> rzeczywistość i udowodni, że białe jest czarne.
    >
    > Mhm. I rozumiem, że gdybym powiedział, że jak byłem na wsi, to się
    > przeziębiłem, uznałbyś, że stwierdziłem, że wieś powoduje przeziębienie?

    Gdybyś jednocześnie twierdził, że pobyt w mieście nie powoduje przeziębień
    to tak, tak właśnie bym uznał.
    Drobna acz kluczowa różnica.

    --
    pozdrawiam
    Roman Tyczka


  • 86. Data: 2019-01-04 22:25:02
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: g...@g...com

    W dniu piątek, 4 stycznia 2019 22:14:55 UTC+1 użytkownik Roman Tyczka napisał:

    > >>>>> Jedyną osobą, która w tym wątku użyła określeń "C++ jest zły"
    > >>>>> czy "C++ kreuje złe nawyki" jesteś Ty.
    > >>>>
    > >>>> Zgadnij kto to napisał:
    > >>>>
    > >>>> "ja sam musiałem oduczać się różnych złych nawyków, których
    > >>>> nabrałem, ucząc się programowania poprzez takie języki
    > >>>> jak C czy C++"
    > >>>
    > >>> Nie muszę zgadywać, bo to ja to pisałem.
    > >>> I nie jest tam napisane ani "C++ jest zły",
    > >>> ani "C++ kreuje złe nawyki".
    > >>>
    > >>> Jest tam napisane, że ja uczyłem się programowania w oparciu
    > >>> o (m.in.) C i C++ i nabrałem wtedy wielu złych nawyków.
    > >>>
    > >>> Zagadnienie było zresztą dokładniej roztrząśnięte w dalszej
    > >>> części tego wątku. I podkreśliłem tam, że nie napisałem,
    > >>> że "C++ stworzył jakieś nawyki".
    > >>>
    > >>> Czego jeszcze nie rozumiesz?
    > >>
    > >> Ja wszystko rozumiem. Pytanie czego Ty nie rozumiesz w tym co sam
    > >> napisałeś? No, ale jak się człek zapędzi w kozi róg to potem nagnie każdą
    > >> rzeczywistość i udowodni, że białe jest czarne.
    > >
    > > Mhm. I rozumiem, że gdybym powiedział, że jak byłem na wsi, to się
    > > przeziębiłem, uznałbyś, że stwierdziłem, że wieś powoduje przeziębienie?
    >
    > Gdybyś jednocześnie twierdził, że pobyt w mieście nie powoduje przeziębień
    > to tak, tak właśnie bym uznał.
    > Drobna acz kluczowa różnica.

    A w którym miejscu stwierdziłem, że "pobyt w mieście nie powoduje
    przeziębień"? Rozumiem, że w tej przenośni chodziłoby o to, że twierdzę,
    że stosując języki inne, niż C czy C++, nie można wyrobić złych nawyków?
    Jeśli tak, to w którym miejscu? A jeśli nie, to czy mógłbyś tę myśl
    rozwinąć?


  • 87. Data: 2019-01-07 08:47:04
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Maciej Sobczak <s...@g...com>

    > Maszyny stanów bardzo dobrze modeluje się czystymi funkcjami.

    Właśnie nie i widać to na przykładzie MD5.
    Co więcej, maszyny stanów w zastosowaniach praktycznych (np. wbudowanych) są
    stymulowane z zewnątrz, np. przez przerwania (ogólnie: tzw. programowanie
    zdarzeniowe). Nie ma jak tego popchnąć inaczej, niż przez odwołania do jakiegoś
    stanu, który pamięta, co było poprzednio. Nie wiem, jak miałaby wyglądać realizacja
    takiego automatu przy użyciu czystych funkcji.

    > Tak. I ja właśnie o tym mówię: jeżeli mamy prostsze problemy,
    > to korzystanie ze środków, które są potrzebne do radzenia sobie
    > z bardziej złożonymi problemami jest błędem.
    > (Kiedyś słyszałem określenie "principle of least power")

    Ależ ja się z tym zgadzam.

    > Mógłbym się podjąć, gdyby problem był dla mnie interesujący.
    > Akurat liczenie MD5 w obecnej chwili nie jest takim problemem.

    Rozumiem. Mamy więc (niezaskakujący) wniosek, że różne języki są właściwe do różnych
    problemów.

    [zmienne statyczne]
    > Krytykuję korzystanie z tej możliwości wtedy, kiedy nie jest to
    > konieczne.

    Ależ ja się z tym całkowicie zgadzam.

    > Krytykuję stosowanie operacji przypisania tam, gdzie można
    > tego uniknąć, jako zły nawyk.

    Ale teraz mieszasz tematy. Nie pokazałeś żadnego przykładu, w którym można uniknąć
    operacji przypisania - ani tym bardziej, po co należałoby tego unikać. Musiałeś
    sięgnąć po zmienne statyczne, żeby udowodnić coś na temat operacji przypisania - to
    był właśnie błąd w Twojej argumentacji. Możemy się zgodzić, że nadużywanie zmiennych
    statycznych jest złe, ale nie wynika z tego kompletnie nic nt. operacji przypisania.
    Funkcja MD5 jest dobrym przykładem funkcji, w której zmiennych statycznych nie ma, a
    operacja przypisania jest niezbędna, żeby napisać sensownie wyglądający kod. Powtórzę
    dla tych, co nie zerknęli na przykłady:

    1. w C++ (ogólnie: w języku imperatywnym) jest zmienna "r", i jest pętla, która ma 64
    iteracje, w których modyfikuje zmienną "r".

    2. w Haskellu są 64 zmienne (a raczej stałe), od "r0" do "r63" i rozwinięty kod
    pętli, który przypisuje kolejne wartości na podstawie poprzednich.

    Gdybym był złośliwy, to zapytałbym, co by było, gdyby iteracji było 1k. Albo 1M.

    Nadal uważam, że operator przypisania jest niezbędnym narzędziem w uniwersalnym
    języku programowania (C++ taki jest, Haskell chciałby) i nie widziałem jeszcze
    przykładu kodu, w którym byłby użyty niepotrzebnie.
    Co więcej, nawet sztuczny przykład z "niepotrzebnie" rozpisanym długim wyrażeniem na
    fafnaście małych mógłbym bronić jako uzasadniony, np. w celach dignostycznych.
    Debugery to lubią.

    > Autorzy krytykowanego fragmentu kodu [...]

    Oczywiście. W każdym języku można napisać gówniany kod. Ale ja chcę język, w którym
    będę mógł napisać dobry kod. Np. funkcji MD5. Tymczasem znalazłem gówniany kod w
    Haskellu. Problem w tym, że nie znalazłem dobrego. A to budzi obawy, że może nie da
    się tego zrobić dobrze w tym języku. A to jest już bardzo poważny zarzut, bo to nawet
    nie jest problem nawyków powielanych przez słabe materiały dydaktyczne.

    > Jak sam zauważyłeś, interfejs do kodu liczącego MD5 jest czystą
    > funkcją

    No właśnie. Tym bardziej martwi niemoc Haskella w tej sprawie.

    > I to jest dobry nawyk, że nawet jeśli w implementacji czegoś
    > użyjesz jakichś stanów, to nie wypychasz tego do użytkownika.

    Ależ oczywiście. To się nazywa enkapsulacja. Nadal jednak chcę mieć operator
    przypisania w języku.

    > Bardzo dużo widziałem kursów programowania, które skupiają się
    > na małych przykładach, które przy próbie skalowania powodowałyby
    > chaos.

    Bardzo dobre spostrzeżenie. Wrócimy do niego.

    > W porządku. Używaj sobie czego chcesz. To Twoja sprawa.
    > Ja natomiast mówię o perspektywie innej, niż Twoja.

    OK. Ja mogę mieć różne perspektywy. :-)

    > Pytanie postawione w wątku brzmi "jaki język polecić początkującemu".

    Właśnie. Może taki, który *umożliwia* łatwą implementację dowolnego problemu? Np.
    kalkulatora? Albo np. funkcji MD5?

    > Operator przypisania w językach takich jak C czy Python jest
    > łatwo dostępny, i sprawia wrażenie, że jest prostą operacją.

    Bo jest. To jest podstawowa operacja.

    > Brutalna rzeczywistość jest jednak taka, że używanie operatora
    > przypisania stwarza możliwość do popełnienia wielu błędów,

    Nadal czekam na przykład.
    Uwaga: zmienne statyczne już skrytykowaliśmy. Czekam na przykład z operatorem
    przypisania.

    > i właśnie z tego powodu w pierwszych dwóch rozdziałach SICP

    A z jakiego powodu teraz używają Pythona do nauki?

    > Pomijam kwestię, że dla osób, które uczyły się matematyki,

    I to jest błąd logiczny. Piszesz, że interesują Cię jak najłatwiejsze metody
    współpracy z komputerem a teraz powołujesz się na osoby, które uczyły się matematyki?
    Wyobraźmy sobie więc osoby, które się nie uczyły. Przecież Ty sam pisałeś tu o
    osobach, które na co dzień używają arkuszy kalkulacyjnych. Bądź bardziej
    konsekwentny.

    > zapis
    > w rodzaju
    > x = x + 1
    > jest po prostu równaniem pozbawionym rozwiązań,

    Powiedz tym osobom, że to nie jest równanie. Osoby, które uczyły się matematyki, to
    nie są chyba jakieś ograniczone młoty, dla których takie założenie miałoby być
    nieosiągalne. Zwłaszcza, że każdy matematyk używał gumki do ołówka albo gąbki do
    tablicy i na pewno coś kiedyś zmazywał, żeby coś nowego w tym samym miejscu napisać.
    Uwaga: niektóre języki używają innego symbolu, np. := w tym celu, ale nie wierzę,
    żeby to miało być dla kogoś krytyczne. Zwłaszcza dla ludzi z wykształceniem
    matematycznym.

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


  • 88. Data: 2019-01-07 11:23:25
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: g...@g...com

    W dniu poniedziałek, 7 stycznia 2019 08:47:05 UTC+1 użytkownik Maciej Sobczak
    napisał:
    > > Maszyny stanów bardzo dobrze modeluje się czystymi funkcjami.
    >
    > Właśnie nie i widać to na przykładzie MD5.
    > Co więcej, maszyny stanów w zastosowaniach praktycznych (np. wbudowanych) są
    stymulowane z zewnątrz, np. przez przerwania (ogólnie: tzw. programowanie
    zdarzeniowe). Nie ma jak tego popchnąć inaczej, niż przez odwołania do jakiegoś
    stanu, który pamięta, co było poprzednio. Nie wiem, jak miałaby wyglądać realizacja
    takiego automatu przy użyciu czystych funkcji.

    Jak będę miał wolną chwilę to coś z tym pokombinuję.

    > > Tak. I ja właśnie o tym mówię: jeżeli mamy prostsze problemy,
    > > to korzystanie ze środków, które są potrzebne do radzenia sobie
    > > z bardziej złożonymi problemami jest błędem.
    > > (Kiedyś słyszałem określenie "principle of least power")
    >
    > Ależ ja się z tym zgadzam.
    >
    > > Mógłbym się podjąć, gdyby problem był dla mnie interesujący.
    > > Akurat liczenie MD5 w obecnej chwili nie jest takim problemem.
    >
    > Rozumiem. Mamy więc (niezaskakujący) wniosek, że różne języki są właściwe do
    różnych problemów.

    Pytanie, jaki dalszy wniosek możemy wyciągnąć z tego wniosku.
    Może na przykład taki, że rozsądnie byłoby eksplorować języki,
    które ułatwiają projektowanie języków.
    Albo jakiś inny.

    > > Krytykuję stosowanie operacji przypisania tam, gdzie można
    > > tego uniknąć, jako zły nawyk.
    >
    > Ale teraz mieszasz tematy. Nie pokazałeś żadnego przykładu, w którym można uniknąć
    operacji przypisania - ani tym bardziej, po co należałoby tego unikać. Musiałeś
    sięgnąć po zmienne statyczne, żeby udowodnić coś na temat operacji przypisania - to
    był właśnie błąd w Twojej argumentacji. Możemy się zgodzić, że nadużywanie zmiennych
    statycznych jest złe, ale nie wynika z tego kompletnie nic nt. operacji przypisania.

    Możesz zerknąć w przykłady programów liczących sumę kwadratów
    początkowych siedmiu liczb pierwszych, które przewinęły się
    przez ten wątek (to było w odpowiedzi na post AK).
    Tam dokładnie pokazałem przykład rozumowania podstawieniowego.

    > Funkcja MD5 jest dobrym przykładem funkcji, w której zmiennych statycznych nie ma,
    a operacja przypisania jest niezbędna, żeby napisać sensownie wyglądający kod.
    Powtórzę dla tych, co nie zerknęli na przykłady:
    >
    > 1. w C++ (ogólnie: w języku imperatywnym) jest zmienna "r", i jest pętla, która ma
    64 iteracje, w których modyfikuje zmienną "r".
    >
    > 2. w Haskellu są 64 zmienne (a raczej stałe), od "r0" do "r63" i rozwinięty kod
    pętli, który przypisuje kolejne wartości na podstawie poprzednich.
    >
    > Gdybym był złośliwy, to zapytałbym, co by było, gdyby iteracji było 1k. Albo 1M.
    >
    > Nadal uważam, że operator przypisania jest niezbędnym narzędziem w uniwersalnym
    języku programowania (C++ taki jest, Haskell chciałby) i nie widziałem jeszcze
    przykładu kodu, w którym byłby użyty niepotrzebnie.
    > Co więcej, nawet sztuczny przykład z "niepotrzebnie" rozpisanym długim wyrażeniem
    na fafnaście małych mógłbym bronić jako uzasadniony, np. w celach dignostycznych.
    Debugery to lubią.
    >
    > > Autorzy krytykowanego fragmentu kodu [...]
    >
    > Oczywiście. W każdym języku można napisać gówniany kod. Ale ja chcę język, w którym
    będę mógł napisać dobry kod. Np. funkcji MD5. Tymczasem znalazłem gówniany kod w
    Haskellu. Problem w tym, że nie znalazłem dobrego. A to budzi obawy, że może nie da
    się tego zrobić dobrze w tym języku. A to jest już bardzo poważny zarzut, bo to nawet
    nie jest problem nawyków powielanych przez słabe materiały dydaktyczne.

    Może. Ale może też problem, na który się powołujesz, jest bardzo
    specyficzny (również ze względu na kontekst swojego powstawania).
    Większość programistów, jakich znam, nie implementuje swojego MD5.

    Być może z dydaktycznego punktu widzenia lepiej jest, żeby
    programiści najpierw uczyli się języków, które realizują prostsze
    modele obliczeń, a dopiero później (jeśli zajdzie taka potrzeba)
    takich, które pozwalają na ścisłą kontrolę sprzętu.
    (Wiele wskazuje na to, że tak właśnie jest)

    > > Bardzo dużo widziałem kursów programowania, które skupiają się
    > > na małych przykładach, które przy próbie skalowania powodowałyby
    > > chaos.
    >
    > Bardzo dobre spostrzeżenie. Wrócimy do niego.
    >
    > > W porządku. Używaj sobie czego chcesz. To Twoja sprawa.
    > > Ja natomiast mówię o perspektywie innej, niż Twoja.
    >
    > OK. Ja mogę mieć różne perspektywy. :-)
    >
    > > Pytanie postawione w wątku brzmi "jaki język polecić początkującemu".
    >
    > Właśnie. Może taki, który *umożliwia* łatwą implementację dowolnego problemu? Np.
    kalkulatora? Albo np. funkcji MD5?

    Nie sądzę, żeby istniał taki język.
    Czasem się spotykam z takim sformułowaniem, że dobry
    język powinien robić tak, żeby łatwe rzeczy były w nim
    łatwe, a trudne przynajmniej możliwe.

    > > Operator przypisania w językach takich jak C czy Python jest
    > > łatwo dostępny, i sprawia wrażenie, że jest prostą operacją.
    >
    > Bo jest. To jest podstawowa operacja.

    Podstawowa dla jakiego problemu?

    > > Brutalna rzeczywistość jest jednak taka, że używanie operatora
    > > przypisania stwarza możliwość do popełnienia wielu błędów,
    >
    > Nadal czekam na przykład.
    > Uwaga: zmienne statyczne już skrytykowaliśmy. Czekam na przykład z operatorem
    przypisania.

    Weźmy kod fira z tego wątku:

    int PoliczSumeParuPoczatkowychLiczbPierwszych(int ilu)
    {
    int i = 0, dodano = 0, suma = 0;

    for(;;)
    if(jest_liczba_pierwsza(++i))
    {
    suma += i*i ;
    if(++dodano==ilu) return suma;
    }
    }

    Załóżmy, że zmienimy linijkę

    if(++dodano==ilu) return suma;

    na

    if(dodano++==ilu) return suma;

    Już mamy błąd.

    > > i właśnie z tego powodu w pierwszych dwóch rozdziałach SICP
    >
    > A z jakiego powodu teraz używają Pythona do nauki?

    Wyjaśniają w tekście, który podlinkowałeś wcześniej.

    > > Pomijam kwestię, że dla osób, które uczyły się matematyki,
    >
    > I to jest błąd logiczny. Piszesz, że interesują Cię jak najłatwiejsze metody
    współpracy z komputerem a teraz powołujesz się na osoby, które uczyły się matematyki?

    Podałem też przykład z siedmioletnią dziewczynką.

    > Wyobraźmy sobie więc osoby, które się nie uczyły. Przecież Ty sam pisałeś tu o
    osobach, które na co dzień używają arkuszy kalkulacyjnych. Bądź bardziej
    konsekwentny.
    >
    > > zapis
    > > w rodzaju
    > > x = x + 1
    > > jest po prostu równaniem pozbawionym rozwiązań,
    >
    > Powiedz tym osobom, że to nie jest równanie. Osoby, które uczyły się matematyki, to
    nie są chyba jakieś ograniczone młoty, dla których takie założenie miałoby być
    nieosiągalne. Zwłaszcza, że każdy matematyk używał gumki do ołówka albo gąbki do
    tablicy i na pewno coś kiedyś zmazywał, żeby coś nowego w tym samym miejscu napisać.
    > Uwaga: niektóre języki używają innego symbolu, np. := w tym celu, ale nie wierzę,
    żeby to miało być dla kogoś krytyczne. Zwłaszcza dla ludzi z wykształceniem
    matematycznym.

    Polecam ten wykład:
    https://www.youtube.com/watch?v=uEFrE6cgVNY


  • 89. Data: 2019-01-08 09:08:14
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Wojciech Muła <w...@g...com>

    On Monday, January 7, 2019 at 11:23:26 AM UTC+1, g...@g...com wrote:
    > Może. Ale może też problem, na który się powołujesz, jest bardzo
    > specyficzny (również ze względu na kontekst swojego powstawania).
    > Większość programistów, jakich znam, nie implementuje swojego MD5.

    Nawet nie wiesz, jakie to jest śmieszne w wątku, gdzie na
    poważnie dyskutuje się o sumowaniu kwadratów n początkowych
    liczb pierwszych. :)

    w.


  • 90. Data: 2019-01-08 09:31:54
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: g...@g...com

    W dniu wtorek, 8 stycznia 2019 09:08:15 UTC+1 użytkownik Wojciech Muła napisał:
    > On Monday, January 7, 2019 at 11:23:26 AM UTC+1, g...@g...com wrote:
    > > Może. Ale może też problem, na który się powołujesz, jest bardzo
    > > specyficzny (również ze względu na kontekst swojego powstawania).
    > > Większość programistów, jakich znam, nie implementuje swojego MD5.
    >
    > Nawet nie wiesz, jakie to jest śmieszne w wątku, gdzie na
    > poważnie dyskutuje się o sumowaniu kwadratów n początkowych
    > liczb pierwszych. :)

    Jeśli lubisz się śmiać, to chyba dobrze.

    Przykład z kwadratami liczb pierwszych ma przede wszystkim
    ilustrować korespondencję pomiędzy sformułowaniem problemu,
    a jego rozwiązaniem.

    Spróbuj sformułować problem liczenia MD5 bez odwoływana się
    do istniejących implementacji i dokumentów. Czekam.

strony : 1 ... 8 . [ 9 ] . 10 ... 16


Szukaj w grupach

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: