Constantes y variables: cuál es la diferencia real?

Parece obvio, pero algunos escapar de la sutil diferencia entre constantes y variables en un lenguaje de programación. Las constantes, por el nombre, no cambian su valor durante el ciclo de un programa, mientras que las variables pueden hacerlo! A menudo, sin embargo, pasar a utilizar variables en lugar de constantes sin darse cuenta, también, porque esto no afecta la lógica de una aplicación. A pesar de esto, la diferencia entre constantes y variables, y surge todo en tiempo de compilación, donde la constante juega un papel sin duda más potente.

Viniendo de C o la programación de la Asamblea conoce la diferencia entre constantes y variables, sobre todo porque, tanto en el montaje y C, las constantes de desempeñar un papel de MACRO. MACRO para decir en un "pedazo de código" que tiene la etiqueta y se sustituye en el código en tiempo de compilación. El compilador, en definitiva, realiza una especie de encontrar .. reemplazar (y es sostituitsci) en el código cada vez que encuentra una constante.

Imagínese que usted escribe en C, el siguiente fragmento de código simple:

1
2
3
4
5 ; int a = 5;
3 ; int b = 3;
int c;
b ; c = a + b;

sono indicate come variabili in questo caso. Ya sea a la que b se muestran como variables en este caso. En C, de hecho, las constantes se definen con la palabra clave #define . sono state definite come int . Tomamos nota de inmediato que a la que b ha sido definido como int . Ya aquí se puede hacer una primera optimización. Si sabemos que la variable a no superar un determinado valor, debe declarar correctamente y no utilizar los tipos de datos al azar. Algunos desarrolladores no se molestan en declarar los tipos correctos, pensando que esto no afecta a la performace! Mal! Por otra parte, es aceptable que el primer borrador del código no implica este nivel de detalle. Sin embargo, es una buena regla, durante el proceso de desarrollo, revisar el código y comprobar los tipos de datos.
Sin embargo, en una reunión de la familia Motorola, por ejemplo, como el mítico 68000, se apoderaría de nuestro código compilado (sin optimizaciones) en una especie de:

1
2
3
4
, d0 ; int a mover el # 5, d0;. int
, d1 ; int b moverse. el # 3, d1, int b
d2 ; int c - foo mover el d1, d2, int c -. foo
l d0 , d2 ; risultato in d2 ovvero c Agregar. d0, d2, d2, o resultar en la c

o:

1
2
3
, d0 ; int a mover el # 5, d0;. int
, d1 ; int b moverse. el # 3, d1, int b
d1 ; risultato in d1... se mueven. l D0, D1, D1 resultado ...

El compilador, sin embargo inteligente, el esfuerzo en la optimización, a continuación, escribir el código con la palabra clave correcta sólo puede ayudar a mejorar el resultado compilado. En nuestro caso, si el valor de 5 es una constante, no es conveniente utilizar una variable de tipo entero, ya que el compilador, y con razón, teniendo en cuenta la variable variable, de hecho, una predisponde todo fácil para contener el valor 5, que en binario es 101, es decir, ocupa tres bits individuales (en todo caso, int es el peor de los 32 o 53bit un doble punto flotante de precisión!). Si hubiéramos escrito el código como este:

1
2
3
4
5
5 # define MIA_COSTANTE

3 ; int b = 3;
int c;
b ; c = b + MIA_COSTANTE;

El compilador sabe desde el principio que MIA_COSTANTE , siendo constante, el valor no va a cambiar, así que se pueden reservar menos espacio para su tratamiento. En la práctica, la Asamblea diverebbe código:

1
2
3
d0 ; la "q" indica una istruzione "quick", cioè che tratta valori compresi tra -128 e +127 moveq # 3, d0, la "q" indica un comunicado "rápido", es decir, los valores entre -128 y 127
, Una declaración "rápido" lleva menos tiempo de CPU (4 ciclos de reloj en este caso)
d0 ; anche qui uso una istruzione "quick" addq # 5, d0; aquí un manual de instrucciones "rápido"

Este código es muy rápido y ocupa menos bytes. Lo que debemos tener en cuenta es que cuando se declara una variable de entorno se prepara para tratarlo como tal, incluso si los compiladores de hoy en día puede hacer milagros, realizando una serie de pasos en el código antes de compilar (algunos compiladores, incluso realizar una especie de programa de simulación para optimizar la compilación en código máquina).

Una buena regla es, pues, de declarar el tipo correcto para nuestras variables, las cuales. Alternativamente, puede utilizar las constantes, sobre todo si el lenguaje de programación que utiliza el esperado (como en el caso del nuevo Flash CS3).

No hay comentarios para esta entrada

Deja un comentario

XHTML PERMISO TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL