{"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\/da\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","title":{"rendered":"Skaberen af LLVM udvikler et nyt programmeringssprog, Mojo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Chris Lattner, grundl\u00e6gger og hovedarkitekt af LLVM, samt skaberen af programmeringssproget Swift, og Tim Davis, tidligere leder af AI-projekter hos Google som Tensorflow og JAX, pr\u00e6senterede det nye programmeringssprog Mojo, der kombinerer brugervenlighed til forskningsudvikling og hurtig prototypeudvikling med egnethed til at skabe h\u00f8jtydende slutprodukter. Dette opn\u00e5s ved at udnytte den velkendte syntaks fra Python, mens det andet opn\u00e5s gennem muligheder for kompilering til maskinkode, mekanismer for sikker hukommelsesh\u00e5ndtering og aktivering af hardwareacceleration for beregninger.    <\/p>\n<p>Projektet fokuserer p\u00e5 brugen inden for udvikling af maskinl\u00e6ring, men pr\u00e6senteres samtidig som et generelt form\u00e5lssprog, der udvider Python-sprogets funktionalitet med systemprogrammeringsmetoder og er velegnet til en bred vifte af opgaver. For eksempel kan sproget anvendes inden for omr\u00e5der som h\u00f8jtydende beregninger samt behandling og konvertering af data. En interessant funktion ved Mojo er muligheden for at angive emoji-symbols &#171;&#128293;&#187; som en filudvidelse til kodefiler (for eksempel &#171;helloworld.&#128293;&#187;), ud over den tekstbaserede udvidelse &#171;.mojo&#187;.       <\/p>\n<p>I \u00f8jeblikket er sproget under intensiv udvikling og tilbydes kun gennem en online gr\u00e6nseflade til testning. Adskilte builds til k\u00f8rsel p\u00e5 lokale systemer forventes offentliggjort senere, efter at der er indhentet feedback p\u00e5 det interaktive webmilj\u00f8. Kildekoden til compileren, JIT og andre relaterede projektarbejder planl\u00e6gges at blive \u00e5bnet efter designet af den interne arkitektur er afsluttet (udviklingsmodellen af den arbejdende prototype bag lukkede d\u00f8re minder om den tidlige fase af udviklingen af LLVM, Clang og Swift). Da Mojo's syntaks er baseret p\u00e5 Python, og typesystemet er t\u00e6t p\u00e5 C\/C++, planl\u00e6gges det i fremtiden at udvikle v\u00e6rkt\u00f8jer til at forenkle overgangen til Mojo fra eksisterende projekter skrevet i C\/C++ og Python, samt til udvikling af hybride projekter, der kombinerer kode skrevet i Python og Mojo.        <\/p>\n<p>Projektet er designet til at udnytte de eksisterende hardware-ressourcer i heterogene systemer til udf\u00f8relse af beregninger. For eksempel kan GPU'er, specialiserede acceleratorer til maskinl\u00e6ring og vektorprocessor-instruktioner (SIMD) anvendes til at k\u00f8re applikationer skrevet i Mojo og til parallelisering af beregninger. En af \u00e5rsagerne til udviklingen af et s\u00e6rskilt underensemble af Python-sproget, frem for at optimere det eksisterende CPython, n\u00e6vnes at v\u00e6re fokus p\u00e5 kompilering, integration af systemprogrammeringsmuligheder samt anvendelse af en fundamentalt anderledes intern arkitektur, der muligg\u00f8r k\u00f8rsel af kode p\u00e5 GPU'er og forskellige hardwareacceleratorer. Samtidig har udviklerne af Mojo til hensigt at fastholde kompatibilitet med CPython, s\u00e5 vidt muligt.            <\/p>\n<p>Mojo kan anvendes b\u00e5de i fortolkningsmodus med JIT samt til kompilering til eksekverbare filer (AOT, ahead-of-time). Kompilatoren indeholder moderne teknologier til automatisk optimering, caching og distribueret kompilering. Kildekoder i Mojo-sproget konverteres til lavniveau mellem-kode MLIR (Multi-Level Intermediate Representation), som udvikles af LLVM-projektet og giver yderligere muligheder for optimering af behandlingen af datastreams. Kompilatoren tillader brug af forskellige backend-systemer, der underst\u00f8tter MLIR, til at generere maskinkode.        <\/p>\n<p>Brugen af ekstra hardware-mekanismer til at accelerere beregninger g\u00f8r det muligt at opn\u00e5 ydeevne, der ved intensive beregninger overg\u00e5r applikationer skrevet i C\/C++. For eksempel viste et testprogram til generering af et Mandelbrot-s\u00e6t, at en kompilering af applikationen skrevet i Mojo, n\u00e5r det blev k\u00f8rt i AWS (r7iz.metal-16xl), var seks gange hurtigere end implementeringen i C++ (0,03 sek. mod 0,20 sek.), samt 35.000 gange hurtigere end applikationen i Python med standard CPython 3.10.9 (0,03 sek. mod 1027 sek.) og 1500 gange hurtigere end ved brug af PYPY (0,03 sek. mod 46,1 sek.).    <\/p>\n<p>N\u00e5r man vurderer ydeevnen i forbindelse med opgavel\u00f8sning inden for maskinl\u00e6ring, viste AI-stakken Modular Inference Engine, der er skrevet i Mojo, sig at v\u00e6re 3 gange hurtigere end l\u00f8sningen baseret p\u00e5 TensorFlow p\u00e5 en Intel-processor ved behandling af sprogmodeller, 6,4 gange hurtigere ved udf\u00f8relse af anbefalingsmodeller og 2,1 gange hurtigere ved arbejde med modeller til billedbehandling. Ved brug af AMD-processorer var gevinsten ved brug af Mojo henholdsvis 3,2, 5 og 2,2 gange, mens den ved brug af ARM-processorer var 5,3, 7,5 og 1,7 gange. L\u00f8sningen baseret p\u00e5 PyTorch var bagud i forhold til Mojo med 1,4, 1,1 og 1,5 gange p\u00e5 Intel CPU, 2,1, 1,2 og 1,5 gange p\u00e5 AMD CPU, og 4, 4,3 og 1,3 gange p\u00e5 ARM CPU.      <center><img decoding=\"async\" alt=\"Skaberen af LLVM udvikler et nyt programmeringssprog, Mojo\" src=\"\/wp-content\/uploads\/2023\/05\/df2598980ce4ed179ec3042d500235db.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>          <\/p>\n<p>Sproget underst\u00f8tter statisk typisering og v\u00e6rkt\u00f8jer til sikker lavniveau-h\u00e5ndtering af hukommelse, der minder om funktioner i sproget Rust, s\u00e5som livstidsoverv\u00e5gning af referencer og kontrol af variabell\u00e5n (borrow checker). Udover v\u00e6rkt\u00f8jer til sikker h\u00e5ndtering af pointere er der ogs\u00e5 muligheder for lavniveau-manipulation, s\u00e5som direkte adgang til hukommelse i unsafe tilstand ved hj\u00e6lp af typen Pointer, udf\u00f8relse af separate SIMD-instruktioner eller adgang til hardwareudvidelser som TensorCores og AMX.    <center><img decoding=\"async\" alt=\"Skaberen af LLVM udvikler et nyt programmeringssprog, Mojo\" src=\"\/wp-content\/uploads\/2023\/05\/000b92c5bbb54eec64649b30a434be6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>For at forenkle adskillelsen af klassisk og optimeret Python-kode for funktioner med eksplicit typeangivelse for alle variabler er det foresl\u00e5et at bruge et separat n\u00f8gleord &#171;fn&#187; i stedet for &#171;def&#187;. Ligeledes kan der for klasser, ved behov for statisk pakning af data i hukommelsen under kompilering (som i C), anvendes typen &#171;struct&#187; i stedet for &#171;class&#187;. Derudover er det muligt at importere moduler p\u00e5 C\/C++ sprog, for eksempel kan man angive &#171;from &#171;math.h&#187; import cos&#187; for at importere funktionen cos fra matematikbiblioteket.<br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Skaberen af LLVM udvikler et nyt programmeringssprog Mojo | ProHoster","description":"Chris Lattner, grundl\u00e6gger og hovedarkitekt af LLVM, samt skaberen af programmeringssproget Swift, og Tim Davis, tidligere leder af AI-projekter hos Google, herunder TensorFlow og JAX.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/108413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=108413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/108413\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/108414"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=108413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=108413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=108413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}