Zig naprawdę utrudnia uruchamianie funkcji wirtualnych. Co jest na początku bardzo irytujące. Nie możesz po prostu stworzyć interfejsu, a następnie zrealizować go w sposób trywialny, jak w Golang lub większości innych języków. Ale to jest cecha, a nie błąd. Możesz używać funkcji wirtualnych przy użyciu comptime. Ale Zig sprawia, że bardziej oczywiste stają się negatywne kompromisy związane z tym. Zig sprawia, że pisanie prostszego kodu, który nie używa funkcji wirtualnych, jest twoją domyślną ścieżką, a w rezultacie kończysz używając interfejsów i funkcji wirtualnych tylko wtedy, gdy jest to niezwykle istotne i warte wysiłku. Okazuje się, że w wielu przypadkach prawie nigdy nie potrzebujesz interfejsów.
Zapomniałem wspomnieć, że się zgadzam, nawiasem mówiąc. To bardziej jak srebrna podszewka, która sprawiła, że przeszło z "wtf" do "właściwie to interesujący sposób myślenia, aby zniechęcić do tej abstrakcji". Trochę jak brak enumów w Go lub kontroler pożyczek w Rust. Albo języki obiektowe. Ogólnie rzecz biorąc, nie lubię tych rzeczy, ale jakoś nauczyłem się czegoś, przyjmując perspektywę języka.
@norswap Przy okazji zauważyłem, że mój post nie wspomina o tym, że ogólnie chcę interfejsy. Mówię tylko o pozytywnym aspekcie, ale moim zdaniem interfejsy to miejsce, gdzie zig nieukryty przepływ kontroli idzie o krok za daleko.
802