{"id":108413,"date":"2023-05-08T12:48:42","date_gmt":"2023-05-08T10:48:43","guid":{"rendered":"https:\/\/prohoster.info\/?p=108413"},"modified":"2023-05-08T16:10:08","modified_gmt":"2023-05-08T14:10:08","slug":"sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","title":{"rendered":"El creador de LLVM desarrolla un nuevo lenguaje de programaci\u00f3n llamado Mojo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Chris Lattner, fundador y arquitecto principal de LLVM, as\u00ed como creador del lenguaje de programaci\u00f3n Swift, y Tim Davis, exjefe de proyectos de IA en Google, como TensorFlow y JAX, han presentado un nuevo lenguaje de programaci\u00f3n llamado Mojo, que combina la facilidad de uso para el desarrollo de investigaciones y la creaci\u00f3n r\u00e1pida de prototipos con la adecuaci\u00f3n para la formaci\u00f3n de productos finales de alto rendimiento. Esto se logra gracias al uso de la sintaxis familiar del lenguaje Python, y lo segundo por su capacidad de compilar a c\u00f3digo m\u00e1quina, mecanismos de gesti\u00f3n segura de la memoria y el empleo de recursos para la aceleraci\u00f3n hardware de c\u00e1lculos.    <\/p>\n<p>El proyecto se centra en el uso para desarrollos en el campo del aprendizaje autom\u00e1tico, pero se presenta como un lenguaje de prop\u00f3sito general, que ampl\u00eda las capacidades del lenguaje Python mediante medios de programaci\u00f3n de sistemas y es adecuado para una amplia gama de tareas. Por ejemplo, el lenguaje se aplica en \u00e1reas como c\u00f3mputo de alto rendimiento, procesamiento y transformaci\u00f3n de datos. Una caracter\u00edstica interesante de Mojo es la posibilidad de usar el s\u00edmbolo emoji &#171;&#128293;&#187; como extensi\u00f3n para archivos de c\u00f3digo (por ejemplo, &#171;helloworld.&#128293;&#187;), adem\u00e1s de la extensi\u00f3n de texto &#171;.mojo&#187;.       <\/p>\n<p>Actualmente, el lenguaje se encuentra en una fase de desarrollo intensivo y solo se ha propuesto una interfaz en l\u00ednea para pruebas. Se prometen versiones separadas para su ejecuci\u00f3n en sistemas locales m\u00e1s adelante, tras recibir comentarios sobre el funcionamiento del entorno web interactivo. Los textos fuente del compilador, JIT y otros desarrollos relacionados con el proyecto se espera abrirlos una vez que se complete el dise\u00f1o de la arquitectura interna (el modelo de desarrollo de un prototipo de trabajo a puerta cerrada recuerda las etapas iniciales de LLVM, Clang y Swift). Dado que la sintaxis de Mojo se basa en Python y su sistema de tipos es similar al de C\/C++, se planea desarrollar herramientas para facilitar la migraci\u00f3n de proyectos existentes escritos en C\/C++ y Python a Mojo, as\u00ed como para el desarrollo de proyectos h\u00edbridos que combinen c\u00f3digo de Python y Mojo.        <\/p>\n<p>El proyecto est\u00e1 dise\u00f1ado para aprovechar los recursos de hardware disponibles en sistemas heterog\u00e9neos para realizar c\u00e1lculos. Por ejemplo, para ejecutar aplicaciones en el lenguaje Mojo y paralelizar c\u00e1lculos, se pueden utilizar GPU, aceleradores especializados para aprendizaje autom\u00e1tico y instrucciones de procesadores vectoriales (SIMD). Como raz\u00f3n para desarrollar un subconjunto separado del lenguaje Python en lugar de trabajar en la optimizaci\u00f3n del CPython existente, se menciona la orientaci\u00f3n hacia la compilaci\u00f3n, la integraci\u00f3n de capacidades de programaci\u00f3n de sistemas y el uso de una arquitectura interna fundamentalmente diferente que permite ejecutar c\u00f3digo en GPU y varios aceleradores de hardware. Al mismo tiempo, los desarrolladores de Mojo buscan mantener la compatibilidad con CPython tanto como sea posible.            <\/p>\n<p>Mojo puede usarse tanto en modo interpretaci\u00f3n con JIT como para compilar a archivos ejecutables (AOT, ahead-of-time). El compilador integra tecnolog\u00edas modernas de optimizaci\u00f3n autom\u00e1tica, almacenamiento en cach\u00e9 y compilaci\u00f3n distribuida. Los c\u00f3digos fuente en el lenguaje Mojo se transforman en un c\u00f3digo intermedio de bajo nivel MLIR (Multi-Level Intermediate Representation), desarrollado por el proyecto LLVM y que proporciona capacidades adicionales para optimizar el procesamiento del grafo de flujo de datos. El compilador permite utilizar diferentes backends que admitan MLIR para la generaci\u00f3n de c\u00f3digo m\u00e1quina.        <\/p>\n<p>La utilizaci\u00f3n de mecanismos de hardware adicionales para acelerar los c\u00e1lculos permite lograr un rendimiento que, en c\u00e1lculos intensivos, supera al de aplicaciones en C\/C++. Por ejemplo, al probar una aplicaci\u00f3n para generar m\u00faltiples conjuntos de Mandelbrot, la aplicaci\u00f3n compilada en el lenguaje Mojo, al ejecutarse en la nube de AWS (r7iz.metal-16xl), result\u00f3 ser 6 veces m\u00e1s r\u00e1pida que la implementaci\u00f3n en C++ (0.03 seg. frente a 0.20 seg.), as\u00ed como 35,000 veces m\u00e1s r\u00e1pida que la aplicaci\u00f3n en Python utilizando el CPython est\u00e1ndar 3.10.9 (0.03 seg. frente a 1027 seg.) y 1500 veces m\u00e1s r\u00e1pida con PYPY (0.03 seg. frente a 46.1 seg.).    <\/p>\n<p>Al evaluar el rendimiento en la resoluci\u00f3n de problemas de aprendizaje autom\u00e1tico, el stack de IA Modular Inference Engine, escrito en el lenguaje Mojo, se mostr\u00f3 tres veces m\u00e1s r\u00e1pido en un sistema con procesador Intel al procesar modelos de lenguaje, 6.4 veces m\u00e1s r\u00e1pido al ejecutar modelos de formaci\u00f3n de recomendaciones y 2.1 veces m\u00e1s r\u00e1pido al trabajar con modelos de procesamiento visual en comparaci\u00f3n con una soluci\u00f3n basada en la biblioteca TensorFlow. En procesadores AMD, el aumento al usar Mojo fue de 3.2, 5 y 2.2 veces, mientras que en procesadores ARM fue de 5.3, 7.5 y 1.7 veces, respectivamente. La soluci\u00f3n basada en PyTorch se qued\u00f3 atr\u00e1s frente a Mojo en un factor de 1.4, 1.1 y 1.5 en CPU Intel, 2.1, 1.2 y 1.5 en CPU AMD y 4, 4.3 y 1.3 en CPU ARM.      <center><img decoding=\"async\" alt=\"El creador de LLVM desarrolla un nuevo lenguaje de programaci\u00f3n llamado Mojo\" src=\"\/wp-content\/uploads\/2023\/05\/df2598980ce4ed179ec3042d500235db.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>          <\/p>\n<p>El lenguaje soporta tipado est\u00e1tico y herramientas para un manejo seguro de bajo nivel de la memoria, similares a las capacidades del lenguaje Rust, como el seguimiento de la vida \u00fatil de las referencias y la verificaci\u00f3n de pr\u00e9stamos de variables (borrow checker). Adem\u00e1s de las herramientas para un manejo seguro de punteros, el lenguaje tambi\u00e9n ofrece funcionalidades para trabajar a bajo nivel, como el acceso directo a la memoria en modo unsafe utilizando el tipo Pointer, la invocaci\u00f3n de instrucciones SIMD individuales o el acceso a extensiones hardware como TensorCores y AMX.    <center><img decoding=\"async\" alt=\"El creador de LLVM desarrolla un nuevo lenguaje de programaci\u00f3n llamado Mojo\" src=\"\/wp-content\/uploads\/2023\/05\/000b92c5bbb54eec64649b30a434be6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Para simplificar la separaci\u00f3n entre el c\u00f3digo cl\u00e1sico y el c\u00f3digo Python optimizado para funciones con definici\u00f3n de tipos expl\u00edcita para todas las variables, se propone usar una palabra clave separada &#171;fn&#187; en lugar de &#171;def&#187;. De manera similar, para clases, si es necesario empaquetar datos est\u00e1ticamente en memoria durante la compilaci\u00f3n (como en C), se puede usar el tipo &#171;struct&#187; en lugar de &#171;class&#187;. Tambi\u00e9n es posible importar m\u00f3dulos en lenguajes C\/C++, por ejemplo, para importar la funci\u00f3n cos de la biblioteca math se puede indicar &#171;from &#171;math.h&#187; import cos&#187;.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=59094\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Mojo, \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u0441 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432. \u041f\u0435\u0440\u0432\u043e\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":108414,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-108413","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c LLVM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Mojo | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-05-08T10:48:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-05-08T14:10:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47El creador de LLVM desarrolla un nuevo lenguaje de programaci\u00f3n Mojo | ProHoster","description":"Chris Lattner, fundador y arquitecto principal de LLVM, as\u00ed como creador del lenguaje de programaci\u00f3n Swift, y Tim Davis, exjefe de proyectos de IA de Google, como Tensorflow y JAX.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c LLVM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Mojo | ProHoster","og:description":"\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX.","og:url":"https:\/\/prohoster.info\/es\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2023-05-08T10:48:43+00:00","article:modified_time":"2023-05-08T14:10:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/108413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=108413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/108413\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/108414"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=108413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=108413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=108413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}