Zig hace que sea realmente difícil ejecutar una función virtual. Lo cual es muy molesto al principio. No puedes simplemente crear una interfaz y luego hacer una implementación de manera trivial como podrías en Golang o en la mayoría de los otros lenguajes. Pero esto es una característica, no un error. Puedes hacer funciones virtuales usando comptime. Pero Zig hace que sea más obvio que hay desventajas negativas en esto. Zig hace que escribir código más simple que no utiliza funciones virtuales sea tu camino predeterminado y, como resultado, terminas usando interfaces y funciones virtuales solo cuando hacerlo es extremadamente impactante y vale la pena el esfuerzo. Resulta que casi nunca necesitas interfaces en mucho código.
Olvidé mencionar que estoy de acuerdo, por cierto. Esto es más como el lado positivo que hizo que pasara de "wtf" a "en realidad es una mentalidad interesante para desincentivar esa abstracción". Es un poco como la falta de enums en Go o el verificador de préstamos en Rust. O los lenguajes orientados a objetos. En general, no me gustan esas cosas, pero de alguna manera aprendí algo adoptando la perspectiva del punto de vista del lenguaje.
@norswap Por cierto, me doy cuenta de que mi publicación no menciona que en general quiero interfaces. Solo estoy hablando del lado positivo aquí, pero en mi opinión, las interfaces son donde zig no tiene un flujo de control oculto que va un paso demasiado lejos.
807