La importancia de programar con estilo


Y al decir "programar con estilo" no me refiero a que estén todo el tiempo con los meñiques levantados, o sólo hacerlo las tardes a las 5 p.m.

Programar con estilo es hacer nuestros programas legibles, lo más documentados que podamos y siguiendo las convenciones que algunas comunidades de programadores suelen adoptar para que nuestro código sea "universal".

Si bien dicen que cada programador tiene su forma de hacer lo suyo (en lo cual creo que tienen razón), esto a veces se convierte en un problema cuando de optimizar, corregir o ampliar el código se trata. En el mejor de los casos recordaremos por completo lo que la variable asdflkj significa en nuestro código, pero imagínate que ya no recuerdas y tienes que andarle buscando por todos lados lo que realmente quisiste hacer. O PEOR AÚN: Imagínate que lo que tu desarrollaste hace tiempo ahora es responsabilidad de alguien más, ¡pobre de él!

"Pues mientras funcione", aplica, sí. Hay veces en las que es necesaria hacer una corrección rápida (bomberazo, le dicen), pero al final del día no olvides regresar y hacerlo de la manera correcta. Créeme te facilitarás la vida a ti y probablemente a tus colegas.

Creo que el problema viene desde las escuelas, por lo general al momento de entregar nuestros proyectos, tareas, prácticas, etc. nos conformamos con el "pues, funciona", esto debido a que pocas veces se trabaja varias veces sobre la misma cosa. Son entregas únicas y es por eso que prestamos muy poca atención a la manera en las que las hacemos. El ideal sería que al inicio del curso definiéramos sobre qué vamos a estar trabajando (una especie de proyecto a largo plazo) para forzarnos a darle mantenimiento al código, a mejorarlo  y por tanto hacer las cosas bien.

Ayudará bastante si en un momento dado entramos al mundo laboral en el cual sí se desarrolla constantemente sobre un mismo programa, el cual debería estar bien documentado y entendible para que pueda ser trabajado por varias manos, manos a las cuales les resulte sencillo manipularlo y no se pierda tiempo en preguntarle al de al lado "¿y esto qué hace?" o quedarnos rascando la cabeza un buen rato preguntándonos "¿para qué usé esto?".

Para nuestra fortuna existen algunas guías de estilo que nos muestran algunas de las convenciones acordadas, las cuales podemos no aceptar por completo desde el inicio sí es importante tenerlas en cuenta. Claro que uno puede inventar sus propias normas, lo importante es respetarlas siempre.

Amigo programador, te dejo unas guías de estilo que me encontré por ahí (cofcofintercofcofnetcof), recuerda que seguro hay alguna para tu lenguaje favorito.


Guía 1 C++Guía 2 C++Guía 3 C++Guía 1 C#Guía 2 C#Guía 1 JavaGuía 2 JavaGuía 1 PHPGuía 2 PHPGuía Phyton.

¡Saludos!

@fferegrino :)

De C a HTML con Flex (como Norman manda)

Ya hace unos días les había hablado de flex y la práctica que teníamos que hacer. Bien, resulta que apenas se entrega. Y no es como inicialmente la había hecho:

Lo que había hecho fue de manera individual y esta que subo hoy es en equipo (Mi equipo: Byron, Gaby y Robert).
Las funciones que escriben el archivo html están por separado. Para mejor explicación visita el post anterior.

Descargas
PracticaC2HTML.tar.gz
PracticaC2HTML.zip


¡Saludos!
@fferegrino :)

Práctica 5 de Programación Orientada a Objetos

La práctica que más me ha costado hacer D:, pequeñas confusiones, pero al fin aquí está:
Es sencillo y dejo comentado el código, la aplicación se basa en la arquitectura cliente servidor, hace uso de Sockets, Threads y la interfaz Serializable. El servidor recibe del cliente un objeto (clase Perro) y lo almacena para que cuando otro cliente se conecte, le sean enviados los clientes que están conectados.


Mini proyecto en NetBeans
Solo fuentes

¡Saludos!
@fferegrino :)

De C a HTML con Flex

De nuevo por acá, esta vez gracias a otra de mis asignaturas en la ESCOM. Toca el turno a Teoría computacional, fue el turno de usar Flex, herramienta que en lo particular no conocía. Lo que teníamos que hacer era usar Flex para escribir un programa que de un archivo con código en lenguaje C nos lo "transfiriera" a un archivo con formato html estilizado con CSS.

La idea era encontrar palabras reservadas, tipos de datos, identificadores, directivas, operadores, y cualquier otro tipo de cadenas permitidas con el analizador léxico y asignarles cierto estilo en un documento html. 

Trato de explicar gráficamente: la imagen de la izquierda es código en C, después de introducir este archivo en el programita nos debe entregar algo como la captura derecha, que es un na representación estilizada con CSS del archivo que introdujimos.



¿Qué es Flex?
Resulta que Flex, en términos prácticos (Wikipediazo), es un programa para generar analizadores léxicos. Uno mete la especificación de un analizador léxico y Flex regresa como salida la implementación en C de lo que nosotros introdujimos. En realidad es muy sencillo utilizarlo, solo hay que tener en cuenta la estructura del archivo que vamos a usar como entrada al programa, esta es sencilla y muy fácil de recordar, un archivo "lex", se divida en tres secciones (separadas por líneas que solo contienen '%%' como texto en ellas). Las líneas son:
1.- Sección de declaraciones
Lugar para incluir cabeceras, macros, variables globales... también es posible definir patrones a usar en la sección de reglas
%%
2.- Sección de reglas
Aquí es donde se asocian los patrones(expresiones regulares) a buscar con sentencias(código) de C. Cada vez que el analizador encuentra un a cadena que coincide con el patrón, se ejecuta el código en C
%%
3.- Sección de código en C
Contiene sentencias en C y funciones que serán copiadas íntegramente en el archivo que Felx genere, comúnmente se colocan aquí las funciones que se llamarán en la sección de reglas.

Descargas
Al compilar el programa en Flex nos devuelve un código compilable pero ahora en lenguaje C, el cual ya debería de hacer lo que nosotros le indicamos. En el descargable básico viene el archivo cToHtml.l que es el archivo en lenguaje Lex, el archivo de estilos estilos.css que es la hoja de estilos que se usa para formatear el documento de salida y el archivo Makefile que nos facilita la compilación y el archivo Leeme.txt PARA QUE LO LEAN, en donde viene como se usa el programa final. En el descargable completo, viene, además de lo indicado arriba, el archivo lex.yy.c que es el código que se genera al compilar en Flex y el archivo salida.html que es un ejemplo de lo que entrega nuestro programa si hacemos pasar por el a lex.yy.c.

Recuerda que para cualquier duda, comentario o invitación a una cerveza, está la sección de comentarios, mi cuenta en Twitter o mi correo. 

¡Saludos! @fferegrino :)

Sistema solar usando Java 3D API



Para una de las prácticas de la clase de programación orientada a objetos, (sí, la estoy cursando), tuvimos que hacer un un ejemplo de sistema solar. Esta es mi implementación, está un tanto rebuscada pero traté de hacerla lo más entendible, porque han de saber (y no le digan a nadie) que no muchos le entienden al maestro. 

Hay varias clases, una que representa a un planeta, otra que es la rotación del planeta, la distancia al centro, la traslación al rededor de este centro. De este ejemplo se pueden derivar mejoras y ampliaciones.

El descargable es una carpeta que contiene un proyecto en NetBeans, cabe aclarar que dado que usa las librerías de Java3D, hay que agregarlas manualmente. Para que el código compile.

SistemaSolar.rar


¡Saludos!
@fferegrino :)

Amateur, amateur, a-mateur de la fotografía


Me acabo de comprar una cámara fotográfica (automática dice @feregrinch), y me divierto con ella, estas son las mejores fotos, las que más me gustan.

 Es un buen hobbie y creo que de verdad me gusta tomar fotos.




¡Saludos!

@fferegrino :)

Una filosofía de vida


 ( ._.) Muy pocas veces la aplico (SIEMPRE).


¡Saludos!

@fferegrino :)