Programacion en capas ERa: Recomendación LibroProgramación
Carlos Manuel Duclos Vergara
carlos en embedded.cl
Mar Mar 9 18:44:20 CLST 2004
> Yo tengo entendido que una forma muy eficiente de escribir codigo C "puro"
> basado en objetos (distinto a OO, ya que no hay herencia), es utilizando
> estructuras con campos que son punteros a funciones que tienen como primer
> parametro generalmente una variable de la susodicha estructura, el famoso
> "objeto" this, con lo cual se tienen en las estructuras los datos y los métodos
> que manipulan esos datos :-) creo que gran parte del kernel de linux esta
> escrito así... o me equivoco, doc?
>
dependiendo de tu definicion de eficiente. generalmente utilizar punteros
a funciones puede no resultar ser una buena idea debido al tiempo que
pierdes derreferenciando a la funcion. Puede parecer ridiculo, pero hay
veces que ese pequenno tiempo hace una gran diferencia.
Respecto al kernel de linux, hay algunas partes donde se utiliza esa forma
de escribir codigo (particularmente para que todos los drivers tengan la
misma interfaz), pero hay otros lados donde simplemente no se puede
utilizar eso. El problema de usar punteros a funciones esta en que
derreferencias en tiempo de ejecucion, lo cual aparte de introducir un
tiempo de delay puede tener consecuencias desagradables (por ejemplo
cuando tienes varios ambientes de memoria separados, lo que es tipico en
programacion de kernel), y el puntero puede apuntar al lado oscuro de la
luna en el mejor de los casos... Sin embargo, si se acostumbra usar una
estructura con punteros para algunas zonas del kernel.
Más información sobre la lista de distribución Linux