Encasillamiento aplicado a los compiladores, no a los actores

Cuando escribía código, hace mucho tiempo, solía utilizar una función de compilación muy eficaz llamada encasillamiento. Básicamente, hay dos tipos de lenguajes de programación (tipos de datos estrictos y tipos de datos no estrictos). Con los lenguajes de tipos de datos estrictos, como los compiladores Pascal y FORTRAN, el encasillamiento podía forzar la conversión de un tipo de datos en otro por razones de utilidad. Con los lenguajes de tipos de datos no estrictos, como C y C++, era posible realizar la conversión de forma implícita. En otras palabras, al compilador C le tenía sin cuidado que estuvieses caminando por un acantilado; con los lenguajes de tipos de datos estrictos, estabas obligado a decirle al compilador, "Sí, sé lo que estoy haciendo, caminando por un acantilado". El valor del encasillamiento es que ofrece un paso "extra" que te hace pensar sobre la conversión. Si en una conversión no se utiliza un operando de encasillamiento, el compilador devolverá errores o tipos de datos no coincidentes.

A continuación se indica un fragmento de código de un SO en tiempo real llamado VAXELN. El compilador se llamó EPASCAL y no admitía encasillamiento ni otras muchas extensiones de tiempo real. El encasillamiento se expresaba con el operando ‘::’ .

procedure search_id(var header:entrada_cola; id_in:integer; var found:boolean);

var walk:^entrada_cola;

begin
    walk:=header.flink;
        repeat
            if walk::^store^.id=id_in
            then begin
                error ();
                walk:=address(header);
                found:=true;
                    end
            else
                walk:=walk^.flink;
        until walk = address(header);
end;    

Personalmente no hacía diferencias a la hora de producir código de calidad. La búsqueda de errores (bugs), especialmente, los complicados, tenía sentido al inicio del ciclo de implementación. ¿Cuántas veces has tenido tantos o tan pocos niveles de direccionamiento que has causado estragos con el puntero (^)?  Está bien que el código inteligente pueda manejar un compilador, pero el código debe ser limpio y fácil de seguir hasta el punto de documentarse a sí mismo. Guarda la parte inteligente del proyecto en el algoritmo, en el diseño o en ambos, y codifícalo de inmediato. La calidad y la estabilidad son las que marcan la diferencia. Pregunta al cliente que ejecuta tu software…

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s