14 abr 2010

TWITTER

El siguiente video en youtube, explica didacticamente la idea básica de que es twitter.



BLOG

El siguiente video en youtube explica didacticamente y en un leguanje simple, la idea básica de que es un blog.


ARCHIVOS FUENTES DEL PROGRAMA EN JAVA

Aquí les dejo los archivos fuentes de mi primera versión que se ejecuta en una ventana consola del DOS.

BC.txt
Este archivo tiene las reglas de la base de conocimiento.
MI.java
Este sería el programa de la máquina de inferencia (Principal)
Entrada.java
Es una librería creada para el programa, que permite ingresar datos por teclado.
Metodos.java
Es una librería creada para el programa, que realiza lectura y escritura en un archivo texto.

Hacer click con el mouse en el enlace siguiete de los archivos fuentes para descargarlos
MODELO DE NEGOCIO DEL SOFTWARE LIBRE
 
El modelo de negocio del “Software Libre”, radica en la oferta de servicios adicionales que le podemos acompañar al software, para obtener algún recurso monetario, como puede ser:

• La personalización y/o instalación del mismo.
• Soporte técnico.
• Donaciones.
• Patrocinios.
LA TRAMPA DE JAVA, ¿ ES SOFTWARE LIBRE ?

Como introducción, daremos primero una definición de lo que es un Software Libre y decimos que un programa lo podemos considerar, software libre, si las personas que lo van usar, tienen ciertas libertades, con respecto al programa, tales como:

La libertad de usar el programa.
La libertad de estudiar y modificar el código fuente.
La libertad de distribuir el código fuente y binario.
La libertad de publicar versiones mejoradas del código fuente.

De la definición de Software Libre, podemos concluir que un programa que escribamos en java, es software libre, sin embargo, para ejecutarlo, necesitamos de otros software, como: un compilador, un intérprete y bibliotecas propias de la implementación de Java de Sun, que no son libres, entonces, en la práctica nuestro programa, esta encadenado por sus dependencias no libres, por lo tanto no encadene su programa escrito en Java, que es software libre, a que dependa, para ejecutarlo de otros softwares no libres que ya mencionamos y a esto se conoce como La trampa de Java. Cuando escriba su programa, escríbalo, para que funcione desde el principio sobre software libre.

Como alternativa, tenemos implementaciones libres del java, como el compilador de java CGJ de GNU y CLASSPATH de GNU, pero todavía no tienen todas las funcionalidades, que aun se trata de alcanzar y llevará su tiempo, mientras se sigan creando nuevas bibliotecas no libres a la implementación java por parte de la compañía Sun. Por lo tanto, la manera fiable de evitar la trampa de Java es tener en su sistema solamente una implementación libre de Java (CGJ, CLASSPATH). Así, si usted usa una biblioteca del Java que el software libre todavía no soporta, se dará cuenta en seguida, y podrá reescribir ese código de inmediato usando alguna función equivalente para lograr lo mismo en la implementación libre de java. Para completar esta libertad y no depender de software no libre usar un sistema operativo libre (Sistema GNU/Linux), como plataforma para ejecutar nuestro programa, esto sería lo ideal para un mundo en libertad.

La manera de verificar, si un lenguaje de programación usado para escribir un programa es software libre, se haría consultando los siguientes enlaces:

• Directorio de software libre : http://directory.fsf.org/
• Lista de licencias de software libre : http://www.gnu.org/licenses/license-list.es.html

Como conclusión. Para que un programa dado sea software libre, depende únicamente de los términos de su licencia. Porque si hablamos de un mundo en libertad, sería, que no solo el programa sea libre, sino también el compilador, el interprete, las bibliotecas que necesite nuestro programa, sean libres, incluso el sistema operativo donde se ejecutará el programa, también libre, lograr este nivel de libertad es un tema más complejo, porque en la práctica, todos los programas siempre dependen de otros programas y el grado de libertad de esos otros programas ya escaparía a nosotros, sólo podremos determinar el grado de libertad de nuestro programa indicados en los términos de su licencia que le demos, por esta razón es que se dice que “Para que un programa dado sea software libre, depende únicamente de los términos de su licencia”.
DESCRIPCION DEL PROYECTO

Primero, empezaré indicando que éste es un proyecto para desarrollar un software que implementará un “Sistemas Expertos Basado en Reglas de Decisión”. Antes, explicaré que todo sistema experto tiene 2 componentes bien definidos, según la teoría de los sistemas expertos desde el punto de vista del software:

1. La base de conocimiento
2. La máquina de inferencia

Con respecto al primer componente llamado “La base de conocimiento”, diré que es el que se captura de un experto humano, dueño de dicho conocimiento, pero de un tema en particular. Por decir “experto en diagnostico de enfermedades del corazón en base a los síntomas” o “experto en identificar animales en base a sus características” etc. La idea central está en capturar este conocimiento humano y darle una estructura de árbol (árbol del conocimiento) y de esta forma tendremos un árbol de conocimiento de diferentes temas, de acuerdo a lo que deseamos que sea experto nuestro programa. Entonces, el programa usaría este árbol de conocimiento para ir infiriendo por las distintas ramas y obtener las preguntas que irá haciendo; y de las respuestas que vaya dando el usuario, el programa lo va dirigiendo por distintas ramas del árbol, para hacer las preguntas más convenientes y así, ir deduciendo el objetivo (dicho objetivo puede ser la enfermedad que tiene un paciente); de esa manera se van descartando muchas ramas. En otras palabras, el experto software irá acotando las preguntas más afines a la enfermedad más próxima, que pueda padecer el paciente, con la intención de llegar a deducir el objetivo final con la menor cantidad de preguntas. Esto implicará, que el árbol del conocimiento tiene que estar bien estructurado y ontológicamente bien clasificado, ya que será el “corazón” de nuestro sistema experto. Por tanto, deducir claramente que el segundo componente “La máquina de inferencia” será el programa que va inferir por las distintas ramas del árbol, con la finalidad de ir formulando las preguntas más convenientes para deducir el objetivo ( la posible enfermedad que pueda padecer el paciente). Esto sería en síntesis el proyecto.
SOFTWARE LIBRE

Como introducción, daremos primero una definición de “Software Libre”, y decimos que este puede estar disponible gratuitamente, o al precio de costo de la distribución, o puede ser distribuido comercialmente, pero en cualquiera de los casos el acceso al código fuente es obligatorio, por lo tanto libre no es lo mismo que gratuito, ya que libre está asociado con la libertad que nos dan sobre el código fuente, y estas libertades quedan resumidas en estas cuatro:

• La libertad de usar el programa.
• La libertad de estudiar y modificar el código fuente a sus necesidades.
• La libertad de distribuir el código fuente y el compilado.
• La libertad de publicar versiones mejoradas del código fuente.

Explicaremos lo mencionado anteriormente con un ejemplo, una persona cualquiera puede hacer un programa de cualquier tema y desear que este dentro de la categoría de “Software Libre”, por lo tanto puede vender su programa, regalarlo, cobrar un costo de distribución lo cual es válido, porque es su programa, libre no significa gratuito pero al estar en la categoría de “Software Libre” está obligado a dar los fuentes también, por lo tanto las personas que compran el programa con los fuentes incluidos, tienen esas 4 libertades mencionadas anteriormente con respecto al programa, pero no están en libertad de venderlo y obtener un beneficio lucrativo, al no ser el autor original del fuente.