sábado, 27 de febrero de 2016

Tema 2: Lenguajes de programación y frameworks


Introducción

En esta entrada del blog voy a hablar sobre unos conceptos muy relacionados con el mundo de la informática: los lenguajes de programación y los frameworks

Lenguajes de programación

Los lenguajes de programación son herramientas que utilizan los programadores para crear software y existe un gran número de ellos.


Seleccionar los más característicos es una tarea compleja, puesto que su uso depende en gran medida del tipo de proyecto a realizar, las funcionalidades que tengan que implementarse… E incluso se puede realizar un proyecto utilizando diferentes lenguajes en diferentes módulos en función de las especificaciones.


¿Cómo tomar esta decisión?

Siguiendo la idea anterior, se debe escoger el lenguaje que mejor se adapte al tipo de aplicación a realizar y a sus funcionalidades, teniendo en cuenta una visión a futuro de la posible escalabilidad del sistema.


A continuación hablaré de lenguajes que se utilizan en diferentes ámbitos de programación.

Desarrollo de páginas Web Dinámicas: PHP



PHP es un lenguaje de programación de código abierto, es decir, de uso libre y gratuito, que fue originalmente diseñado para el desarrollo de páginas webs dinámicas y que puede ser introducido en HTML.
Además, con PHP se puede sacar gran partido a un servidor de bajo coste o modesto, siendo capaz de poder realizar millones de peticiones diarias.

Una de las características por la cual este lenguaje ha sido tan bien acogido por la comunidad de desarrolladores es su portabilidad, ya que puede ser utilizado en casi cualquier máquina sin necesidad de hacer ningún tipo de variación o modificación en el código.
Al tratarse de un lenguaje tan apreciado por su comunidad los nuevos desarrolladores pueden encontrar fácilmente material para el aprendizaje o resolución de errores.

Administración de base de datos: SQL



SQL(Structured Query Language) es un lenguaje de carácter declarativo el cual se encarga de describir el "que" se desea obtener a partir de la declaración de un conjunto de condiciones.

Este lenguaje ganó mucha popularidad debido a su sencillez y a la completitud que aportaba en un entorno de administración y gestión de los datos, permitiendo la utilización del algebra y el calculo relacional con el fin de crear consultas capaces de obtener de manera sencilla y rápida cierta información de interés procedente de una base de datos.


Además de poder realizar labores de búsqueda en una base de datos, el lenguaje SQL es capaz de realizar modificaciones de la estructura interna de la base de datos introduciendo únicamente sentencias de este lenguaje.


Debido a la importancia de este lenguaje, se han creado diversos de gestores de bases de datos entorno a este lenguaje como son SQLServer, PostgreSQL o MySQL



Elaboración de grandes proyectos: C++



C++ es un lenguaje hibrido o multiparadigma, ya que cumple labores de los paradigmas de programación estructurado (paradigma de programación utilizado para obtener una mejora en tanto en calidad, claridad como en tiempo de desarrollo de un programa, caracterizado por el uso subrutinas, sentencias, condiciones e iteraciones, y por evitar el uso de la sentencia GOTO) y del paradigma de programación orientado a objetos (paradigma basado en la utilización de objetos para el diseño de sus aplicaciones)

Sus principales características son:
Rapidez de aprendizaje: es un lenguaje bastante intuitivo por lo que la curva de aprendizaje se realiza de manera más rápida que otros
Funcionalidad: es un lenguaje amplio, que otorga al desarrollador las herramientas necesarias para elaborar la aplicación que el desee.
Gran similitud con otros lenguajes: Al poseer rasgos similares con otros lenguajes como PHP o Java, el conocimiento aprendido o la sintaxis utilizada es fácilmente reutilizable en otros lenguajes.


Frameworks


La labor del programador no solo reside en tener claro el tipo de aplicación que desee que crear y seleccionar un lenguaje acorde al proyecto que tenga que realizar, si no que va más allá, necesita elaborar una estructura mediante la cual crear el programa, para ello, se utilizan los patrones de diseño y frameworks.

Los patrones de diseño se encargan de identificar que clases y que objetos participan en la aplicación, así como sus papeles, comunicaciones, colaboraciones y distribución de responsabilidades que poseen dentro de dicha aplicación.

Los framework por otro lado, son un conjunto de clases que cooperan para formar un diseño especifico y reutilizable de un software. Ofrece una estructura partiendo del diseño de las clases abstractas y a partir de la definición de sus colaboraciones y responsabilidades.

El objetivo es que, mediante su uso, el desarrollo de las aplicaciones sea más simple mediante la automatización de patrones, estructuración de código fuente, encapsulando en instrucciones sencillas operaciones de mayor complejidad...

A continuación, algunos de los frameworks son: 

Spring


Spring es un framework de código abierto orientado a la creación de aplicaciones J2EE (Java 2 Enterprise Edition), y usa archivos con formato XML para la configuración y ficheros planos o Beans para la lógica de negocio de la aplicación.
Permite utilizar esta tecnología en los módulos de la aplicación que sean  necesarios.


Está orientado al método de programación de Inversión de Control, de tal manera que la interacción de componentes se realiza de manera imperativa y efectuando llamadas a las funciones o procedimientos necesarios, de tal manera que se establecen una serie de respuestas para determinadas solicitudes o sucesos y una arquitectura externa es la que se encarga de controlar de llevar a cabo las acciones necesarias.
De esta manera, Spring está basado en el uso de contenedores que gestionan las instancias de los objetos.


Symfony


Este framework desarrollado en PHP busca la optimización de la creación de aplicaciones web, separando la lógica de negocio, servidor y la capa de presentación de aplicación web (siguiendo el modelo vista controlador).

El modelo contiene la representación de la información, los datos de los que se va a servir la aplicación para operar con ellos.
Envía los datos a la vista mediante el controlador.

La vista es la interfaz con la que el usuario interactúa, por lo que mostrará la salida de los datos del sistema.

El controlador es el encargado de responder a los eventos, actuando de intermediario entre la vista y el modelo. 

Las herramientas de Symphony permiten generar código automático, ofrece un entorno de pruebas funcionales y unitarias, creación sencilla de plantillas, validación automática de formularios, reducción del ancho de banda mediante gestión de la caché...





Bibliografía

  • http://ocw.uoc.edu/computer-science-technology-and-multimedia/bases-de-datos/bases-de-datos/P06_M2109_02149.pdf
  • https://es.wikipedia.org/wiki/Programación_declarativa
  • http://aprenderaprogramar.es/index.php?option=com_content&view=article&id=492:ique-es-php-y-ipara-que-sirve-un-potente-lenguaje-de-programacion-para-crear-paginas-web-cu00803b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193
  • https://es.wikipedia.org/wiki/SQL
  • https://ramonmorillo.wordpress.com/2011/10/28/caracteristica-y-ventajas-de-sql/
  • http://www.tiobe.com/tiobe_index
  • http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/93
  • http://martinfowler.com/bliki/InversionOfControl.html
  • http://librosweb.es/libro/symfony_1_4/capitulo_1/symfony_en_pocas_palabras.html








sábado, 13 de febrero de 2016

Tema 1: Introducción a la Búsqueda y Gestión de la Información y Recursos Multimedia

Introducción 

En la actualidad hay una gran cantidad de información accesible en diversos formatos al alcance de cualquier persona.

El problema reside en la capacidad de filtrar toda esa cantidad  de datos disponible, utilizar fuentes de confianza que aporten una información verídica, contrastada y actual que nos permita extraer el conocimiento.

En esta entrada del blog hablaremos de convertir los datos en conocimiento útil y en los diferentes avances dentro del ámbito de la recolección y gestión de la información como respuesta al gran volumen de datos disponible.

¿Qué es el conocimiento? 

Según la RAE, un dato es información sobre algo concreto que permite su conocimiento exacto o sirve para deducir las consecuencias derivadas de un hecho. Por ello, se puede considerar como un elemento primario de la información.

Un conjunto de datos relevantes enmarcados en un contexto y enfocados hacia un propósito puede considerarse como información.

Por ejemplo, se pueden recopilar datos de ventas, pero si no se analizan y se utilizan, sólo es información.

Es necesario transformar todos esos datos de los que se dispone en conocimiento.

 "El conocimiento es construido por el sujeto con base en la asimilación, integración y reorganización de estructuras que le permiten interpretar el mundo e interactuar con él."


El aprender de estos datos nos hace adquirir conocimiento, que nos aporta algo a nivel personal, estratégico y de negocios, de investigación...

Fuentes de información

Para poder empezar a filtrar los datos que queremos obtener, es muy importante saber dónde empezar a buscarlos.
Para ello, hay que tener en cuenta los diferentes tipos de fuentes de información que existen, de tal manera que así se podrán encontrar más fácilmente los datos necesarios.
En base al nivel de información que aportan, pueden considerarse tres tipos de fuentes de las que extraer los datos:

  • Fuentes primarias: aportan información nueva resultante de un trabajo de investigación.  Ejemplos de este tipo son revistas científicas, libros, periódicos, informes y documentos de instituciones, normas, patentes...
  • Fuentes secundarias: este tipo de fuentes recogen información que ha sido obtenida mediante un análisis o investigación realizada sobre una fuente primaria. Un ejemplo de este tipo son los directorios, enciclopedias, libros y artículos que interpretan otros trabajos...
  • Fuentes terciarias: albergan guías de información de fuentes secundarias, como puedan ser las bibliografías, guías  de obras de referencias...



El conocimiento de estos tipos de fuentes no es otro que el saber a cuál se debe acudir en función de lo que necesitamos buscar y así facilitar el trabajo de búsqueda y de la veracidad de la información, ya que hoy en día cualquiera puede crear contenido en la web.

Una manera diferente de almacenar los datos

Una gran parte de la información está disponible digitalmente y, debido a la gran cantidad de datos, a su carácter polivalente y de los diferentes formatos que pueden tener, ha surgido una necesidad de almacenarlos de una manera diferente a las bases de datos que siguen una estructura relacional.

Las bases de datos no relacionales (también conocidas como NoSQL) presentan diferentes estructuras de objetos y están orientadas a grafos, columnas, almacenamiento de pares de clave/valor y documentos.

Debido a la temática de esta entrada profundizaremos más en las bases de datos orientadas a documentos, ya que están estrechamente relacionadas con el almacenamiento de fuentes de información de carácter digital y de la interconexión y extracción de datos de las mismas.


Una base de datos orientada a documentos es, como bien indica su nombre, aquella pensada para almacenar una gran cantidad de archivos.
La información se almacena en documentos XML, JSON e incluso PDF y documentos de Microsoft Office que contienen una clave única para identificar los registros.
Los documentos están organizados mediante metadatos, etiquetas, colecciones y jerarquías de directorios para facilitar las búsquedas.

Generalmente este tipo de bases de datos disponen de una API que permite recuperar los documentos en función de su contenido.

Algunos ejemplos de este tipo de bases de datos son MongoDB o CouchDB.



Minería de texto

El concepto de text mining está estrechamente relacionado con la extracción del conocimiento de una gran cantidad de documentos que no tienen por qué estar relacionados en un principio.

Esta técnica busca tendencias, promedios y dependencias de los datos de diferentes documentos para poder obtener una información conjunta.

En definitiva, en base a información conocida no relacionada, se busca obtener información primaria o, como lo definió Marti A. Hearst en "Untangling text data mining":


"La minería textual trata de descubrir información y conocimiento que previamente se desconocía, y que no aparecía en ninguno de los documentos analizados"

Esta tecnología utiliza técnicas de lingüística computacional y recuperación de la información como:

  • Pre procesamiento de documentos: se encarga de extraer términos importantes, eliminación de palabras vacías y normalización de los términos mediante stemming (técnica que extrae sufijos y prefijos comunes).
  • Identificación de nombres propios y análisis gramatical y sintáctico.
  • Representación de documentos mediante un modelo vectorial y uso de fórmulas para calcular la similitud entre pares de documentos.
  • Agrupación automática de documentos.
  • Categorización automática.
  • Extracción de relaciones entre conceptos y términos.
La minería de texto aporta una herramienta muy potente a la hora de realizar nuevas investigaciones y estudios, ya que permite el estudio de una gran cantidad de documentos de una manera más ágil.


Conclusión

Tras el análisis de esta entrada, puedo afirmar que pese a los problemas que puedan surgir a la hora de buscar información debido a la veracidad de los datos y la gran cantidad de lugares a los que acudir, han aparecido nuevas herramientas a nuestra disposición para facilitar la recolección de datos.

Si bien es cierto que a pequeña escala con saber dónde buscar y filtrar las fuentes a utilizar sería suficiente, para realizar investigaciones que requieran una gran cantidad de información, éstas herramientas ofrecen grandes posibilidades.




Bibliografía




jueves, 4 de febrero de 2016

Introducción



El objetivo de este blog es proporcionar al lector un punto de vista distinto al adquirido en las clases de la asignatura Búsqueda y gestión de la información, de manera que no se busca repetir lo impartido en dicha clase, si no más bien presentar una visión más amplia de la información expuesta en cada uno de los temas.