Mostrando entradas con la etiqueta Language. Mostrar todas las entradas
Mostrando entradas con la etiqueta Language. Mostrar todas las entradas

viernes, 23 de febrero de 2024

¿Qué es la Inteligencia Artificial?

En la entrada intitulada "La Transformación Digital: Un Viaje hacia el Futuro de las Organizaciones" ya habíamos mencionado que, como parte de las primeras doce tecnologías con impacto a corto plazo que forman parte de la Transformación Digital está precisamente la Inteligencia Artificial. Comencemos entonces con este tema.

La Inteligencia Artificial (IA) es un campo de la informática que se centra en el desarrollo de sistemas y tecnologías que pueden realizar tareas que normalmente requieren inteligencia humana. En términos generales, la IA se refiere a la capacidad de las máquinas para simular funciones cognitivas humanas, como el aprendizaje, el razonamiento, la resolución de problemas, la percepción y la comprensión del lenguaje natural.

Características de la Inteligencia Artificial:

Aprendizaje: Los sistemas de IA pueden aprender de datos, experiencias pasadas y ejemplos para mejorar su desempeño en una tarea específica. Esto incluye el aprendizaje supervisado, no supervisado y por refuerzo.

Razonamiento y Resolución de Problemas: La IA puede realizar tareas de razonamiento lógico y resolver problemas complejos utilizando algoritmos y técnicas específicas, como la búsqueda heurística y la lógica difusa.

Percepción: Los sistemas de IA pueden percibir y entender el mundo que los rodea a través de sensores y dispositivos de entrada, como cámaras, micrófonos y sensores de movimiento. Esto les permite interpretar información visual, auditiva y táctil.

Procesamiento del Lenguaje Natural: La IA puede comprender y generar lenguaje natural, lo que le permite interactuar con los usuarios de una manera más natural. Esto incluye tareas como la traducción automática, el reconocimiento de voz y la generación de texto.

Toma de Decisiones: Los sistemas de IA pueden tomar decisiones autónomas basadas en datos y criterios predefinidos. Esto incluye la planificación, la optimización y la toma de decisiones en entornos dinámicos y complejos.


Aplicaciones de la Inteligencia Artificial:

La Inteligencia Artificial se utiliza en una amplia variedad de aplicaciones en diferentes sectores y campos. Algunos ejemplos incluyen:

Asistentes Virtuales: Como Siri de Apple, Alexa de Amazon y Google Assistant, que utilizan IA para comprender y responder a las consultas de los usuarios.

Vehículos Autónomos: Como los coches autónomos y drones, que utilizan IA para navegar de manera segura y eficiente en entornos cambiantes.

Cuidado de la Salud: Donde la IA se utiliza para el diagnóstico médico, la predicción de enfermedades y la personalización de tratamientos.

Finanzas: Donde la IA se utiliza para la detección de fraudes, el análisis de riesgos y la gestión de inversiones.

Comercio Electrónico: Donde la IA se utiliza para la recomendación de productos, la personalización de la experiencia del usuario y la detección de patrones de compra.


Desafíos y Consideraciones Éticas:

A pesar de sus beneficios, la IA también plantea desafíos y consideraciones éticas, como la privacida de los datos, la discriminación algorítmica, la seguridad cibernética y el impacto en el empleo. Es importante abordar estos desafíos de manera responsable y ética para garantizar que la IA se utilice de manera beneficiosa y equitativa para la sociedad.

Cierto es pues que la Inteligencia Artificial ya dejó de ser tan sólo una curiosidad de la que podemos platicar en un evento, en la oficina o en una tarde de copas y coplas. Hoy es un tema que está muy candente, sobre todo para todos los creativos en general.

Algo que sí queremos dejar claros es que la Inteligencia Artificial es una herramienta y no un fin en si mosmo. Como tal, nos puede servir para hacer cosas muy buenas o muy malas. Lo más importante pues es que nosotros los seres humanos la apliquemos precisamente para fines más creativos y elevados.

¿Yq utiliza Usted Inteligencia Artificial en su vida diaria?

martes, 22 de mayo de 2018

Chatbots. Guía para principiantes

Esta es la primera de una serie sobre Chatbots. En esta primera entrega, cubrimos los conceptos básicos que incluyen su breve historia tecnológica, usos, opciones de diseño básico y donde el aprendizaje profundo entra en juego. En artículos posteriores, describiremos con más detalle cómo están realmente programados y qué hacer y qué no hacer.

De acuerdo con Chatbot.org, actualmente hay 1,331 chatbots activos en el mundo. Eso es mucho para una tecnología que no existía hace dos o tres años.

  • 20% están en los EE. UU., 45% están en Europa Occidental y el Reino Unido, y aproximadamente 1% están en China.
  • Admiten la entrada en 31 idiomas. (Tenga en cuenta que algunas plataformas de desarrollo de chatbot admiten hasta 50 idiomas).
  • Los temas de consumo más populares son: finanzas y legales, 10%, y educación, aprendizaje y búsqueda, 6%, entre 27 categorías distintas, incluido el erótico 1%.
  • 96% de reconocimiento de texto de apoyo, 3% de reconocimiento de voz, 1% de reconocimiento de gestos.

No sabemos cuánto tiempo Chatbot.org podrá seguir indexando todos los chatbots, pero probablemente no por mucho tiempo dado su crecimiento explosivo. Los chatbots se están convirtiendo rápidamente en la interfaz de usuario de elección, y serán la forma dominante de comunicar nuestra necesidad de información y servicios con todo tipo de aplicaciones.

¿Qué es exactamente un Chatbot?

Para ser claros al nivel más simple, un chatbot es un servicio de software que permite a los usuarios tener una conversación en lenguaje natural en texto o voz, para devolver información o una acción.

Incluso los chatbots más simples son capaces de múltiples pasos de conversación, aunque algunas consultas pueden responderse con una sola respuesta (¿lloverá en Boston mañana?). Muchos están diseñados para tener una "conversación" estructurada o incluso no estructurada con el usuario, que busca aclaraciones adicionales y profundización para proporcionar más información o acción, sobre la información o el servicio solicitado (¿Se ha enviado mi paquete? ¿Cuándo llegará? Por favor envíeme un mensaje cuando ha sido entregado?).

En resumen, el chatbot debe proporcionar información es solo parte de su capacidad. Acciones como programar una cita o reservar un vuelo también son comunes para la categoría generalmente llamada asistentes personales.

Viendo hacia adelante

En diseño, la gran mayoría de los chatbots de hoy están impulsados por reglas y estructuras integradas por el programador. Sin embargo, la dirección del desarrollo es tener respuestas creadas a través de Inteligencia Artificial. Esto hace que los chatbots avanzados sean semi-autónomos y capaces de conversaciones largas, incluidas algunas áreas muy subjetivas como el asesoramiento psicológico (Andrew Ng anunció recientemente el lanzamiento de Woebot de Facebook, un chatbot que brinda asesoramiento psicológico individual para la depresión) o recomienda cómo para administrar mejor tu dinero.

Un poco de historia de una breve historia

Mientras que algunas personas señalarán desde chatbot Eliza a mediados de los años 60 o Clippy de MS Office97 de Microsoft, el hecho es que nuestra capacidad de procesar lenguaje natural con precisión comercialmente aceptable languideció por debajo del rango del 90% hasta 2015.

Fue en ese año que nuestro hardware y nuestro desarrollo de redes neuronales recurrentes con Grandes Memorias a Corto Plazo (Long Short Term Memory o LSTM) finalmente se rompió con una precisión del 95% al ​​99%. No es coincidencia que esto marque el lanzamiento de Alexa, Cortana, Siri y el Asistente de Google para nombrar solo a los más conocidos.

De acuerdo con una encuesta de más de 300 compañías que abarca desde pequeñas hasta grandes, realizadas a principios de 2017 por Mindbowser y Chatbots Journal:

  • El 25% de las empresas se enteró por primera vez de los chatbots en 2015.
  • El 60% de las empresas se enteró por primera vez de los chatbots en 2016.
  • El 54% de los desarrolladores trabajó por primera vez en chatbots en 2016.
  • 75% destinado a construir un chatbot en 2017.

Gartner cree que todavía estamos en una curva ascendente para los chatbots. Sin embargo, todos los principales proveedores de redes o redes sociales, incluidos Amazon, Google, IBM, Facebook, Microsoft, Slack, Twitter, Whatsapp, WeChat y una gran cantidad de independientes, ofrecen Kits de Desarrollo de Software (SDKs por sus siglas en inglés) fáciles de usar para desarrollar chatbots. El campo está evolucionando rápidamente tanto en términos de tecnología como de adopción. El servicio al cliente, las ventas, la mercadotecnia, el procesamiento de pedidos, las redes sociales, los pagos y la contratación son los principales objetivos con muchos más por venir.

Dos arquitecturas distintas para Chatbots

Hay dos arquitecturas distintas de chatbots que existen en la actualidad.

Chatbots de reglas: más del 90% de los chatbots existentes y la mayoría de los que se crearán en los próximos años, pertenecen a esta categoría de chatbots según las reglas programadas. Son relativamente simples y rápidos de construir, con estructuras lógicas de árbol de decisión o cascada de consultas y respuestas predefinidas. Si están bien diseñados, pueden manejar más del 95% de las consultas y deben tener un escape a un representante humano cuando fallen. La mayoría son mensajes de texto entrantes y salientes.


Chatbots de Inteligencia Artificial: estos chatbots usan motores de Aprendizaje Profundo para formular respuestas. No tienen estructuras rígidamente definidas y pueden aprender de su experiencia después de un entrenamiento inicial. Solo los chatbots en esta categoría son capaces de manejar entradas de conversación complejas y proporcionar salidas conversacionales de larga duración.


Es un poco engañoso decir que solo el segundo tipo depende de la Inteligencia Artificial (IA), ya que todos los chatbots confían en los motores de Comprensión del Lenguaje Natural (NLU) en su parte frontal, que se han desarrollado utilizando modelos de aprendizaje profundo Redes Neuronales Recurrentes (RNN)/Grandes Memorias a Corto Plazo (LSTM).

Para completar, si desea que su chatbot reciba o entregue respuestas habladas, necesitamos agregar algunos componentes. También mostraremos de dónde provienen los datos.


Si desea que su chatbot responda a la voz, deberá darle un comando de "despertar". Si solo es texto, entonces enviar el texto que se requiera para "despertar".

En los sistemas de voz, hay un componente adicional para el motor para Reconocimiento del Lenguaje Natural (Natural Language Understanding o NLU) que convierte la voz en texto y viceversa.

En los sistemas basados ​​en reglas o basados ​​en Inteligencia Artificial, deberá proporcionar los datos de respuesta de los sistemas internos o fuentes de datos externos, como estaciones meteorológicas.

También puede usar análisis predictivos precompilados, de la misma manera que en los sistemas de transmisión para hacer predicciones. Por ejemplo: '¿Cuántos días hay disponible el suministro de la parte X?', o por ejemplo '¿Cuándo llegará mi paquete?', o también 'No es probable que los envíos de pedidos lleguen a la fecha límite'. Por supuesto, si las respuestas son demasiado largas o detalladas como en la tercera pregunta de muestra, es mejor que construyas una página web o un tablero. Los chatbots están destinados a crear comodidad y acelerar las cosas, no a tomar el lugar de las páginas web.

Al decidir qué diseño usar, pruebe esta simple matriz de 2 X 2:


Conversaciones largas o cortas: si quiere que su chatbot pueda manejar una conversación extendida con muchas variables, entonces se debe usar el modelo generativo con Inteligencia Artificial. Un ejemplo podría ser: "¿Cuáles son todas mis opciones de vuelo (dentro de los siguientes dos o tres días) entre (Ciudad A y Ciudad B) en donde pueda obtener una clase ejecutiva? ¿Y cuál ofrece la tarifa de clase de negocios menos costosa?"

Las conversaciones cortas pueden ser comandos como "programar una reunión para xx ", o" quiero devolver esta compra",  lo que puede requerir varios pasos, pero cada uno requiere probablemente solo una breve búsqueda y referencia a reglas preestablecidas.

Dominio abierto o cerrado: cuanto más estrictamente pueda restringir la base de conocimiento que debe tener el robot de chat, es más probable que pueda utilizar la arquitectura basada en reglas simples. Si el dominio es extremadamente amplio, probablemente necesitará el modelo generativo de Inteligencia Artificial.

En el siguiente artículo de esta serie, analizaremos con más detalle el papel de Natural Language Understanding (NLU) y los componentes básicos programáticos utilizados tanto en chatbots basados en reglas como en basados en Inteligencia Artificial.

lunes, 9 de abril de 2018

Los 10 principales lenguajes de programación

Hace tiempo que no echábamos una mirada a los Lenguajes de Programación, para tener una idea de cuáles son los más populares y útiles. Aquí hay un vistazo a 10 lenguajes de programación que lo harán rico, popular e increíblemente atractivo. O tal vez solo lo ayuden a conseguir o conservar un trabajo, que de todos modos es mejor.

Las preguntas sobre los lenguajes de programación simplemente no desaparecerán. Los argumentos sobre cuál es el más popular, el más útil, el de más rápido crecimiento o el más insanamente diseñado son tan comunes en ciertos rincones del mundo tecnológico, ya que los argumentos sobre la importancia de las fases lunares son para los fanáticos de las estadísticas del béisbol.

Para los programadores, sin embargo, los argumentos se reducen a una simple pregunta: ¿Qué idioma me ayudará a ganar más dinero por el período más largo de tiempo? En el lenguaje de la economía, ¿en qué idioma la inversión de tiempo y aprendizaje traerá el mayor rendimiento?

No pretendemos ser asesores de inversiones, pero invertimos más que nuestro tiempo mirando diferentes sitios web que clasifican la popularidad y el uso (tanto relativo como absoluto) de los lenguajes de programación.

Ahora podemos observar las listas con cierto desapego. Ya no nos ganamos la vida como programadores, y los lenguajes que una vez utilizamos hace tiempo que han desaparecido de todas las listas menos esotéricas. Pero estamos muy interesado en lo que dicen las listas, porque creemos que los idiomas que importan dicen mucho sobre hacia dónde van la tecnología y los profesionales de las Tecnologías de la Información (TI).

La lista que hemos reunido aquí, se creó al observar más de media docena de listas separadas en la Web. Incluyendo el índice TIOBE, que calcula las calificaciones basadas en 25 motores de búsqueda; General Assembly, una empresa de educación de TI; PYPL, que analiza la frecuencia con la que se buscan los tutoriales en Google; CodeEval, que analiza cientos de miles de puntos de datos recopilados mediante el procesamiento de más de 1,2 millones de presentaciones de desafíos; y Tech.co, que es el lenguaje de programación más popular en GitHub; entre otros.

Algunas de las listas examinaban los anuncios de trabajo, otras en las búsquedas de capacitación y otras más, sobre la frecuencia con la que se enviaban programas en determinados idiomas para las ejecuciones de control de calidad. Eso significa que algunas de las listas eran todas de hoy, algunas sobre el mañana y algunas sobre lo que sucederá un año o más en el futuro. Lo fascinante es la cantidad de idiomas que eran comunes a todas las listas.

Así que ahí es donde dibujamos nuestra lista. Si apareció un idioma en todas las listas, entonces lo incluimos en nuestra lista. Hay algunos en la lista que no aparecían en todas las listas de fuentes, y hay algunas cosas que necesitamos saber en base a esa información.

Primero, la lista no tiene ninguna clasificación. Los primeros siete idiomas son tratados por igual, aparecieron en casi todas las listas que vimos. Los últimos tres son diferentes. Son más visionarios, por lo que tendían a provenir de listas que analizaban los idiomas que crecían rápidamente en uso o los idiomas que la gente quería aprender.

Ah, y una cosa más: aquí no nos estamos metiendo en todos los lenguajes de "scripting" versus el artículo de lenguajes "reales". Estos son todos los idiomas que hacen que los sistemas hagan cosas. Eso es suficiente. Tendremos el argumento del lenguaje de scripting más tarde.

Java

Nos encanta, lo odiamos, o ambas, Java no va a desaparecer pronto. Java tiene más de 20 años y ha sido uno de los lenguajes de programación más populares, si no el más, en Universidades Empresas en los últimos años.

La promesa de -"escribir una vez, correr a cualquier parte"- es poderosa y la mayoría de las aplicaciones comerciales, no se verán obstaculizadas por la debilidad relativa de Java al alcanzar la capa "Bare Metal" para el control. Si está buscando actualizar su estado económico y aún no tiene Java en su conjunto de habilidades, ciertamente debe estar en su lista de los "lenguajes a aprender".

Structured Query Language o SQL

SQL ha existido de una forma u otra, desde la década de los 70's y no va a ningún lado en el corto plazo. A pesar de que los grandes volúmenes de datos (Big Data), con todos sus lagos de datos no estructurados y muy diversos tipos de datos se están volviendo más importantes, la mayoría de los datos del mundo empresarial aún se almacenan en Bases de Datos Relacionales muy estructuradas. Y el lenguaje para realizar altas, bajas, cambios y consultas de la base de datos estructurada, es Structured Query Language o SQL.

No va a utilizar SQL fuera del ámbito de la base de datos, pero eso aún deja muchos desarrollos que las compañías pagarán. Incluso si nunca se convierte en un Administrador de Bases de Datos (DBA) importante, saber SQL dará sus frutos cuando necesite acceder a una base de datos en busca de información, para una aplicación más grande escrita en otro lenguaje.

Python

Python es uno de los lenguajes que muchos desarrolladores adoran y muchos otros adoran odiar. Es un lenguaje muy similar a un script, que tiene la gran ventaja de ser bastante compacto y en general, rápido de escribir. Con eso viene la desventaja de ser un lenguaje interpretado, con todos los problemas de seguridad y rendimiento potencial que conlleva. Muchas empresas ven la velocidad (y la ubicuidad) como razones para superar las preocupaciones de seguridad, y hay marcos muy sólidos que se ocupan de muchos problemas.

Dado que Python no es tan complejo como algunos de los lenguajes de programación "superiores", generalmente puede ser competente con una menor inversión de tiempo. Es una inversión que puede dar grandes dividendos a la hora de buscar el próximo desarrollo.

Javascript

Si confía en que nunca se le pedirá que escriba una aplicación basada en la Web, entonces puede ignorar Javascript de forma segura. Si existe la posibilidad de que una aplicación web (o, para ser honestos, una aplicación móvil) esté en su futuro, entonces tomarse el tiempo para aprender Javascript podría ser una inversión muy inteligente.

Javascript no es el tipo de lenguaje que utilizará para la programación del sistema o para escribir aplicaciones de análisis de dinámica de fluidos en una supercomputadora, pero es increíblemente popular y útil para lo que hace para agregar peso e interactividad al HTML. Es un lenguaje que no muestra ningún signo de desvanecimiento en la próxima media década.

C++

Cuando llega el momento de la programación del sistema o aplicaciones avanzadas de cualquier tipo, C++ sigue siendo el lenguaje que con más frecuencia se necesita para el trabajo. Este lenguaje que surgió de un preprocesador orientado a objetos para C, ha existido por más de 30 años y tiene la distinción de ser un idioma heredado y un idioma que todavía se enseña en una enorme cantidad de programas de informática en todo el mundo.

No es tan fácil de aprender como algunos de los lenguajes de scripting en la lista, pero hay poco que no puedas hacer con eso. Si la programación empresarial "seria" está en su lista de carrera, entonces C++ realmente debe estar en su lista de lenguages para aprender.

C#

Antes de que Microsoft se convirtiera en un promotor corporativo de estándares abiertos y software de código abierto, siguió su propio camino para muchas cosas. Una de esas cosas era C#, un lenguaje basado en C pero optimizado para el mundo Microsoft .NET. El marco de Microsoft todavía es utilizado por cientos de miles de aplicaciones y empresas en todo el mundo.

C# sigue siendo una forma efectiva y eficiente de escribir aplicaciones en ese marco. Hay suficientes similitudes entre C++ y C# para hacer que el cambio de uno a otro sea un esfuerzo moderado (en lugar de un re-aprendizaje completo), y la adherencia de C # a la Common Language Infrastructure lo hace flexible. Si su mundo de aplicaciones incluye una infraestructura de Microsoft, vale la pena agregar C# a su conjunto de habilidades.

PHP

No hay dudas al respecto, PHP es un lenguaje de scripting. De hecho, es un lenguaje de scripting muy ligado a las aplicaciones basadas en navegador. La cuestión es que hay muchas aplicaciones basadas en navegador y la historia indica que habrá muchas más en el futuro. PHP no es un lenguaje hermoso y elegante.

Es una cosa en expansión que creció de manera orgánica a lo largo de los años. Sin embargo, el hecho de que es complicado, no hay razón para que no puedas escribir un código efectivo y poder escribir ese tipo de código en PHP, puede hacerte muy, muy atractivo.

Swift

Swift es el lenguaje de programación de Apple para iOS y OSX, un lenguaje que recientemente (en la versión 2.2) ha convertido en código abierto. Ahora hay versiones de Swift disponibles para plataformas Linux y Microsoft, e IBM ha puesto Swift disponible en su Swift Sandbox.

Swift surgió de Objective-C, lo que significa que si has pasado algún tiempo en cualquiera de las variantes del lenguaje C, deberías poder elegir Swift bastante rápido. Incluso si no eres fanático de Apple, el soporte de IBM debería hacer que Swift se utilice en más y más entornos empresariales. Tener a Swift en su cartera debería ser una de esas cosas que rinde frutos en los años venideros.

Go

Go es uno de los idiomas más nuevos en esta lista, solo tiene una década de antigüedad en este momento. Lo que hace que Go sea un candidato para un idioma que debes aprender es que salió de Google, y es un poderoso aliado para cualquier idioma.

En cierto modo, Go es un lenguaje "clásico". Está compilado y con tecleo estático, y se remonta a idiomas como Fortran y C. Go está disponible en una amplia variedad de plataformas y muestra signos de crecimiento.

Este es un poco más accesible en comparación con la mayoría de los otros idiomas en la lista, porque invertir en aprender Go es dar un salto de fe de que va a ser adoptado por más empresas. Sin embargo, dada la trayectoria de crecimiento que ha seguido Google, ese no es el salto más riesgoso del mundo. Si tiene una caja de herramientas llena de los idiomas básicos, Go podría ser una adición muy interesante.

R

Si bien la mayoría de los otros idiomas en esta lista son lenguajes de propósito general, R está diseñado para el análisis de datos. La cuestión es que el análisis empresarial y Big Data están creciendo exponencialmente, por lo que si desea prepararse para aprovechar el crecimiento, entonces R es un lenguaje que debe aprender.

R no es nuevo, ya que ha existido por más de 20 años. Durante la mayor parte de ese tiempo, sin embargo, solo se conocía dentro de los mundos de estadística y análisis numérico. El crecimiento del mercado de inteligencia empresarial impulsó el crecimiento de R y ahora aparece con frecuencia en listas de idiomas en rápido crecimiento.

Si tiene los ojos puestos en los puestos de trabajo como "científico de datos", entonces podría hacer mucho peor que agregar R a su conjunto de habilidades de programación.

Entonces, esta es nuestra lista. Diez idiomas que son grandes, están creciendo, o ambos. ¿Cuántos de estos conoce? Más importante, ¿cuántos le gustaría saber (o le gustaría que los desarrolladores que contrata lo sepan)? Durante mucho tiempo creí que los programadores completos deberían tener más de un idioma en sus manos.

Al final es cierto que debemos ser expertos en al menos un lenguaje, pero en estos días la versatilidad es algo que resulta imperativo en las áreas de desarrollo de hoy.

martes, 21 de marzo de 2017

Los veinte lenguajes del 2017

Nada en este mundo puede funcionar, sin el software correspondiente. Esta aseveración era en los años setenta, simplemente impensable. Conforme el Cómputo y la Informática se popularizaron y se fueron convirtiendo por "motus propio" en un artículo de consumo, el Software tomó cada vez más preponderancia.

Hoy, sin Software es imposible imaginar nuestras vidas. Nuestras micro computadoras de bolsillo sin las "Apps", no son nada. Hoy hasta los Centros de Datos, ya están siendo definidos por Software. Pero el Software no es nada si no tenemos un L.enguaje de Programación (o de Cómputo) que le de vida, sustento.

¿Eres desarrollador? Entonces te interesa conocer el ránking de los lenguajes de programación más utilizados del mundo que la firma especializada TIOBE lleva publicando desde 2001. ¿Cuáles son los más populares en lo que llevamos de 2017? Eso es lo que vamos a responder en esta entrada.
TIOBE tiene registros que empiezan en junio de 2001 y terminan en el presente mes de marzo de 2017, ofreciendo, al menos supuestamente, una información puesta al día y ajustada a la actual situación del mercado de la programación. Por eso mismo, vamos a mencionar en esta ocasión cuáles son los 20 lenguajes de programación más populares de 2017, aunque posiblemente los que ocupan los primeros puestos no sorprendan a la mayoría.

  1. Scratch: Nacido con fines educacionales y de formación, este lenguaje se ha colado recientemente en el “Top 20” de TIOBE. Creado como software libre por MIT Media Labs, actualmente su repositorio almacena más de 20 millones de proyectos con un aumento constante en el número de usuarios que lo utiliza.
  2. Objetive-C: Hace dos años estaba en el “Top 3”, pero la aparición de Swift ha hecho que caiga en picado desde entonces. Siendo antes el lenguaje de programación de referencia para desarrollar para OS X/macOS e iOS, a día de hoy sigue teniendo bastantes apoyos y desarrolladores. Objetive-C es software libre y se puede compilar desde GCC.
  3. PL/SQL: PL/SQL es un lenguaje procedural (de ahí viene el PL) construido sobre SQL con el fin de crear aplicaciones y programas más complejas y potentes dentro de una base de datos. Creado por Oracle para su propio y potente SGBD privativo, a día de hoy casi todos los SGBD modernos incluyen una implementación de esta tecnología.
  4. MATLAB: Es uno de los software más utilizados por científicos e ingenieros. Se trata de un lenguaje privativo desarrollado por MathWorks. Su capa subyacente es una base sólida para procesar cálculos y cálculos computacionales sobre una matriz. Al contrario que otros lenguajes de programación, MATLAB también incluye un entorno de computación completo.
  5. Visual Basic: Creado en 1991 por Microsoft y declarado obsoleto en 2008, el Visual Basic original sigue siendo uno de los lenguajes más populares del mundo, gracias sobre todo a su base multipropósito y su facilidad de uso, lo cual hizo que muchas aplicaciones corporativas lo usasen.
  6. R: Se trata de un lenguaje con el foco puesto en entornos donde se usan computación de estadísticas y gráficos, siendo capaz de realizar cálculos computacionales numéricos a través de paquetes adicionales. Es Open Source y ha ayudado a organizaciones especializadas en la investigación y el desarrollo, pudiendo servir también a aquellos que son cautelosos con la propiedad intelectual y la gestión de datos.
  7. Go: Es un lenguaje creado por Google en 2007 y fue diseñado para construir aplicaciones de manera simple y rápida. Además de la fuerte contribución de la compañía, también tiene el apoyo de una extensa comunidad gracias a su naturaleza Open Source.
  8. Lenguaje ensamblador: Este más que veterano lenguaje de programación a bajo nivel es a menudo usado como capa intermedia entre los lenguajes a alto nivel y el código máquina. La demanda de programadores de ensamblador viene por la búsqueda de mejoras en el rendimiento y la capacidad de programar para una gran variedad de dispositivos con acceso directo a los registros, ofreciendo una flexibilidad única a través de las manipulaciones directas en el hardware.
  9. Swift: Sucesor de Objetive-C y creado por la misma Apple, está pensado para crear aplicaciones para la actual vasta gama de sistemas operativos del gigante de Cupertino, entre los cuales están iOS, macOS, watchOS y tvOS. Su intención es ser más flexible y amigable que Objetive-C a nivel de sintaxis. Está disponible para GNU/Linux.
  10. Ruby: Ruby y el framework Ruby on Rails siguen siendo una de las soluciones más populares a la hora de desarrollar aplicaciones web, aunque también la competencia de otras tecnologías como Node.js están mermando su popularidad.
  11. Perl: Se trata de una tecnología veterana, habiendo nacido en 1987 como una base sólida para sistemas web obsoletos y otros basados en Unix. Actualmente sigue estando muy activo y es muy utilizado por profesionales en seguridad, expertos en redes, data mining, análisis estadístico y automatización de scripts.
  12. Delphi/Object Pascal: Sucesor de Turbo Pascal, a día de hoy tiene un fuerte apoyo por parte de instituciones educacionales, además de ser muy usado en aplicaciones empresariales. Después de caerse del “Top 20” hace dos años, en 2017 ha vuelto con fuerza al “Top 10”.
  13. Visual Basic .NET: Se puede definir como el sucesor del Visual Basic original, formando parte del framework .NET de Microsoft. Aparte de ofrecer una fácil migración desde su predecesor, se trata de un lenguaje más o menos fácil de aprender y que tiene un gran apoyo por parte de programadores de la vieja escuela. Gracias al Proyecto Mono y a la liberación de .NET, es soportado hoy por muchos sistemas operativos.
  14. JavaScript: Apareció en 1995 para Netscape Navigator, se convirtió en el lenguaje de programación de referencia para la creación de webs dinámicas a nivel del cliente (el navegador). A día de hoy se puede combinar JavaScript con muchas tecnologías y es la base de otras como jQuery y de soluciones a nivel de servidor como Node.js.
  15. PHP: Es el lenguaje a nivel de servidor más usado en la web, acaparando el 82,5% de cuota a nivel mundial. También es conocida su larga trayectoria en combinación con MySQL, a pesar de ser compatible con todos los SGBD populares del mercado. El hecho de ser la base de WordPress y otros populares CMS ayuda mucho a su buena posición entre los lenguajes de programación.
  16. Python: Lenguaje sencillo, fácil de aprender y de propósito general empleado en muchos contextos, ya sea como lenguaje de scripts embebido, páginas web, automatización de tareas, aplicaciones de escritorio, gestión de datos científicos y mucho más. Soporta una gran cantidad de plataformas y es recomendable para empezar a aprender programación.
  17. C#: El lenguaje estrella de Microsoft. Siendo en un principio un lenguaje independiente, es también la gran estrella del framework .NET. Gracias al Proyecto Mono y a la liberación del código .NET está disponible actualmente para un gran número de sistemas operativos.
  18. C++: Otro viejo conocido. La “evolución” de C es a día de hoy uno de los lenguajes de programación más usados del mundo, siendo empleado en muchos contextos y para aplicaciones de todo tipo, incluido las de escritorio y motores de juegos como Unreal Engine. También es la base del framework multiplataforma Qt, que a su vez es la base de KDE.
  19. C: A pesar de haber protagonizado una espectacular remontada en en 2015, C ha caído en picado desde entonces, aunque manteniendo el segundo puesto. Se trata de un lenguaje potente pero obsoleto para muchos contextos actuales. A día de hoy se usa sobre todo para programación a bajo nivel y la creación de componentes en los cuales el rendimiento es un factor crítico, como el kernel Linux.
  20. Java: Lleva siendo, tradicionalmente, el lenguaje más popular del mundo desde hace muchos años, y no parece que nadie vaya a quitarle el puesto a corto plazo. Creado por Sun Microsystems y luego adquirido por Oracle, actualmente se trata de una plataforma Open Source multipropósito que puede ser utilizado en muchos sistemas, siendo también la base para el funcionamiento de populares sitios web como Linkedin.
¿Cuál es mejor? Todos y a la vez cualquiera de ellos. Al final la decisión es de quien realizará la Aplicación, además de tener en cuenta la plataforma de Hardware y Sistema Operativo en la que ejecutaremos ésta.

Hoy pues, reiteramos, no podemos vivir sin aplicaciones y por ende sin Software. La pregunta es: ¿Con cuál de los Lenguajes de Cómputo te sientes más cómodo al desarrollar?

viernes, 27 de septiembre de 2013

Java acelerado con las Graphics Processing Unit...

Java es un lenguaje de programación que actualmente se ejecuta en miles de millones de dispositivos en este planeta y fuera de él, pues Java fue la elección que han hecho las más importantes agencias espaciales para sus dispositivos que caminan, viajan o realizan cualquier actividad extra terrena.

El pasado día Lunes 23 de Septiembre de 2013 dentro del marco de la conferencia JavaOne, John Duimovich quien funge como Jefe de Tecnología de Java en IBM aseveró que -"...la aceleración con GPU ya viene a Java"-.


Duimovich hizo mención de que las GPU aceleradoras tienen un gran poder de cómputo, y aprovechar sus mejoras de rendimiento de 10x en flujos de trabajo con Java puede acelerar procesos de cómputo complejos que involucran grandes cantidades de datos.
Java y las GPU pueden abrir un mundo de nuevas oportunidades tanto para las GPU aceleradoras como para los programadores de Java.
Millones de desarrolladores se basan en el lenguaje de programación Java para la web 2.0, análisis de grandes datos y cómputo científico. Se usa ampliamente en frameworks distribuidos, como Apache Hadoop, gracias a su facilidad de programación, modularidad y soporte multiplataforma.
Duimovich mostró un ejemplo de aceleración en GPU en tarea de clasificación usando las librerías NVIDIA CUDA estándar que ya están disponibles:

La aceleración producida es asombrosa – ¡desde 2x hasta 48x más rápida!  Y estos beneficios son posibles en Java JDK 8 al tomar ventaja de las librerías CUDA para acelerar las librerías Java para operaciones paralelas.De acuerdo a Duimovich, IBM habilitará los runtimes de IBM en servidores basados en GPU aceleradoras para que puedan explorar la aceleración en cargas de trabajo ordinarias bajo las API existentes.
Esto le permitirá a millones de desarrolladores Java acelerar una amplia gama de aplicaciones usando las GPU aceleradoras – y lograr mejoras de rendimiento que mejorarán considerablemente la capacidad de las aplicaciones. Además, la aceleración le dará vida a una nueva generación de aplicaciones empresariales basadas en Java que no serían posibles sin las GPU.
Los casos de uso de aplicaciones Java aceleradas con GPU son casi infinitas: desde detección de fraude distribuido de alto rendimiento y análisis financiero, hasta análisis de video e imágenes en alto volumen y aplicaciones científicas modernas.
Duimovich también hizo mención de OpenPOWER, que es un nuevo ecosistema alrededor de la arquitectura POWER que brinda innovación en la plataforma al aprovechar el poder de los mercados abiertos y socios como NVIDIA.  El desarrollo de Java en GPU es solo uno en una serie de impactos dentro del anuncio de OpenPOWER.
Más información en el sitio web de IBM Java y de NVIDIA CUDA.
¿Sus aplicativos corren en Java?