Zig maakt het echt moeilijk om een virtuele functie uit te voeren. Wat in het begin super irritant is. Je kunt niet gewoon een interface maken en dan een implementatie triviaal maken zoals je dat in Golang of de meeste andere talen zou kunnen. Maar dit is een functie, geen bug. Je kunt virtuele functies doen met comptime. Maar Zig maakt het duidelijker dat er negatieve trade-offs aan verbonden zijn. Zig maakt het schrijven van eenvoudigere code die geen gebruik maakt van virtuele functies je standaard gelukkige pad, en als gevolg daarvan gebruik je interfaces en virtuele functies alleen wanneer het extreem impactvol is en de moeite waard is. Het blijkt dat je in veel code bijna nooit interfaces nodig hebt.
Ik vergat te vermelden dat ik het er mee eens ben, trouwens. Dit is meer als de zilveren rand die het van "wtf" naar "eigenlijk is het een interessante mindset om die abstractie te ontmoedigen" maakte. Een beetje zoals het gebrek aan enums in Go of de borrow checker in Rust. Of OO-talen. Over het algemeen hou ik niet van die dingen, maar ik heb op de een of andere manier iets geleerd door de taal POV-perspectief aan te nemen.
@norswap Trouwens, ik realiseer me dat mijn bericht niet vermeldt dat ik in het algemeen interfaces wil. Ik heb het hier alleen over de positieve kant, maar naar mijn mening gaan interfaces waar zig geen verborgen controleflow heeft 1 stap te ver.
818