Es que no es lo mismo un kernel que una aplicación de usuario.
Un kernel se escribe en lenguaje de bajo nivel, y ataca directamente al hardware. La prioridad es el rendimiento y la eficiencia, y por lo tanto un goto es razonable si nos va a ahorrar unos cuantos ciclos.
En una aplicación de usuario, en cambio, el ahorro en cuanto a rendimiento de usar un goto va a ser totalmente despreciable, y la pérdida en legibilidad y mantenibilidad hacen que sea una práctica totalmente desaconsejable, si no directamente prohibida.
A cada cosa lo suyo. En el kernel se pueden usar gotos en casos concretos, pero en una aplicación es totalmente inaceptable.
Claro que el C es un lenguaje de bajo nivel. Tienes punteros, acceso directo a la memoria a nivel de byte, estructuras de datos en las que defines casi casi hasta la alineación a nivel de bit. Y las estructuras de control son bastante simplonas, no mucho más complicadas que bucles ensamblador con un pelín de azúcar sintáctico.
No hay clases, no hay estructuras de control complejas, ni demasiada abstracción en nada. Es un lenguaje pensado para la programación de sistemas, no tanto (al menos hoy día) para hacer aplicaciones.
Está claro que no se puede pontificar y decir que un goto es anatema el 100% de las veces. Hay casos en los que puede estar justificado, pero son muy puntuales, y por eso es mucho más cercano a la realidad decir "no se pueden usar gotos" que decir lo contrario.
Y fíjate como en el fragmento que citas de la wikipedia hablan sobre todo gente de bajo nivel, como Torvalds o el mismo Knuth. Según "subes" hacia arriba, el uso de gotos deja de tener sentido, hasta que pasa de ser algo bastante razonable a ser casi una aberración. Y aquí no hablamos del kernel, ni siquiera de iOS, lo han hecho en Safari, que es una aplicación de usuario en la que, francamente, dudo mucho que se pueda apreciar ninguna mejora en el rendimiento. Pero en cambio sí parece claro que a lo que ha afectado (que de eso va la noticia) es a la mantenibilidad del código.
Re:¿Usan 'gotos' para los programas de apple?
(Puntos:2)Un kernel se escribe en lenguaje de bajo nivel, y ataca directamente al hardware. La prioridad es el rendimiento y la eficiencia, y por lo tanto un goto es razonable si nos va a ahorrar unos cuantos ciclos.
En una aplicación de usuario, en cambio, el ahorro en cuanto a rendimiento de usar un goto va a ser totalmente despreciable, y la pérdida en legibilidad y mantenibilidad hacen que sea una práctica totalmente desaconsejable, si no directamente prohibida.
A cada cosa lo suyo. En el kernel se pueden usar gotos en casos concretos, pero en una aplicación es totalmente inaceptable.
Re:¿Usan 'gotos' para los programas de apple?
(Puntos:2)No hay clases, no hay estructuras de control complejas, ni demasiada abstracción en nada. Es un lenguaje pensado para la programación de sistemas, no tanto (al menos hoy día) para hacer aplicaciones.
Re:Es que no es una aplicacion de usuario
(Puntos:2)Y fíjate como en el fragmento que citas de la wikipedia hablan sobre todo gente de bajo nivel, como Torvalds o el mismo Knuth. Según "subes" hacia arriba, el uso de gotos deja de tener sentido, hasta que pasa de ser algo bastante razonable a ser casi una aberración. Y aquí no hablamos del kernel, ni siquiera de iOS, lo han hecho en Safari, que es una aplicación de usuario en la que, francamente, dudo mucho que se pueda apreciar ninguna mejora en el rendimiento. Pero en cambio sí parece claro que a lo que ha afectado (que de eso va la noticia) es a la mantenibilidad del código.