25 de abril de 2008

AZ 30: Independencia tecnológica y software libre

Iniciaré mi comentario haciéndole querido lector la siguiente pregunta, usando como premisa el supuesto de que estudió o estudia algo relacionado a una ingeniería en sistemas, coencias de la computación o licenciatura en informática o que al menos tiene ya alguna experiencia en el área del cómputo. Una vesz hecho esto, la pregunta es: ¿ha usted considerado en algúnmomento que de acuerdo a la elección de tecnológia de software que haga podría depender el futuro económico de una empresa o institución? Supondremos que sí, ¿y qué tal si se tratase del futuro económico de su país? Esta pregunta es menos frecuente¿ cierto?.

Iremos por partes. resulta que se han venido estableciendo convenios entre diversas instituciones educativas y empresas de software comercial en las que las primeras reciben un inmenso paquete de productos de software (sistemas operativos, suites de oficina, ambientes de desarrollo de software, etc) con sus respectivas licencias a un costo bastante accesible, lo que a simple vista parece ser el negocio de la vida pues al mismo tiempo se actualiza y/o regulariza la base de software instalado con lo que los estudiantes se preparan con tecnología de punta. ero pensamos ahora en ¿qué va a suceder cuando se termine la duración de los acuerdos y qu las empresas decidan dejar de "apoyar" a la educación nacional?

Otro aspecto que generalmente no consideramos es que al enseñar a los estudiantes el manejo de determinadas herramientas de software, éstos al llegar a puestos administrativas dentro de sus respectivos centros laborales muy seguramente promoverán el uso de las mismas tecnologías con las que fueron educados. En este orden de ideas debemos asumir que estas empresas y/o instituciones tendránen el corazón de sus procesos productivos o administrativos piezas de software con licencia propietaria que quizás resulten muy interesantes, sencillas (tanto como para comprar un curso en varios CD's), pero de las que no tenemos idea de cómo funcionen por dentro, y lo más alarmannte de todo, resulta claro que a este nivel el software no resulta nada barato. En este punto la pregunta clave se modifica un poco en el siguiente sentido: ¿cuánto deberá mi empresa y/o institución gastar cda ves que aparezca la nueva versión de ese software de licencia propietaria? Si no se ve claramente la necesidad de estar al día en uanto a versiones de software simplemente consideremos que las necesidades de toda empresa evolucionan día a día y que generalmente crecen por lo que obviamente al paso del tiempo requeriremos siempre de las versiones más actualizadas. Esto sin tomar en cuenta el tema de la seguridad y la privacidad de nuestra información. Podría no resultar peligroso que algún usuario interceptara el correo electrónico que le envió a su esposa, caso contrario de la prioridad que tendría que un cracker lograse infiltrar dentro del servidor dnde se manejan las transacciones bancarias de la empresa.

Vayamos ahora un paso más arriba e imaginemos que toda la plataforma de software sobre la que se basa la red informática del gobierno del municipio, del estado y dle país se basara únicamente en software de licencia propietaria, hagámos un último intento y transladémonis a un ecenario en el cual toda la estructura informática de e-México es nuevamente software d elicencia propiertaria.

Me parece, salvo su mejor opinión que este últoimo punto puede dars una ide lo suficientemente clara dle gasto tan enorme que tenmdrían qu hacer los varios sectores gubrnamentales en materia de actualizaciones, y sobre todo del peligro inherente que resulta enseñar a los estudiantes a usar única y exclusivamente software propietario.

Quizás en este punto, usted querido lector esté considerandomuy seriamente la idea de que quién escribe es uno de esos fundamentalistas, anticapitalistas, antiprogresista y todo lo anti-ista posible. Para dmeostrale el error en que (por lo menos creo) que está, abusaré de la muy mexicana afición por las ideas extranjeras. ¿Sabía usted que el gobierno alemán está en proceso de migración de su base instalada de software de licencia propietaria por software libre, al sospechar que elprimero podría contener algún tipo de truco para accerder desde el exterior a información sensible de este gobierno.

¿Y porqué software libre? Sencillo, una de las libertades que otora la licencia de éste, es que debe redistribuírse junto con sus líneas de código fuente, es decir, la receta con la cual está hecho el programa en cuestión, de manera que siempre podremos saber qué y cómo hace lo que hace cualquier software dentro de nuestro sistema.

Hace poco, un ejecutivo de una empresa de desarrollo de software en Guanajuato aseguraba que el software libre era un nido de hackers y que preferían seguir usando la tecnología tradicioonal pues se escuchaba muy de categoría. A este respecto, salvo cuestiones semánticas que no pretendo aclarar, sólamente sé decirles que me parece claro que si la elección de las tecnologías se basa en que si se escuchan "de categoría" o no, entónces de seguro la seguridad basada en obscuridad es el mejor método de mantener su información secreta. "si no sabes cómo funciona, te va a ser difícil encontrar los errores que tiene".


Artículo original

AZ 26: Lenguajes de programación. Parte 4/5: Python

Phyton es un lenguaje de programación poderoso y fácil de aprender. Contiene estructuras de datos altamente eficientes y un simple pero efectivo acercamiento a la programación orientada a objetos.

Si alguna ves has escrito un shell script muy argo, probablemente conoces este sentimiento; sería genial agregar alguna otra función, pero ya el script es demasiado lento, largo y complicado, o esta función que involucra alguna llamada al sistema o algún procedimiento que es únicamente accesible desde C. A menudo el problema a mano no es lo suficientemente serio como para reescribirel script en C; aunque el problema requiera de cadenas de longitud variable u otro tipo de datos (como listas o manejo de archivos), que son sencillos para el shell pero requieren de bastante trabajo al implementarlos en C, o incluso no estás suficientemente familiarizado con C.

Otra situación: quizás tienes que trabajar con varias librerías de C, y el ciclo escritura/compilación/prueba/recompilación es muy lento y necesitas desarrollar software con más velocidad. Posiblemente hallas escrito un programa que necesite una extensión del lenguaje y no quieres diseñar tu propio lenguaje, escribir y depurar un intérprete para él y enlazar tu aplicación.

En estos casos Python demuestra sus bondades pues es simple de usar, pero es un verdadero lenguaje de programación que ofrece mucho más estructura y soporte para programas grandes. Por otro lado, ofrece mucho más chequeo de errores que C y al ser un lenguaje de alto nivel contiene estructuras de datos de alto rendimiento, tales como arreglos flexibles y diccionarios que podrían costarle días para implementalos efectivamente en C. Debido a sus tipos de datos más generales, Python es aplicable a un número mayor de problemas que AWK e incluso Perl.

Python te permite fragmentar tus programas en módulos que puedes reutilizar para emplearlos en otros programas. Viene con una colección de módulos estándar para usar coo base para tus programas. Incluye además módulos construídos para proveer de entrada y salida para archivos, llamadas al sistema, sockets e incluso interfaces para herramientras gráficas como Tk.

Python es un lenguaje interpretado, lo que implica el ahorro de tiempo durante el desarrollo de un programa ya que no necesita de compilar y ligar. El intérprete puede usarse de modo interactivo, el cual hace fácil el experimentar con las características del lenguaje pàra probar funciones durante lña etapa inicial de desarrollo. Es además una calculadora de escritorio.

Permite escribir programas muy compactos y lejibles, además de que los programas en Python suelen ser mucho más pequeños que sus contrapartes en C por varias razones:

  • Los tipos de datos en Python permiten expresar operaciones más complejas en sentencias cortas.
  • El agrupamiento de sentencias se realiza por identación en lugar de llaves de principio y fin
  • No se necesita de la declaración de variables.
Python es extensible. Si sabes programar en C es sencillo agregarle nuevos módulos o funciones ak intérprete, así como ejecutar operaciones críticas a buena velocidad o ligar programas a librerías que pueden ser accesibles solamente en forma binaria. Una ves hechoe sto puede ligarse el intérprete en una aplicación escrita en C y usarse como una extensión de la aplicación.

Fuentes:

  • Python Tutorial. Release 1.5.2. Guido van Rossum. 1998. USA.

Artículo original

AZ 25: El proceso de planeación en el desarrollo de software educativo

En el presente artículo se analizan los pasos a seguir para la etapa de planeación para una aplicación de software eucativo libre. Se describen cada uno de los pasos y elecciones que deben tomarse en el proceso que va desde la propuesta de solución a un roblema planetado hasta el momento inmediato anterior al inicio de la etapa de desarrollo, pasando por el proceso de delmitación del problema y el consecuente seguimiento de ideas que nos da por resultado una propuesta de metodología a seguir para los futuros desarrollos de software educativo.

Primero que nada deberemos identificar a qué le llamamos software educativo, en este sentido podemos decir que se tratará de algún prográma mediante el cual nos podamos basar para presentar conocimientos digeridos o pre masticados a alguien m‡s. Digamos que esta es una etapa anterior a la planeación como tal de la aplicaci—n puesto que apenas se comienza a bosquejar la idea que más adelate desarrollaremos.

Para ejemplificar supongamos que contamos con un grupo de amigos que son astrónomos aficionados, de modo que se nos ocurrió hacer un programa que de alguna manera le sirva al que lo vea para aprender algo sobre astronomía. Lamentablemente la astronomía es un terreno impresionantemente grande y por tanto tenemos mucho material del cual echar mano.

En cuanto a la etapa de planeación de la soución propuesta tenemos que este software debe adecuarse a varios aspectos, entre los cuales podemos contar:

  • El material que contiene
  • El tipo de público al que está dirigido
  • El medio de distribución que se elige, y
  • El lenguaje en el cual se va a escribir la aplicación en sí

Pero vamos por partes. Primero, tenemos que identificar el material que va a manejar nuestra aplicación, puesto que no es lo mismo hacer una presentaci&pacute;n que demuestre el principio parabólico a muchachos de secundaria que un software para aprender a sumar quebrados a niños de tercero de primaria. Obviamente la elección del lenguaje va a estar estrecamente relacionado con esta parte pues dudo mucho que podamos hacer presentaciones en cuestión de minutos con Turbo Pascal 7.0, y sobre todo, lo más difícil va a ser ponerlo a disposición del público en general a través de la red.
De esta seleccioacute;n de material dependen muchos otros factores como veremos más adelante.

Después de varias reuniones nuestro grupo de astrónomos aficionados (que también son programadores), deciden acotar su tema y centrarse en el sistema solar y específicamente quieren hacer un programa que le pueda mostrar a la gente algo que pudiese llamarles la atención y que quizás los induzca en un futuro a buscar m‡s eferencias y por tanto deciden que su aplicaci—n sea una visita por los planetas del sistema solar conocidos hasta el momento.

En un segundo tŽrmino tendremos que identificar el sector social (o pœblico), que queremos que se beneficie de nuestro trabajo. En este sentido podr’amos en cierto momento enfocar nuestra aplicaci—n a los ni–os de pre escolar, a los de la primera mitad de la educaci—n primaria, a los de la segunda mitad de la misma, a muchachos de secundaria o preparatoria. Obviamente los primeros requieren de m‡s animaciones, colores, movimiento, sonido, etcŽtera, en virtud de que su peri—do de concentraci—n es muy corto. Conforme avanza la edad de nuestro pœblico objetivo las estrategias de presentaci—n cambian.

Nuestros amigos astr—nomos-programadores se dan cuenta de que hay muchas maneras en las que pueden constru’r su aplicaci—n. Se dan cuenta de que es siempre m‡s f‡cil llamar la atenci—n de los peque–os que de los adolecentes. DespuŽs de pensar un rato llegan a la conclusi—n de que a un ni–o le agrada ver im‡genes, no es muy afecto a la lectura (sobre todo si en su hogar no hay un ejemplo cconstante de ello), y que su tiempo de concentraci—n es muy corto de manera que deben hacer que en pocos minutos el ni–o vea diversas im‡genes que le resulten impactante, adem‡s hay que mantenerlo entretenido con sonido y algunos botones que controlen la ejecuci—n de la aplicaci—n.

La tercera elecci—n de importancia que haremos ser‡ la del medio de disribuci—n que usaremos para que nuestra aplicaci—n alcance a nuestro pœblico objetivo. Esto no es f‡cil, sobre todo si pensamos en los costes de shipping and handling y todas esas cosas. Esto se ve muy relacionado tambiŽn por el tipo de licenciamiento bajo el cual vamos a ofrecer nuestro producto, y aunque no tiene un apartado propio tambiŽn es de consideraci—n, de hecho, para este caso de an‡lisis hacemos de cuenta que nuestro software es gratuito, ya sea respaldado por licencias como GPL, LGPL o similar.
En fin, el caso es que ya en algœn art’culo anterior mencionaba que uno de los mejores medios de distribuci—n para el software gratuito es sin dudarlo la Internet, por ende me enfocarŽ a este medio.

Al paso de las reuniones, nuestros amigos deciden que la manera m‡s sencilla de dar a conocer su futura aplicaci—n va a ser la internet, y sobre todo si la ponen en alguna p‡gina y la publicitan lo suficiente. Se dan cuenta de que no tiene caso casarse con una plataforma en particular puesto que de esta manera tendr’an que dise–ar la misma paicaci—n para todos los sistemas operativos que la gente pudiese tener. -"..Hay que buscar la universalidad.."-, se dicen.

La œltima parte de la etapa de planeaci—n de nuestra aplicaci—n est‡ ligada en su totalidad con la etapa inmediata anterior pues depende del mŽtodo de distribuci—n, el lenguaje de programaci—n que vamos a implementar. Estamos de acuerdo que si vamos a dise–ar una aplicaci—n unicamente para computadoras que usen los sistemas operativos de Microsoft, o aquellos que usan las computadoras de Apple; estaremos restringiendo el nœmero de usuarios potenciales a los que podr’a impactar de alguna manera nuestro trabajo.

Finalmente nuesro grupo de desarrolladores elijen Java como lenguaje para desarrollar aplicaciones educativas debido a su inherente portabilidad a diversos sistemas operativos, adem‡s de que al haber elejido a la Internet como medio de distribuci—n de suss aplicaciones necesitan de un lenguaje que les paermita manejar gr‡ficos y sonidos de manera razonablemente flexible y f‡cil.

Las siguientes etapas tienen que ver con la ingenier’a de software y est‡n m‡s apegadas a las normas de dise–o que Žsta impone por lo que ya no son campo de estudio de este art’culo.

Artículo original

AZ 24: Lenguajes de programación en UNIX. Parte 3/5: YACC

Yacc es una herramienta general para imponer cierta estructura sobre la entrada de un programa. De este modo el programador debe preparar una especificación que incluiría un conjunto de reglas para describir los elementos de entrada, el código a invocarse cuando se reconoce alguna de estas reglas y una definición o declaración de una rutina de bajo nivel para examinar la entrada.

Entonces Yacc traduce la especificación a una función en lenguaje C que examina el flujo de entrada. Esta función llamada parser, trabaja llamando al checador (scanner) de bajo nivel para la entrada conocido como analizador léxico, va tomando ciertos patrones desde el flujo de entrada. Los patrones seleccionados son ahora tokens o marcas, se van comparando con las reglas de construcción o reglas de gramática. En el momento en el que se halla alguna de éstas se hace la llamada al código necesario para manipularlo adecuadamente (acción), dichas acciones o son más que fragmentos de código en C que regresan valores y hacen uso de otros arrojados por alguna otra acción.

El corazón de la especificación Yacc es la colección de reglas gramáatica. Por ejemplo, una de estas reglas podría verse así:

fecha: mes día ',' año;

En donde fecha, mes, día y año representan construcciones de interés, presumiblemente están definidos a detalle en algún lugar del código. En el ejemplo la coma se encierra en comillas simples. Los dos puntos (:) y el punto y coma (;) sirven meramente como puntuación en la regla y no tienen significancia al evaluar la entrada. Con las definiciones propias, la entrada "Agosto 8,2000" podría encajar en la regla.

El analizador léxico es una parte vital de la función parser. Esta rutina proporcionada por el programador lee el flujo de entrada, reconoce las construcciones del flujo de entrada como símbolos terminales, en cambio el parser que las toma como símbolos no terminales. Para evitar confusiones llamaremos a los símbolos terminales como marcas o tokens.

Existen discrepancias al decidir si se utiliza un analizador léxico o las reglas de gramática para reconocer las construcciones. Por ejemplo, las reglas:

mes : 'E' 'n' 'e'
mes : 'F' 'e' 'b'
. . . .
mes : 'D' 'i' 'c'
podrían emplearse en el ejemplo anterior. Mientras el analizador léxico necesita reconocer individualmente los caracteres, las rutinas de bajo nivel tienden a gastar tiempo y espacio y podrían complicar la especificación más allá de la capacidad de Yacc para lidiar con esto. Usualmente el analizador léxico reconoce los nombres de los meses y regresa un valor indicativo de que ha visto un "mes". En este casi, mes es una marca y ya no se necesitan reglas detalladas.

Los caracteres literales como las comas deben pasar también a través del analizador léxico y se consideran como marcas.

Las especificaciones son muy flexibles y es relativamente sencillo agregar al ejemplo anterior la regla:

fecha : mes '/' día '/' año;
de esta manera una entrada del tipo 8/8/2000 es sinónimo de Agosto 8,2000. En muchos casos esta nueva regla se puede añadir con un mínimo de esfuerzo y sin temor a dañar la entrada existente.

Cuando la entrada no conforma a ninguna de las especificaciones existentes se produce un error que se atrapa mediante un chequeo de izquierda a derecha tan prontamente como sea posible. Así, no solo hay la posibilidad de leer y procesar las entradas con errores pues los datos erróneos se hallan fácilmente. El manejo de errores provisto como parte de las especificaciones de entrada permiten la entrada de datos mal formados o la continuación del proceso de la entrada después de omitir los errores.

En algunos casos, Yacc falla al producir un parser cuando se da un grupo de especificaciones. Por ejemplo, cuando dichas especificaciones son contradictorias o cuando requieren de un mecanismo de reconocimiento más poderoso del que Yacc puede ofrecer. Estos casos representan errores en el diseño, en este sentido, con frecuencia se pueden hacer las correcciones necesarias volviendo a escribir las reglas gramaticales. Aunque Yacc no puede manejar todas las especificaciones posibles, su poder se compara favorablemente con sistemas similares. Aún más, las construcciones difíciles para Yacc resultan serlo también para los seres humanos. Algunos programadores reportan que la disciplina al formular especificaciones Yacc válidas para su entrada revelan errores de concepción o diseño en etapas tempranas del desarrollo de un programa

Artículo original

AZ 24: Editorial: El recuento de otro año

Hace ya aproximadamente un año, mandé un correo electrónico al MC Miguen Angel Méndez Rojas, estudiante del doctorado de química en la Texas Christian University, en virtud de la extrañeza que me causó el hecho de que una revista de divulgación científica que solía aparecer bimestralmente en la UDLA había dejado repentinamente de salir "al aire".

A "vuelta de correo" me enteré de la triste noticia de que ya nadie quedaba en la UDLA que quisiera o pudiera continuar con esta tarea. De modo que después de platicarlo con varios amigos de la facultad de ciencias de la computación (FCC-BUAP), logramos formar un grupo muy compacto (cuatro de hecho), que se animó a hacerse cargo de revivir esta publicación electrónica con el entendido de que Aleph Zero fuera una publicación libre que siguiera sirviendo como foro a todos aquellos estudiantes y futuros científicos que quisiesen escribir, para todos aquellos que animados por el esp’ritu de la divulgación cient’fica desearan comenzar a experimentar con la redacción de artículos de este género.

Desafortunadamente de este grupo solamente quedamos dos personas, ambos estudiantes de la FCC con un poco de ecepcitismo respecto al futuro de nuestro nuevo proyecto. Al paso de los meses nos dimos cuenta de que segu’a habiendo gente, entre estudiantes y profesionistas, interesados en hacer uso de nuestro foro. Por allá de diciembre del año pasado decidimos diversificar los alcances de la revista incluyendo una sección específica a manera de revista cultural en la cual se publicar’an poemas, ensayos, cuentos y todo ese tipo de asuntos literarios.

Durante este año de trabajo Aleph Zero ha publicado 52 artículos de diversa índole, entre convocatorias para congresos y eventos científicos, poemas, cuentos, ensayos, artículos de divulgación cientófica y tecnológica y algunas otras cosas. han colaborado con nuestro esfuerzo 41 autores de muy variadas instituciones nacionales como la UNAM, la BUAP, el ITESM, la UDLA-P, la UAM, el IPN, etc; e internacionales como la Texas Christian University, la Universidad del Paso y Purdue en Estados Unidos, Bolivia, Uruguay y España.

Así mismo, la revista está listada ya en los principales directorios de revistas y medios de divulgación científica en Internet y se estrecharon lazos con un par de portales dedicados a la divulgación de la ciencia en a nivel mundial como son Biociencias, Aprenciencias y muy recientemente Divulc@t. Lamentablemente también hemos sido testigos de varios proyectos interesantes que comienzan como muy buenas ideas pero que terminan perdiéndose en la noche de los tiempos.

Finalmente me resta destacar que el número de personas involucradas directamente con el trabajo de Aleph Zero ha crecido de 2 a 5, sin dejar a un lado a odos aquellos que han aporado su granito de arena para revisar la ortografía (nótese que no siempre hay tiempo de hacerlo), así como aquellos que han hecho críticas constructivas respecto a la imagen de la revista., ya que sin ellos sencillamente me hubiese vuelto loco con el corrector ortográfico.

En fin, este es el recuento básico de un año de trabajo en pro de la divulgación científica y sobre todo, en busca de diversificar los horizontes para ampliar nuestro foro de presentación en beneficio de los estudiantes y los futuros científicos.


Artículo original

AZ 23: Lenguajes de programación en UNIX. Parte 2/5: Lex.

El Lex es una herramienta de software que permite resolver una amplia variedad de problemas como el procesamiento de textos, deciframiento de código, escritura de compiladores y otros tantos. En el área del procesamiento de textos se pueden hacer chequeos de ortografía; en el deciframiento de código, podemos traducir ciertos patrones de caracteres por otros. Y en el área de la escritura de ocmpiladores se puede determinar qué marcas o tokens están dentro del programa a compilar. El común denominador de todas estas tareas es el de reconocer diferentes cadenas de caracteres que satisfacen ciertas características. En el caso de la escitura de compiladores, el desarrollo de la habilidadpara resolver el problema requiere de la implementción de un analizador léxico en dicho compilador.

No es esencial el uso de Lex para manejar problemas de esta naturaleza pues podríamos escribir programas en otros lenguajes estándares como el C. De hecho lo que Lex hace es producir tales programas de C. Lex es considerado por algunos como un generador de programas. Lex ofrece una manera más fácil y veloz para crear programas que se encarguen de las tareas antes mencionadas. Su debilidad es que frecuentemente se producen programas más grandes de lo necesario que dan por resultado ejecuciones más lentas de lo que podrían ser. En cierto sentido esta desventaja puede resultar de poca importancia al compararla con el potencial que Lex ofrece.

Para entender el funcionamiento de Lex observamos el diagrama de la figura 1. Comencemos por el código en Lex, también conocido como especificación Lex, que el programador escribe.

El código en Lex consiste de una lista de reglas que especificansecuencias de caracteres (expresiones) a buscar en un texto y las acciones a tomar cuando se halla dicha expresión. El código se lee y se traduce por el generador de programas en un código en C que a su vez, debe ser compilado para que genere el programa ejecutable que hace el análisis léxico. Cabe mencionar que este procedimiento no es automático. Finalmente el programa ejecutable producido por todo este proceso toma como entrada cualquier archivo fuente para dar como resultado la salida deseada, ya sea un texto modificado o una lista de marcas o tokens.

Así mismo, Lex puede emplearse para recavar información estadística sobre algunas características de la entrada tales como contéo de caracteres, número de ocurrencias de una palabra, tamaño de algunas palabras y así por el estilo. En futuras ocaciones veremos más a detalle el cómoe scribir código en Lex; cómo traducir código fuente en Lex; cómo compilar, ligar y ejecutar el analizador léxico en C; y finalmente cómo ejecutar dicho analizador léxico. Estos temas no entran en este artículo debido a su complejidad.


Artículo original



AZ 22:Lenguajes de programación en UNIX Parte 1/5: AWK.

Introducción
El AWK es un lenguaje de programación diseñado para facilitar las tareas más comunes en cuanto al manejo de información y manipulación de textos. ¿Enqué sentidos?. Dos esencialmente: sencillez para establecer las sentencias (líneas de código) y rapidez de ejecución.

De entre las monerías del AWk podemos enumerar cuatro muy interesantes: generación de reportes, búsqueda de patrones, validación de datos y ftrado de datos para transmisiones.

Estructura del código en AWK
Un programa en AWK es simplemente una secuencia de sentencias de la forma patrón { acción }. El AWK corre sobre un conjunto de archivos de entrada, su operación básica recae en la búsqueda de líneas de entrada en orden, una a la vez. En cada línea se busca por el patrón descrito en el programa, si se halla en la línea de entrada se ejecuta una acción correspondiente. De este modo se garantiza la ejecución de las sentencias para todas las líneas de entrada. Ahora, debido a que tanto los patrones como las sentencias son opcionales, las acciones se escriben dentro de llaves para distinguirse de los patrones.

Por ejemplo: |x| {print} imprime cada línea de entrada quecontenga una x.

Como cualquier lenguaje común y corriente cualquier programa escrito en AWK tiene la siguiente estructura:

Una sección BEGIN que se ejecute antes de que cualquier línes de entrada sea leída.
Una sección principal o de registros la cual se ejecuta una y otra ves para cada una de las líneas de entrada y, finalmente:
Una sección END que se ejecuta después de quie se han procesado todos los archivos de entrada.
Unidades léxicas
Todos los programas en AWK se componen de unidades léxicas llamadas tokens o marcas y exísten ocho tipos diferentes:
  1. Constantes numéricas. Pueden ser decimales o constantes de punto flotante.
  2. Constantes de cadena (string). Cualquier secuencia de caracteres dentro de comillas dobles ("Hola"). Una doble comilla va precedida por un backslash (\), como en: "Y ordenó: \"¡Sentados!\". En el caso de una nueva línea se usa el caracter \n como en C. Ningún otro caracter requiere de formato especial.

  3. Palabras clave o reservadas.
  4. Identificadores. Los identificadores en AWK sirven para denotar variables y arreglos. Un identificador es cualquier secuencia de letras, dígitos y guiones bajos (uunderscore "_"), que deben comenzar con una letra o un guión bajo y en donde se diferencian los caracteres en mayúsculas de aquellos en minúsculas.

    BEGIN break int while
    END close length
    FILENAME continue log
    FS exit next
    NF exp number
    NR for print
    OFS getline split
    ORS if sqrt
    OFMT in string
    RS index substr
Figura 1. Identificadores.
  1. Operadores. AWK tiene operadores de asignación, aritméticos, relacionales y lógicos como los del lenguaje C; así como operadores de reconocimiento de patrones similares a los de egrep y lex.

  2. Marcas de registro y campos. El símbolo $0 es una variable especial cuyo valor es el del registro de entrada actual. Este registro equivale a la línea de entrada que mencioné al inicio. $1, $2,...,$n son más variables especiales en las cuales se guardan los campos del registro actual ($0). La marca de separación de campos que emplea AWK por omisión es cualquier espacio en blanco. La palabra reservada NF (Number of Fields) contiene el número de campos que contiene el registro actual ($0), de modo que si $NF tiene un valor de 4 entónces $0 contiene únicamente $1, $2, $3 y $4. La palabra reservada RS (Record Separator) contiene el valor del separador de registros por omisión que emplea AWK el cual es un caracter de nueva línea. Esta variable puede cambiarse ajustando una simple asignación: RS="c". De manera similar exíste una variable para almacenar el separador de campos FS (Field Separator). Inicialmente el valor de FS es el espacio en blanco (\b). Para cambiar este valor por omisión sencillamente hay que realizar una asignación FS="c" de que este valor sea diferente de espacio en blanco, entónces habrá un campo en el registro a cada lado del separador. Por ejemplo, si el separadopr de campo es 1, el registro 1XXX1 tiene tres campos. El primero y el último son nulos. Si el separador de campo es blanco, entónces los campos se separan por espacios en blanco y ninguno de los NF son nulos. La asignación RS=" " hace que una línea en blanco se convierta en separador de registro. De este modo logramos crear registros de más de una línea o registros multilíneas. Y para finalizar tenemos la salida de registros y separadores de campo. El valor de ORS (Output Record Separator) se pone al final de cada registro. Inicialmente ORS tiene el valor de \n y OFS equivale al espacio en blanco.

  3. Comentarios. Los comentarios en AWK son de la forma más sencilla posible: # Esto es un comentario.
  4. Marcas de agrupamiento. Todas las marcas en AWK se separan usuarlmente por espacios en blanco, marcas de nueva línea; o por símbolos de puntuación taes como (, y ;). Las llaves ({...}) encierran las acciones; los slashes (|..|) circundan los patrones de expresiones regulares y las comillas dobles ("...") delimitan las constantes de cadena

Bibliografía
UNIX System V. Programmer's Manual. AT&T. 1989



Artículo original

AZ 21: Editorial

A principios del mes de noviembre de 2000 se llevó a cabo la Décima Semana de la Computación en la FCC de la BUAP, en el marco de este evento tuve la fortuna, junto con Riocardo Santos (subdirector editorial de Aleph Zero), de impartir un taller titulado "Una solución de software libre para negocios y comercio electrónico" en el cuúl básicamente se expusieron los puntos más importantes del comercio y los negocios electrónicos, pero la parte más importante fue que hicimos la propuesta para diseñar soluciones alternativas a estos paradigmas. En general, cualquier taller que tenga que ver con temas computacionales se enfoca fundamentalmente a listarnos una amplia gama de soluciones comerciales, así como a dirigirnos con los "expertos" en cada una de las áreas que tengan que ver con el punto en cuestión

Los puntos que me parecen importantes de este tipo de actividades son varios:
-Que se proponen soluciones alternativas por estudiantes, en el caso particulas se plantea con software libre, el cual evidentemente abarata los costos. En segundo término, se muestra a la gente como es que funcionan este tipo de sistemas, consiguiendo así despertar el interés por hacer desarrollo por ellos mismos, lo cual probablemente creé una curiosidad por investigar otro tipo de sistemas de software y ¿quién sabe?, quizás más adelante estén haciendo investigación seria y formal

Por otro lado, este tipo de muestras, talleres etc, no debería centrarse solamente en las áreas computacionales, si no que se deben seguir creando foros y abriendo espacios al trabajo de los universitarios de diversas corrientes como son la literatura, las artes plásticas, la música, etc etc.

Es por eso que apartir de este número, Aleph Zero diversifica su campo de acción mediante la aperrura de un espacio propio para la creación literaria.

De este modo el equipo de Aleph Zero esperamos que por medio de nuestro trabajo se exponga al mundo cada ves más y más trabajos de los jóvenes. Finalmente éste es nuestro objetivo primordial

Artículo original

AZ 21:Las bibliotecas digitales como antecedente a los sistemas tutoriales

Hace aproximadamente cuatro meses publiqué un par de trabajos (Campos 2000) en los que se estudiaba los métodos de las bibliotecas digitales y a los formatos de los materiales que publican. Después de un tiempo me di cuenta de que este tipo de sistemas puede tener posibilidades más amplias en el terreno de la educación y la enseñanza que van más allá de un simple método de acceso al conocimiento en un ámbito virtual.

>Para recapitular podemos decir que una biblioteca digital es un sistema en red por medio del cual podemos accesar a ciertos materiales a los que llamamos libros electrónicos, los cuales deberán estar en formatos estándares. En los trabajos anteriores propuse HTML para los textos e imágenes en GIF y JPEG para las ilustraciones. El obstáculo más grande que encuentro es el de los derechos de copia sobre los materiales impresos.

Una parte que no alcancé a analizar fue la referente a los detalles técnicos de los sistemas de software que subyacerían para soportar una biblioteca digital. En este sentido podríamos decir que sería conventrabajar con un servidor de web que pudiese soportar las peticiones de los libros electrónicos, una base de datos en la cual guardaríamos las palabras claves por medio de las cuales se llevará a cabo la indización de los contenidos de las páginas de los libros electrónicos, y finalmente un lenguaje de programación que sea lo suficientemente potente como para acceder a la base de datos y manipular datos desde y hacia los manejadores de web que accesan al sistema bibliotecario virtual.

Por todo lo anterior deducimos que este sistema se encarga única y exclusivamente de presentar páginas de libros electrónicos y evidentemente de realizar búsquedas basadas en el sistema de indización que se desarrolle para este propósito. Al hacer las búsquedas de información se nos presentaría un catálogo de páginas electrónicas pertenecientes a libros virtuales distintos con el objeto de disponer de la mayor cantidad de información relacionada como sea posible.

Haciendo un análisis a posteriori nos daremos cuenta de que este tipo de sistemas bien podría adaptarse a una idea de tutorial virtual. ¿Pero qué es un sistema tutorial virtual?.
En términos sencillos diremos que se trata de un sistema en red que se encarga de apoyar el proceso de aprendizaje de cualquier área del conocimiento por medio de textos, animaciones y compañeros virtuales.
Un sistema de biblioteca digital se asemeja a los sistemas tutoriales en términos de que ambos sirven para acceder a cierta información, uno quizás para satisfacer una consulta y otro para buscar apoyo para alguna materia o en busca de adquirir algún conocimiento extra. El sistema tutorial virtual más sencillo es aquel en el cual un usuario puede acceder a él y leer, leer y leer sobre un tema en específico, de modo análogo a como sucedería en una biblioteca virtual.

Pero analicemos el escenario en el cual un usuario que esté tomando un tutorial sobre la programación en lenguaje C. De pronto deberá lidiar con los conceptos de variables, expresiones, tipos, apuntadores, funciones, etc; nuestro usuarillo de indias logra aprobar satisfactoriamente los sistemas de evaluación de los tres primeros temas, pero falla miserablemente en el de los apuntadores (nada raro por cierto), en este punto el sistema tutorial virtual debería ser capaz de darse cuenta de la falta de habilidad de usuario para manejar los conceptos de apuntadores, lo que conlleva a fallar con la implementación en el lenguaje C, pero esto puede deberse a debilidades en la implementación de apuntadores en lenguaje Pascal, que aunque no necesriamente, se toma como pauta para enseñar lenguajes de programación estructurada, dentro de los cuales recaé el lenguaje C.

A fin de tener una adecuada comprensión de las causas por las cuales un usuarillo de indias puede fallar tan miserablemente ante la implementación y el manejo de los apuntadores en lenguaje C necesitaríamos que nuestro sistema fuese lo suficientemente inteligente como para llevar un adecuado registro de las actividades y su comportamiento en las pruebas de evaluación que halla cursado con anterioridad. Esto requeriría de un estudio a fondo de los concepto claves del tema.
Una ves teniendo una idea más clara del porqué un usuario en específico falla en la evaluación de punteros en C, el sistema tutorial puede estar en posición de presentarle al usuario metarial de apoyo a fin de aclarar dudas y reforzar sus conocimientos.

Pensemos en otro caso. Esta ves el usuario en cuestión no logra, basado en los materiales del curso, hacer suyo uno o varios conceptos. En este caso lo que el sistema tutorial virtual puede hacer es ponerlo en contacto con otros usuarios que no hayan presentado problemas en el tema mencionado, o bien, hacer una pregunta directa a otra entidad importante: "El tutor o profesor virtual", que es uno o varios profesores que se encargan de organizar los materiales que se usarán en cada tutorial virtual.

A final de cuentas podemos emplear otros sistemas para apoyo de nuestros sistemas de tutoría virtual como son las listas de correo, los chats o BBS' especializados, servidores NEW's, etc.

Un ejemplo clarísimo de lo que me refiero puede encontrarse en el sitio del proyecto EVA del IPN. El cual maneja los conceptos de polilibros, este concepto así como el sistema que maneja el EVA se pueden ver claramente en Reyes 2000.

A manera de final diré que este artículo habló únicamente del trabajo que realizaría un sistema tutorial virtual para atender a un usuario. En otro momento analizaré la logística para armar y modificar un curso virtual.

Referencias:
EVA: Un espacio de aprendizaje, un sistema multiagente. María Isabel Reyes Ramírez. Aleph Zero, Revista de Divulgación y Educación Científica. Año 5, Número 19, Agosto a Septiembre de 2000.

Bibliotecas Digitales: De los impulsos electrónicos. Alfredo Campos Enríquez. Boletín CECyT. Año 2, número 4. de 2000.


Artículo original

AZ 20: El efecto Doppler y el corrimiento al rojo de los espectros estelares.

Introducción

En el principio de los tiempos toda la materia del universo se hallaba concentrada en un punto únicamente. En esos momentos tanto la gravedad como el calor producido eran infinitos, una singularidad, la podríamos llamar.
En el siguiente instante ese punto en el que se contenía toda la materia hizo explosión y la arrojó hacia todas direcciones de modo que todo ese polvo se fue dispersando y se alejó entre sí, en ocaciones se juntó en grandes concentraciones y al cabo de milenios llegó a formar lo que ahora conocemos como galaxias; e incluso nuestro planeta es el resultado del colapso entre cualquier cantidad de esa materia. Se ha descubierto desde años atrás que estos conglomerados de materia siguen alejándose, o por lo menos eso demoestra la luz que nos llega desde estos distantes objetos.

¿Qué es?

Recuerdo alguna conferencia divulgativa sobre astronomía un concepto sobre los espectros electromagnéticos de ciertas estrellas que presentaban un extraño corrimiento hacia el rojo, es decir que dichos espectros estelares tienen estructuras normales pero con la peculiaridad de que sus longitudes de onda se encuentran mucho más cerca de aquellos valores correspondientes a los tonos rojizos (6,600 A aproximadamente). Sorprendentemente dicho efecto se presentaba según nos explican los científicos debido a que tales estrellas se alejaban de nosotros. No es el cometido del presente trabajo el dar una explicación detallada de cómo lo lograron, simplemente presentar un par de definiciones y dejar al lector las deducciones correspondientes.

Primera definición.

Si una fuente luminosa emite n vibraciones por segundo, la luz que llega de ella tendría una longitud de onda l=c/h. Si la fuente se acerca llegarían más vibraciones por unidad de tiempo, pero si se alejara las mismas llegarían más espaciadas. Esto hace que las longitudes de onda se modifiquen en la siguiente forma:

lobs-l=Dl

donde lobs>l si la fuentese aleja y lobs<l si la fuente se acerca. La relación entre la velocidad de la fuente, v y el Dles

llamada también fórmula de Doppler. Si la velocidad v es muy grande, la fórmula debe ser substituída por la fórmula relativista:

Para pequeñas velocidades (v <>

Esta definición es bastante sencilla y comprensible. La siguiente no lo es tanto pero la hallé más completa; los siguientes párrafos son extraídos de un libro sobre la teoría relativista.

Definición relativista.

Supóngase que se observa un fotón en un sistema en el que la fuente de la luz (la estrella en cuestión) está en reposo. La llamaremos a éste: sistema transformado, en dicho sistema (de referencia) la frecuencia de la luz forma un ángulo q con respecto al eje x'. El impulso y la energía del fotón pueen entónces describirse por las ecuaciones:

En donde E'=hv' y h es la constante de Planck.

Se determinarán el impulso y la energía del fotón, medidas en el sistema de algún laboratorio. En tal sistema experimental el fotón daría para la frecuencia una medida v y se vería moviéndose con un ángulo q respecto del eje x.

en donde g0 tan solo relaciona el movimiento del fotón en ambos sistemas.

Simplificando estas ecuaciones resultan:

(3)
(4)
(5)

Si se divide (3) por (5) se obtiene:

(6)

De este modo se obtiene un resultado interesante. No sólo se observa que un rayo de luz viaja en direcciones diferentes inerciales, si no que la frecuencia de la luz dará medidas diferentes para observadores situados en distintos sistemas. En el sistema propio la fuente de luz tendrá la misma frecuencia cuando la midan observadores propios a ese sistema, cualquiera que sea su posición. Sin embargo, en el sistema modelado en el laboratorio la frecuencua dependerá del ángulo q que forme la luz con la dirección en que vea moverse la fuente. Este se llama efecto Dopplet, descubierto originalmente en el sonido. Aunque no exíste medio preferente para la transmisión de la luz en el vacío, se halla también el efecto Dopplet relativista, debido a la dilatación del timpo y a la contracción de Lorentz.

Si en el sistema de laboratorio se observa la luz desde un ángulo P/2 de la dirección del movimiento, entónces q=P/2 y de la ecuación (6) resulta cosq'=-(v/c). Introduciendoeste resultado en (5) se halla que g0v=v' (7).

Esto se llama efecto Doppler transversal, puesto que la observación se hace transversalmente a la dirección del movimiento. Si la luz se observara en la dirección del movimiento , entónces q=0. De (6) se tiene que q'=0 y por tanto

(8)
O sea que la luz experimenta un corrimiento hacia el azul. Si es q'=P, se intercambian los signos más y menos de (8) y la luz experimenta un corrimiento hacia el rojo. Este se llama efecto Doppler longitudinal. Por medio de esta particularización podemos también determinar la rapidez de sistemas de estrellas dobles o binarias muy distantes, pues cuando una estrella se acerca a la Tierra, la otra se aleja de modo que las líneas espectrales de la luz de los átomos de hidrógeno de la pareja de estrellas se separa conforme la frecuencia se corre por el efecto Doppler, permitiéndonos de esta menra medir la diferencia. Además, aunue los átomos aislados emiten luz que es muy aproximadamente monocromática, la luz de un gas caliente de átomos será más difusa en su frecuencia debido a corrimientos de Doppler producidas por el movimiento de los átomos al alejarse y acercarse al espectrómetro. Esto se conoce como ensanchamiento Doppler de las líneas espectrales.

Bibliografía:

  • Introducción a la Física Atómica y Nuclear.Otto Oldenberg. Ediciones del Castillo. España. 1970
  • Introducción a la Teoría Especial de la Relatividad. Robert Katz. Van Nostrand Momentum Books. México 1968.
Artículo original

AZ 19: Editorial: El papel de los universitarios en la divulgación.

Varios de los lectores recordarán y los que aún estudiamos sabemos que durante los años de universitario (estudiante en este caso) nos surgen muchísimos deseos por mejorar nuestro entorno, no sólo por vías políticas, ecologistas, etc; si no por los caminos del conocimiento. ¿Cúantas veces no hemos escuchado que el mayor problema de nuestro país radica en la falta de educación adecuada para nuestro pueblo?, ¿cuántos hemos pensado y puesto em práctica modestos esfuerzos por ayudar a educar o a divulgar conocimientos?. Por otro lado muchos otros asumen actitudes despectivas frente a alguien que demuestra no poseer conocimientos sobre algún tema.


He aquí las dos caras de la moneda.

En este punto es conveniente recordar que el conocer algo más que el individuo de al lado, de ninguna manera nos debe causar sentimientos de superioridad respecto a dicho individuo. Al contrario, es menester tener presente que al encontrarnos en esta posición adquirimos un deber moral de compartir nuestros conocimientos a fin de tener el mejoramiento de algún tipo.

Lo anterior no implica de ninguna manera que tengamos todos que convertirnos en algo así como guías espirituales del vecino. En este sentido es más conveniente y práctico el buscar los medios adecuados en forma de revistas o boletines ya sean impresos o electrónicos, exposiciones de cartel o sencillamente eventos culturales. Recordemos también que "el que por su gusto muere...", lo que implica que tampoco hay que tomar el papel de redentores de la humanidad.

Una vez expuesto lo anterior basta decir sobre la divulgación que no necesita ser de orden científico, también podemos divulgar cultura y tecnología. Un modelo muy interesante es el que dejó Carl Sagan, quién hizo del conocimiento astronómico un tema de interés popular, al hacernos llegar conceptos básicos muy llamativos de modo que despiertan en nosotros el interés por continuar investigando por nuestros propios medios.

Todo esto es muy difícil de conseguir si no se hubiesen presentado en algún punto de nuestra vida interrogantes como las planteadas al inicio de esta charla.

A manera de final, me gustaría hacer hincapié en la necesidad que tenemos los estudiantes de escribir, de crear, de divulgar. No sólo para beneficio personal al adquirir experiencias valiosas y al llenar nuestros currículums; si no también para el beneficio de innumerables personas que algún día y quizás por error lleguen a leer, ver o escuchar nuestras creaciones personales.


Artículo original

AZ 19: La Equivalencia entre Masa y Energía

¿Qué emocionante sería el poder regresar al pasado y arreglar algun error que cometimos y que nos viene acearreando dificultades?, o que tal el poder adelantarnos un poquitín en el tiempo y acelerar nuestra cita del fin de semana próximo?.

Abundan ya variadas teorías que nos acercan a la posibilidad del viaje en el tiempo, pero por desgracia nuestra manifiestan también que necesitaríamos desplazarnos a una velocidad mayor que la de la luz. Lo cual como todos sabemos es imposible (hasta este momento por lo menos).

Menciona Stephen Hawking que para que un cuerpo pudiese acelerarse hasta alcanzar una veloidad cercana a c, éste requeriría de una enorme cantidad de energía, de este hecho y por E=mc2 se desprende que una parte de dicha energía se transforme en masa. Por consiguiente la masa del cuerpo crecería y por ende necesitaría de más energía para seguir acelerandose. A fin de cuentas caemos en un proceso recursivo, en el cual la masa crece inifinitamente antes de acercarse siquiera a una velocidad c.

Pero lo que resulta interesante no es el resultado per se, más bien es el entender a fondo lo que sucede en este proceso.

Supongo que el lector estará familiarizado ya con el hecho histórico, tantas veces repetido, de que una ley aparentemente bien demostrada termina por ser tan solo una aproximación, válida en un márgen limitado. Esto es lo que ocurre con el valor de la carga específica de los electrones (e/m), pero.. ¿qué diantres es eso?

En resumen, la carga específica de los electrones no expresa más que el hecho de que cualquier átomo monovalente (valencia 1) cargado, independientemente de sus propiedades químicas transporta la misma cantidad de energía. De forma similar ocurre con los átomos bivalentes, etc etc.

Regresando al tema, ya en 1901 se había observado una disminución en el valor de e/m, en electrones con elevada velocidad. Por ejemplo se observó que los electrones acelerados por una diferencia de potencial de 80,000 voltios poseían una carga específica aproximadamete de un octavo menor que la de su valor normal.

¿A quién le atribuímos esta variación?, ¿un aumento de la carga o una disminución de la masa?. Un aumento de la masa producido por le velocidad se predijo por una teoría que no se desarrolló con el propósito de explicar esta pregunta, si no fundamentalmente para explicar las famosas investigaciones de Michelson sobre la velocidad de la luz, es decir, la teoría de la relatividad de Einstein. A partir de su hipótesis, Einstein dedujo que la masa m de un cuerpo cualquiera que a una velocidad despreciable posee una "masa en reposo", y una masa m0 a la velocidad v, obviamente mayor

(1)

donde c es la velocidad de la luz. A velocidades ordinarias este aumento de masa con la velocidad se encuentra muy por debajo de los límites de observación, sin embargo se hace posible apreciar dicho cambio en un electrón al que mediante una diferencia de potencial se le comunica una velocidad de 1.5x108 m/s, es decir, la mitad de la velocidad de la luz. Para calcular la variación simplificamos la ecuación 1 por el teorema del binomio, omitiendo los términos superiores de la serie:

(2)

Suponemos aquí que (m0v2)/2 se identificacon la energía cinética wk, lo cual, de acuerdo con la teoría de Einstein, es sólo una aproximación. Aplicando la última ecuación a nuestro ejemplo, es decir, a los electrones con la mitad de la velocidad de la luz llegamos a:

(3)

Lo que concuerda perfectamente con la disminución de e/m observada. Cabe recordar que la teoría de Einstein es aplicable a toda la materia pero en el laboratorio solamente puede acelerarse a velocidades suficientemente elevadas a partículas de muy pequeña masa a fin de que el efecto pueda ser apreciable. Esta teoría ha llegado al resultado general de que cualquier energía (no solamente la energía cinética), almacenada en un cuerpo se traduce en un aumento de su masa. la relación cuantitativa es una generalización de la ecuación 2:

m - m0 = variación de masa = (variación de la energía)/c2
o como todos la conocemos: DE=Dmc2.

Artículo original

AZ18: Modelo para desarrollo de software educativo: Gratuito y en red

Alfredo Campos Enríquez
Estudiante de Ciencias de la Computación. BUAP
Puebla, México
freddy@cs.buap.mx

En el presente artículo se exponen los motivos por los cuales el autor considera que debería hacerse desarrollo de software educativo enfocado hacia su libre acceso y distribución mediante la red.

El software educativo. ¿Qué es y para qué?
Podemos decir que en general se trata de cualquier pieza de software que tiene como objetivo final el de agregar conocimientos cierto grupo de individuos o a uno en particular.
En este sentido se sobreentiende que dicho software educativo debe estar adecuado en cuanto a su estructura, contenido y presentación sobre todo al sector social al que se pretenda llegar. No es lo mismo crear un programa para enseñarle el sistema solar a un niño de diez años que a un estudiante de licenciatura.

Lo anterior implica que debe tenerse cuidado al diseñar los contenidos, la presentación y muy especialmente, se debe poner atención en el modo de interacción que este software tendrá con el usuario final.

El Software educativo gratuito
En general en cualquier parte se entiende que el software en cualquier de sus presentaciones es de tipo comercial, o sea, que debemos pagar alguna cantidad de dinero para poder tenerlo, instalarlo y ejecutarlo, pero sin adquirir el derecho de prestárselo a alguien para que lo ejecute en su computadora. Esto vendría a ser un agravio a las leyes.
Parece un poco contradictorio esta concepción de la piezas de software, el educativo en particular ya que se supone que la educación y el acceso a los conocimientos debiera estar al alcance de todos y sin restricción alguna.

De este modo, tomando en consideración el modelo de desarrollo y distribución de la licencia GNU, se plantea la necesidad de crear software educativo gratuito, al cual pueda tener acceso un amplio sector poblacional.

Pero aún existirían ciertos inconvenientes, uno de ellos es el hacer que más gente tenga acceso a dicho software.

Software educativo en la red
En los párrafos anteriores se planteó la necesidad de hacer software educativo gratuito, y ahora se desarrollan algunas ideas a fin de proponer un método para su difusión y libre acceso.

Una vez que contamos con las piezas de software necesarias podrían colocarse en sitios web, los que brindarían el servicio de acceso a ellas en dos modos principalmente:

  • Servicio de descarga, mediante el cual, cualquier usuario puede hacerse de una copia del software para ejecutarla a su conveniencia en su propia computadora

  • Servicio de ejecución en línea, por el cual cualquier usuario que lo deseara podría ejecutar e interactuar con el sistema educativo de manera inmediata y sin necesidad de descargar nada en su disco.

Ésto puede sonarle muy utópico al lector pero puede visitar en la red varios sitios que demuestran los esfuerzos que se hacen en este sentido, por ejemplo el sitio de Open Class Room (http://www.openclassroom.org) dedicado a integrar software educativo gratuito (GPL) a plataformas Linux, o un ejemplo un poco más modesto puede ser el del proyecto KoalAst ( http://www.cs.buap.mx/~freddy/KoalAst) que tiene un applet que recorre el sistema solar mediante imágenes.

Lamentablemente no todo es miel sobre hojuelas y todo este planteamiento tiene sus inconvenientes, entre los más grandes está el de que no toda la gente tiene acceso regular a la Internet, sobre todo las personas de escasos recursos económicos.

A modo de final se le propone al lector que de ser posible, lleve a cabo algún esfuerzo para poner al alcance de más gente los conocimientos, ya sean científicos, tecnológicos y/o culturales. Pues si este modelo de desarrollo se hace más común, entonces podremos alcanzar un par de metas específicas:

  • Involucrar en la divulgación a mucha más gente, que sólo los científicos

  • Lograr que la red se convierta en un espacio de aprendizaje y no solamente de entretenimiento.

Artículo original

11 de abril de 2008

Curso de ERP: 8. Integración y futuro del ERP

  1. Integración y futuro del ERP

La evolución del ERP se orienta hacia la integración con otros sistemas y hacia el énfasis total en Internet como medio y punto de equilibrio de su utilización

La convergencia total y completa entre las tecnologías, estándares, dispositivos y aplicaciones para redes de comunicación ya no es una promesa. Las plataformas de la próxima generación, las NGNs (Next Generation Network), permiten la oferta de servicios inteligentes de transmisión de datos en banda ancha, PABX IP y telefonía sobre VPN IP (Virtual Private Network IP o Redes Privadas Virtuales). Y los proveedores están continuamente poniendo a disposición aplicaciones corporativas más sofisticadas.

Entre esas ofertas podemos destacar video-llamadas, videoconferencia sobre IP y una nueva generación de equipos y sistemas de mensajes unificados, recurso que integra los diversos canales, tales como teléfono, e-mail y fax, en una única casilla postal con capacidad de administración de contactos. En la práctica, las soluciones permiten que los usuarios accedan, administren y respondan a todos sus mensajes a partir de una PC de escritorio, de un teléfono o de un PDA, virtualmente, en cualquier parte del mundo.

En pocos años las redes de telefonía móvil de cuarta generación (4G) prometen acelerar aún más la transmisión de voz, datos e imágenes a velocidades superiores a 100 Mbps, garantizando cualidad en la transferencia de archivos de e-mail, sonido stream y transmisión de vídeo por medio de teléfonos portátiles. Y lo que es mejor, comparadas a las plataformas independientes, las infraestructuras convergentes representan un enorme potencial de reducción de costos y operación de las redes, que son una preocupación constante en ambientes corporativos.

Integración y evolución

Para los estudiosos del sector, el nuevo escenario convergente solamente será posible con la integración entre diversas redes, tales como las locales inalámbricas (WLAN's) - también conocidas como redes Wi-Fi (Wireless Fidelity) -, las personales (PANs), las corporativas de larga distancia (WANs) y las de telefonía fija y móvil. Esa fusión tecnológica permitirá que celulares con recursos Wi-Fi trafiquen voz, datos y vídeo directamente entre las redes móviles públicas y las redes locales inalámbricas de las corporaciones, de manera imperceptible para el usuario.

La migración de las redes convencionales de circuitos para las infraestructuras de nueva generación pasa por la implementación de softswitches, capaces de realizar el control de la infraestructura, y de dispositivos Media Gateways (puertas de enlace de medios) para la interconexión de las redes de voz y datos existentes. De esta manera, se puede eliminar la capa de transito en las redes de telefonía y aumentar la oferta de diversas aplicaciones multimedia.
En las redes convergentes, las tecnologías Ethernet, Fast Ethernet y Giga Ethernet se utilizarán como interfaces de acceso por medio de la implementación de estructuras SDH-NG, que servirán también para el tráfico legado (Frame Relay, ATM, TDM, etc.). El objetivo es atender el creciente tráfico IP de las corporaciones, ofertando mayor flexibilidad y menores costos para los clientes.

En el caso de las WLANs, los puntos de conexión públicos a la red, los hotspots, muchos aún basados en el estándar 820.11b (con velocidad de hasta 11 Mbps), serán substituidos por dispositivos en el estándar 802.11g, capaces de traficar datos a 54 Mbps en la frecuencia de 2,4 GHz. Al mismo tiempo, los enlaces Wi-Fi de mediano alcance (hasta 120 metros) permitirán el acceso en banda ancha a los sistemas corporativos y a Internet por medio de teléfonos celulares, PDAs y equipos portátiles.

Intel, que impulsó el crecimiento del segmento de WLANs con el lanzamiento de la plataforma Centrino - que incluye procesador, chipsets y recursos de red inalámbrica integrados -, participa activamente en el montaje de redes metropolitanas WiMAX, un estándar complementario del Wi-Fi destinado a universalizar la banda ancha inalámbrica.

El próximo paso

En Brasil, las tecnologías de uso comercial más avanzadas en la categoría WAN - enlaces de largo alcance que conectan usuarios móviles a redes corporativas por medio del aparato celular - son el CDMA 1xRTT y el GSM/GPRS, cuyas tasas promedio de transmisión varían entre 30 Kbps y 40 Kbps. Actualmente se utilizan estándares más avanzados, como, por ejemplo, el CDMA 1xEV-DO, con transmisión de datos de 2,4 Mbps, y el GSM/EDGE, que alcanza 384 Kbps. Ambos deben avanzar y disputar el puesto de plataforma-estándar en los próximos años.

La utilización de la tecnología óptica de acceso remoto Metro Ethernet Networks en WANs en el ambiente corporativo puede representar un aumento en la velocidad de transmisión de datos de 50 Kbps para 10 Mbps, con alcance de cinco kilómetros. En el caso de las redes inalámbricas, la utilización de la tecnología WiMax (Worldwide Interoperability for Microwave Access) podrá ampliar la distancia de acceso para 15 kilómetros en el espectro de frecuencias de 2 GHz a 11 GHz.
En el mercado hogareño, la adopción del nuevo estándar conocido como ZigBee (802.15.4) posibilitará la administración a distancia de heladeras, aparatos de TV y cámaras digitales, que estén conectados a Internet. Los chips se encontrarán inclusive en controles de luz, detectores de fuego e incendio, termostatos, controles remotos de equipos de sonido y vídeo y sistemas de seguridad.

Por otro lado, la evolución de protocolos de comunicación entre dispositivos móviles de corto alcance, como el Bluetooth, para tecnologías de bajo consumo como el UWB (banda ultra-ancha - IEEE 802.15.3), capaz de traficar datos a 500 Mbps entre equipos distantes hasta 30 metros, puede ayudar en la formatación de un nuevo escenario. Tanto el ZigBee, como el UWB y el Bluetooth (IEEE 802.15.1) constituyen la familia de los PANs.

Voz y datos integrados

Para los especialistas, la tecnología IP en WANs no derrotará otras aplicaciones ya consolidadas en el mercado, pero su creciente adopción por parte de las operadoras muestra que las VPNs IP llevarán al Frame Relay/ATM - aún predominante - al desuso. Con costos reducidos, las nuevas plataformas ofrecen flexibilidad de configuración, la soñada transmisión de aplicaciones convergentes de datos, voz e imágenes, y la garantía de dar prioridad al tráfico, conquistada a partir de configuraciones hechas en MPLS (Multiprotocol Label Switching).

Un estudio realizado por Infonetics Research, en el mercado norteamericano, mostró que el avance del IP sobre las redes de larga distancia en los últimos años hizo que la oferta de productos convergentes de próxima generación para redes VPN IP creciese el 31%, solamente en el cuarto trimestre del 2003, totalizando USD 338 millones. La previsión es que la facturación anual del segmento aumente un 305% entre 2003 y 2007, llegando a USD 5.000 millones al final de ese período, lo que representa una tasa de crecimiento anual compuesta del 42%. Aunque las atenciones estén enfocadas en las redes IP multiservicio, que ofrecen vídeo bajo demanda, el principal producto de esa escalada son las soluciones de Voz sobre IP (VoIP).

Otra investigación realizada por IDC (International Data Corporation) señala que el crecimiento de la oferta soluciones convergente con tecnología IP en el mercado brasileño saltará del 2% en 2002 para el 10% en 2007, un incremento del 27% al 30% al año.

Evolución de la movilidad

En el caso de las redes de telefonía celular, los sistemas de cuarta generación (4G) son la apuesta para los próximos años. Al utilizar tecnologías de transmisión en banda ancha, basadas en el protocolo IP y con soporte para sistemas de comunicación convergentes, las redes 4G podrán transmitir datos con velocidad de hasta 100 Mbps, muy superior a lo alcanzado por los servicios 3G, que varían de 384 Kbps a 2.4 Mbps. El gran problema, sin embargo, todavía es la falta de especificación técnica de la Unión Internacional de Telecomunicaciones (ITU) sobre ese nuevo estándar.

Además, las prestadoras de servicios 3G aún no poseen un modelo de negocios que le agrade al mercado y consiga aumentar la utilización de los servicios de datos móviles en corto plazo. El problema no está en las deficiencias técnicas, sino en la falta de interés de los usuarios por servicios tan sofisticados.

En Europa, uno de los mayores mercados de telefonía móvil, la oferta de soluciones de transmisión de datos con alta velocidad e inclusive de TV móvil es grande, sin embargo las aplicaciones 3G continúan creciendo.

Cambio en los servicios corporativos

Eficientes para la mejoría de los negocios de las operadoras, al reducir costos de administración y al ampliar la capacidad de oferta de servicios, las redes NGN son un buen negocio también para las corporaciones. The Yankee Group realizó una investigación, en 2002, con 300 empresas brasileñas de mediano y gran porte para saber si planeaban integrar voz y datos. El resultado fue que el 42% de las corporaciones ya lo había implementado o estaban en proceso de instalación; el 14% afirmaron que adoptarían la convergencia en 2003; el 21% pretendían implementarlo en 2005; y solamente el 24% estaban sin planes.

La idea por tras de las Next Generation Networks (NGNs) es simplificar el complejo ambiente de las telecomunicaciones: transportar toda la información - conversaciones telefónicas, vídeo, archivos, e-mails, entre otras - que corre por la red en paquetes digitales basados en IP. De esta manera las operadoras ya no necesitarán separar cada parte de su infraestructura física para prestar un determinado tipo de servicio (por ejemplo, telefonía o transmisión de datos).

En el mercado convergente, los mayores retos tecnológicos aún encontrados son la inexistencia de redes cableadas totalmente ópticas hasta el usuario final (última milla), lo que imposibilitaría el aprovechamiento de todas las ventajas ofrecidas por la fibra óptica. Por lo tanto, la lentitud y la falla de cobertura de las infraestructuras inalámbricas causan oscilación en el tráfico entre las redes y la vulnerabilidad en el intercambio de informaciones. Ni bien las deficiencias se solucionen, el desarrollo de las nuevas tecnologías, en ascensión, deberá experimentar un crecimiento expresivo, y pondrá a disposición una serie de nuevos aplicativos.

Curso de ERP: 7. Seguridad del ERP

  1. La seguridad del ERP

Con todas las informaciones procesadas por los sistemas de gestión empresarial, el riesgo de pérdida de los datos por invasiones, virus y otras violaciones es real.

La convergencia de medios digitales (voz, datos e imágenes) y la creciente integración de redes fijas e inalámbricas vienen generando grandes retos de seguridad para el universo corporativo. Aunque protección y disminución de riesgo sean las principales preocupaciones en todas las redes, el mayor reto se relaciona a infraestructuras que engloban nuevas tecnologías y formas de comunicación. Como forman parte de un escenario tecnológico poco conocido y exigen acceso a múltiples fuentes de información, los nuevos aplicativos convergentes – tales como sistemas de mensaje unificados, telefonía IP y acceso a la Web por aparatos de telefonía móvil - son más vulnerables a fraudes, desconexión y a ataques de hackers.

La Asociación de Control de Fraudes en Comunicaciones, con sede en los Estados Unidos, calcula que la quiebra de la seguridad en sistemas y redes de computadoras empresariales representa un perjuicio mundial de aproximadamente USD 35.000 millones al año, según estudio divulgado en 2003. Solamente en 2002, en Brasil, los hackers causaron perjuicios de aproximadamente R$ 2.000 millones para el segmento corporativo. Y los números tienden a aumentar.

Una de las razones es la creciente utilización de sistemas de PABX IP y de la tecnología de Voz sobre IP (VoIP) en empresas con ambientes convergentes, lo que viene atrayendo nuevamente el interés de hackers para las redes de telefonía. Hasta entonces preocupados únicamente en derrumbar sistemas de datos, los hackers comenzaron a promover ataques de negación de servicio (DoS) para controlar - e inclusive desconectar - sistemas corporativos de PABX y de mensaje de voz. Como los nuevos sistemas de telefonía convergentes operan en servidores de plataformas abiertas tradicionales y protocolos de conectividad a Internet, los riesgos de seguridad y fraude crecen, facilitando la vida de los hackers.

Pero lo que está llamando la atención de los hackers es la integración entre redes de telefonía fija y la infraestructura inalámbrica, incluyendo celulares y redes locales inalámbricas (WLANs o Wi-Fi), porque las infraestructuras móviles inalámbricas con estándar 802.11 (hotspots o puntos de conexión) aún se consideran extremamente vulnerables.

Para garantizar la confiabilidad de sus redes convergentes de voz y datos, las empresas necesitan establecer políticas de seguridad, implementar un buen sistema de defensa de infraestructura, adoptar planes de contingencia y, sobre todo, administrar sus recursos tecnológicos de manera eficaz - asegurando la integridad del sistema y el acceso seguro a las aplicaciones.

Política de seguridad

El primer paso para evitar la acción de hackers en redes convergentes de voz y de datos es implementar una política de seguridad que contemple la protección de privacidad de los usuarios, la garantía de confidencialidad de las informaciones y, principalmente, el control del acceso a los recursos esenciales de infraestructura. En las empresas, las invasiones por simulación criminosa de códigos y contraseñas realizadas por hackers, empleados descontentos y otros intrusos, se pueden evitar - o por lo menos minimizar - si las medidas de seguridad estipuladas se obedecieran.

Entre las medidas está la introducción de rutinas constantes de cambio de contraseñas y la restricción del número de tentativas de acceso desautorizado - si en la tercera tentativa el usuario no consigue hacer el login en la red, la entrada al sistema estará bloqueada. Otras medidas de protección aconsejadas son la eliminación de casillas de correo de voz inactivas, la substitución de códigos de prueba utilizados por el equipo que instaló el sistema por nuevas contraseñas y la instalación de programas antivirus.

Para los consultores del Robert Frances Group, lo más importante en cualquier programa de seguridad es informar a los empleados sobre los costos y peligros de los fraudes, además de mostrarle cómo pueden trabajar en la prevención.

Todos los miembros de la corporación deben conocer los procedimientos operativos básicos para atenuar los fraudes y las violaciones en el sistema: los empleados deben ser concienciados de que necesitan desconectarse de la red al final del día, los administradores deben asegurarse que las políticas de seguridad están siendo seguidas y el acceso remoto de empleados a la red se debe realizar por medio de códigos de identificación o tecnologías de tarjeta inteligente (smart card). Generalmente, el simple conocimiento del plan de seguridad es el mayor aliado contra fraudes en el sistema de telefonía y uso indebido por parte de los empleados.

Implementación de sistemas de defensa

La implementación de un eficiente sistema de defensa se debe iniciar por la evaluación de los riesgos de seguridad y de los costos que eventuales invasiones puedan causar. Las pruebas emulan la amenaza presentada por hackers e intentan levantar los comprometimientos de los servicios de la red convergente con el fin de destacar sus vulnerabilidades. Luego, se deben calcular los perjuicios en potencia que la empresa puede sufrir. El segundo paso es el desarrollo de una arquitectura de seguridad que minimice las pérdidas físicas y materiales apuntadas. Y, para su implementación, será necesario un modelo de administración de seguridad efectivo.

Las empresas deben determinar los aspectos de protección que serán centralizados, la implementación de aspectos regionales o departamentales de seguridad, los métodos para obtener el financiamiento y la manera como las unidades de negocios se responsabilizarán por el proyecto. El desarrollo de esa etapa involucra administración de riesgo, cuestiones reglamentarias, protección de propiedad intelectual y confidencialidad y seguridad de las aplicaciones de negocios.

La infraestructura de seguridad de una corporación está constituida por herramientas, tecnologías y tácticas que se utilizan para proteger el perímetro de la red y sus recursos internos. Infelizmente, para los administradores de seguridad de red, cada ola de nuevas tecnologías hace que la arquitectura de seguridad actual se torne obsoleta. Las aplicaciones distribuidas en redes locales y la inclusión de redes externas en la topología de las empresas hicieron que la seguridad corporativa se deba rehacer. Aplicativos móviles y conexiones inalámbricas contornaron los firewalls y permitieron que informaciones importantes fuesen accedidas por aparatos colgados en la cintura de los empleados.

Las infraestructuras de seguridad tradicionales intentaron proteger el perímetro, pero los recursos internos ahora están cada vez más expuestos al acceso externo por medio de nuevas aplicaciones. En ese escenario de cambios rápidos, las empresas necesitan un modelo de seguridad modular que contemple un núcleo fijo con etapas variables, y una infraestructura que incluya firewalls, detección de invasión y prevención, protección antivirus y filtro de contenido, seguridad móvil e inalámbrica, encriptación y administración de seguridad de TI.

Las empresas no pueden obtener retornos satisfactorios de sus inversiones en planificación de seguridad y desarrollo de políticas específicas sin ejecutar e implementar efectivamente el proyecto. Una administración de seguridad eficaz se concentra en tecnologías operativas y mejores prácticas que mantengan un acceso seguro a aplicaciones y recursos, y que aseguren la integridad de la configuración y la definición del sistema. Las preocupaciones del gerente de seguridad incluyen: evaluación de vulnerabilidad, administración de identidad y acceso, configuración de seguridad y administración de camino (path), e infraestructura de servicios web.

Planes de contingencia

Con los constantes ataques de hackers, también es de extrema importancia un plan de contingencia que defina los procedimientos y las tecnologías que asegurarán el funcionamiento de todos los procesos de negocios durante situaciones críticas. Sin embargo, hasta fines del 2003, las empresas brasileñas no se mostraban dispuestas a arcar con esos gastos. Una investigación realizada por Gartner Group mostraba que solamente el 28% de las empresas consultadas poseían una política de continuidad de los negocios para ataques físicos, lo que resalta la vulnerabilidad a la que estaban sujetas.

Para asegurar la integridad de la infraestructura de comunicación, las empresas deben realizar inversiones significativas en seguridad, desde la adquisición de antivirus y firewalls, la protección de equipos de red (cableado, enrutadores, concentradores, conmutadores, etc.) hasta la metodología de los planes de contingencia. Esa inversión incluye también una evaluación que prevea el riesgo que las redes pueden sufrir con ataques y el costo de creación de un plan de contingencia.

De manera general, las situaciones de riesgo exigen empleados de soporte bien entrenados para ejecutar tareas de emergencia, simulación de situaciones e inversión en medios de comunicación alternativos en el caso de caída de la red telefónica. Cambios recientes en el ambiente reglamentario, corporativo y de TI están impulsando la búsqueda de planes de contingencia que no sólo protejan el sistema de intrusiones, sino que prevengan esos ataques.


El reto de la seguridad en redes inalámbricas

La convergencia de redes fijas e inalámbricas, además del creciente uso de dispositivos wireless (inalámbricos), viene presentándose como un verdadero reto de seguridad para las corporaciones. Eso sucede porque la tecnología inalámbrica sufre los mismos tipos de amenaza que los sistemas conectados por cable, pero en mayor cantidad. Además, las amenazas a los dominios inalámbricos están evolucionando casi a la misma velocidad que los nuevos aplicativos y tecnologías wireless (inalámbricas) surgen en el mercado. Debido a su sofisticación, capacidad y flexibilidad, las tecnologías inalámbricas están siendo adoptadas con más entusiasmo por parte de las corporaciones, principalmente las redes locales inalámbricas (WLANs o Wi-Fi). Sin embargo, esa infraestructura utiliza el estándar de comunicación 802.11 (hotspots), considerado vulnerable.

Para proteger grupos de puntos de acceso de las redes locales inalámbricas, las empresas están adoptando gateways (puertas de enlace) de seguridad inalámbricos que suministran firewall, soportan autenticación y criptografía.

Otras alternativas administran el ancho de banda inalámbrica, pero imponen restricciones de calidad de servicio sobre el uso de ancho de banda o de los tipos de aplicación. Los gateways complementan los recursos de seguridad existentes, tales como las redes privadas virtuales (VPNs) y los directorios utilizados para autenticar usuarios Ethernet LANs y aplicaciones empresariales.

De acuerdo con los consultores del Robert Frances Group, las redes locales inalámbricas (WLAN) están casi aptas para ofrecer seguridad razonable para muchas aplicaciones empresariales. Sin embargo, los requisitos de protección para esas aplicaciones deben ser identificados y atendidos. Además, las empresas necesitan ser capaces de monitorear siempre sus redes WLAN, con el fin de detectar brechas de seguridad y opciones de configuración de seguridad impropias. Todos los requerimientos de seguridad de la red deben ser atendidos, incluso la administración, la configuración y el monitoreo.