Tag: lenguaje de programación

El pasado mes de agosto, el instituto IEEE (Institute of Electrical and Electronics Engineers) publicaba en Spectrum, el ranking anual sobre el Top Programming Languages 2021, donde se destacaba Python como el lenguaje de programación más popular en 2021. Según este estudio, Python se convierte en la plataforma «de facto» para las nuevas tecnología IT y la principal conclusión que se puede sacar de su constante predominio es que hay que aprender Python:

Learning the language well enough to use one of the vast number of libraries written for it is probably worth your time.

Aprender este lenguaje lo bastante bien como para poder usar una de las muchas bibliotecas escritas para él probablemente valga la pena

Python es una opción interesante para realizar todo tipo de programas que se ejecuten en cualquier máquina. Con este lenguaje podemos desarrollar software para app científicas, para comunicaciones de red, para app de escritorio con interfaz gráfica de usuario (GUI), para crear videojuegos, para smartphones, para Inteligencia Artificial, para automatización de tareas y por supuesto, para programación web. Su predominio que tiene mucho que ver con su versatilidad: lenguaje multiparadigma, al poder ser enfocado a varios estilos; y de código abierto, lo que permite que cualquiera pueda acceder a él. Actualmente, Python es el lenguaje de programación de referencia para grandes tecnológico como Google, Facebook o Netflix lo utilizan.

Por otro lado, cabe decir que muchas tareas siguen demandando soluciones especializadas como R, SQL y Matlab.  Así como, otros lenguajes generalistas también siguen siendo de peso en proyectos IT como son los que aparecen, junto a Python, en el top 5 del ranking:  Java, C, C++ y JavaScript.

ranking IEEE

FUENTE: https://spectrum.ieee.org/

Acerca del ranking…

La publicación Spectrum sobre  «Top Programming Languages 2021» tiene el objetivo de clasificar  docenas de lenguajes de programación en base a su popularidad. Se trata de un ranking interactivo: se puede filtrar excluyendo sectores que no sean relevantes para quien lo quiera visualizar (ej. filtar como «Web» o «Integrado»).  Las clasificaciones se crean ponderando y combinando 11 métricas de ocho fuentes: CareerBuilder, GitHub, Google, Hacker News, IEEE, Reddit, Stack Overflow y Twitter. El ranking, por defecto, posee unos filtros asociados preestablecidos por IEEE, pero si el usuario desea realizar su propio ranking, la publicación Spectrum ofrece la posibilidad de customizar los criterios de clasificación a través del botón «Create Custom Ranking», como se muestra en la siguiente imagen:

IEEE Spectrum filters

FUENTE: https://spectrum.ieee.org/

Este ránking de IEEE puede resultar un tanto polémico ya que se incluyen algunos «lenguajes» a los que no todos considerarían lenguajes de programación como tal, ejemplos de esto son: el puesto 9, HTML; y el puesto 11, Arduino. Según afirma su autor, , «adoptamos un enfoque pragmático para definir qué es un lenguaje de programación; HTML no puede ser de propósito general, pero creemos que sería una locura excluirlo sobre esa base. De la misma forma que se podría argumentar que el código Arduino simplemente está escrito en un subconjunto de C ++, pero eso no es lo que la gente busca cuando intentan que sus LEDs parpadeen«.

La vigésima edición de Developer Economics reveló en su estudio que JavaScript es el lenguaje de programación más popular con bastante diferencia, casi 14 millones de desarrolladores a nivel mundial (de 24,3 millones activos) frente al resto. Asimismo, se destaca a dos lenguajes de programación Rust y Lua que, a pesar de ser aún desconocidos, han sido los que más han crecido en los últimos 12 meses. Por este motivo, queremos ahondar más en Rust, un lenguaje de programación que además de su reciente crecimiento, grandes empresas como Facebook y Microsoft están interesados en él.

Antes de desglosaros qué ventajas posee este lenguaje de programación de sistemas de código abierto, veamos brevemente un poco cómo fue su origen. Rust nace gracias a Mozilla Firefox en el año 2006, de la mano de Graydon Hoare, quien buscaba un lenguaje que permitiese escribir un código tan rápido como C o C++, eliminando los inconvenientes con el recolector de basura (garbage recollector) con el fin de evitar los problemas derivados de la gestión de memoria. Rust comienza a evolucionar gracias al impulso de Firefox y de un gran número de contribuidores de la comunidad. Sin embargo, debido a algunos problemas de capital de la compañía para asumir el proyecto, los responsables de Rust deciden independizarse creando una fundación homónima. Así nace la Fundación Rust en 2010, una nueva organización sin ánimo de lucro cuyo objetivo es dirigir y apoyar el desarrollo del lenguaje de programación Rust y su ecosistema. En la actualidad, Rust está financiada por grandes entidades como Amazon AWS, Microsoft Azure, Google Cloud, Facebook y, desde sus inicios, Mozilla Firefox.

¿Qué ventajas vienen de la mano de Rust?

Interoperabilidad fácil y segura de Rust con C++

Existe una gran cantidad de código C++ que es necesario para comunicarse con los sistemas de back-end en los que se basan los servicios. Por lo que es necesario que los desarrolladores puedan utilizar estas bibliotecas de forma segura y sencilla sin sacrificar los beneficios que ofrece Rust. Además, si se desea ver los componentes de Rust integrados con los binarios de C++ más grandes, se necesita una interoperabilidad inteligente en tiempo de ejecución en código asincrónico.

Asegurar una excelente gestión de memoria

Tal como hemos comentado antes, Rust  garantiza la seguridad de la memoria sin un recolector de basura. Si se llena una memoria, se produce un error en el sistema y, por lo tanto, una brecha que puede ser explotada. Un «garbage recollector» asegura que los objetos innecesarios desaparezcan de la memoria pero, claro está, esto hace que la ejecución del cogido se ralentice. Sin embargo, Rust somprueba si puede haber errores en la memoria en tiempo de compilación por lo que el recolector de basura se queda obsoleto.

Alta velocidad y lenguajes de alto nivel. No afecta al rendimiento.

Al igual que Co C++, el lenguaje Rust está muy cerca del hardware, lo que garantiza una alta velocidad. Adicionalmente, gracias al compilador de este, se cumplen convenientemente las garantías de seguridad del resto de las validaciones que conllevan que este lenguaje sea eficiente y seguro. Si te preguntas si estas sólidas medidas de seguridad provocan una bajada del rendimiento, la respuesta es que no.  Esto se debe, como hemos dicho, a la ausencia del recolector de basura pero también debido a que Rust permite programar de manera abstracta sin afectar el rendimiento.

Fácil uso

Por último, tanto los programadores con menos conocimientos, como los profesionales, pueden aprender a utilizar Rust rápidamente. En términos de uso, el lenguaje apenas difiere de las alternativas más conocidas. Una gran ventaja es su elaborado sistema de emisión de mensajes de error: donde otros lenguajes de programación solo generan avisos crípticos, Rust proporciona consejos aplicables para solucionar los errores.

¿Quieres aprender más de Rust?

Rust cuenta con una excelente documentación en su web oficial con recursos totalmente guiados, diversos ejercicios a modo de ejemplo en su site oficial en Github y múltiples recursos en su canal oficial en Youtube.

¿Por qué está creciendo tan rápido en el ultimo año?

Probablemente, el apoyo por parte de Facebook como miembro Platinum en la Fundación Rust y el lanzamiento de «Rust for Windows’ por parte de Azure, sean indicadores que existe un interés en la comunidad de implementar este lenguaje de programación.

Lo más significativo de «Rust for Windows» es que, no sólo ofrece un ‘crate’ (componente) que permite al software desarrollado en Rust comunicarse con cualquier API de Windows, sino que lo acompaña de todo un pack de herramientas para desarrollar con Rust en Windows. Microsoft está trabajando para buscar las características de seguridad de memoria de Rust para crear un nuevo lenguaje para la programación de infraestructura segura bajo el Proyecto Verona. La versión para Windows del compilador de Rust está disponible en la web, pero si vamos a usar ‘Rust for Windows’ necesitaremos usarlo conjuntamente con Visual Studio o con Visual Studio Code (acompañado, en este último caso, de las extensiones Rust-Analyzer y CodeLLDB).

 

  • Os recomendamos un framework de Machine Learning de código abierto y multi-plataforma para C#
  • ML.NET ofrece la posibilidad de agregar el aprendizaje automático en aplicaciones de .NET, ya sea en escenarios on line o sin conexión

machine learning mlnet

¿Qué es ML.NET?

ML.NET ofrece la posibilidad de agregar el aprendizaje automático en aplicaciones de .NET, ya sea en escenarios on line o sin conexión. Con esta funcionalidad, es posible realizar predicciones automáticas usando los datos disponibles para la aplicación sin tener que estar conectado a una red.

Aprendizaje automático en ML.NET, ¿qué predicciones puede hacer?

Algunos ejemplos del tipo de predicciones que puede hacer con ML.NET son los siguientes: 

  1. Clasificación y categorización. Por ejemplo, clasificar automáticamente los comentarios de clientes en positivos y negativos
  2. Valores continuos de regresión y predicción. Por ejemplo, predecir el precio de la vivienda según el tamaño y la ubicación
  3. Detección de anomalías. Por ejemplo, detectar fraudes en transacciones bancarias
  4. Recomendaciones. Por ejemplo, realizar sugerencias de productos al consumidor on line en función de sus compras anteriores

ML.NET ofrece Model Builder (una herramienta de interfaz de usuario simple) y ML.NET CLI para que sea muy fácil crear modelos de aprendizaje automático personalizados. Estas herramientas utilizan Automated ML (AutoML), una tecnología de vanguardia que automatiza el proceso de creación de modelos con el mejor rendimiento para su escenario de Machine Learning. Lo único que se necesita es cargar tus dato y AutoML se encarga del resto del proceso de construcción del modelo.

¿En qué se caracteriza ML.NET?

  • Extendido con TensorFlow y otros..  ML.NET ha sido diseñado como una plataforma extensible para que se pueda consumir otros framework de aprendizaje automático populares tales como TensorFlow, ONNX, Infer.NET, entre otros; y tener acceso a más escenarios de machine learning, como clasificación de imágenes, detección de objetos, etc.
  • Alto rendimiento y precisión. Utilizando un conjunto de datos de revisión de Amazon de 9GB, ML.NET entrenó un modelo de análisis de sentimientos con un 95% de precisión. Otros framworks de aprendizaje automático populares no pueden procesar el conjunto de datos debido a errores de memoria. La capacitación en el 10% del conjunto de datos, para permitir que todos los framworks completen la capacitación, ML.NET ha supuesto la mayor velocidad y precisión.

¿Quieres saber más? Puedes consultar todos los tutoriales, ejemplos de código, referencia de API y otra documentación en la web de docs.microsoft.com