This is a quick and painless tutorial on starting to impelement sort in Zig. *Repo:* https://github.com/tonybanters/zigsort-btw*Ko-Fi:* https://ko-fi.com/ton...
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.
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.
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.
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.
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.
ArrayListbył kiedyś “zarządzany” (wiedział jakiego alokatora ma użyć). Teraz każde wywołanieappendwymaga 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.
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.
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.
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.