Planificación (I): Gantt, PERT y CPM

pensadorEn el desarrollo de casi cualquier proyecto de cierto tamaño pueden identificarse algunas tareas que podrían realizarse simultáneamente por distintas personas o equipos de personas.

El hecho de trabajar en paralelo con distintas tareas suele hacer que el proyecto total se termine antes. Al fin y al cabo, el tiempo es nuestro recurso más valioso: no se puede comprar.

En este artículo, hablaremos de las técnicas mas elementales para planificar el tiempo, el trabajo de las personas y los recursos materiales, como las máquinas.

Se trata de técnicas que ayudan a la fase de planificación dentro del ciclo de vida del software, e intentan organizar el tiempo, los recursos y el esfuerzo de las personas implicados en otras tareas del ciclo de vida.

Aunque en general nuestro interés se centra en la ingeniería del software, éstas son técnicas aplicables a casi cualquier proyecto de construcción o producción de casi cualquier bien o servicio. Como de costumbre, sólo trataremos de exponer una simple introducción al tema, sin intención de ser exhaustivos.

Leer más...

Lenguajes fuertemente, débilmente, estáticamente y dinámicamente tipados

shot_feetUno de los aspectos más importantes de cualquier programa es, sin duda, el tema de los datos.

Los datos son el soporte de la información, y la información es el corazón de cualquier programa.

Los lenguajes de programación utilizan las variables como contenedores de datos, para manipularlos y almacenarlos en una amplia variedad de maneras. Está claro que los datos tienen distintos tipos. A nadie se le escapa que no es lo mismo un nombre de persona que su edad... el primero es un texto y el segundo es un número...

Los distintos lenguajes de programación tienen en cuenta esta particularidad de los datos, y por lo tanto, todos tienen alguna forma de distinción entre los tipos de datos.

No obstante, cada uno tiene una forma de afrontar esta particularidad. Ello ha llevado a podamos en cierto modo "clasificar" los lenguajes de programación por la forma en la que tratan con el problema de los tipos entre

  • Dinámica y estáticamente tipados
  • Fuerte y débilmente tipados

El tema es, sin duda, controvertido. Cada sesudo investigador o aficionado al tema podrá darle mil definiciones y argumentos acerca de lo que significa cada uno de esos términos... pero en nuestra humilde opinión, no conviene obsesionarse ni llevar el tema al extremo.

Tener una ligera idea para entender que existen varias formas de afrontar el problema de los tipos es una cosa, y emprender una cruzada para defender no-sé-qué-cosa de un lenguaje u otro, o tratar de ponerle puertas al campo es otra.

En este artículo, matizaremos los aspectos más importantes que nos permiten distinguir la forma en que un lenguaje aborda el tema de los tipos de los datos, sin ánimo de controversia ni de sentar cátedra... y por supuesto... influenciados por nuestra propia opinión de aficionados ;-) Lo mejor que puedes hacer con un artículo como éste es leerlo, no creértelo del todo, contrastarlo con otras fuentes... y formarte tu propia opinión.

Leer más...

SAI Sistemas de alimentación ininterrumpida (UPS Uninterruptible Power Supply)

SAI Sistemas de alimentación ininterrumpida (UPS Uninterruptible Power Supply) SAI son las siglas en español de Sistema de Alimentación Ininterrupida. A menudo lo vemos abreviado también como UPS, del inglés Uninterruptible power supply.

Básicamente, un SAI es un aparato basado en baterías que es capaz de proporcionar corriente a los aparatos electrónicos como ordenadores ante la ausencia de corriente en el suministro eléctrico normal.

Seguramente, alguna vez habrás sufrido un corte de corriente mientras estabas trabajando con el ordenador y te ha sorprendido «a medias», sin poder guardar el trabajo que estabas haciendo. Un sai sirve para evitar esto, y algunos modelos también nos libran de algunos otros problemas que tiene el suministro de corriente eléctrica.

Leer más...

Mini tutorial: cómo montar un ordenador de sobremesa por componentes

cabeceraHace algunos años, montar un ordenador por componentes daba bastantes quebraderos de cabeza. Dar algún pequeño paso en falso podía incluso dañar seriamente algunos componentes.

Afortunadamente, hoy en día, los componentes cuentan con conectores muy sencillos de colocar, y tecnologías de auto-configuración realmente espectaculares.

Aunque es necesario tomar algunas precauciones y llevar cierto cuidado, la tarea se ha simplificado extraordinariamente.

Aprovecharemos que hemos tenido que montar uno para comentar el proceso.

Leer más...

Pero ¿qué es eso del HTML5 del que todo el mundo habla?

La última revisión del estándar HTML (la 5) ya está prácticamente encarrilada. Aunque todavía no se encuentra en su versión definitiva, parece que el

estándar ya está bastante manuro y que los cambios futuros ya van a ser poco relevantes.

Como en las versiones anteriores, el World Wide Web Consortium (alias w3c) es la entidad que mantiene y publica el estándar, con la participación de diversas

organizaciones y en especial, de las empresas del sector que presionan "hacen propuestas" para que el estándar se adapte a sus productos.

Así pues, casi, casi, podemos considerar que ya lo tenemos encima.

La web es una parte de internet muy golosa. Al fin y al cabo, es lo que más utilizamos todos. Aunque Internet en sí no es más -siendo muy simplista- que una

agrupación de redes de comunicaciones, los servicios que se ofrecen son muy variados (que si messenger, skype, juegos en red...) pero la web es sin duda la

estrella. Así que meter la cuchara en el caldero de la web es importante.

En este artículo, unas simples reflexiones un tanto irreflexivas sobre éste nuevo estándar o dicho de otra manera, cómo hacer de adivino analista de

actualidad informática y equivocarse con seguridad ;-)

---
Como el que suscribe ya es algo mayor y esto de la web ya le pilló crecidito, tiene una tendencia un tanto machacona a ver las cosas con perspectiva

histórica (a las personas mayores nos gusta contar batallitas).

En fin, el caso es que me sorprende ver lo mucho que se ha tardado en llevar adelante ésta revisión del html.
Recuerdo las primeras implementaciones de HTML (yo fui usuario del Mosaic)... pero no recordaba bien las fechas. Así que investigando por la web -que lo sabe

todo-, he podido descubrir que la primera versión de HTML, nacida de las propuestas de Tim Berners-Lee data de 1993. (http://www.w3.org/MarkUp/draft-

ietf-iiir-html-01.txt)
La segunda revisión de 1995 (http://tools.ietf.org/html/rfc1866). La tecera, y que yo recuerdo como importante (http://www.w3.org/TR/REC-html32) es de 1997 y

la cuarta -que utilizamos ahora- (http://www.w3.org/TR/REC-html40/) de 1999.

¡Caramba! Mucho ha llovido sin revisiones en el tema. Más de diez años para obtener una revisión del estándar de una de las herramientas más importantes del

momento actual.

Bueno... eso no es ni bueno ni malo... pero sí significativo. La web se ha movido "sola"... mejor dicho, la han movido a base de empujones dados por las

distintas empresas y organizaciones del sector. Por supuesto que se ha producido evolución en estos años, pero no promovido por estándares sino por intereses

y batallas en distintos flancos.

Por ejemplo, el JavaScript (el lenguaje de script de los navegadores) se ha desarrollado de una manera uniforme, peo con una cierta irregularidad que ha

vuelto un poco locos a los programadores -especialmente en puntos un tanto avanzados-. Cada fabricante o desarrollador de navegadores lo ha ido ampliando o

variando por donde ha podido, moviéndose uniformemente pero dando algún que otro quiebro por el camino.

Merece especial mención el DOM, la representación interna de una página web en la memoria del ordenador. Aunque la versión 4 de HTML ya describe con cierta

pulcritud el DOM, no es suficiente para las páginas y aplicaciones web de hoy en día. Los famosos errores de Javascript que los navegadores sueltan de vez en

cuando vienen propiciados precisamente porque la representación interna de una página varía de un navegador a otro y de una versión a otra. Sin embargo, los

programadores no pueden (ni deben) estar pendientes de esas variaciones.

Para cubrir ese hueco, empezaron a aparecer los "plugins", como Flash, silverlight, los applets de Java y algunos otros... Dado que el estándar (y los

navegadores) no tienen un comportamiento uniforme, y a menudo, no proporcionan potencia sufiente para según qué cosas, a traves de un "añadido" fabricado por

un tercero, damos funcionalidad extra a una página. Eso está bien... nos hemos beneficiado de esa forma de trabajar... Se han desarrollado cosas muy majas

con Flash... applets interesantes con Java... y Silverlight es muyyyy boniiiito ... Pero bueno, al grano... eso obliga a los usuarios a ser "expertos" en el

manejo de plugins... Mantenerlos actualizados, tener permisos en su sistema para instalarlos y mantenerlos. Los desarrolladores de páginas y aplicaciones web

deben "obligar" a los usuarios a que su equipo cumpla unas determinadas condiciones... y además, se depende de los desarrollos de terceros, de los

fabricantes de estos plugins. Una peligrosa dependencia, por no hablar de las pequeñas batallas que estos desarrolladores han emprendido por ser los elegidos

para cada caso. Insisto en que creo que eso no es ni bueno ni malo... ha traido cosas muy buenas (grandes desarrollos, aplicaciones maravillosas) y cosas no

tan buenas (tecnologías que no convergen, sino que compiten, actualizaciones constantes, quebraderos de cabeza para desarrolladores y usuarios...).

Bueno... hemos aprendido mucho en éstos más de diez años. Quizá sea bueno darle una capa de homogeneidad a la web a través de una nueva revisión del

estándar.

Supongo que ahí entra en juego el HTML 5.

Entre las novedades, que son muchas y muy variadas vamos a destacar algunas de las más representativas.

Potenciar la semántica. Hasta ahora, el lenguaje HTML se limitaba a una mera descripción de los elementos que debían "dibujarse" en el interior del

navegador, ocupándose casi exclusivamente de aspectos estéticos. Sin embargo, la web es un poderoso vehículo de información: lo que está dibujado tiene

sentido para los humanos. En ésta nueva revisión se puede especificar algo de ese sentido: qué es lo que contiene un determinado trozo de web y su relación

con el resto. Ésto no va a tener mucho impacto en cómo se dibuja la web, pero puede ayudar a tener una web algo más ordenada y estructurada... a facilitar

búsquedas y acceso a la información, a que los buscadores sepan mejor lo que hay en una página y al desarrollo de aplicaciones paralelas que nos ayuden a

movernos por la web. En fin, a que nuestro trocito de telaraña (web) esté internamente un poco más organizado y que de una manera uniforme, todo el mundo

sepa cómo moverse por esa web y lo que hay en cada sitio.

Herramientas para dibujar en 2D y 3D. Algo muy solicitado... es básicamente el hueco que han tenido que rellenar los plugins. Hasta ahora, el HTML hacía

mucho hincapié en el texto (al fin y al cabo, empezó siendo una herramienta de intercambio de texto), pero las representaciones gráficas que van más allá del

texto no se hicieron esperar. De manera nativa nunca se había contemplado la posibilidad de representar elementos gráficos dibujados, y sobre todo, que los

lenguajes de Script (como Javascript) pudieran interacturar con ellos. Si éste punto se lleva a una buena implementación por parte de los desarrolladores de

los navegadores (y parece que en efecto va a ser así), le comerá bastante terreno a los plugins mencionados antes.

La reproducción de elementos multimedia (audio, vídeo...) de manera estándar. Hoy en día tenemos muchíííísimo contenido audiovisual por la web.... Pero

realmente, el HTML no estaba preparado para ello, así que ese contenido ahora mismo también lo visualizamos a través de plugins de terceros (nuevamente

Flash, silverlight, etc.). Y no sólo eso... sino que existen diversas formas de codificar el audio o el vídeo, cada una con sus características. (Seguro que

nos suena MPEG4, DIVX, XVID, FLV... y un sinfín más). La reproducción de multimedia está completamente en manos de terceros en el momento actual... por un

lado se depende que el usuario haya instalado el plugin de turno en su navegador y lo mantenga actualizado, y por otro lado, esos elementos hay que

codificarlos en alguno de esos sistemas tan variados. Los usuarios nos hemos convertido ya en expertos instalando, actualizando, convirtiendo... Bueno... eso

está bien, aprender cosas siempre es bueno... pero quizá estemos ya en un puntito un tanto incómodo en ese sentido... Tanto para los usuarios (que a menudo

no podemos "visualizar" o escuchar según que contenidos y nos da una pereza horrible instalar no-se-qué-cosa que me pide esa página), como para los

desarrolladores, que deben escoger un sistema, hacerse expertos en él e instruir a los usuarios para que sean expertos, y todo eso, dependiendo de terceros,

y todo eso, sin mencionar a las brechas de seguridad que se van creando por el camino. Aunque la controversia en este sentido no ha terminado. Aún se discute

qué formatos debe aceptar un navegador HTML5 de manera nativa. Parece que las alternativas andan entre algunos formatos de licencia poco restrictiva y código

abierto, como VM8 y WebM (impulsados principalmente por Google y otras entidades de la misma cuerda), y otros como el conocido H.264 (Alias MPEG-4 Parte 10),

de licencia más restrictiva. Y yendo un poco más allá... Aun cuando la balanza se incline definitivamente por uno u otro, ¿Será capaz de reaccionar el

estándar ante nuevos avances que se produzcan en próximas fechas?... A ver cómo sale esto.

El manejo de datos en tablas como si fueran datos, y no garbanzos. La representación de información tabular (en tablas) es algo fundamental para los

humanos... Estamos muy acostumbrados a ello y nos resulta cómodo y familiar. El HTML tiene tablas desde hace mucho, pero se limita a describir "cómo pintar

las cosas en una tabla", sin ocuparse realmente de lo que significan... sin embargo, para los humanos, una tabla con datos es mucho más que una serie de

filas y columnas bonitas, tiene un significado, y nos gusta hacer una serie de operaciones comunes.

El almacenamiento de datos en local (en el ordenador del cliente)

La comunicación mediante algo parecido a los sockets

Soporte para trabajar en modo no-conectado

La ejecución de varios hilos en paralelo

... y un montón de cosas más.

Bueeeeno... parece que en esta nueva revisión se han puesto las pilas para intentar recoger todo aquello que las aplicaciones web estan haciendo ya, pero con

la participación de todo tipo de "colaboraciones" de terceros.

Eso no quiere decir que nuestros queridos plugins vayan a desaparecer... sino que van a tener que ponerse las pilas, porque si los navegadores son capaces de

hacer ciertas cosas sin ellos (y lo hacen bien, claro, que aún está por ver)... van a perder una buena cuota de uso. Van a tener que adquirir nuevas

competencias y facilidad de uso y programación.

Hacer de adivino es equivocarse con seguridad, pero si yo fuera Adobe, estaría seriamente preocupado por la utilización de Flash. Flash es muyyyyyy bonito...

empezó siendo una herramienta de animación cuando lo llevaba Macromedia y ha terminado por ser una herramienta de programación, principalmente orientada a

hacer cosas bonitas y llamativas en la web... Hmmm... pero eso ahora es probable que puedan hacerlo los navegadores solitos. Además, tampoco existe una

herramienta de calidad potente y sencilla para programar con un precio asequible (es decir, gratis), para que quien quiere iniciarse o hacer pequeñas cosas,

pueda hacerlo fácilmente.

En cuanto a Java... hace ya mucho que perdió presencia en la web. La cantidad de usuarios con el JRE de java instalado (necesario para ejecutar los applets)

no es muy grande (comparada con Flash) ni los usuarios se encargan de actualizarlo (se actualiza cuando se requiere y poco más). La verdad es que sí existen

herramientas de desarrollo buenas y baratas (me encanta NetBeans, por ejemplo), pero aún así ha ido perdiendo fuelle. Me temo que el lavado de cara que le

proporcionó JavaFX no ha sido suficiente.

Silverlight es mi apuesta preferida... Me va gustando cada vez más... se puede hacer un poco de todo con él, y se puede programar en lenguajes muy populares,

como C# y Visual Basic. C# es el lenguaje favorito en La tecla de ESCAPE. Además, la última versión de Visual Web Developer Express 2010 ya permite trabajar

con Silverlight de forma visual. Creo que irá ganando adeptos poco a poco pero tampoco apuesto por una gran popularidad en un futuro a corto plazo. La verdad

es que con los productos de Microsoft (excepto con Windows), es complicado hacer predicciones.

En cuanto a aquellos plugins dedicados casi en exclusiva al vídeo, como Quicktime o Realmedia... pues si los navegadores van a incorporar un estándar de

vídeo y audio... saca tus propias conclusiones.

En fin... ¿Quién sabe? Lo que sí sabemos es que el estándar ya casi está y que los desarrolladores de navegadores se están esforzando mucho por incorporarlo.

¿Cuánto?... pues compruébalo tú mismo.

En éste sitio web nos informan de cuáles de las características de HTML5 incorpora tu navegador: http://html5test.com/
Nos darán una puntuación sobre 300 (Por ejemplo, mi Firefox 3.6.10, en este momento obtiene 139), y algunos "bonus", que son puntos que se otorgan por

algunas mejoras del estándar.

Internet Explorer 8 obtiene muy poco, sin embargo la versión 9, que anda por ahí en fase beta y en versión preview para desarrolladores obtiene muchos más

puntos.

Safari, Ópera y Chrome también están en ello.

Mientras tanto, se puede probar alguna cosilla diseñada en html5... atrévete. En éste sitio web nos ponen algunos ejemplos, que puede que funcionen en

nuestro navegador... o puede que no.

http://html5demos.com/

Ah... y se me olvidaba... Supongo que también tendrá una cierta influencia el hecho de que existan buenas herramientas para los programadores y

desarrolladores del web. Echando la vista atrás, nada impulsó tanto la web en su momento como la irrupción de herramientas visuales (especialmente

Dreamweaver). Supongo que rápidamente se actualizarán y surgirán otras nuevas para HTML5... pero bueno... tampoco son estríctamente necesarios... algunos

desarrolladores son muy duros, y han hecho grandes cosas sólo con el block de notas o el vi.

Volveremos a hablaremos de html dentro de 10 años, cuando salga la 6 ;-)


La última revisión del estándar HTML (la 5) ya está prácticamente encarrilada. Aunque todavía no se encuentra en su versión definitiva, parece que el estándar ya está bastante manuro y que los cambios futuros ya van a ser poco relevantes.

html5La última revisión del estándar HTML (la 5) ya está prácticamente encarrilada. Aunque todavía no se encuentra en su versión definitiva, parece que el estándar ya está bastante maduro y que los cambios futuros ya van a ser poco relevantes.

Como en las versiones anteriores, el World Wide Web Consortium (alias w3c) es la entidad que mantiene y publica el estándar, con la participación de diversas organizaciones y en especial, de las empresas del sector que presionan hacen propuestas para que el estándar se adapte a sus productos.

Así pues, casi, casi, podemos considerar que ya lo tenemos encima.

La web es una parte de internet muy golosa. Al fin y al cabo, es lo que más utilizamos todos. Aunque Internet en sí no es más -siendo muy simplista- que una agrupación de redes de comunicaciones, los servicios que se ofrecen son muy variados (que si chat, que si VoIP, que si juegos en red...) pero la web es sin duda la estrella. Así que meter la cuchara en el caldero de la web es importante.

En este artículo, unas simples reflexiones un tanto irreflexivas sobre éste nuevo estándar o dicho de otra manera, cómo hacer de adivino analista de actualidad informática y equivocarse con seguridad ;-)

Leer más...

Página 1 de 8

Comparte ésta página

 

¿Quién está en línea?