eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCo jest nie tak z C++ (było: Rust)
Ilość wypowiedzi w tym wątku: 204

  • 51. Data: 2017-08-23 22:35:38
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: "AK" <n...@n...net>

    Użytkownik <g...@g...com> napisał:

    > gołębi, a kogoś zabawy pejczem. Rekursyjne (w PL nie ma czegoś
    > takiego jak "rekurencja")

    > https://pl.wikipedia.org/wiki/Rekurencja

    Slawek ma racje. To "nowomowa".
    Oryginalnie byla tylko rekursja
    Oryginalnie bylo tylko FORTRANu i Algolu a nie "dzisiejsze" Fortrana , Algola
    itp itd

    AK


    ---
    Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
    Avast.
    https://www.avast.com/antivirus


  • 52. Data: 2017-08-23 23:33:51
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: g...@g...com

    W dniu środa, 23 sierpnia 2017 22:34:09 UTC+2 użytkownik AK napisał:
    > Użytkownik "slawek" <f...@f...com> napisał:
    > > Tyle że odczucia są subiektywne, a więc lepiej zostawić je humanistom i innym
    specjalistom od
    > > mniemamologii stosowanej.
    >
    > Niekoniecznie.
    > > Bo powoli dryfujemy w stronę kłótni czy lepiej jest pisać append czy Join.
    >
    > Najlep pisac normalnie:
    > No w Pythonie
    >
    > a = [1,2,3]
    > b = [4,5,6]
    > a += b
    >
    > Mozna prosciej ?

    Używanie destruktywnego przypisania to ogólnie umiarkowanie dobry pomysł.
    Co jeżeli tablica a była używana w jakimś kontekście?
    Właśnie ją zmieniłeś.
    No ale niech będzie

    c = a + b

    > PS: szczegol skladniowy? Nie!. w Pythonie tez mona a.extend(b) ale..
    > += zapamieta sie bo jest uniwersalne w sensie skladni, a extend/join/merge/itp jest
    specyficzne dla
    > API/lib-str jezyka

    nie jest "uniwersalne w sensie składni"
    W haskellu byś napisał

    c = a ++ b

    i pewnie użycie takiego operatora wiązałoby się z takim uzasadnieniem,
    że po + można się spodziewać, że jest przemienne, ale sklejanie list
    nie jest przemienne.

    W PHP do sklejania stringów używa się operatora ".". Każdy operator
    i każda nazwa funkcji mają charakter konwencji.

    W Lispie budowanie złożonych struktur jest poniekąd wyróżnione,
    i by się pisało `(,@a ,@b) (ewentualnie z modyfikacjami quasiquote'a
    `(,a ... ,b ...))

    Zatem tak, szczegół składniowy.


  • 53. Data: 2017-08-24 00:14:09
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: "AK" <n...@n...net>

    Użytkownik <g...@g...com> napisał:

    > a = [1,2,3]
    > b = [4,5,6]
    > a += b
    >
    > Mozna prosciej ?

    > Używanie destruktywnego przypisania to ogólnie umiarkowanie dobry pomysł.
    > Co jeżeli tablica a była używana w jakimś kontekście?

    Nie wydziwiaj. Dobrze ?

    > Właśnie ją zmieniłeś.

    Bo tak chcialem!.

    > No ale niech będzie

    > że po + można się spodziewać, że jest przemienne, ale sklejanie list
    > nie jest przemienne.

    Panie :) Ludzie normalni nie mysla numeryka :). Dla nich plus to plus
    i doskonale rozrozniaja ze a + b to co innego nic b + a

    > W PHP do sklejania stringów używa się operatora ".". Każdy operator
    > i każda nazwa funkcji mają charakter konwencji.

    Kolejne wydziwianie. Szlag mnie trafia na PHPowa skladnie .!

    AK


  • 54. Data: 2017-08-24 08:45:48
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: g...@g...com

    W dniu czwartek, 24 sierpnia 2017 00:15:29 UTC+2 użytkownik AK napisał:

    >
    > > a = [1,2,3]
    > > b = [4,5,6]
    > > a += b
    > >
    > > Mozna prosciej ?
    >
    > > Używanie destruktywnego przypisania to ogólnie umiarkowanie dobry pomysł.
    > > Co jeżeli tablica a była używana w jakimś kontekście?
    >
    > Nie wydziwiaj. Dobrze ?
    >
    > > Właśnie ją zmieniłeś.
    >
    > Bo tak chcialem!.

    Nawet pal licho mutowalność samuch zmiennych.

    >>> a = [1,2,3]
    >>> c = a
    >>> b = [4,5,6]
    >>> a += b
    >>> a
    [1,2,3,4,5,6]
    >>> c
    [1,2,3,4,5,6]
    (ups!)

    mogłeś przy okazji zmienić coś, czego zmienić nie chciałeś.

    Dla porównania:
    >>> a = [1,2,3]
    >>> c = a
    >>> b = [4,5,6]
    >>> a = a + b
    >>> a
    [1,2,3,4,5,6]
    >>> c
    [1,2,3]

    Serio, mutowalne operacje w kodzie to pomyłka.

    https://en.wikipedia.org/wiki/Action_at_a_distance_(
    computer_programming)

    > > No ale niech będzie
    >
    > > że po + można się spodziewać, że jest przemienne, ale sklejanie list
    > > nie jest przemienne.
    >
    > Panie :) Ludzie normalni nie mysla numeryka :). Dla nich plus to plus
    > i doskonale rozrozniaja ze a + b to co innego nic b + a

    To nie jest "myślenie numeryką", tylko "myślenie algebrą".

    > > W PHP do sklejania stringów używa się operatora ".". Każdy operator
    > > i każda nazwa funkcji mają charakter konwencji.
    >
    > Kolejne wydziwianie. Szlag mnie trafia na PHPowa skladnie .!

    No widzisz. Ciebie trafia, kogoś innego nie trafia. Tobie się podoba
    używanie + do konkatenacji tablic, a ktoś inny woli użyć do tego innego
    symbolu, i każdy może mieć jakieś swoje powody, żeby myśleć tak, jak myśli.


  • 55. Data: 2017-08-24 10:06:40
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: g...@g...com

    W dniu środa, 23 sierpnia 2017 22:36:36 UTC+2 użytkownik AK napisał:
    >
    > > gołębi, a kogoś zabawy pejczem. Rekursyjne (w PL nie ma czegoś
    > > takiego jak "rekurencja")
    >
    > > https://pl.wikipedia.org/wiki/Rekurencja
    >
    > Slawek ma racje. To "nowomowa".
    > Oryginalnie byla tylko rekursja

    "Oryginalnie"?
    Oba te słowa są zapożyczeniem z łaciny, może za pośrednictwem
    angielskiego. Nie ma tutaj miejsca na żadną oryginalność.

    > Oryginalnie bylo tylko FORTRANu i Algolu a nie "dzisiejsze" Fortrana ,
    > Algola itp itd

    Nawet jeśli kiedyś używano języka inaczej niż dziś się go używa,
    to co miałoby z tego wynikać?
    Pytanie jest retoryczne, proszę nie odpowiadać. Tego rodzaju
    spory należą do najbardziej bezsensownych, w jakich można uczestniczyć.
    To jest normalne, że język podlega ewolucji.


  • 56. Data: 2017-08-24 10:25:24
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: Maciej Sobczak <s...@g...com>

    > Mogę podać inny przykład, bliższy temu, o czym tutaj jest mowa.
    >
    > for (int i = 0; i < ticks_per_frame; i++) {
    > for_each(in_seq(sectors), bind2nd(mem_fun(&Sector::update), 0.07));
    > for_each(in_seq(portals), bind2nd(mem_fun(&Portal::update), 0.07));
    > for_each(in_seq(ropes), bind2nd(mem_fun(&Rope::update), 0.07));
    > }

    Faktycznie koszmarek.

    > Dla odmiany taki chociażby Python pozwoliłby wyrazić te konstrukcje
    > np. tak:
    >
    > for instance in range(ticks_per_second):
    > for sector in sectors:
    > sector.update(0.07)

    A gdzieś tak od pół dekady C++ pozwala tak:

    for (Sector & s : sectors)
    s.update(0.07);

    W pewnym okresie była taka moda, że chyba wszystkie języki teraz mają coś podobnego.

    > > Ale przecież operatory w Wolframie też można wypowiedzieć.
    > > Np. operator indeksowania (to te podwójne nawiasy) nazywa się
    > > Part.
    >
    > Dziwne. Nie przyszło mi do głowy, żeby [[_ ;; ;; _]] wymówić "Part".

    Dziwne. Tak się właśnie ten operator nazywa. Podobnie, + nazywa się Plus. Itd.

    > Prędzej wymówiłbym to jako "otwórz nawias kwadratowy, otwórz nawias
    > kwadratowy, coś, spacja, średnik, średnik, spacja, średnik, średnik,
    > spacja, coś, zamknij nawias kwadratowy, zamknij nawias kwadratowy".

    Jasne. A wywołanie funkcji w SmallTalku wymawiasz "ttl, otwórz nawias okrągły, coś,
    zamknij nawias okrąły". Nie silmy się na takie trolowanie.

    > Wątpliwości w dalszym ciągu wzbudza rola podkreślnika po argumencie
    > po lewej stronie znaku ":=",

    To jest wzorzec, który akceptuje cokolwiek. Czyli jest to definicja funkcji, która ma
    jeden argument dowolnego typu. Można wzorzec ograniczyć np tak:

    oddsEvens[x_List] := ...

    i wtedy jest to funkcja, która ma jeden argument typu List.
    W tym przypadku można byłoby tak zrobić, ale wtedy taka funkcja działałaby tylko z
    listami, a akurat nie tylko listy mają taką strukturę, którą moglibyśmy chcieć w ten
    sposób uporządkować. Dlatego wolałem zostawić szerszy wzorzec.

    http://reference.wolfram.com/language/ref/Blank.html

    > oraz to, dlaczego do wyrażenia tożsamości
    > użyto symbolu powszechnie używanego w informatyce w roli przypisania.

    Bo to jest przypisanie. Tak się właśnie definiuje funkcje.

    http://reference.wolfram.com/language/ref/SetDelayed
    .html

    > Podwójnych podwójnych średników też nie lubię.

    To napisz x[[1;;-1;;2]], wtedy będzie widać, że indeksowanie jest od 1 do końca. Ta
    spacja między średnikami to opuszczone -1.

    > Zgadzam się.
    > Gdybyśmy zresztą nawet nie dysponowali funkcją Parts, moglibyśmy
    > ją sobie zdefiniować przy pomocy cons, car, cdr i rekurencji.

    I to jest właśnie coś, czego nie lubię.
    Indeksowanie jest naturalną operacją i dla komputera (w sensie: hardware) bardziej
    podstawową. Dlatego wolę, jeśli język ją wspiera bezpośrednio.

    W ogóle, w naturze nie ma procesów rekurencyjnych. To jest na siłę wciskany ludziom
    kit, że rekurencja jest podstawą innych rzeczy. Dlatego języki promujące rekurencję
    jako podstawową konstrukcję są nienaturalne - zarówno w nauce, jak i w wykonaniu.

    > Że języki, które znamy, warunkują sposób, w jaki myślimy,

    Niezupełnie. Pierwszy język może to warunkować (i Wittgensteinowi chodziło o język
    naturalny). Natomiast później nasze myślenie może warunkować pozostałe wybory.

    > Nie wiem zresztą, czy miał przekonać. Raczej miał stanowić
    > ilustrację tego, w jaki sposób ta maksyma odzwierciedla się
    > w kontekście języków programowania. Sądzę, że -- mimo wszystkich
    > zarzutów, jakie wysnułeś, dotyczących rozwiązania wymyślonego
    > przez Kaya (i które nb nijak się mają do tego, co chciałem
    > zakomunikować) -- stanowi dobrą ilustrację.

    Tak. Kiepski język prowadzi do kiepskiego myślenia i w rezultacie do kiepskich
    programów. :-)

    > w szczególności warto przyglądać się
    > temu, jak historycznie kształtowały się nasze sposoby rozumienia
    > obliczania i komputerów.

    Tak.

    > Skoro mowa o kontekście, może zamiast pokazywać przykład
    > w Mathematice, która stosunkowo niewiele różni się od ISWIMa z lat 60.,
    > może spróbowałbyś pokazać rozwiązanie tego zadania w nowoczesnym
    > języku, jakim jest C++, żebyśmy zobaczyli

    Dlaczego? Ty nie pokazałeś przykładu w C++. :-)

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


  • 57. Data: 2017-08-24 11:38:32
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: g...@g...com

    W dniu czwartek, 24 sierpnia 2017 10:25:26 UTC+2 użytkownik Maciej Sobczak napisał:
    > > Mogę podać inny przykład, bliższy temu, o czym tutaj jest mowa.
    > >
    > > for (int i = 0; i < ticks_per_frame; i++) {
    > > for_each(in_seq(sectors), bind2nd(mem_fun(&Sector::update), 0.07));
    > > for_each(in_seq(portals), bind2nd(mem_fun(&Portal::update), 0.07));
    > > for_each(in_seq(ropes), bind2nd(mem_fun(&Rope::update), 0.07));
    > > }
    >
    > Faktycznie koszmarek.

    Najgorsze jest to, że Stroustrup sam do czegoś takiego zachęcał.

    > > Dla odmiany taki chociażby Python pozwoliłby wyrazić te konstrukcje
    > > np. tak:
    > >
    > > for instance in range(ticks_per_second):
    > > for sector in sectors:
    > > sector.update(0.07)
    >
    > A gdzieś tak od pół dekady C++ pozwala tak:
    >
    > for (Sector & s : sectors)
    > s.update(0.07);

    Niestety, owe przeboje miały miejsce ponad dekadę temu.
    Z tego co widziałem, w późniejszym kodzie zrobiłem sobie
    coś takiego:

    for_every(body , bodies)
    (*body)->update(0.07);

    gdzie for_every zdefiniowałem sobie jako następujące makro:

    #define for_every(ITERATOR, COLLECTION) \
    for(typeof(COLLECTION.begin()) ITERATOR = COLLECTION.begin(); \
    ITERATOR != COLLECTION.end(); ++ITERATOR)

    aż się dziwię, że byłem wtedy na tyle mądry, żeby nie napisać

    #define in ,

    Ale to był już okres schyłkowy, po którym dałem sobie spokój z C++em
    (poza tym, że czasem go trochę używałem, jak potrzebowałem np. tablicy
    haszującej albo innej kolekcji odmiennej od tablicy i ew. listy linkowanej)

    > > > Ale przecież operatory w Wolframie też można wypowiedzieć.
    > > > Np. operator indeksowania (to te podwójne nawiasy) nazywa się
    > > > Part.
    > >
    > > Dziwne. Nie przyszło mi do głowy, żeby [[_ ;; ;; _]] wymówić "Part".
    >
    > Dziwne. Tak się właśnie ten operator nazywa. Podobnie, + nazywa się Plus. Itd.

    Że + nazywa się Plus, to bym jeszcze może odgadnął.

    > > Prędzej wymówiłbym to jako "otwórz nawias kwadratowy, otwórz nawias
    > > kwadratowy, coś, spacja, średnik, średnik, spacja, średnik, średnik,
    > > spacja, coś, zamknij nawias kwadratowy, zamknij nawias kwadratowy".
    >
    > Jasne. A wywołanie funkcji w SmallTalku wymawiasz "ttl, otwórz
    > nawias okrągły, coś, zamknij nawias okrąły". Nie silmy się na
    > takie trolowanie.

    Akurat w Smalltalku masz zupełnie inną składnię, w której nie ma nawiasów.
    Na matematyce uczono mnie, żeby f(x) czytać jako "f od x" albo
    "wartośćć f w punkcie x". Nie uczono mnie, jak czytać [[_ ;; ;; _]]

    > > Wątpliwości w dalszym ciągu wzbudza rola podkreślnika po argumencie
    > > po lewej stronie znaku ":=",
    >
    > To jest wzorzec, który akceptuje cokolwiek. Czyli jest to definicja funkcji, która
    ma jeden argument dowolnego typu. Można wzorzec ograniczyć np tak:

    Napisałem "wątpliwości", a nie "ciekawość" ;]

    > oddsEvens[x_List] := ...
    >
    > i wtedy jest to funkcja, która ma jeden argument typu List.
    > W tym przypadku można byłoby tak zrobić, ale wtedy taka funkcja działałaby tylko z
    listami, a akurat nie tylko listy mają taką strukturę, którą moglibyśmy chcieć w ten
    sposób uporządkować. Dlatego wolałem zostawić szerszy wzorzec.
    >
    > http://reference.wolfram.com/language/ref/Blank.html
    >
    > > oraz to, dlaczego do wyrażenia tożsamości
    > > użyto symbolu powszechnie używanego w informatyce w roli przypisania.
    >
    > Bo to jest przypisanie. Tak się właśnie definiuje funkcje.
    >
    > http://reference.wolfram.com/language/ref/SetDelayed
    .html

    Może w Mathematice, ale nie w matematyce. W matematyce
    do określania tożsamości używa się symbolu =. Tego samego
    symbolu używa się w ISWIM czy Haskell (w taki sam sposób).

    > > Podwójnych podwójnych średników też nie lubię.
    >
    > To napisz x[[1;;-1;;2]], wtedy będzie widać, że indeksowanie jest od 1 do końca. Ta
    spacja między średnikami to opuszczone -1.

    Włos na głowie jeży się coraz bardziej.

    > > Zgadzam się.
    > > Gdybyśmy zresztą nawet nie dysponowali funkcją Parts, moglibyśmy
    > > ją sobie zdefiniować przy pomocy cons, car, cdr i rekurencji.
    >
    > I to jest właśnie coś, czego nie lubię.
    > Indeksowanie jest naturalną operacją i dla komputera (w sensie: hardware) bardziej
    podstawową. Dlatego wolę, jeśli język ją wspiera bezpośrednio.
    >
    > W ogóle, w naturze nie ma procesów rekurencyjnych.
    > To jest na siłę wciskany ludziom kit, że rekurencja jest
    > podstawą innych rzeczy. Dlatego języki promujące rekurencję
    > jako podstawową konstrukcję są nienaturalne - zarówno w nauce,
    > jak i w wykonaniu.

    To nie jest wciskanie ludziom kitu. Rekurencja w ogólności
    jest prostsza do zrozumienia dla ludzi. Jeżeli spojrzeć na
    rzeczy, które dzieją się w logice, to praktycznie wszystkie
    podstawowe aksjomatyki mają charakter rekurencyjny, a bardzo
    wiele dowodów jest indukcyjnych. Istnieje wiele zagadnień,
    na przykład w kombinatoryce i teorii języków, które
    mają bardzo naturalny sposób wyrazu przy pomocy rekurencji,
    i których wyrażenie bez rekurencji w praktyce wymaga
    "emulowania rekurencji" (np. tworzenia jawnych stosów).

    Z rekurencją jest jednak taki problem, że o ile przy programowaniu
    funkcyjnym jest prosta, o tyle analiza programów proceduralnych
    używających rekurencję potrafi przyprawić o zawrót głowy.

    > > Że języki, które znamy, warunkują sposób, w jaki myślimy,
    >
    > Niezupełnie. Pierwszy język może to warunkować
    > (i Wittgensteinowi chodziło o język naturalny).
    > Natomiast później nasze myślenie może warunkować pozostałe wybory.

    Nie sądzę, żeby Wittgensteinowi chodziło ściśle o język naturalny.
    Wittgenstein pisał "Traktat Logiczno-Filozoficzny" pod silnym wpływem
    pism Fregego, który stworzył swój własny formalizm do precyzyjnego
    zapisywania myśli (który finalnie ewoluował w coś, co dzisiaj znamy
    jako rachunek predykatów). Ciekawostką nieujętą w komiksie jest to,
    że Frege traktował swoją pracę jako realizację idei Leibniza zwanej
    "calculus ratiocinator" albo "characteristica universalis", polegającej
    na stworzeniu rachunku opisującego ludzkie myślenie. (Od innej strony
    -- właśnie języka naturalnego -- do tej idei podszedł profesor Andrzej
    Bogusławski z Uniwersytetu Warszawskiego, którego praca zainspirowała
    Annę Wierzbicką do rozwinięcia systemu zwanego "Naturalnym Metajęzykiem
    Semantycznym", będącego próbą ekstrakcji podstawowych "atomów znaczeniowych"
    pozwalających opisać ludzkie rozumienie. Ot, ciekawostka)

    Nota bene ta historia (tzn. o Fregem i Wittgensteinie) została bardzo
    ładnie opowiedziana w komiksie pt. Logicomix, wydanym również w
    języku polskim (zdaje się że wydawnictwo W.A.B.)

    I oczywiście, ja się z Tobą zgadam, że nie jest tak, że "wszystko
    jest językiem" -- że nasze doświadczenie jest w dużej mierze pozajęzykowe.
    Ale trochę prawdy jest w tym Wittgensteinowskim stwierdzeniu.

    > > Nie wiem zresztą, czy miał przekonać. Raczej miał stanowić
    > > ilustrację tego, w jaki sposób ta maksyma odzwierciedla się
    > > w kontekście języków programowania. Sądzę, że -- mimo wszystkich
    > > zarzutów, jakie wysnułeś, dotyczących rozwiązania wymyślonego
    > > przez Kaya (i które nb nijak się mają do tego, co chciałem
    > > zakomunikować) -- stanowi dobrą ilustrację.
    >
    > Tak. Kiepski język prowadzi do kiepskiego myślenia
    > i w rezultacie do kiepskich programów. :-)

    Tak. To jest wniosek na poziomie ogólnym.
    Z kolei nieznajomość historii prowadzi do tego,
    że nie rozumiemy wartości tego, co posiadamy.
    Allen Newell to naprawdę był niegłupi facet,
    ale w czasach "po wynalezieniu Lispa" trudno
    zrozumieć, jak ktoś mógł wpaść na coś tak pokracznego,
    jak IPL.


    > > Skoro mowa o kontekście, może zamiast pokazywać przykład
    > > w Mathematice, która stosunkowo niewiele różni się od ISWIMa z lat 60.,
    > > może spróbowałbyś pokazać rozwiązanie tego zadania w nowoczesnym
    > > języku, jakim jest C++, żebyśmy zobaczyli
    >
    > Dlaczego? Ty nie pokazałeś przykładu w C++. :-)

    :)
    Ja swoje stanowisko dotyczące C++ staram się jasno artykułować.
    W moim odczuciu to nie jest dobry język do formułowania myśli.
    W jakimś sensie jest to wartościowy eksperyment dla tych, którzy
    potrafią się uczyć na cudzych błędach, bo wydaje mi się, że
    nie ma błędu, którego projektanci C++ by nie popełnili.

    Jeżeli Twój stosunek do C++ jest równie sceptyczny, co mój,
    to może ten apel powinienem skierować do entuzjastów tego
    języka. Ktoś się podejmie?


  • 58. Data: 2017-08-24 12:20:36
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: "M.M." <m...@g...com>

    On Thursday, August 24, 2017 at 11:38:34 AM UTC+2, g...@g...com wrote:
    > Ja swoje stanowisko dotyczące C++ staram się jasno artykułować.
    Każdy ma takie prawo.


    > W moim odczuciu to nie jest dobry język do formułowania myśli.
    W C++ przy pomocy odpowiednio zdefiniowanych klas, metod i
    funkcji, można utworzyć sobie "język", może nie do formułowania
    myśli, ale do zwięzłego rozwiązania problemu.


    > W jakimś sensie jest to wartościowy eksperyment dla tych, którzy
    > potrafią się uczyć na cudzych błędach, bo wydaje mi się, że
    > nie ma błędu, którego projektanci C++ by nie popełnili.
    C++ to asembler obiektowy. Dużo lepiej nie da się takiego
    języka zaprojektować. Ja czasami też bym chciał w C++ programować
    ciut dalej od warstwy sprzętowej. Ale cóż, jest jak jest.

    Projektanci C++ mogli zrobić dwa języki wywodzące się z C:
    jeden kompatybilny z C i dający się szybko skompilować na
    byle jakim sprzęcie, a drugi wysokopoziomowy, niekompatybilny i
    stawiający na wygodę programisty a nie na wygodę kompilatora, czy
    optymalizatora. To był ich jedyny poważny błąd że nie wywiedli z
    języka C dwóch standardów np. C++ i D++.


    > Jeżeli Twój stosunek do C++ jest równie sceptyczny, co mój,
    > to może ten apel powinienem skierować do entuzjastów tego
    > języka. Ktoś się podejmie?
    W wielu praktycznych zastosowaniach nie ma alternatywy.


    Pozdrawiam


  • 59. Data: 2017-08-24 13:02:07
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: g...@g...com

    W dniu czwartek, 24 sierpnia 2017 12:20:37 UTC+2 użytkownik M.M. napisał:
    > On Thursday, August 24, 2017 at 11:38:34 AM UTC+2, g...@g...com wrote:
    > > Ja swoje stanowisko dotyczące C++ staram się jasno artykułować.
    > Każdy ma takie prawo.
    >
    >
    > > W moim odczuciu to nie jest dobry język do formułowania myśli.
    > W C++ przy pomocy odpowiednio zdefiniowanych klas, metod i
    > funkcji, można utworzyć sobie "język", może nie do formułowania
    > myśli, ale do zwięzłego rozwiązania problemu.

    W książce "Lekcja Programowania" był taki cytat:

    "Dobry programista poradzi sobie z ubogim językiem
    czy pokracznym systemem operacyjnym, ale nawet
    najlepsze środowisko programistyczne nie uratuje
    słabego programisty"

    i oczywiście w jakimś sensie jest to truizm. Tyle
    że może wytwarzać fałszywe przeświadczenie, że
    jakość języka programowania nie ma żadnego znaczenia,
    a jakość programisty ma wyłączne znaczenie.
    Wydaje mi się, że przykład Allena Newella i Alana Kaya
    pokazuje, że tak nie jest.

    Dobry programista poradzi sobie z C++ -- z czasem nauczy
    się omijać pułapki i obchodzić jego ograniczenia. Wytworzy
    "swój własny" sposób programowania w C++, w którym będzie
    się w stanie bez problemu poruszać. Wytworzy sobie swoją
    własną bibliotekę klas, metod i definicji, w którym będzie
    w stanie "rozwiązywać problemy" czy budować systemy. Jeśli
    będzie musiał.

    Tyle że moim zdaniem to nie jest dobra droga dla rozwoju
    przemysłu i programisty. Lepiej mieć wspólny język, którym
    możemy się bez problemu porozumieć -- tym bardziej, że
    często samo sformułowanie problemu jest już jego rozwiązaniem
    (albo jego kluczową częścią).

    > > W jakimś sensie jest to wartościowy eksperyment dla tych, którzy
    > > potrafią się uczyć na cudzych błędach, bo wydaje mi się, że
    > > nie ma błędu, którego projektanci C++ by nie popełnili.
    > C++ to asembler obiektowy. Dużo lepiej nie da się takiego
    > języka zaprojektować.

    Nie rozumiem. Co to jest "asembler obiektowy"?

    > Ja czasami też bym chciał w C++ programować
    > ciut dalej od warstwy sprzętowej. Ale cóż, jest jak jest.
    >
    > Projektanci C++ mogli zrobić dwa języki wywodzące się z C:

    Projektanci C++ nie są jedynymi osobami na świecie, które
    mogą robić języki programowania. (często mam wrażenie, że
    sukces C++ wziął się stąd, że było wiele osób, którym wydawało
    się, że jest inaczej)

    > > Jeżeli Twój stosunek do C++ jest równie sceptyczny, co mój,
    > > to może ten apel powinienem skierować do entuzjastów tego
    > > języka. Ktoś się podejmie?
    > W wielu praktycznych zastosowaniach nie ma alternatywy.

    Zawsze jest jakaś alternatywa. Czasem po prostu trzeba włożyć
    nieco pracy, żeby jej poszukać.


  • 60. Data: 2017-08-24 15:42:14
    Temat: Re: Co jest nie tak z C++ (było: Rust)
    Od: fir <p...@g...com>

    W dniu czwartek, 24 sierpnia 2017 13:02:09 UTC+2 użytkownik g...@g...com
    napisał:
    > W dniu czwartek, 24 sierpnia 2017 12:20:37 UTC+2 użytkownik M.M. napisał:
    > > C++ to asembler obiektowy. Dużo lepiej nie da się takiego
    > > języka zaprojektować.
    >
    > Nie rozumiem. Co to jest "asembler obiektowy"?
    >

    jak juz o makroassembler obiektowy ;c

    (mrugam bo jest to troche faktem i zarazem jest tym cos dosyc komicznego (bo m.in.
    faktycznie c++ jest na przyklad bardziej makroassemblerem niz c (o ktorym mozna by
    powiedziec moze na upartego ze jest jakims tam asemblerem ale o wiele mniej niz o
    c++, gdzie w tym gaszczu makr mozna sie niezle zamotac - gdzie w tedy juz nie motasz
    sie w asemblerze tylko w makrach ;c)


    [btw ostatnio pracuje nad swoim asemblerem "org-asm" jestem juz bardzo blisko do
    wrzucenia do sciagniecie pierwszej dzialajacej choc okrojonej wersji testowej, moze
    napisze o tym posta bo to okazalo sie pisanie tego dosyc ciekawe (zwlaszcza ze ladnie
    integruje sie z moim "siclem")

    tak naprawde z tej roboty zostalo mi zrobienie tlumaczenie etykiet na konkretne
    adresy (co chyab dzis bede robic) i spiecie roznych zrobionych juz z grubsza kawalkow
    w jedno et voila]

strony : 1 ... 5 . [ 6 ] . 7 ... 20 ... 21


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: