Programación orientada a objetos

Cuando comencé a explorar la programación orientada a objetos (POO u OOP, en inglés), allá por el año 1994, me ocurrió lo que a muchos. Luego de casi 10 años de programar proceduralmente (en Basic, Pascal y Cobol) me encontraba con una nueva visión. Si bien creía entender los conceptos de clase, objeto, herencia y polimorfismo, no lograba ver claramente la diferencia de enfoque a la hora de diseñar un programa. No podía apreciar realmente cuáles eran las diferencias y las similitudes entre el enfoque procedural y el orientado a objetos.

A través de mi experiencia docente varias veces me vi frente a la tarea de introducir los conceptos básicos de la POO, encontrándome con la misma situación, pero desde un lugar diferente: ¿Cómo explicar el nuevo enfoque a personas acostumbradas a programar de forma procedural? ¿Cómo resaltar las similitudes y las diferencias? Fue gracias a un ejemplo del libro «C++ Annotations» que encontré una forma simple de presentar la idea básica detrás de la programación orientada a objetos.

Sigue leyendo «Programación orientada a objetos»

Proyecto de ley sobre delitos informáticos

En el año 2002 a poco estuvo de aprobarse un ridículo proyecto de ley sobre delitos informáticos, que afortunadamente fue desactivado gracias al accionar de distintos grupos sociales.

Recientemente, se ha elaborado un nuevo proyecto de ley con el objetivo de modificar el código penal argentino para cubrir los delitos realizados mediante herramientas informáticas. Si bien este nuevo proyecto está mejor elaborado que el anterior, existen en él varios puntos que, de no ser modificados, implicarían un peligroso avance contra la libertad en nuestro país.

Sigue leyendo «Proyecto de ley sobre delitos informáticos»

Internet con límites

El slogan publicitario del ISP Fibertel es «Internet sin límites«. Esta frase apareció en el marco de una campaña publicitaria, realizada en el momento en que otros proveedores amenazaron con imponer límites a la cantidad de tráfico de los usuarios.

Como podrá verse a continuación, este slogan es totalmente engañoso, ya que Fibertel sí impone límites a sus clientes/usuarios.

Pues bien, analicemos lo que significa «sin límites» para esta empresa.

Sigue leyendo «Internet con límites»

OpenVPN: estabilidad, economía y simpleza en VPNs

A la hora de montar redes privadas virtuales (VPNs) muchos consultores aconsejan a sus clientes la utilización de hardware específico (dedicado). Tipicamente se instala un router (enrutador) Linksys BEFVP41 (u$s 180) como servidor y routers Linksys BEFSX41 (u$s 120) en cada red a conectar, todo esto utilizando el protocolo IPSec. En caso de querer conectar PCs o Notebooks individuales (por lo general con Windows XP/2000) se suele configurar un tunel IPSec o utilizar el cliente de VPN Microsoft (que utiliza el poco recomendable protocolo PPTP).

Esta solución tiene varios puntos en contra:

Sigue leyendo «OpenVPN: estabilidad, economía y simpleza en VPNs»

Microsoft y la Agencia Nacional de Seguridad de los EE.UU.

Desde el movimiento del software libre siempre se ha alertado que el software privativo, distribuido en forma de código binario cerrado, representa una grave amenaza contra la privacidad de las personas.

La reacción usual de muchos, cuando se les dice que si uno solamente recibe el código binario no puede saber a ciencia cierta qué es lo que hace el programa (y qué es lo que no hace), es de incredulidad. Generalmente se muestran excépticos ante la posibilidad de que una empresa incluya funciones ocultas en los programas cuyo código binario comercializa.

Aunque hay gran cantidad de casos demostrados de prácticas de este tipo (inclusión de Spyware, Rootkits, etc.), ninguno alcanza la magnitud que tendría, de ser cierta, la relación entre Microsoft y la Agencia Nacional de Seguridad de los EE.UU. (NSA).

Sigue leyendo «Microsoft y la Agencia Nacional de Seguridad de los EE.UU.»

Aplicaciones web con plantillas

Comencé a desarrollar aplicaciones web hace más de 6 años. Inicialmente utilicé Perl y luego también PHP, Rails, entre otros.

Al poco tiempo de escribir mi primera aplicación interesante noté algo que no me parecía apropiado. Partes de mi programa se ocupaban de obtener los datos enviados por el usuario (entrada), otras se encargaban de realizar los cómputos en función de dichos datos (proceso), en tanto que otras se encargaban de producir el código HTML que se enviaba al usuario (salida), mostrando los resultados del proceso y permitiendo la posterior interacción con el sistema (menúes, enlaces, etc.). Lo que me perturbó es que una parte demasiado significativa del programa se ocupaba de esta última función y, peor aún, no podía separarla adecuadamente del resto del sistema.

Sigue leyendo «Aplicaciones web con plantillas»

La complejidad de los algoritmos

Hace unos años presencié una discusión entre dos programadores sobre la «eficiencia de los programas«. Ellos discutían sobre la manera de especificar el problema en la herramienta CASE que utilizaban, para que el programa generado fuera más «eficiente«. La discusión era acalorada y tenían visiones muy diferentes del asunto (yo, al no conocer ni de cerca la herramienta en cuestión, no entendía ni media palabra de sus argumentos).

Hasta que en un momento no pude contenerme y decidí meter el dedo en el ventilador: A ver, una pregunta, ¿cuándo un programa es más eficiente que otro? – les dije. Para mi asombro (aunque debería haberlo intuído), ambos me respondieron al unísono: ¡Cuando es mas corto!.

Sigue leyendo «La complejidad de los algoritmos»

Fibertel y su proxy transparente

Durante el día, la cosa funciona razonablemente bien, pero desde las 2 am. en adelante… se vuelve imposible acceder a la web. Fibertel, mi ISP, lo niega; pero es claro que están usando un proxy transparente.

Hace un tiempo escribí un artículo quejándome de las barbaridades que hacen muchos ISPs con el pretexto de «mejorar la experiencia del usuario«, cuando en realidad lo único que quieren es reducir sus costos. Aquí va algo más sobre cómo nos estafan…

Sigue leyendo «Fibertel y su proxy transparente»