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

  • 41. Data: 2019-01-02 10:17:06
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Maciej Sobczak <s...@g...com>

    > Nie. Programy, które nie posiadają instrukcji przypisania,
    > można analizować, po prostu zastępując wyrażenia ich wartościami.
    > Programów, w których używa się instrukcji przypisania, nie
    > można analizować w taki sposób

    Dlaczego?
    Pytam, bo analizuję i może coś źle robię.

    > - trzeba zaprzęgać inne środki
    > analizy.

    Jakie?
    Czy te inne środki analizy są gorsze - w sensie, że dają gorsze efekty?

    > Tzn. ściśle rzecz biorąc cała informatyka teoretyczna bazuje na
    > "czystych funkcjach"

    To ja chyba czytałem inną książkę.

    > > Tymczasem w informatyce, jeżeli w ogóle jest jakaś podstawa dla innych
    konstrukcji, to zwyczajowo była nią maszyna Turinga

    > Jeśli zapytamy, jaki model obliczeń jest współcześnie
    > najbardziej rozpowszechniony

    Zdecydowanie nie jest nim programowanie funkcjonalne.

    > i najlepiej zrozumiany, to prawdopodobnie
    > tym modelem obliczeń będzie arkusz kalkulacyjny: jest bardzo duża
    > rzesza osób, które umieją korzystać z arkuszy kalkulacyjnych,
    > a które nawet nie wiedzą, że to jest programowanie.
    > Ten model obliczeń charakteryzuje się tym, że nie ma w nim
    > przepływu sterowania ani operacji przypisania.

    Brniesz.

    https://www.google.com/search?q=Excel+assign+value+t
    o+cell

    > Tutaj nie chodzi o to, że operatora przypisania ma nie być.
    > Chodzi o to, żeby nie używać go wtedy, kiedy to nie jest konieczne.

    I po długiej dyskusji, w której gdzieś tam wcześniej wspomniałeś o złych nawykach z
    C++, nadal nie wiem, gdzie w C++ nie jest to konieczne.

    > Programy, które nie polegają na globalnym stanie, analizuje
    > się łatwiej

    Jesteś pierwszy, który wspomniał o globalnym stanie. Po co?

    > > https://cemerick.com/2009/03/24/why-mit-now-uses-pyt
    hon-instead-of-scheme-for-its-undergraduate-cs-progr
    am/
    >
    > Nie wiem co miałoby z tego linka wynikać dla tej dyskusji.

    A taki tam przypominacz, że nawet u źródeł SICP traci autorytet.

    > Owo ustalenie, że stosowanie operatora przypisania (oraz operatów
    > wyrażających przepływ sterowania) komplikuje
    > środki analizy programu,

    W jaki sposób komplikuje?

    > > > Też nie wiem. Ale jeżeli idzie o mnie, to nie umiem pisać
    > > > w C++ kodu tak, żeby być z niego zadowolonym.
    > >
    > > Mi się zdarzyło.
    >
    > A to z chęcią bym zobaczył ;]

    Link w sygnaturze.

    > Akurat dla mnie ciekawie byłoby się dowiedzieć,
    > czego się można nauczyć od Ady, bo nie miałem z nią żadnej styczności.

    Kultury tworzenia fizycznej struktury kodu, nacisku na projekt używanych typów
    danych, paru fajnych idiomów w okolicy programowania wielowątkowego oraz ciekawej
    obserwacji, jak dużo można zrobić bez używania jawnie oraz niejawnie (!) pamięci
    dynamicznej (np. prawie wszystkie wzorce projektowe GoF). Jeżeli masz zacięcie
    teoretyczne, warto wiedzieć, że na podzbiorze Ady wysósł SPARK, czyli język
    zintegrowany z metodą formalną do weryfikacji jego poprawności. Last but not least,
    bardzo sensowny podzbiór Ady (w tym cały potrzebny dla SPARKa) ma profil tzw. Zero
    FootPrint Run-Time, czyli nie wymaga wsparcia żadnej dodatkowej warstwy kodu.
    Wszystkie powyższe pozwoliły mi inaczej spojrzeć na prace robione w innych językach
    (w szczególności w C++).
    Interesują mnie systemy wbudowane (w tym krytyczne) i powyższe cechy, zwłaszcza ZFP,
    są dla mnie wyjątkowo cenne. Polecam.

    > Jak dla mnie Wolfram pewnie byłby OK, gdyby był open-source'owy.

    Dlaczego?

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


  • 42. Data: 2019-01-02 10:53:04
    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, December 31, 2018 at 10:14:18 AM UTC+1, g...@g...com wrote:
    > W mojej ocenie C++ jest językiem, który sprawia, że proste rzeczy
    > stają się na tyle trudne, że o zaawansowanych można w ogóle zapomnieć.

    Jest dokładnie odwrotnie. Wysokopoziomowe języki istotnie sprawiają
    wrażenie, że skomplikowane rzeczy można robić szybciej, ponieważ wiele
    rzeczy mają wbudowanych, a część problemów ukrywają przed programistą,
    przez co próg wejścia jest istotnie niższy. C++ nie nadaje się do
    pisania zabawkowych rzeczy, które mieszczą się na dwóch slajdach do
    pokazania na niszowej konferencji.

    Jego siłę widać, gdy są do przetworzenia duże ilości danych
    nietrywialnymi algorytmami. C++ posiada środki wyrazu pozwalające
    opisać zarówno struktury danych jak i same algorytmy na poziomie
    szczegółowości niedostępnym w językach wyższego poziomu. Z jednej
    strony można operować na abstrakcjach, ale jak trzeba uwzględnić
    niskopoziomowe cechy sprzętu (a bardzo często trzeba, wbrew mitom)
    to też są na to sposoby.

    w.


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

    W dniu środa, 2 stycznia 2019 09:48:27 UTC+1 użytkownik Maciej Sobczak napisał:
    > > Jak to kiedyś powiedział mój kolega,
    > > "nikt, kto kroi chleb, nie myśli, że wysyła wiadomość do noża,
    > > nakazującą mu krojenie chleba, albo do chleba, nakazującą
    > > mu się pokroić".
    >
    > Zły poziom abstrakcji.

    Kto decyduje o tym, jaki poziom abstrakcji jest dobry, a jaki zły?

    > Pomyśl, o zespole kucharzy, którzy wydają sobie właśnie takie polecenia. Dlaczego
    wtedy to ma sens?

    A wtedy to ma sens?
    Do ludzi mówimy na różne sposoby, i oni na różne sposoby reagują.
    Obgadują się, zawierają sojusze, proponują rozwiązania, i potrafią
    się obrazić, jak im ktoś będzie wydawał rozkazy.
    Po obiektach w językach obiektowych raczej oczekuje się przewidywalności
    i bezwzględnego posłuszeństwa.

    > Jeśli już jesteś w kuchni, pomyśl też o guzikach na piekarniku albo kuchence
    mikrofalowej. Czym jest wciśnięcie przycisku jeśli nie wysłaniem wiadomości do
    obiektu, żeby wykonał jakąś akcję?
    > Dlaczego wtedy to ma sens?

    Być może dlatego, że właśnie w taki sposób sobie o takich rzeczach myślimy.

    > > W każdym razie ja nie znam nikogo takiego.
    >
    > Być może masz bardzo ograniczone doświadczenia?

    Być może.


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

    W dniu środa, 2 stycznia 2019 10:17:08 UTC+1 użytkownik Maciej Sobczak napisał:
    > > Nie. Programy, które nie posiadają instrukcji przypisania,
    > > można analizować, po prostu zastępując wyrażenia ich wartościami.
    > > Programów, w których używa się instrukcji przypisania, nie
    > > można analizować w taki sposób
    >
    > Dlaczego?
    > Pytam, bo analizuję i może coś źle robię.

    No to weźmy taki przykład:

    int f(void) {
    static n = 0;
    return ++n;
    }

    Jaką wartość ma wyrażenie f()?

    > > - trzeba zaprzęgać inne środki
    > > analizy.
    >
    > Jakie?

    Inne. Różne. Zależy od uwarunkowań problemu.

    > Czy te inne środki analizy są gorsze - w sensie, że dają gorsze efekty?

    Myślę, że jedyną odpowiedzią, jakiej mogę udzielić, jest
    "to zależy".

    > > Tzn. ściśle rzecz biorąc cała informatyka teoretyczna bazuje na
    > > "czystych funkcjach"
    >
    > To ja chyba czytałem inną książkę.

    Bardzo możliwe. Istnieje na świecie wiele książek.

    > > > Tymczasem w informatyce, jeżeli w ogóle jest jakaś podstawa dla innych
    konstrukcji, to zwyczajowo była nią maszyna Turinga
    >
    > > Jeśli zapytamy, jaki model obliczeń jest współcześnie
    > > najbardziej rozpowszechniony
    >
    > Zdecydowanie nie jest nim programowanie funkcjonalne.
    >
    > > i najlepiej zrozumiany, to prawdopodobnie
    > > tym modelem obliczeń będzie arkusz kalkulacyjny: jest bardzo duża
    > > rzesza osób, które umieją korzystać z arkuszy kalkulacyjnych,
    > > a które nawet nie wiedzą, że to jest programowanie.
    > > Ten model obliczeń charakteryzuje się tym, że nie ma w nim
    > > przepływu sterowania ani operacji przypisania.
    >
    > Brniesz.
    >
    > https://www.google.com/search?q=Excel+assign+value+t
    o+cell

    Widzę, że próbujesz zabłysnąć ekwiwokacją.

    > > Tutaj nie chodzi o to, że operatora przypisania ma nie być.
    > > Chodzi o to, żeby nie używać go wtedy, kiedy to nie jest konieczne.
    >
    > I po długiej dyskusji, w której gdzieś tam wcześniej wspomniałeś o złych nawykach z
    C++, nadal nie wiem, gdzie w C++ nie jest to konieczne.

    Cóż, w takim razie chyba bardziej nie pomogę.

    > > Programy, które nie polegają na globalnym stanie, analizuje
    > > się łatwiej
    >
    > Jesteś pierwszy, który wspomniał o globalnym stanie. Po co?

    Ponieważ to jeden ze złych nawyków.

    > > > https://cemerick.com/2009/03/24/why-mit-now-uses-pyt
    hon-instead-of-scheme-for-its-undergraduate-cs-progr
    am/
    > >
    > > Nie wiem co miałoby z tego linka wynikać dla tej dyskusji.
    >
    > A taki tam przypominacz, że nawet u źródeł SICP traci autorytet.

    "while I had Prof. Sussman's ear, I asked him whether he thought that the shift in
    the nature of a typical programmer's world minimizes the relevancy of the themes and
    principles embodied in scheme. His response was an emphatic 'no'; in the general
    case, those core ideas and principles that scheme and SICP have helped to spread for
    so many years are just as important as they ever were. "

    > > Owo ustalenie, że stosowanie operatora przypisania (oraz operatów
    > > wyrażających przepływ sterowania) komplikuje
    > > środki analizy programu,
    >
    > W jaki sposób komplikuje?

    Po raz dziesiąty pytasz o to samo.
    W taki sposób, że proste środki analizy programu (podstawianie
    wartości za wyrażenia) przestają być wystarczające, i potrzebne
    są bardziej skomplikowane środki.

    > > Jak dla mnie Wolfram pewnie byłby OK, gdyby był open-source'owy.
    >
    > Dlaczego?

    Bo lubię móc poznawać w jaki sposób są zrobione różne rzeczy.


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

    W dniu środa, 2 stycznia 2019 09:41:14 UTC+1 użytkownik Maciej Sobczak napisał:
    > > > http://helion.pl/view/8528E/pcppt2.htm
    > >
    > > Zajrzałem.
    > >
    > > Kurde, kalkulator facet robi.
    >
    > Super, dzięki temu można tą książkę zrozumieć bez wnikania w dziedzinę, dla której
    stworzono ten sztuczny przykład.



    > > W SICP jest różniczkowanie symboliczne, symulator obwodów
    > > logicznych, interpreter Prologa i kompilator.
    >
    > Do bani, przez to nie można zrozumieć tych przykładów bez wnikania w dziedzinę, dla
    której stworzono te sztuczne przykłady. Taka książka dla początkujących doktorantów.

    Owszem, SICP to jest książka napisana z myślą o studentach inżynierii
    elektrycznej. Raczej trudna dla osób nietechnicznych.

    > > W PAIP są programy, które na podstawie słownych zadań z podręcznika
    > > do matematyki formułują układy równań, które potem rozwiązują,
    > > algorytmy wyszukujące optymalną trasę oraz systemy ekspertowe.
    >
    > Do bani, przez to nie można zrozumieć tych przykładów bez wnikania w dziedzinę, dla
    której stworzono te sztuczne przykłady. Taka książka dla początkujących doktorantów.

    Raczej nie. Każdy, kto kiedykolwiek korzystał z mapy, powinien mieć
    pewne doświadczenia w wyszukiwaniu optymalnej trasy.
    Każdy, kto kiedykolwiek kojarzył fakty, powinien mieć doświadczenia
    z systemami ekspertowymi.
    A rozwiązywanie układów równań było gdzieś w szkole podstawowej.

    To nie są egzotyczne przykłady z kosmosu.

    > > A tutaj kalkulator.
    >
    > Super, focus jest na języku a nie na szpanowaniu przykładami, dzięki czemu książka
    ma szansę dotrzeć również do młodszych czytelników. I znam takich młodszych, którzy
    są w stanie uczyć się z takiej właśnie książki.

    Focus jest na języku, bo i język jest na tyle skomplikowany, że wymaga
    focusu.
    Lispy są na tyle prostymi językami, że można się zamiast tego skupić
    na interesujących zastosowaniach.

    > Pamiętam, jak w szkole uczyłem się języka Logo. Zdaje się, że miałem wtedy frajdę z
    narysowania wielokąta foremnego a nie z różniczkowania symbolicznego. Jest w SICP
    albo w PAIP coś o rysowaniu wielokątków foremnych? Nie ma? Nie da się?

    W SICP jest implementacja języka obrazkowego.
    Są też książki "How to Design Programs", o systematycznym projektowaniu
    programów (i w niej jest dużo zabaw z obrazkami) oraz "How to Design
    Worlds", która została napisana z myślą o prowadzeniu kursów dla dzieci,
    gdzie dzieci na tych kursach tworzyły gry na podstawie tych kursów
    - się to nazywa "bootstrap world". Kilka lat temu była nawet głośna
    historia 7-letniej dziewczynki, która na tyle biegle nauczyła się
    programować, że wgrała swoją grę do jakiegoś app-store'a:

    https://www.youtube.com/watch?v=9oEZjpEqCwM

    > > W mojej ocenie C++ jest językiem, który sprawia, że proste rzeczy
    > > stają się na tyle trudne, że o zaawansowanych można w ogóle zapomnieć.
    >
    > A ja wpisałem w Googla hasło "C++ scientific computing" i zalało mnie wynikami.

    No i?


  • 46. Data: 2019-01-03 09:37:41
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Maciej Sobczak <s...@g...com>

    > > > Jak to kiedyś powiedział mój kolega,
    > > > "nikt, kto kroi chleb, nie myśli, że wysyła wiadomość do noża,
    > > > nakazującą mu krojenie chleba, albo do chleba, nakazującą
    > > > mu się pokroić".
    > >
    > > Zły poziom abstrakcji.
    >
    > Kto decyduje o tym, jaki poziom abstrakcji jest dobry, a jaki zły?

    Twój kolega. Zauważył, że nie wysyła się wiadomości do noża.

    > > Pomyśl, o zespole kucharzy, którzy wydają sobie właśnie takie polecenia. Dlaczego
    wtedy to ma sens?
    >
    > A wtedy to ma sens?

    - Hej, młody, pokrój chleb.

    Jak najbardziej ma sens.

    > Do ludzi mówimy na różne sposoby, i oni na różne sposoby reagują.
    > Obgadują się, zawierają sojusze, proponują rozwiązania, i potrafią
    > się obrazić, jak im ktoś będzie wydawał rozkazy.
    > Po obiektach w językach obiektowych raczej oczekuje się przewidywalności
    > i bezwzględnego posłuszeństwa.

    Właśnie. Dlatego mówimy, że w języku obiektowym *modelujemy* jakiś system a nie
    odtwarzamy rzeczywistość. Model z natury jest zawsze uproszczony.

    Gdzieś jednak jest granica abstrakcji, której przekroczenie nie wnosi wartości
    dodanej. Nie wysyłamy komunikatu do zmiennych całkowitych, żeby się do siebie dodały.
    I nie wysyłamy komunikatu do noża, żeby pokroił chleb. Ale do elektrycznej krajalnicy
    wysyłamy, naciskając guzik na jej froncie. Być może w środku krajalnicy jest jakiś
    nóż, ale nas to nie obchodzi, bo to nie jemu wysyłamy komunikat. I w ogóle obudowa z
    guzikiem jest po to, żebyśmy nie wnikali, co tam w środku jest. Dla nas jest guzik na
    tej obudowie - właśnie po to, żebyśmy mogli tej krajalnicy wysłać komunikat.

    Widzisz już o co chodzi?
    Programowanie obiektowe jest po to, żeby czytelnie modelować rzeczywiste systemy.
    Oczywiście, jak każde narzędzie, to też może być źle użyte. Np. na złym poziomie
    abstrakcji.

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


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

    > Lispy są na tyle prostymi językami, że można się zamiast tego skupić
    > na interesujących zastosowaniach.

    https://eli.thegreenplace.net/2004/08/08/equality-in
    -lisp

    Tylko 5 różnych operatorów porównania, "which can be very confusing".
    Jak tylko zapamiętam, czym się różnią, skupię się na interesujących zastosowaniach.

    > > > W mojej ocenie C++ jest językiem, który sprawia, że proste rzeczy
    > > > stają się na tyle trudne, że o zaawansowanych można w ogóle zapomnieć.
    > >
    > > A ja wpisałem w Googla hasło "C++ scientific computing" i zalało mnie wynikami.
    >
    > No i?

    No i nie trzeba w ogóle zapomnieć o zaawansowanych rzeczach. To oznacza, że być może
    Twoja ocena C++ nie jest zgodna z faktyczną praktyką jego używania.

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


  • 48. Data: 2019-01-03 09:57:05
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: Maciej Sobczak <s...@g...com>

    > No to weźmy taki przykład:
    >
    > int f(void) {
    > static n = 0;
    > return ++n;
    > }
    >
    > Jaką wartość ma wyrażenie f()?

    A jaką miał poprzednio?

    I dlaczego użyłeś słowa static?
    Czy musisz sięgać aż po tak bardzo niszowe przykłady, żeby wykazać, że C++ jest zły?
    Czy to znaczy, że w programie C++, w którym nie ma słowa static, opisywane przez
    Ciebie problemy nie występują? Czy to znaczy, że taki program jest równie dobry, jak
    program, w którym przypisań nie ma?

    > > Czy te inne środki analizy są gorsze - w sensie, że dają gorsze efekty?
    >
    > Myślę, że jedyną odpowiedzią, jakiej mogę udzielić, jest
    > "to zależy".

    W takim razie jest to też odpowiedź na pytanie, czy C++ jest zły albo gorszy od
    czegoś tam, albo czy kreuje złe nawyki. I w sumie do tego zmierzałem.

    Przyjmijmy więc, że C++ jest dobry tam, gdzie kryterium "to zależy" wypada na jego
    korzyść. To chyba dobry wniosek?

    > > I po długiej dyskusji, w której gdzieś tam wcześniej wspomniałeś o złych nawykach
    z C++, nadal nie wiem, gdzie w C++ nie jest to konieczne.
    >
    > Cóż, w takim razie chyba bardziej nie pomogę.

    Dla mnie OK.

    > > > Jak dla mnie Wolfram pewnie byłby OK, gdyby był open-source'owy.
    > >
    > > Dlaczego?
    >
    > Bo lubię móc poznawać w jaki sposób są zrobione różne rzeczy.

    Poznawanie jak coś jest zrobione jest wciągające, ale nie wymagam tego od każdego
    narzędzia, którego używam. Ze względu na naturę projektów wbudowanych lubię wiedzieć,
    jak działa C++ (albo Ada, SPARK, itp.). Ale są też inne projekty, gdzie mogę pozwolić
    sobie na niewiedzę i zastąpić ją zaufaniem. Wtedy używam Wolframa. Polecam -
    zwłaszcza, że jest mocno Lispowaty w swoich fundamentach i sądząc po tym co piszesz
    na tej grupie, jest szansa, że by Ci się bardzo spodobał.

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


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

    W dniu czwartek, 3 stycznia 2019 09:44:34 UTC+1 użytkownik Maciej Sobczak napisał:
    > > Lispy są na tyle prostymi językami, że można się zamiast tego skupić
    > > na interesujących zastosowaniach.
    >
    > https://eli.thegreenplace.net/2004/08/08/equality-in
    -lisp
    >
    > Tylko 5 różnych operatorów porównania, "which can be very confusing".
    > Jak tylko zapamiętam, czym się różnią, skupię się na interesujących zastosowaniach.

    W lispach masz dużo operatorów stwierdzających tożsamość dwóch
    obiektów, bo samo pojęcie tożsamości jest nieoczywiste.
    (istnieją całe traktaty filozoficzne na ten temat)

    Jako początkujący możesz zawsze używać equalp i dalej iść
    przez życie.

    Warto też zwrócić uwagę, że nawet w C sprawa wcale nie wygląda dużo
    lepiej. Wyjaśnij początkującemu, dlaczego następujący kod wypisze
    "różne".

    char s1[] = "abc";
    char s2[] = "abc";

    if (s1 == s2) {
    printf("równe");
    }
    else {
    printf("różne");
    }

    > > > > W mojej ocenie C++ jest językiem, który sprawia, że proste rzeczy
    > > > > stają się na tyle trudne, że o zaawansowanych można w ogóle zapomnieć.
    > > >
    > > > A ja wpisałem w Googla hasło "C++ scientific computing" i zalało mnie wynikami.
    > >
    > > No i?
    >
    > No i nie trzeba w ogóle zapomnieć o zaawansowanych rzeczach. To oznacza, że być
    może Twoja ocena C++ nie jest zgodna z faktyczną praktyką jego używania.

    "scientific computing" to nie są programistycznie zaawansowane rzeczy.
    Naukowcy z reguły piszą na tyle małe programy, że niechlujstwo
    może uchodzić na sucho.
    Jak wpiszesz w Googla "fortran scientific computing", to też zaleje
    Cię wynikami.

    Mówiąc "zaawansowane rzeczy", mam na myśli duże, złożone systemy informatyczne.

    Zwolennikom języka C++ proponuję następujące wyzwanie, żeby
    wzieli książkę "Paradigms of Artificial Intelligence" Norviga
    jest dostępna za darmo tutaj: https://github.com/norvig/paip-lisp
    i spróbowali przełożyć zawarte w niej przykłady na C++.

    Myślę, że to dobre ćwiczenie, i można się przy tej okazji wiele nauczyć.


  • 50. Data: 2019-01-03 14:34:40
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: g...@g...com

    W dniu czwartek, 3 stycznia 2019 09:57:06 UTC+1 użytkownik Maciej Sobczak napisał:
    > > No to weźmy taki przykład:
    > >
    > > int f(void) {
    > > static n = 0;
    > > return ++n;
    > > }
    > >
    > > Jaką wartość ma wyrażenie f()?
    >
    > A jaką miał poprzednio?

    Bardzo dobre pytanie. Nie będziemy na nie na razie odpowiadać,
    ale zapamiętajmy je sobie.

    A teraz inny przykład:

    int g(int x) {
    return x + 2;
    }

    Jaką wartość ma wyrażenie g(5)?
    Na to pytanie odpowiesz bez problemu.
    Nie będziesz musiał zadawać dodatkowego pytania
    w rodzaju "jaka była poprzednia wartość tego wyrażenia?".

    I to właśnie brak tego rodzaju pytań sprawia, że
    ten model jest prostszy.

    > I dlaczego użyłeś słowa static?

    Dla przykładu.

    > Czy musisz sięgać aż po tak bardzo niszowe przykłady, żeby wykazać, że C++ jest
    zły?

    Mój przykład nie miał na celu wykazania "że C++ jest zły"
    (cokolwiek by ono miało oznaczać).
    Używanie statycznych zmiennych w obrębie funkcji nie jest
    niszowe. W niektórych sytuacjach jest użyteczne.

    > Czy to znaczy, że w programie C++, w którym nie ma słowa static, opisywane przez
    Ciebie problemy nie występują?

    Nie. To, o czym mówię, nie ma związku z użyciem słowa "static".

    > Czy to znaczy, że taki program jest równie dobry, jak program, w którym przypisań
    nie ma?

    Nie rozumiem pytania. Nie wiem, co miałoby znaczyć, że "taki program
    jest równie dobry jak jakiś inny program".
    Programy są o tyle dobre, o ile służą do celów, do których mają służyć.

    > > > Czy te inne środki analizy są gorsze - w sensie, że dają gorsze efekty?
    > >
    > > Myślę, że jedyną odpowiedzią, jakiej mogę udzielić, jest
    > > "to zależy".
    >
    > W takim razie jest to też odpowiedź na pytanie, czy C++ jest zły albo gorszy od
    czegoś tam, albo czy kreuje złe nawyki. I w sumie do tego zmierzałem.

    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.

    > Przyjmijmy więc, że C++ jest dobry tam, gdzie kryterium "to zależy" wypada na jego
    korzyść. To chyba dobry wniosek?

    To samo można powiedzieć o wszystkim zawsze.
    Toteż nie jest to szczególnie wartościowy poznawczo wniosek.

    > > > > Jak dla mnie Wolfram pewnie byłby OK, gdyby był open-source'owy.
    > > >
    > > > Dlaczego?
    > >
    > > Bo lubię móc poznawać w jaki sposób są zrobione różne rzeczy.
    >
    > Poznawanie jak coś jest zrobione jest wciągające, ale nie wymagam tego od każdego
    narzędzia, którego używam. Ze względu na naturę projektów wbudowanych lubię wiedzieć,
    jak działa C++ (albo Ada, SPARK, itp.). Ale są też inne projekty, gdzie mogę pozwolić
    sobie na niewiedzę i zastąpić ją zaufaniem. Wtedy używam Wolframa. Polecam -
    zwłaszcza, że jest mocno Lispowaty w swoich fundamentach i sądząc po tym co piszesz
    na tej grupie, jest szansa, że by Ci się bardzo spodobał.

    Swego czasu nawet wyjechałem z taką propozycją na Quorze:
    https://quora-feature-requests-notepad.quora.com/Mat
    hematica-style-notebook

    ale niestety pomysł nie został podchwycony.

strony : 1 ... 4 . [ 5 ] . 6 ... 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: