• naurM
    link
    fedilink
    Polski
    arrow-up
    1
    ·
    25 days ago

    Nie podoba mi się zarządzanie pamięcią w tym języku. W C++ i Rust również można robić ręcznie alokacje, ale domyślne działanie oparte na globalnym alokatorze jest wygodniejsze.
    Zig aktywnie przerzuca odpowiedzialność za robienie tych fikołków na użytkownika. ArrayList był kiedyś “zarządzany” (wiedział jakiego alokatora ma użyć). Teraz każde wywołanie append wymaga podania alokatora, który tak czy inaczej musi być zawsze tym samym obiektem, bo inaczej dostaniemy niezdefiniowane zachowanie.
    W efekcie programista musi powielać kod, który powinien znaleźć się w sensownie zaprojektowanej bibliotece standardowej.

    • サぺルOP
      link
      fedilink
      Polski
      arrow-up
      1
      ·
      19 days ago

      Zanim powstał Zig, wszyscy mówili, że jedną z największych wad C++ jest to, że tak trudno podmienić allokator. Więc rozumiem, że to jest na to odpowiedź. Wszystko jawne. Zero czarów.

      Nie na uzytkownika, tylko na twórcę.

      Sensownie zaprojektowania biblioteka standardowa to bardzo szerokie pojęcie. Dużo zalęzy od tego kto jest odbiorcą. Inna jest dla indywidualnych twórców, a inna dla przemysłu programistycznego.

      • naurM
        link
        fedilink
        Polski
        arrow-up
        1
        ·
        19 days ago

        Zaskoczyłeś mnie tymi opiniami. Podmiana alokatora w C++ wygląda dla mnie na banalną rzecz (podmieniałem na różne).

        Może trzeba zaprojektować język, w którym każda funkcja na jawne zarządzanie stosem CPU. Instalator NSIS ma taki i pisało się bardzo nieprzyjemnie, więc naśladowca ma pewnie szansę odnieść sukces.

        • サぺルOP
          link
          fedilink
          Polski
          arrow-up
          1
          ·
          18 days ago

          Tak, ale mówimy o czasach, kiedy ludzie podmieniali wywołania new/malloc itp. W wyniku takich problemów przecież wprowadzili opcje użycia innych w kolejnych generacjach C++.

          Po to są różne języki, by optymalnie wykorzystywać różne abstrakcje. Więc można wymyślić nawet makra na kod maszynowy, jeśli rozwiąże to czyiś problem.