martes, diciembre 19, 2006

7 Características de una estupenda Página Web

¿Qué hace magnífica una página web?

¿No le encantaría conocer los principales ingredientes para crear una página web de alta calidad? ¿Cuáles son los elementos básicos que se deben tener si se desea una página web sólidamente diseñada? Una página web que ha de destacarse y ser observada por nuestros visitantes. Una que mantendrá a los visitantes regresando al sitio una y otra vez. Una página web efectiva que es 95% mejor que la mayoría de los sitios de la red.

Siga estos sencillos pasos de diseño cuando esté creando su siguiente página web y tendrá la respuesta.

  1. Buenas palabras claves

    El núcleo. El concepto. Las buenas palabras claves son el bloque de la construcción que debe considerar incluso antes que su página web llegue a ser una ligera idea mental. Elegir la palabra o frase clave correcta es el factor primordial que determinará el éxito o fracaso de su sitio web. Debe procurar averiguar acerca de la palabra o frase clave que será el punto central y atractivo de la página web.

    Debe procurar tener esto correctamente. Es vital. Es sencillamente el elemento más importante de una página web. Puede usar software de análisis de palabras claves y sitios con tal fin como GoogleKeywords, Wordtracker.com, Nichebot.com, o software de análisis avanzado como "Brad Callen's Keyword Elite".

    Indiferentemente del proceso que prefiera, debe elegir sus palabras claves muy cuidadosamente. Debe verificar el número de búsquedas hechas mensualemnte de la palabra clave. También debería verificar la densidad de la palabra clave en su página para ver si se registrará en los motores de búsqueda. Es probable que tenga que ajustar o "afinar" la densidad de la palabra clave posteriormente.

    Asegúrese del lugar que le da a la palabra clave en el título de la página. Ubíquela en el primer titular de la página, incluso muchos vendedores ubican sus palabras claves o frases en la URL. Por ejemplo: www.sudominio.com/palabraclave.html Esto ayudará a los motores de búsqueda y a los navegantes a encontrar su página más rápidamente.

  2. Diseño Sencillo

    Conserve la sencillez. Procure mantener su página simple y directa. Mantenga un estilo profesional. Asegúrese que sea legible y clara para todos los visitantes. Revise la ortografía. También debería revisar cómo luce la página en todos los navegadores (www.anybrowser.com). Más vale asegurar que lamentar.

    Tenga en mente a sus visitantes todas las veces que diseñe su página web. Preserve la temática y manténgala relacionada con sus palabras claves. La mayoría de estudios de mercadeo demuestran que lo mejor es no confundir a los visitantes con demasiadas opciones. Si está vendiendo un producto o productos, limite la cantidad en cada página, si puede, a un producto.

    Si tiene una página de comparaciones, limite la cantidad a tres o cuatro. Estudios demuestran también que si presenta demasiadas opciones o productos, la tasa de cambio o de conversión cae, no sube. Mantenga todos los productos relacionados entre sí. Si tiene una página sobre laptops, no empiece discutiendo los beneficios de obtener un vehículo todoterreno o SUV.

    Mantenga sus frases cortas y el número de palabras en una página por debajo de 200 o 300 palabras. Muchos sitios dividen los artículos extensos en varias páginas, será algo inconveniente para los visitantes pero usted tendrá más espacio para la publicidad - Es su decisión.

  3. Optimizado

    Aceptémoslo, la página web promedio obtendrá la gran mayoría de su tráfico a partir de los motores de búsqueda, principalmente Google, aunque también MSN y Yahoo merecen consideración. Optimice su página para Google. Utilice una jerarquía simple y sencilla, mantega sus páginas a no más de tres clicks de la página principal. Vincular todas las páginas a su página principal es una buena práctica, hágalo siempre. Los motores de búsqueda encontrarán su página más rápido si está vinculada directamente desde la página principal del sitio.

    Utilizar software gestor de bitácoras (blogs) como Wordpress, BBlog y otros, optimizarán las páginas por usted. Los gestores de bitácoras tienen una jerarquía de vinculación (categorías, archivos, etc.) que son bastante amigables para los motores de búsqueda. Es casi imposible no optimizar las páginas si se usa un sistema gestor de bitácoras. Además, debería tener un sistema de redifusión RSS (mejor conocido como RSS Feed) que distribuya el contenido y lo colocará en los motores de búsqueda muy rápidamente.

    Revise factores y detalles como Meta Tags, descripción el título y contenido. Utilice un archivo de texto robots.txt para los robots de los motores de búsqueda.

    Si es nuevo en la construcción de páginas web, puede querer probar Webpage Creator de Google, allí puede crear las páginas y hospedarlas gratuitamente en los servidores de Google, además serán indexados automáticamente en Google. Buen valor agregado!

  4. Fácil Navegación

    Una grandiosa página web tendrá una navegación simple y fácil. Vincule su página web hacia y desde su página principal siempre que sea posible. Asegúrese también de vincularla hacia y desde la página del mapa del sitio. Muchos webmasters colocan todos los vínculos principales de su sitio en la parte superior o inferior de todas sus páginas, así que un visitante puede moverse libremente entre ellas y encontrar lo que está buscando. Preserve el nivel de comodidad de los visitantes siempre presente.

    Doble la revisión de todos los vínculos en su página web y todos y cada uno de ellos funcionen. Puede ser soreprendido al ver cuántos de ellos no funcionan, especialmente si está vinculando a otros sitios. Los motores de búsqueda no gustan de los vínculos rotos, así tampoco sus visitantes.

    También duplique la revisión de todas las imágenes para que su página se muestre adecuadamente. Nada reduce más la calidad de una página más rápido que las imágenes que no cargan.

  5. Contenido Nuevo

    Una página web estupenda siempre tendrá contenido nuevo. Asegúrese de actualizar su página web a menudo. Nuestro mundo de tecnología cambia rápidamente, asegúrese de que el material es actual y todavía pertinente.

    Recuerde, 9 de cada 10 veces, la única razón por la cual un visitante está en su página es por información. Asegúrese de entregársela. Asegúrese de que la información es reciente y precisa. Además, no hay nada como contenido nuevo y reciente para mantener a los visitantes interesados y regresando por más.

  6. Agregable a los marcadores o favoritos

    Una estupenda página web podrá en todos los casos ser agregada a los marcadores o favoritos del navegador. El visitante deseará marcar o agragar a sus favoritos su página y regresar a ella por más información. Asegúrese de que hace fácil para el visitante agregar la página a su listado de marcadores o favoritos. Utilice un script de marcado o de agregado a favoritos. Procure usar un ícono de favoritos o favicon, este es un pequeño logo que se coloca en el sitio y será automáticamente cargado y mostrado en los marcadores o favoritos del visitante, aumentando la vistosidad y atención a su página. Cosidere un marcador y un ícono de favoritos como migajas de pan, guiando al visitante de regreso a su página.

  7. Fresca

    Toda página tiene un factor WOW! Pruebe a crear su página fuera de lo normal y de lo común. Pruebe a hacerla única, fresca. Solo recuerde, una página web profesional simple con información valiosa es siempre espectacular. Y recuerde que no hay nada como un buen pequeño 'boca a boca' para obtener algo de tráfico representándose en Pagerank para su página. Un dato sobre su página es que vale lo que vale en oro.

Así que la próxima vez que esté diseñando una página web, vaya y pruebe a crear una página web con todas las características mencionadas arriba. Empiece con las palabras claves, manténgala simple y sencilla, léala y pruébela para encontrarle errores de codificación, diseñe una buena navegación y optimícela para los motores de búsqueda, asegúrese de proveer información y contenido valioso y fresco. Último pero no menos importante, trate fuertemente por hacer su página memorable y agregable a los marcadores o favoritos. Haga una página web profesional que será superior a la mayoría de las otras páginas de la red.

Aspire a lo más alto y cosechará la recompensa.

Artículo originalmente en inglés, redactado por Titus Hoskins en Noviembre 13 de 2006.
Extraído, traducido y adaptado por Ricardo Andrés Obregón Merchán

viernes, octubre 27, 2006

Migración al nuevo Blogger

Innovación para todos los redactores

Hace un tiempo abrí un blog de prueba en Blogger Beta, la nueva versión de Blogger la cuál entrará a reemplazar al actual blogger, y ésta me sorprendió con alguna novedades. Pero hoy decidí migrar el blog a el nuevo Blogger, pues se prometía migrar tal cual sin afectar el contenido y solo una que otra modificación en la plantilla.

Debo aceptar que me gustó hacerlo y que a la larga fue ampliamente beneficioso y me permite modificar el contenido, estructura, estilo y diseño con gran facilidad, pero me tomó alrededor de dos horas volver a dejar en un estado similar el blog, pues la migración me dejó algunos sinsabores en el diseño y codificación de los caracteres, además de algunos anuncios, links, imágenes y fragmentos de texto.

El cambio fue espectacular, pues ahora puedo modificar bloques sin entrar en contacto con esa tediosa plantilla, aunque ésta no desaparece, pues puede ser modificada también. Ésta es una buena opción para los principiantes quienes no conocen la codificación HTML y el modelado por bloques en una pagina web, la interfaz es bastante intuitiva aunque puede tornarse por instantes tediosa y agotadora (visualmente).

Para quienes tengan un blog en la versión anterior recomiendo realicen la migración con cautela y realicen una copia de seguridad de la plantilla y de los bloques de código HTML y Javascript insertados manualmente. Tuve también algunos problemas con la traducción y con la codificación UTF-8, prácticamente tuve que cambiar manualmente todas las tildes y caracteres especiales, lo cual no resulto muy divertido que digamos.

Esperemos que esta herramienta madure un poco y así podremos usar con toda tranquilidad esta poderosa herramienta que Google pone a disposición de todos los bloggers del mundo. Mientras tanto tendré que lidiar un poco con los "problemillas" y bugs actualmente existentes.

lunes, septiembre 11, 2006

1024x768 vs 800x600: La difícil decisión de elegir la resolución de pantalla

¿Para qué resolución se debe diseñar una página web?

Ésta es una de las preguntas más comúnmente realizadas por los desarrolladores y diseñadores de págians web en cuanto a la usabilidad en una página web. La respuesta completa es un poco difícil, pero el consejo básico está claro:

  • Optimice para 1024x768, el cual es el tamaño de pantalla más ampliamente usado. De acuerdo, la pauta general es optimizar para la resolución más común de su audiencia objetivo. Debería se untamaño distinto si dice que está diseñando una web para una intranet de una compañía donde los empleados usan grandes monitores.
  • No diseñe solamente para un tamaño específico de monitor porque el tamnaño de la pantalla varía entre los usuarios. La variabilidad del tamaño de la pantalla es aun más grande cuando los usuarios no maximizan las ventanas de sus navegadores (especialmente si tienen grandes pantallas)
  • Utilice un diseño líquido (liquid layout) que se ajuste al tamaño de la ventana actual del usuario (es decir, evite los diseño rígidos o congelados que siempre son del mismo tamaño)

Actualmente, cerca del 60% de todos los monitores del mundo se encuentran en una resolución de 1024x768 pixeles. En contraste, solo cerca del 17% usan pantallas 800x600, lo que obviamente es menos importante para apuntar como objetivo a estos usuarios con pequeñas pantallas. Lo que es igualmente obvio, sin embargo, es que no puede simplemente ignorar el 17% del segmento de clientes ofreciendo un diseño rígido que requiere más pantalla que la que tienen disponible

Extraído, adaptado y traducido de Screen Resolution and Page Layout de Jakob Nielsen considerado como uno de los mayores expertos en usabilidad y accesibilidad web a nivel mundial

viernes, septiembre 01, 2006

Blogs: Periodismo o Plaga

31 de Agosto: Día Internacional del Blog

Cada segundo, en un rincón del planeta, nace un nuevo blog. Es casi imposible desechar hoy en día, la relevancia que tienen los blogs o bitácoras personales, sobre todo cuando hablamos de noticias que conmueven al mundo, la vida diaria y hasta cosas tan triviales como qué lavadora comprar o qué color se usará en la próxima temporada.

Lo blogs han inundado internet y en la actualidad es casi inevitable encontrar blogs ocupando altas posiciones en los buscadores (aunque me temo que de esa manera debió haber llegado a este y espero que la información aquí contenida sea de gran utilidad) que muchas veces distraen nuestra atención, algo positivo y negativo a la vez, ya que muchas veces no contiene la información que necesitamos sino opiniones de poco valor y no la información que requerimos.

A mi modo de ver es una vía donde cada individuo desarrolla el derecho a la libre expresión, aunque a veces abusan de ese derecho (no pienso entrar en detalles).

Aunque la idea de este artículo no es debatir sobre si es bueno o malo ese "derecho de expresión" sino celebrar el Día Internacional del Blog. Obedeciendo a la lógica de la blogósfera, la iniciativa no surgió de un decreto de un organismo internacional, sino que fue propuesta por un blogger israelí llamado Nir Ofir.

Su idea era que, durante el 31 de agosto, todas las bitácoras digitales en el mundo se animaran a recomendar cinco blogs "preferentemente diferentes a su propia cultura, punto de vista y posición". Ofir afirma que creo el día porque "siento que a medida que hay más blogs, gasto menos tiempo en descubrir otros nuevos. Debido al exceso de información, sólo visito mis blogs favoritos, por lo que estoy seguro que me pierdo un montón de buenos blogs"

Ya sea fanático o detractor de esta tendencia en este día los bloggers celebramos: FELIZ DÍA DEL BLOG

Fragmentos extraídos de BBC Mundo

miércoles, agosto 30, 2006

Día de Firefox

Firefox está que arde

Desde hace algún tiempo Firefox se ha convertido en un navegador que ha surgido y ha conquistado el corazón y el ordenador de muchos navegantes en el mundo, gracias a su estabilidad, seguridad, bloqueo de ventanas emergentes (pop-up's), sistema anti-phishing, entre otro sinfín de características. Es tan grande la aceptación que ha tenido que Mozilla ha elegido el día 15 de Julio como el día Firefox y para promocionar este navegador, miles de fans han creado videoclips donde resumen Firefox en menos de treinta segundos o menos, y uno de los videos que encontré más llamativo e interesante es el que se muestra en la parte superior.

Para mayor información entra a Firefox viene a la vida (En inglés)

viernes, julio 28, 2006

Robots Futbolistas en el Campus Party

Tecnología y Robots

En estos días se ha llevado a cabo el Campus Party y quise compartir con los cibernautas un video donde podemos disfrutar y apreciar cómo los avances tecnológicos aplicados en la robótica nos hacen divertir un poco. Obviamente aún hay un largo trayecto, pero vamos por el camino correcto.

lunes, julio 17, 2006

Diversión, Geeks y Gatos

Diversión de fin de semana: ¡Gatos!

No estoy seguro del porqué, pero a la gran mayoría de Geeks les encantan los gatos. Tal vez la razón sea porque se sientan en nuestros PC's y se suben sobre el teclado. Definitivamente, muy divertidos.

Por cierto, ¿alguien ha visto o conoce de un gato que persiguiese a un oso negro para cazarlo?

miércoles, abril 12, 2006

Tráfico Web: el eterno dilema del webmaster

Guía de la A a la Z para obtener tráfico en el sitio web

En Septiembre de 1999, Brett Tabke escribió "26 Steps to 15k a Day" (26 pasos para tener 15k en un día) en el foro Webmaster World (Mundo Webmaster). Muchas cosas han cambiado desde entonces, y ahora es el momento de considerar un nuevo plan de 26 pasos que cubran las actuales necesidades de los webmasters del año 2006. Algunos de los pasos aún aplican (escribir contenido nuevo todos los días, por ejemplo), y otros no (enviar a los motores de búsqueda ya no es necesario), y estamos acá para decir cuál es cuál y qué es qué. Como tal vez ya sea muy sabido, atraer visitantes no es tarea fácil, requiere arduo trabajo, determinación y mucho ahínco. Así que si se encuentra listo, recójase las mangas y siga los siguientes 26 pasos sencillos, y en tan solo un año se habrá generado suficiente tráfico para mantenerse ocupado por un largo, muy largo tiempo. Guía de la A a la Z para obtener tráfico en el sitio web.

A) Búsqueda de palabras clave (Keyword research)

Antes que nada, utilice una herramienta de búsqueda de palabras clave y realice un extensivo trabajo de investigación, buscando las palabras y frases claves correctas para usar en el sitio. ¿Qué frases clave está usando la competencia? ¿Hay alguna frase que cree un potencial para la participación en el mercado? ¿Hay alguna con la que pueda lanzar el sitio y crear todo un nuevo nicho de mercado?

B) Nombre de dominio (Domain name)

Si desea registrar y carac el nombre de su compañía, entonces elija un nombre de dominio que lo refleje. Si su compañía se llama Umara, entonces use el dominio www.umara.com. Si ya ha sido tomado por alguien más entonces registre www.productosumara.com o similar. Sin guiones, y ojalá no más de dos palabras en el nombre del dominio.

C) Evite el sandbox

Tan pronto haya elegido las palabras y frases claves y el nombre de su compañía, compre un dominio lo antes posible. Diseñe y coloque una página en el sitio comentando un poco de lo que es usted, lo que vende, y que pronto habrá más por venir. Asegúrese de que va a ser recorrido, escaneado e indexado por buscadores como Google y Yahoo o envíelo o vincúlelo a cualquier otro sitio

D) Considere y cree contenido

Cree más de 30 páginas de contenido real, y original sobre su sitio. Esto le dará a los spiders algo para "masticar". Esto también aumentará las posibilidades de ser visto en los resultados de los motores de búsqueda con una gran variedad de palabras y frases claves.

E) Diseño del sitio

Use el principio "Consérvelo Simple". Emplee un archivo CSS externo, revise y limpie cualquier código Javascript refiriéndolo como archivo externo, y no use frames, utilice Flash de la manera como lo haría con las imágenes, y no importa qué, no construya sitios en Flash. No ofrezca un sitio plagado de "pitos y flautas" a los visitantes. Mantenga las cosas agradables y sencillas. Haga las cosas fáciles de encontrar, y el visitante no tendrán razón para mirar en ninguna otra parte.

F) Tamaño y extensión de página

Que la página use menos kilobytes, lo mejor especialmente para la página prinpipal o inicial. Optimice las imágenes y asegúrese que la página carga rápidamente. La mayoría de personas y negocios del mundo occidental puede que posean acceso alta velocidad, pero los teléfonos celulares y otros países no. Si el sitio carga lentamente, puede que ya haya perdido los visitantes incluso antes que hayan tenido la oportunidad de examinar y explorar el sitio.

G) Usabilidad

Asegúrese de que el sitio sigue las buenas reglas de usabilidad. Recuerde que las personas gastan más tiempo en otros sitios, así que no viole las conveniones del diseño. No use archivos PDF para la lectura en línea. Cambie los colores para los link visitados, y use bueno encabezados. Tener en cuenta algunos consejos y trucos de usabilidad valen la pena, pues le ahorrarán trabajo y esfuerzo.

H) Sobre la optimización del sitio

Utilice la frase clave que ha elegido en su título (lo más importante), sus encabezados (cuando sea conveniente) y en el contenido del texto. Asegúrese que su página/contenido se encuentra alrededor de la frase clave. Si está vendiendo cosas, entonces escriba acerca de esas cosas. No solo coloque por colocar, las palabras de esa objeto o artículo dentro del texto.

I) Los globales

Los globales son aquellos vínculos que permanecen iguales en cada página. Son el punto de referencia para que los nuevos visitantes no se pierdan en la navegación de la página. Algunas veces se encuentran en la parte izquierda de la página, a veces consisten en pestañas en la parte superior de la página. A menudo también se encuentran en el pie de la página. Asegúrese de que tiene una versión del texto de los globales en cada una de las páginas. Usualmente creo pestañas en la parte superior, y coloco versiones en solo texto en el pie de la parte inferior de la página. Revise, averigüe y descubra lo que mejor funciona en su caso.

Artículo originalmente en inglés, redactado por Shawn Campbell en Abril 7 de 2006.
Extraído, traducido y adaptado por Ricardo Andrés Obregón Merchán

lunes, marzo 06, 2006

¿Qué tiene que estudiar un informático?

¿Qué tienen que estudiar los ingenieros informáticos? Es curioso que una profesión tan extendida con titulaciones en casi todas las universidades del mundo tenga tan poco claro lo que tienen que estudiar sus ingenieros.

Introducción

El presente artículo no tratan temas que refieren necesariamente a la informática técnica como tal, quiero entrar en otro de los aspectos que me preocupan y que no es otro que la formación y, dentro de ella, el área que más conozco, la formación de los informáticos.

Una vez escrito este artículo, he de completar esta introducción para indicar que en el fondo sí trato los temas de siempre, fundamentalmente porque la formación de los profesionales informáticos está muy relacionada con el estado de la informática y especialmente con su futuro.

¿Qué se enseña en informática?

Los primeros planes de estudio de la ingeniería informática estaban muy influenciados por la procedencia de la mayoría de su profesorado. En algunas Facultades los profesores provenían fundamentalmente de áreas de ingeniería -ingeniería de telecomunicaciones e ingeniería industrial fundamentalmente- y en otras facultades de áreas de ciencias -matemáticas y física fundamentalmente-. Los primeros títulos oficiales "Licenciados / Diplomados en informática" parece que se decantaban más por esta segunda corriente, mientras que los actuales "Ingenieros / Ingenieros Técnicos en Informática" parece que se acercan más a la primera.

Esta diferencia de culturas llevó al choque entre dos concepciones distintas sobre los planes de estudio en informática. Los primeros con mayor énfasis en asignaturas aplicadas como sistemas operativos, redes de ordenadores, ingeniería del software, etc. Los segundos con más peso en el estudio básico, con mayoría de asignaturas como cálculo, álgebra, matemática discreta, teoría de autómatas, etc. El resultado final de los planes de estudio obviamente conjuga ambas visiones por imperativo legal, aunque la relación de fuerza en cada universidad determinan el sesgo del plan de cada una.

¿Qué lenguaje de programación?

Otro de los problemas habituales a la hora de implementar un plan de estudios de informática es elegir qué lenguaje o lenguajes de programación emplear. Parece razonable que esta decisión se tome fundamentalmente por razones pedagógicas, sin embargo otros muchos factores afectan y han afectado esta decisión.

Durante cierto tiempo muchas universidades emplearon Pascal como lenguaje para enseñar programación. En otras asignaturas, típicamente las relacionadas con los sistemas operativos, se empleaba C por ser el más usado en la implementación de sistemas operativos, los profesores de asignaturas de control o tiempo real preferían Ada, etc. Estas aproximaciones eran criticadas desde la industria por ser lejanas a la realidad del mercado. Es muy importante que aprendan COBOL clamaban hace 15 o 20 años...

A mi entender, la industria parece no darse cuenta de que van por detrás de la universidad y no por delante en estas cuestiones (en contra de lo que creen). Me explico, hace algunos años para mucha gente de la industria en la universidad se explicaban cosas poco útiles cuando no enseñaba COBOL. Curiosamente, como los alumnos en las universidades aprendieron otras cosas, en particular C, cuando llegaron a la industria empezaron a usar lo que mejor conocían. Así,hicieron uso de C, por ejemplo, incluso para hacer programas de gestión empresarial, para lo que no está especialmente dotado.

Hoy la situación sigue siendo similar. Ahora desde la industria se reclama, por ejemplo, que se use Java como lenguaje de programación. Mejor dicho, se pide que se les enseñe Java y sus implementaciones de todas las tecnologías básicas y casi nada más. Sé que para muchos la idea de un lenguaje interpretado con fuertes conexiones con la red puede parecer algo novedoso, pero la verdad es que había muchas cosas similares y mejores antes, simplemente Java tuvo la suerte de nacer entre los brazos de una multinacional.

Nuevo factor: la industria

Además se añade un nuevo factor, la industria ha crecido mucho y ahora hay jugadores muy poderosos: Microsoft, SUN, etc. que entienden perfectamente que lo que aprendan los futuros ingenieros será un factor de mucho peso en lo que se utilizará en las empresas en los años venideros. De ahí que muchas empresas hagan muchos esfuerzos para colocar sus productos en las universidades.

Microsoft parte de su conocida ventaja en sistemas operativos de los equipos de sobremesa, que son los que fundamentalmente equipan las aulas de prácticas por razones fundamentalmente de precio en las universidades. Hasta hace muy poco era complicado encontrar aulas de ordenadores compatibles con sistemas operativos que no fuesen de Microsoft. La resistencia ha sido muy fuerte a la aparición de aulas con GNU/Linux u otros sistemas operativos libres. Las multinacionales informáticas han creado licencias campus para tratar de convencer a las universidades de su uso. Han realizado donaciones de software con la misma idea.

Mi pregunta fundamental es: ¿Debería obligar la administración a utilizar tecnologías neutrales, esto es libres, en la docencia en tecnologías de la información? A mi entender sí, por dos razones fundamentales. La primera menos importante: por precio. Las licencias de campus son muy baratas comparadas con los precios individuales, pero aún así hay que pagarlas y las donaciones sólo se producen al subconjunto limitado de universidades de mucho prestigio con la idea de que arrastren a las demás.

La segunda es la más importante desde mi punto de vista: las administraciones públicas deberían forzar el uso de tecnologías no propietarias para no colaborar en el mantenimiento de monopolios en ningún campo de estas tecnologías. Aceptar que se emplee como lenguaje Java, o que los únicos sistemas operativos que vean los alumnos sean los de la familia Microsoft Windows, me parece peligroso desde el punto de vista social.

Curiosamente, para alguien que ha defendido la vertiente más ingenieril de la informática, son los sectores más partidarios de la fuerte formación matemática los que más comprenden la necesidad de usar tecnologías no propietarias. Quizás la no patentabilidad de las matemáticas ha llevado a esa comunidad a una evolución más abierta que a la de las supuestamente más dinámicas ingenierías.

Deontología profesional

Otro punto de interés en la formación de los informáticos, y que se deja muchas veces de lado, es la formación sobre la informática como rama del saber y sobre sus componentes sociales. La impartición de este tipo de conocimientos suele hacerse alrededor de la asignatura de deontología profesional. Esto no es exclusivo de la informática, casi todas las titulaciones universitarias imponen ciertos créditos obligatorios de deontología profesional.

Las asignaturas sobre deontología en informática tienen en mi opinión un perfil muy limitado, que reconozco sesgada por la implementación de las asignaturas que conozco. En general se centran en una única parte de los problemas a los que se enfrenta un informático en su vida profesional: el uso de información confidencial, bien de los usuarios de los servicios que desarrollan, de sus compañeros o de las empresas para las que trabajan. También abordan, como no podría ser menos, las prácticas éticas, por ejemplo no realizar programas incorrectos intencionadamente, se introducen discusiones sobre la necesidad o no de colegios profesionales (esto daría para otro artículo), se habla de las prácticas de contratación y relación con los compañeros y competidores, y en general se establecen los derechos y deberes legales de la profesión informática.

Sin embargo, en mi opinión es deseable introducir a los alumnos en otros asuntos relacionados con la informática, pero que son de carácter más general. Creo que es importante que se enfrenten a los problemas sociales de la informática. En particular me parece imprescindible que conozcan la filosofía subyacente en el modelo de desarrollo del software libre. No es aceptable que la mayoría de los alumnos de informática salgan de las aulas pensando que la única forma de desarrollar software, o de ganar dinero desarrollándolo es mediante la venta de licencias propietarias. Es necesario que se aborde el análisis de las licencias de software, que se estudien sus implicaciones.

De igual forma es necesario que en las aulas se aborden las cuestiones relacionadas con la propiedad intelectual, de las que yo creo que el software libre es un subconjunto. La informática está estrechamente relacionada hoy en día con la producción y distribución de contenidos multimedia. Es necesario que los informáticos discutan y razonen sobre las formas en que se van a realizar esas funciones y sus responsabilidades sociales.

Las prácticas profesionales de un informático no deben limitarse a su relación con la información confidencial, la privacidad de los datos, etc. Es importante que sea consciente de su papel en la cadena de producción intelectual y que decida con conocimiento qué tipo de herramientas desarrolla o utiliza en su vida profesional.

Los otros informáticos

Hasta aquí he usado la formación de los informáticos como hilo conductor del artículo. Soy consciente de que la profesión informática a día de hoy está llena de gentes de procedencias muy diversas. Así, además de ingenieros informáticos, hay ingenieros de otras ramas, licenciados, etc. Eso sí, lo dicho sobre el uso de herramientas informática libres se aplica igualmente a su formación.

Asignaturas relacionadas con la gestión de la propiedad intelectual en general y con el modelo de desarrollo del software libre en particular creo que deberían ser obligatorias en los estudios relacionados con las tecnologías de la comunicación y muy recomendables (quizás en formato de asignaturas de libre elección/configuración) en otras titulaciones.

Otra parte de los profesionales de la informática son los autodidactas. A ellos les recomendaría que, siguiendo sus instintos, trataran de ver más allá de las herramientas comerciales de moda y que apostasen por el software libre como camino de especialización.

Por último, como profesor no puedo dejar al resto de los usuario sin deberes: no vale con ser simples usuarios de GNU/Linux, hay que entender, por ejemplo, qué papel juega la licencia GPL y el modelo de desarrollo de software libre en general.

Como siempre BarraPunto sigue siendo un buen sitio para discutir estos asuntos. Así, si quieres leer más sobre estos temas puedes intervenir en muchas de las discusiones que se celebran al respecto.

Extraído y adaptado para la comunidad en general, del Libro "Sobre Software Libre" - http://gsyc.escet.urjc.es/~grex/sobre-libre/informaticos.html (c)

lunes, febrero 27, 2006

Lenguajes interpretados vs Lenguajes Compilados: Desidia, capricho o tendencia.

La eterna batalla a punto de culminar

Varios de los lectores de este blog me han cuestionado mi posición sobre lenguajes como Java, Perl, PHP, Ruby, ASP, y la última suite de Microsoft: Visual Studio.Net. Pues bien, ha llegado el momento de explicar mi posición, la cual puede ofender a muchos, dejar perplejo a otros y confundir al resto, bueno, algunos pocas personas estarán de acuerdo conmigo.
En fin, la pregunta clave es: ¿qué es mejor, el lenguaje interpretado o el lenguaje compilado? Voy a resumirlo en una sola frase. Todos los lenguajes son interpretados.
Ya sé que alguno (si no la mayoría) dirá que eso no es posible, y por lo tanto, haré la sustentación a tal afirmación.
Para empezar, debemos definir cada una de las frases desde el punto de vista programación de PC's.

Lenguaje Compilado
Un lenguaje compilado es término un tanto impreciso para referirse a un lenguaje de programación que típicamente se implementa mediante un compilador. Esto implica que una vez escrito el programa, éste se traduce a partir de su código fuente por medio de un compilador en un archivo ejecutable para una determinada plataforma (por ejemplo Solaris para Sparc, Windows NT para Intel, etc.). (Lenguaje Compilado - Wikipedia)

Lenguaje Interpretado
... Un lenguaje interpretado es aquel en el que las instrucciones se traducen o interpretan una a una en tiempo de ejecución a un lenguaje intermedio o lenguaje máquina o a través de una máquina virtual, siendo típicamente unas 10 veces más lentos que los programas compilados.(Adaptación de la definición en Wikipedia)

Luego de las deficiones, digámoslo en términos cristianos, o mejor en términos informáticos, porque no todos los cristianos entienden esta terminología. Un lenguaje compilado es aquel que, en teoría, es traducido a código máquina y las instrucciones generadas, son interpretadas directamente por la máquina. Y un lenguaje interpretado, es aquel que es traducido a un lenguaje intermedio(entiéndase no-máquina), en la cual cada instrucción es interpretada y traducida a lenguaje máquina en tiempo de ejecución. En la práctica, solo los sistemas operativos y contados programas que se ejecutan especialmente por consola, se encuentran en código máquina. Y antes que alguien interprete mal, explico lo anterior.
Si hablamos de la plataforma más usada en el hogar, entiéndase Micro$oft Windows, o pues hasta el momento de la redacción de esta nota, TODOS, sin excepción, son lenguajes interpretados o semi-interpretados. Aquellos conocedores del lenguaje ensamblador me hallarán la razón sin mayor problema. En los sistemas operativos modernos, cuando se "compila" un programa, éste se traduce a un pseudoensamblador o a un estilo de pseudo-máquina, que a su vez es interpretada por la "máquina virtual" propia o nativa del sistema operativo, para poder procesar, dibujar y ejecutar todas las instrucciones adecuadamente. Los programadores avanzados, sabrán que cuando se compilan los programas, lo que se puede encontrar es una serie de llamados a librerías externas las cuales realizan las tareas solicitadas. En el caso de sistemas operativos tipo UNIX y demás, la cosa no cambia mucho, así que no entro en detalles.
Pero ahora sí entremos en materia. Ya está claro que todos los programas son interpretados en mayor o menor grado, la cuestión es ahora, qué compiladores generan código "más compilado" (valga la aparente redundancia) que los otros. Aquí voy a mezclar un poco concepto personal con concepto técnicos. Para empezar voy a ser directo y mencionaré algunos lenguajes que son los generan, en teoría, programas "más compilados", sin mencionar las plataformas a las cuales pertenecen (hago omisión de algunos lenguajes compilados, no usados en la actualidad: Fortran, Ada, Algol, COBOL y demás de su tiempo, exceptuando BASIC y derivados):
CEl lenguaje compilado maestro por excelencia, excepto en Visual Studio.Net. Solo menciono que es el lenguaje en el cual se diseñaron la gran mayoría, por no decir todos, los sistemas operativos modernos.
C++Alguno se peguntará, el porqué separo C de C++. Pues bien, sucede que C++ no es TAN compilado como C, especialmente porque casi siempre está usado en sistemas operativos gráficos, solo en sus versiones de consola es compilado en código máquina real, pero básicamente y en esencia se compila a código máquina.
PascalBásicamente, en todos sus sabores y colores, es compilado a código nativo máquina
Delphi, Kylix, LazarusSon altamente compilados, aunque no totalmente, pues están orientados a sistemas operativos gráficos, así que en menor grado son interpretados, pero son considerados lenguajes compilados, pues el código generado es nativo de la plataforma objetivo.

He mencionado los más conocidos y más usados, ahora sí vienen los lenguajes interpretados, los cuales causan tanta polémica.
BASICEl lenguaje interpretado por excelencia y hasta donde tengo conocimiento, el más antiguo, aunque no fue interpretado en sus principios, luego se convirtió en el hito de los lenguajes interpretados. Todos sus derivados son en mayor o menor grado interpretados, aunque alguna vez, Borland lanzó un BASIC que se compilaba, en teoría (nunca lo comprobé), a código máquina.
JavaScript, VBScriptAunque más interprestados que este par, creo que no existen, los menciono como para información general.
Perl, PHPEstos lenguajes diseñados para web, son lenguajes interpretados por excelencia, aunque se compilan a código intermedio en tiempo de ejecución, cosa que acelera su ejecución. Existen también herramientas que generan un código cercano a la máquina para estos dos lenguajes y cachean contenido, pero a la larga, siguen siendo interpretados.
Batch, ShellLenguajes interpretados para los OS's, los cuales se ejecutan bastante lento, pero ya que por lo general son tan cortos o realizan tareas tan básicas no es perceptible el rendimiento.
JavaEste lenguaje ha sido bastante diversificado en la actualidad, incluso, varias de las grandes aplicaciones comerciales modernas están diseñadas en este lenguaje, por ejemplo, Zend Studio y Oracle JDeveloper, solo por mencionar dos grandes.
Visual Studio .NETEl Boom de los lenguajes por imposición Micro$oft. NINGÚN programa generado con los lenguajes de esta suite o como se le quiera denominar a este paquete, genera código máquina y de hecho está bastante lejos de ser código máquina, o incluso, referencias a librerías como lo harían otros lenguajes como Delphi, C++, o similares. No estoy en contra de esta nueva metodología para la interpretación de software, pero sí hay una gran desventaja, es la MUY lenta ejecución de los programas generados y en cortas palabras explico el porqué (podría hacer todo un compendio): El lenguaje generado es un código intermedio el cual a su vez se compila en tiempo de ejecución, el cual es interpretado por el Framework de .Net, el cual ejecuta las instrucciones haciendo los llamados respectivos a las librerías del sistema operativo. En mi concepto personal, es demasiada vuelta para ejecutar una simple instrucción con llamado a una API del Sistema Operativo. Aunque la teoría dice que el programa luego de compilarse en tiempo de ejecución, permanece así, por lo tanto es un aumento en la velocidad de ejecución, mejora que he tenido la oportunidad de experimentar, porque código interpretado que ejecute código einterpretado, me temo no es muy veloz que digamos.

Pero, ¿por qué tanta renuencia a estas nuevas tecnologías?, y ¿qué pros y contras presentan?. Es bastante sencillo. No estoy en contra de estas tercnologías, de hecho, son excelentes y tarde o temprano, aunque más temprano que tarde, serán los estándares de compilación y serán considerados como lenguajes compilados.

Ventajas de los lenguajes interpretados

  • Portabilidad: Esta es la principal ventaja que presenta este tipo de lenguajes, porque puede ser compilado en y para cualquier plataforma o sistema operativo.
  • Compatibilidad: al ser interpretado por el sistema operativo, es la máquina virtual o framework el que se encarga de que las intrucciones sean ejecutadas por el software y el hardware.

Desventajas de los lenguajes interpretados

  • Velocidad: Es el aspecto más notable y el cual se debe evaluar a fondo al crear software con este tipo lenguajes, pues se debe equilibrar la portabilidad con la velocidad que se está sacrificando. A menos que las prestaciones de los equipos informáticos sean bastante altas, en el caso cual, se podría despreciar este aspecto.
  • Portabilidad: es una desventaja también. El problema radica en que en la actualidad, asi todos los lenguajes compilados, existen para todas las plataformas, no así las máquinas virtuales o frameworks, aunque en el caso de Java, se ha hecho un excelente trabajo en cuanto a eso y no me puedo quejar, existe para casi todas las plataformas, por no decir todas, actuales. El .NET framework, lamento decir que en la actualidad, se encuentra ciento por ciento probado solo en Windows, aunque existen proyectos que prometen tal portabilidad, aunque todavía no son un hecho.

En conclusión, ¿cómo actuar?. No es muy difícil. Se evalúan los requerimientos, se definen necesidades, si éstas no superan el hardware a usar, perfectamente se puede proseguir, de lo contrario, es mejor pensar en un lenguaje compilado, pues os lenguajes interpretados exigen gran cantidad de recursos especialmente RAM y procesador. Deberían aprovecharse los lenguajes interpretados hasta donde sea posiblem pues en pocos años o incluso meses, entrarán en vigor y serán (¿o son?) el nuevo estándar de desarrollo.