domingo, 26 de octubre de 2014

Bases de datos y sistemas de almacenamiento

En esta entrada vamos a ver los conceptos de bases de datos y de sistemas de almacenamiento como introducción y profundizaremos más en los diferentes tipos de dispositivos que existen para el almacenamiento de la información.
Los dispositivos de almacenamiento guardan la información en tecnología de bases de datos. De ahí que exista una necesidad intrínseca de definir el concepto de base de datos.
Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. Por ejemplo, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel y disponibles para su consulta. Sin embargo, debido al avance tecnológico en diferentes campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, que se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos. Algunos de estos problemas era la redundancia de datos además de la gran dificultad y elevado coste que suponía cualquier tipo de actualización.
Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian generalmente dentro del ámbito de la informática.
Ahora que ya conocemos un poco mejor (para quien no lo supiese) lo que es una base de datos, podemos proceder a hablar de los dispositivos de almacenamiento.

Dispositivos físicos de almacenamiento

Los dispositivos de almacenamiento se han ido adecuando, como todo, al avance tecnológico y a las nuevas necesidades que han ido apareciendo tanto en el plano doméstico como en el profesional. Se observa una gran diferencia entre los medios primitivos de almacenamiento y los que tenemos hoy día (aunque éstos aun así quedarán tremendamente desfasados igualmente en un futuro). Por ello, vamos a hacer un pequeño recorrido histórico entre los distintos elementos tecnológicos capaces de almacenar información de forma permanente, por orden de aparición.

· Tarjeta perforada: se pueden definir como los primeros sistemas de almacenamiento en computación. Era una simple cartulina cuyo sistema de almacenamiento se basaba en perforaciones en código binario. Su capacidad era limitada y arcaica en comparación con lo que tenemos hoy día.

· Cinta magnética: eran unas tiras magnéticas también con perforaciones en su superficie que eran leídas por la máquina mediante el magnetismo. Por así decirlo, supusieron una mejora de las tarjetas perforadas previamente descritas, siendo las cintas magnéticas más fiables y cómodas en su uso. Su perfeccionamiento supuso la aparición de formatos más recientes y conocidos para nosotros como las cintas de vídeo o el cassette. 
 · Disco magnético: es una pieza metálica a la que se ha aplicado, por ambos lados, una película magnética que permite almacenar información. Los principales discos magnéticos son, el disquete y el disco duro. 
· Discos ópticos: es un formato de almacenamiento de datos digital, que consiste en un disco circular en el cual la información se codifica, se guarda y almacena, haciendo unos surcos microscópicos (inapreciables a simple vista) con un láser sobre una de las caras planas que lo componen. Los más utilizados son los CD, DVD y como evolución desde último, el Blu-ray. 
· Tarjetas de memoria: es un dispositivo de almacenamiento que conserva la información que le ha sido almacenada de forma correcta aún con la pérdida de energía, es decir, es una memoria no volátil. Son fáciles de utilizar y de pequeño tamaño. 
· Memoria USB: es un dispositivo de almacenamiento que utiliza una memoria flash (mediante impulsos eléctricos, permite la lectura y escritura de múltiples posiciones de memoria en la misma operación) para guardar información. Los primeros modelos necesitaban una batería, pero los actuales usan la energía eléctrica procedente del puerto USB. Son resistentes a los golpes, al polvo y algunos hasta al agua, factores que afectaban a las formas previas de almacenamiento portátil, como los disquetes, discos compactos y los DVD.


Dispositivos virtuales de almacenamiento (no físicos)

En este ámbito estamos tan sólo en el comienzo, ya que es un concepto relativamente novedoso y que presenta un elevado potencial de progresión. Es probablemente el medio que más utilicemos, aunque no seamos la mayoría conscientes de ello, ya que un gran número de información, vídeos, etc…, vienen almacenados en este formato en internet (Youtube,Soundcloud...).
Según Wikipedia, la computación en la nube, conocido también como servicios en la nube, informática en la nube, nube de cómputo o nube de conceptos, es un paradigma que permite ofrecer servicios de computación a través de internet.
La computación en nube presenta bastantes ventajas:
Lo primero es que el usuario se puede ver favorecido por las ventajas que le puede ofrecer el proveedor. Además, los sistemas en la nube controlan y optimizan el uso de los recursos de manera automática, dicha característica permite un seguimiento, control y notificación del mismo. Esta capacidad aporta transparencia tanto para el consumidor o el proveedor de servicio.
En cualquier agrupación siempre se busca la optimización de recursos al menor coste. Pues según los proveedores de computación en la nube afirman que los costes se reducen. Un modelo de prestación pública en la nube convierte los gastos de capital en gastos de funcionamiento. Ello reduce barreras de entrada, ya que la infraestructura se proporciona típicamente por una tercera parte y no tiene que ser adquirida por una única sola vez o tareas informáticas intensivas infrecuentes.
El almacenamiento es relativamente instantáneo, y se puede disponer de ellos sin que los usuarios necesiten cargas de alta duración.
Además, ofrece una independencia de la ubicación y una gran versatilidad ya que permite a los usuarios acceder a los sistemas utilizando un navegador web, independientemente de su ubicación o del dispositivo que utilice (por ejemplo, PC, teléfono móvil).
La tecnología de virtualización permite compartir servidores y dispositivos de almacenamiento y una mayor utilización. Las aplicaciones pueden ser fácilmente migradas de un servidor físico a otro.
Dado que la computación en nube no permite a los usuarios poseer físicamente los dispositivos de almacenamiento de sus datos (salvo que sean copiados los datos a un dispositivo de almacenamiento externo, como una unidad flash USB o un disco duro), deja la responsabilidad del almacenamiento de datos y su control en manos del proveedor.
La computación en nube ha sido criticada por limitar la libertad de los usuarios y hacerlos dependientes del proveedor de servicios. Algunos críticos afirman que sólo es posible usar las aplicaciones y servicios que el proveedor esté dispuesto a ofrecer.
Por ejemplo, Richard Stallman, voz autorizada en el tema por ser el fundador de la Free Software Foundation, cree que la computación en nube pone en peligro las libertades de los usuarios, porque éstos dejan su privacidad y datos personales en manos de terceros. Ha afirmado que la computación en nube es "simplemente una trampa destinada a obligar a más gente a adquirir sistemas propietarios, bloqueados, que les costarán cada vez más conforme pase el tiempo".
Este sistema de almacenamiento (por desgracia) está de rabiosa actualidad debido al ataque hacker que ha sufrido iCloud, la nube que almacena los datos (si bien está a elección del usuario) de los dispositivos de la compañía Apple. Esto ha permitido la filtración de información íntima (en su mayoría, fotos) de personajes de relevancia pública y social. Todo esto sin autorización de los afectados, con la consiguiente vulneración del derecho a la intimidad. Esto ha trascendido por el mero hecho de que ha afectado a personajes famosos pero… ¿Somos realmente conscientes de los datos personales que pueden ser conseguidos en este tipo de sistemas de almacenamiento sin nuestro consentimiento?
A pesar de ello, cualquier sistema de almacenamiento (ya sea físico o virtual) puede ser atacado con algún propósito, por lo que no debemos incurrir en el error de que el almacenamiento en nube es menos seguro que cualquier sistema convencional de los previamente citados. Aunque la seguridad puede mejorar debido a la centralización de los datos, es a menudo tan buena o mejor que otros sistemas tradicionales, en parte porque los proveedores son capaces de dedicar recursos a la solución de los problemas de seguridad que muchos clientes no pueden permitirse el lujo de abordar.

Con esto finalizamos el repaso por los principales sistemas de almacenamiento de ayer y de hoy. Todos tienen sus ventajas e inconvenientes, de ahí que cada uno puede ofrecer su propia conclusión al respecto. Yo como tal, voy a hacer lo propio y voy a posicionarme. El debate obviamente no está entre si es mejor un pendrive o una tarjeta perforada, ya que no son contemporáneos. Se debe debatir entre los sistemas que coexisten y en este caso, entre los sistemas físicos como CD’s, dispositivos de almacenamiento USB…, y el sistema virtual de almacenamiento en nube. El hecho de haber valorado tan a fondo, con sus ventajas e inconvenientes) éste último no ha sido trivial y me posiciono a favor de los servicios en nube. Para un servidor, ofrece dos principales ventajas con las que a día de hoy ningún medio físico puede permitir.
El primero es la versatilidad que ofrece la necesidad nula de utilizar un dispositivo de almacenamiento para acceder o guardar información. Simplemente con tener acceso a internet (algo que cada vez es más fácil de tener en cualquier lugar) y puede incluso ser portátil (PC, móvil, tablet…), puedes trabajar con aquello que desees.
El segundo punto es si cabe más rotundo frente a su competencia. Internet no tiene límites conocidos, y eso implica que la información que puede albergar tampoco. Luego el empleo de un sistema en nube puede acoger toda la cantidad de información que podamos imaginar. Y lo mejor de todo, es que grandes compañías siguen trabajando en conseguir mejores infraestructuras para permitir la progresión de este estilo de almacenamiento.
Como último dato, aunque no del todo generalizado, los servidores en nube suelen ser gratuitos.
Como ven, hay para todos los gustos. Pero como siempre, la elección está en el consumidor.







domingo, 12 de octubre de 2014

Lenguajes de programación más utilizados.

En esta entrada vamos a hablar sobre diferentes lenguajes de programación y de las distintas aplicaciones que éstos pueden tener en la vida real, tanto para computadores como material industrial.
Lo primero va a ser caracterizar el funcionamiento de un computador y la necesidad del empleo de un lenguaje para programar.
Para programar, necesitamos una serie de instrucciones que permitan a la máquina realizar la función que queremos. Pero una máquina no utiliza nuestro lenguaje común, sino que trabaja con una serie de operaciones aritméticas y lógicas, mediante codificación en números binarios, esto es, con 0 y 1. Este conjunto de códigos numéricos constituyen el lenguaje máquina. Nosotros no trabajamos con ello, pues la programación implicaría una complejidad inaccesible para el programador. En programación, se trabaja con un mnemónico, una palabra que sustituye este lenguaje máquina para facilitar esta función. La combinación de estas palabras de adaptación es el conocido como lenguaje ensamblador. Aunque hay programadores que tienen capacidad para ejecutar instrucciones utilizando este lenguaje, sigue siendo de gran complejidad. Se utiliza en su lugar lenguajes, que se asemejan más al lenguaje común. Un archivo que contiene sentencias de lenguaje lo denominamos código fuente. Por último, un compilador es un programa que convierte el código fuente en lenguaje ensamblador. Un ejemplo de ensamblador es el lenguaje C, que es el lenguaje de programación más utilizado, según el ranking elaborado por el Índice Tiboe, actualizado a enero de 2014. El ranking es el siguiente:




A continuación se exponen los lenguajes que encabezan la lista de manera breve. Como ya hablamos en la anterior entrada al blog, la información sobre un tema puede llegar a ser infinita y disponemos de muchos medios de información donde documentarse para un conocimiento más extenso. Comenzamos por el lenguaje C.

Lenguaje C
C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.
Es uno de los lenguajes más antiguos de programación que se conocen, pero es casi de obligado aprendizaje para cualquier rama de ingeniería que utilice sistemas programables. Además, al ser uno de los primeros en aparecer, la mayoría de creadores de otros lenguajes lo utilizaron como base, por lo que conocer sus fundamentos, facilita el aprendizaje de más idiomas de programación.
Se usa para programar microcontroladores, para desarrollar sistemas operativos o programas que operan en tiempo real.

Java
Java es un lenguaje orientado a objetos, lo que quiere decir es que en su creación se trató de orientar a una forma similar al modo de  pensar humano. Permite desarrollar aplicaciones multiplataforma (funcionan tanto en plataforma UNIX como en Windows).
Basada en el concepto de máquina virtual.
Es un lenguaje compilado, generando ficheros de clases compilados, pero estas clases compiladas son en realidad interpretadas por la máquina virtual java. Siendo la máquina virtual de java la que mantiene el control sobre las clases que se estén ejecutando.
Es un lenguaje multiplataforma: El mismo código java que funciona en un sistema operativo funcionará en cualquier otro sistema operativo que tenga instalada la máquina virtual java.
Es un lenguaje seguro: La máquina virtual al ejecutar el código java realiza comprobaciones de seguridad, además el propio lenguaje carece de características inseguras, como por ejemplo los punteros.
Gracias al API de java podemos ampliar el lenguaje para que sea capaz de, por ejemplo, comunicarse con equipos mediante red, acceder a bases de datos, crear páginas HTML dinámicas, crear aplicaciones visuales al estilo Windows.

Objective-C
Objective-C es otro lenguaje muy utilizado, que surgió a principio de los 80 de la mano de Brad Cox y Tom Love. Como pequeña caracterización se puede decir que es una ampliación de C, C++ (que a su vez tiene similitudes bastante notables con C y del que hablaremos a continuación)  y Java, por lo que intentar asimilar sus conceptos básicos de inicio es muy complicado pero su aprendizaje conociendo estos lenguajes puede simplificarse por resultar familiar.



C++
Ligeramente posterior en el tiempo al anterior (en este caso, mediados de los 80), fue creado por Bjarne Stroustrup con el propósito de conseguir una aceptación y éxito que consiguió el lenguaje C, en el que se basó para crear C++. Se basa en una composición estructurada a objetos.
Quizá la principal diferenciación con su hermano mayor (lenguaje C) es que es algo más complejo de usar (también se suele utilizar en mayores estructuraciones), aunque queda un bloque más organizado debido al ya definido concepto de orientación a objetos. De hecho, puede que sea el lenguaje más utilizado junto a C en aplicaciones comerciales, programas y aplicaciones web como  Firefox, Chrome, Opera, Office, Visual Studio, Photoshop, Acrobat o Autocad, etc. y algunos juegos y sistemas operativos.

C#
C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes. Es un lenguaje de propósito general que se utiliza para desarrollar software para Microsoft y Windows, aunque con la aparición de nuevos compiladores, se ha estandarizado el uso también en el entorno de otras plataformas de Apple (iOS,Mac OS) y Android. 

Estos son según el ranking Tiboe los más utilizados en el curso pasado. Eso indica que son los más utilizados, pero no por ello los más útiles o los que ofrezcan una mayor funcionalidad. No se puede decir que un lenguaje de programación es mejor que otro de manera generalizada, sino que hay que valorarlo en función de la utilidad y practicidad que presente en el ámbito para el que esté desarrollado.

Esto nos lleva a hacernos una pregunta. ¿Cuál es el lenguaje de programación con más futuro? Obviamente es un tema tan subjetivo como difícil de determinar, porque con el avance de la tecnología, lo que hoy puede tener potencial, mañana puede estar desfasado. Probablemente y sin que se tome como una valoración demasiado contrastada, quizá el futuro esté en los lenguajes de desarrollo web.

En la actualidad en el entorno europeo destaca principalmente PHP.  Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera la página Web resultante. PHP ha evolucionado y es usado en la mayoría de los servidores web al igual que en casi todos los sistemas operativos y plataformas sin ningún costo. En Estados Unidos, para el mismo propósito, es más utilizado Python.

Si se pregunta por el que tiene más futuro (entendido como futuro muy cercano), para mí es JavaScript. Se diseñó con una sintaxis similar a C, aunque es más próximo a Java. Sin embargo, Java y JavaScript no están relacionados y tienen semánticas y propósitos diferentes. Tiene un gran número de aplicaciones, que van mucho más allá de lo que se cree, pues es una máquina muy potente que no sólo tiene aplicaciones para web como en sus inicios. Lo encontramos en muchos ámbitos, ya no solo en Internet y la Web, también es nativo en sistemas operativos para ordenadores como FirefoxOS o Blackberry 10, como lenguaje nativo en Windows 8 y dispositivos del lado del servidor y del cliente. Existe una gran demanda de profesionales con conocimientos avanzados de Javascript, necesarios para acometer cualquier proyecto en la web de última generación. De ahí que la destaquemos como el lenguaje con más futuro.

domingo, 5 de octubre de 2014

Información,documentación, y fuentes

Vivimos  en el siglo XXI, en plena era de la información. Gran cantidad de elementos de nuestra vida cotidiana como libros, ordenador, televisión, dispositivos portátiles… Todos ellos nos permiten tener acceso a innumerables fuentes para conseguir aquello que deseemos conocer, sea de la temática que sea, pues lo común es que todos los medios que prestan esta información estén especializados en la materia a tratar y hayan tenido una documentación previa para realizar su exposición. Información y documentación, dos conceptos que se van a tratar, sin excesiva profundidad, en las siguientes líneas, para una mayor comprensión de ambos conceptos, así como diferentes aspectos que pueden abarcar.

Lo primero es realizar una distinción entre unos términos que aunque se utilicen indistintamente en ciertos contextos de nuestra vida cotidiana, realmente no hacen referencia a una misma realidad. Vamos a especificar el significado de tres palabras relacionadas, pero no iguales, que son dato, información, y conocimiento.
Un dato va a ser nuestro punto de partida. Es la base, la parte “indivisible” de referencia. Es una letra, un número, una palabra… que por sí solo no constituye nada pero que en combinación con otros elementos u otros datos, dan lugar a una unidad mayor que denotamos como información. Por así decirlo, información es un conjunto de datos ordenados y ubicados en un determinado contexto que le otorguen sentido a dichos datos.
El siguiente nivel es el conocimiento es una unión de los dos términos previamente definidos. Consiste en el trato y comprensión de datos e información y ser capaz con ello de darle una utilidad y poder usarlo como medio para la resolución de situaciones y toma de decisiones. Por último, la correcta aplicación de este conocimiento mediante el análisis y la reflexión, es lo que nos lleva a la sabiduría.


Como ya se ha hablado antes, vivimos en la era tecnológica, que nos permite tener acceso a multitud de elementos que nos pueden informar de aquello que deseemos. Actualmente, la realidad más recurrente que nos relaciona con este contexto es internet. Tenemos a nuestra disposición una cantidad inmensa de medios que nos aportan datos sobre aquello de lo que queremos conocer, algo muy ventajoso e interesante, sobretodo si lo comparamos con el acceso a la información que teníamos, por poner un margen temporal, 15 años atrás. Sin embargo, no todo el monte es orégano, y la libertad para publicar cosas sin necesidad de medios editoriales en internet puede causar malas pasadas. No toda la información colgada en la red está contrastada, por lo que en algunos casos, la veracidad de dichas afirmaciones puede estar en entredicho por una mala objetividad en la fuente, o por una mala interpretación de dicha fuente que redacta una información partiendo de la base de otra. 

Referido a esto, al origen de la fuente distinguimos en distintos tipos de fuentes:
· Fuentes primarias: Son aquellas que emiten la información original de primera mano, redactada por primera vez y sin estar basada en ninguna otra fuente de información. Ejemplos: publicaciones, tesis, informes técnicos…
· Fuentes secundarias: Son aquellas que tienen como base las fuentes primarias y que reorganizan y sintetizan la información contenidas en ellas como resumen o interpretación para facilitar y maximizar el acceso a las fuentes primarias. Ejemplos: bibliografías, directorios, diccionarios…
· Fuentes terciarias: Son las que se fundamentan en las fuentes primarias y secundarias y facilitan al usuario la ubicación y obtención de la información. El ejemplo por excelencia de este tipo de fuente es internet y dentro de éste, cualquier tipo de buscador.

Una vez comentado el origen de la información, conviene incidir también levemente en el tratamiento y las diferentes fases por las que debe pasar  esta información. A este proceso se le conoce como cadena documental. Es  un conjunto de operaciones sucesivas de entrada, tratamiento y salida de información y de documentos  y se compone de cuatro fases: selección, búsqueda, análisis y difusión.

En primer lugar tenemos la selección de los archivos que nos interesen, en segundo lugar está el análisis de éstos para destacar la información más relevante y hallar las palabras clave, y luego la búsqueda, que gracias a la selección, nos resultará más fácil y eficiente. Por último está la difusión, paso importante ya que mediante la difusión podremos dar a conocer nuestra información y satisfacer las necesidades informativas de otros usuarios.

En todo esto se fundamenta la información y la documentación. Pero la información es infinita, por lo que siempre quedarán medios para seguir siendo informado. Esta entrada sólo puede servir como introducción. Si le ha resultado interesante la temática, puede siempre ceñirse a la gran cantidad de información que existe en bibliotecas, periódicos, internet... para conocer los entresijos de algo tan elemental y común en nuestras vidas como eso, la información.