Mostrando entradas con la etiqueta libros de programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta libros de programación. Mostrar todas las entradas

miércoles, 4 de septiembre de 2013

Los modelos de programación cada vez más cerca del cerebro humano.


En concreto, IBM Research ha construido una arquitectura computacional compleja que permite saber lo que ocurre dentro de nuestro cerebro. Para ello,  ha creado un completo ecosistema computacional mediante simuladores de software que recrean los procesos de información que tienen lugar dentro del mismo. Este sistema se basa en neurochips que utilizan un nuevo lenguaje de programación y que permiten desarrollar aplicaciones sensoriales y cognitivas, es decir, que imitan las habilidades de percepción, acción y conocimiento de nuestro cerebro.
Como explican en IBM Research, en los prototipos de origen, cada núcleo neurosináptico tenía que ser programado, ahora, con las aplicaciones sensoriales, se creará un sistema de aplicaciones a través de los denominados “corelets”. Cada uno de ellos tiene una función determinada, pero, en combinación con otros, pueden crear sistemas más complejos. Por ejemplo, un “corelet” que permite captar el sonido, en combinación con otros, podría llegar a identificar los colores.
En definitiva, lo que IBM ha logrado con este avance es crear nuevos modelos de programación con los que se rompen los actuales esquemas secuenciales para dar lugar a arquitecturas distribuidas que están superconectadas, y que son asincrónicas y paralelas. Como explica el doctor Dharmendra S. Modha, principal investigador y responsable senior de IBM Research. “Estamos trabajando  en crear chips computacionales sinápticos, que lleven nuevas capacidades de programación y apliquen sistemas de aprendizaje emergentes”.
El proyecto consta fundamentalmente de un simulador de software escalable que recrea una arquitectura computacional cognitiva y que comprende una red neurosipnática; un modelo neuronal digital muy parametrizado que genera información fundamental como si fuera el cerebro y soporta determinadas computaciones neuronales, códigos y comportamientos;  un sistema de programación basado en los mencionados corelets; una librería que hace las veces de sistema cognitivo y un laboratorio que abarca todos los elementos anteriores.
El objetivo de IBM a largo plazo es el de crear chips de silicona que tengan una arquitectura inspirada en las funciones del cerebro, que sea de bajo consumo y que tenga un volumen compacto y que, claro está, imiten las capacidades de percepción, acción y cognición del cerebro.

Fuente | TICbeat
Más información | IBM Research

martes, 4 de septiembre de 2012

Desarrollo: Entendiendo la nube; el significado de SaaS, PaaS y laas

Cuando nos referimos a desarrollar aplicaciones en la nube tenemos que puntualizar de que manera lo vamos a hacer, ya que dentro del concepto nube existen distintas formas de hacerlo que nos permiten una mayor flexibilidad o sencillez a la hora de desplegar nuestras aplicaciones o mantenerlas. Entre estas distintas formas que puede adoptar la nube se encuentran: Software-as-a-Service (SaaS), Plataform-as-a-Service (PaaS) y Infraestructure-as-a-Service (IaaS).



Software-as-a-Service (SaaS)

El concepto de SaaS ha existido desde hace mucho tiempo, pero quizás en estos últimos años hemos definido claramente a que nos referimos. Básicamente se trata de cualquier servicio basado en la web. Tenemos ejemplos claros como el Webmail de Gmail, los CRM onlines. En este tipo de servicios nosotros accedemos normalmente a través del navegador sin atender al software. Todo el desarrollo, mantenimiento, actualizaciones, copias de seguridad es responsabilidad del proveedor.
En este caso tenemos poco control, nosotros nos situamos en la parte más arriba de la capa del servicio. Si el servicio se cae es responsabilidad de proveedor hacer que vuelva a funcionar.
Ejemplos populares de Saas son Google Docs, Salesforce, Dropbox, Gmail…

Plataform-as-a-Service (PaaS)

PaaS es el punto donde los desarrolladores empezamos a tocar y desarrollar nuestras propias aplicaciones que se ejecutan en la nube. En este caso nuestra única preocupación es la construcción de nuestra aplicación, ya que la infraestructura nos la da la plataforma.
Es un modelo que reduce bastante la complejidad a la hora de desplegar y mantener aplicaciones ya que las soluciones PaaS gestionan automáticamente la escalabilidad usando más recursos si fuera necesario. Los desarrolladores aun así tienen que preocuparse de que sus aplicaciones estén lo mejor optimizadas posibles para consumir menos recursos posibles (número de peticiones, escrituras en disco, espacio requerido, tiempo de proceso, etc..) Pero todo ello sin entrar al nivel de maquinas.
Ejemplos populares son Google App Engine que permite desarrollar aplicaciones en Java o Python desplegándolas en la infraestructura que provee Google, cosa que también hace Heroku con Rails y Django.
Para los desarrolladores que ignoran la infraestructura que deben montar y sólo quieren preocuparse de escribir software, esta es la alternativa a seguir.

Infraestructure-as-a-Service (IaaS)

En este caso con IaaS tendremos mucho más control que con PaaS, aunque a cambio de eso tendremos que encargarnos de la gestión de infraestructura,
El ejemplo perfecto es el proporcionado por Amazon Web Service (AWS) que no provee una serie de servicios como EC2 que nos permite manejar maquinas virtuales en la nube o S3 para usar como almacenamiento. Nosotros podemos elegir qué tipo de instancias queremos usar LInux o Windows, así como la capacidad de memoria o procesador de cada una de nuestras maquinas. El hardware para nosotros es transparente, todo lo que manejamos es de forma virtual.
La principal diferencia es que nosotros nos encargamos de escalar nuestras aplicaciones según nuestras necesidades, además de preparar todo el entorno en las maquinas (aunque existen imágenes de instancias preparadas con las configuraciones más comunes).
Además de AWS nos encontramos ejemplos como Rackspace Cloud o vCloud de VMWare.

Fuente | Genbetadev

miércoles, 15 de agosto de 2012

¿Y si Hemingway o Shakespeare hubieran sido programadores Javascript?

Antes se le llamaba verano, ahora, en los tiempos de la corrección política y la crisis del periodismo, se le llama ola de calor. Da igual la nomenclatura, lo cierto es que te sientes aplatanado y no tienes ganas de nada salvo, tal vez, leer alguna cosa curiosa que te saque una sonrisa. Pues para eso estamos aquí, donde hoy te traemos una lectura muy curiosa: el problema de la sucesión de Fibonacci resuelto en Javascript como si el código hubiera sido escrito por escritores del renombre de Hemingway, Shakespeare o Andre Breton. 

hemingway fibonacci
Si te gusta leer código y además eres aficionado a la buena literatura, seguro que el artículo original de donde hemos sacado este post (escrito por un desarrollador de JS trabajando en Twitter) te va a resultar toda una joyita ya que además del código, el autor explica muy bien porque piensa él que el código escrito por cada uno de los literatos sería así. También resulta un claro ejemplo de las infinitas formas que hay de resolver un problema, algo que las mentes cuadriculadas no terminan de comprender.

Pd: me imagino a George R. R. Martin sacrificando multitud de variables y a Tolkien metiendo comentarios descriptivos de decenas de líneas. El de Stephen King daría mucho miedo, desde luego.

Pd2: si alguno se anima, ya sabe: los comentarios están abiertos.

Vía y foto | byfat.xxx

lunes, 13 de agosto de 2012

Aprender de la arquitectura del mejor software Open Source

Para ser un buen desarrollador se debe ser humilde y reconocer el gran trabajo de otros colegas programadores. Muchas veces no observamos con suficiente atención el código de nuestros compañeros para sacar alguna enseñanza de cómo afrontaron el desarrollo de una aplicación. Es curioso, por ejemplo, los arquitectos sí que son muy dados a admirar el trabajo de los grandes maestros y compañeros observando cada detalle de la construcción de un edificio. ¿Por qué no nos fijamos en las grandes creaciones del software más a menudo los desarrolladores?.

Arquitectura Open Source
Conocer desde abajo los cimientos de un aplicación te ayuda a comprender cómo funciona, además de evitar que cometas algunos errores con los que el creador se encontró en el proceso de desarrollo. Bajo esa premisa surge un excelente proyecto condensado en dos completos libros: The Architecture of Open Source Applications, las aplicaciones más importantes Open Source (de la historia). Indudablemente deberían ser de estudio obligatorio en muchas facultades de informática.

El objetivo del proyecto es explicar cómo se estructuran, cuáles son los componentes principales de la aplicación, cómo interactúan y, sobre todo, qué aprendieron los creadores durante su desarrollo. Cada uno de los ejemplos, está escrito en colaboración con auténticos expertos y sus propios creadores.

Entre los proyectos diseccionados nos encontramos: Git, Puppet, GNU Mailman, Firefox Release Engineering, Selenium WebDriver, Mercurial, Integración Continúa, Hadoop, Moodle, Mediawiki, Eclipse, etc.. formando en total 50 proyectos de reconocido prestigio que forman parte en la mayoría de las veces del stack de software que usamos a diario.

Fuente | genbetadev