{"id":22288,"date":"2020-07-24T06:56:16","date_gmt":"2020-07-24T04:56:16","guid":{"rendered":"https:\/\/savinol.sg-host.com\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/"},"modified":"2020-07-24T06:56:16","modified_gmt":"2020-07-24T04:56:16","slug":"usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi","status":"publish","type":"post","link":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/","title":{"rendered":"Usare il deep learning per tradurre il codice in altri linguaggi"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Non tutti i programmatori hanno avuto la necessit\u00e0 di dover effettuare la traduzione di un codice scritto in un certo linguaggio di programmazione X, in un altro linguaggio Y. Ed in effetti, questo tipo di necessit\u00e0 \u00e8 oggi spesso bypassata incapsulando il codice \u201clegacy\u201d all\u2019interno di moduli che espongono poi API per l\u2019accesso ai servizi specifici da esso offerti. \u00c8 un tipico esempio di <strong>architettura a microservizi<\/strong> (<em>microservices<\/em>), ed \u00e8 spesso utile soprattutto in applicazioni web che non richiedono livelli di efficienza particolarmente elevati.<\/p>\n<p>Tuttavia, non sempre ci si pu\u00f2 affidare a questo tipo di approccio. In alcuni contesti, pu\u00f2 essere infatti necessario ottenere un nuovo codice sorgente che di fatto consista nella \u201ctraduzione\u201d di un codice scritto in un altro linguaggio. Un tipico esempio potrebbe essere quello di <strong>COBOL<\/strong>, recentemente salito in cima alle tendenze dei principali social network per via delle numerose richieste e la scarsa disponibilit\u00e0 di programmatori skillati. Un linguaggio molto obsoleto comporta, infatti, la difficolt\u00e0 nel reperire l\u2019adeguato personale che sia in grado di manutenere opportunamente i sorgenti.<\/p>\n<h2>TransCoder: tradurre il codice C++, Java e Python<\/h2>\n<p>In questo contesto nasce e si sviluppa un interessante progetto portato avanti da <strong>Facebook AI<\/strong>, che prende il nome di <strong>TransCoder<\/strong>. Si tratta di un sofisticato algoritmo di <strong>machine learning<\/strong> che \u00e8 in grado di automatizzare il processo di traduzione da un linguaggio ad un altro. Pi\u00f9 in particolare, l\u2019attuale implementazione (che si basa su quanto pubblicato su un articolo scientifico molto tecnico, disponibile su <a href=\"https:\/\/arxiv.org\/pdf\/2006.03511.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Arxiv<\/a>) supporta la traduzione tra i linguaggi <a href=\"https:\/\/www.html.it\/guide\/guida-c2\/\">C++<\/a>, <a href=\"https:\/\/www.html.it\/guide\/guida-java\/\">Java<\/a> e <a href=\"https:\/\/www.html.it\/guide\/guida-python\/\">Python 3<\/a>.<\/p>\n<p>In base alle stime effettuate dal team di ricerca, l\u2019accuratezza di TransCoder dipende dai linguaggi di programmazione considerati. Ad esempio, la traduzione da Java a C++ \u00e8 effettuata correttamente nel 90% dei casi, mentre tale percentuale scende a circa il 75% quando si vuole effettuare la traduzione inversa. Le performance si riducono ulteriormente a poco meno del 69% considerando la traduzione da Java a Python (cosa non molto strana, se si pensa alla grande differenza tra questi due linguaggi, soprattutto se messa a confronto con le similitudini tra Java e C++).<\/p>\n<p>Chi pensa che tali percentuali possano non sembrare particolarmente elevate, si stupir\u00e0 di scoprire che gli altri metodi attualmente disponibili sul mercato non superano il 61%, mentre la migliore implementazione open source arriva appena al 38%.<\/p>\n<div class=\"boximg\"><span>Esempio di traduzione da Python a C++ realizzata mediante TransCoder (click per ingrandire)<\/span><a href=\"https:\/\/tbm-html.s3.amazonaws.com\/app\/uploads\/2020\/07\/translation-python-c.png\" class=\"fan_img\" rel=\"fan_group\"><img src=\"https:\/\/tbm-html.s3.amazonaws.com\/app\/uploads\/2020\/07\/translation-python-c.png\" alt=\"Esempio di traduzione da Python a C++ realizzata mediante TransCoder\"\/><\/a><\/div>\n<h2>Come funziona TransCoder<\/h2>\n<p>Una delle caratteristiche pi\u00f9 interessanti dell\u2019algoritmo alla base di TransCoder consiste nella modalit\u00e0 di apprendimento che esso sfrutta.<\/p>\n<p>Gli algoritmi di machine learning pi\u00f9 tradizionali si basano infatti su un processo detto di <strong>apprendimento supervisionato<\/strong> (<em>supervised learning<\/em>), in cui i parametri del modello vengono definiti sulla base di un insieme di addestramento che include, per ogni elemento, sia l\u2019input che l\u2019ouput atteso. Utilizzare un algoritmo di apprendimento supervisionato nel contesto per cui \u00e8 stato pensato TransCoder, significherebbe dover avere a disposizione una enorme quantit\u00e0 di snippet di codice scritto nei due linguaggi di input ed output. Sebbene esistono diversi dataset per i linguaggi di programmazione pi\u00f9 comuni, ve ne sono molti di meno per altri linguaggi (come COBOL). Ci\u00f2 nonostante, sono proprio i linguaggi legacy meno diffusi quelli a poter beneficiare in modo pi\u00f9 significativo delle capacit\u00e0 di TransCoder.<\/p>\n<p>Per risolvere questo problema, il team di Facebook AI ha pensato di realizzare un software basato su un approccio \u201c<strong>self-supervised<\/strong>\u201c. In altre parole, TransCoder richiede la conoscenza di un solo linguaggio di programmazione (quello di partenza), e sfrutta una procedura di classificazione automatica per \u201ccreare\u201d una sorta di insieme di addestramento intermedio, utilizzato poi per l\u2019apprendimento tramite deep learning.<\/p>\n<p>Questo approccio innovativo, se generalizzato ad altri contesti, potrebbe rivelarsi presto particolarmente proficuo anche per applicazioni completamente diverse.<\/p>\n<h2>Conclusioni<\/h2>\n<p>In questa sede non ci addentreremo maggiormente nei dettagli di TransCoder (che sono comunque ampiamente descritti in <a href=\"https:\/\/arxiv.org\/pdf\/2006.03511.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">questo articolo<\/a>). \u00c8 per\u00f2 evidente come questo sia l\u2019ennesimo esempio concreto della potenza del deep learning, e di quanto essa appaia tuttora parzialmente inespressa, con nuove idee di estrema potenza che vengono rilasciate con una cadenza quasi giornaliera.<\/p>\n<p><em>Fonte<\/em>: <a href=\"https:\/\/ai.facebook.com\/blog\/deep-learning-to-translate-between-programming-languages\" class=\"text-link text-link--special\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"underline\">Facebook AI<\/span><i class=\"ico-external\"\/><\/a><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"http:\/\/feedproxy.google.com\/~r\/htmlitedit\/~3\/BE7RquymVt8\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Non tutti i programmatori hanno avuto la necessit\u00e0 di dover effettuare la traduzione di un codice scritto in un certo linguaggio di programmazione X, in un altro linguaggio Y. Ed in effetti, questo tipo di necessit\u00e0 \u00e8 oggi spesso bypassata incapsulando il codice \u201clegacy\u201d all\u2019interno di moduli che espongono poi API per l\u2019accesso ai servizi&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":""},"categories":[37],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Usare il deep learning per tradurre il codice in altri linguaggi - AGENZIA WEB Italia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usare il deep learning per tradurre il codice in altri linguaggi - AGENZIA WEB Italia\" \/>\n<meta property=\"og:description\" content=\"Non tutti i programmatori hanno avuto la necessit\u00e0 di dover effettuare la traduzione di un codice scritto in un certo linguaggio di programmazione X, in un altro linguaggio Y. Ed in effetti, questo tipo di necessit\u00e0 \u00e8 oggi spesso bypassata incapsulando il codice \u201clegacy\u201d all\u2019interno di moduli che espongono poi API per l\u2019accesso ai servizi...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\" \/>\n<meta property=\"og:site_name\" content=\"AGENZIA WEB Italia\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-24T04:56:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tbm-html.s3.amazonaws.com\/app\/uploads\/2020\/07\/translation-python-c.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\"},\"headline\":\"Usare il deep learning per tradurre il codice in altri linguaggi\",\"datePublished\":\"2020-07-24T04:56:16+00:00\",\"dateModified\":\"2020-07-24T04:56:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\"},\"wordCount\":688,\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"articleSection\":[\"News\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\",\"name\":\"Usare il deep learning per tradurre il codice in altri linguaggi - AGENZIA WEB Italia\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\"},\"datePublished\":\"2020-07-24T04:56:16+00:00\",\"dateModified\":\"2020-07-24T04:56:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Usare il deep learning per tradurre il codice in altri linguaggi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"name\":\"AGENZIA WEB Italia\",\"description\":\"Web design Web agency Italia\",\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\",\"name\":\"Multimedia Web\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"contentUrl\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"width\":200,\"height\":57,\"caption\":\"Multimedia Web\"},\"image\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Usare il deep learning per tradurre il codice in altri linguaggi - AGENZIA WEB Italia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/","og_locale":"it_IT","og_type":"article","og_title":"Usare il deep learning per tradurre il codice in altri linguaggi - AGENZIA WEB Italia","og_description":"Non tutti i programmatori hanno avuto la necessit\u00e0 di dover effettuare la traduzione di un codice scritto in un certo linguaggio di programmazione X, in un altro linguaggio Y. Ed in effetti, questo tipo di necessit\u00e0 \u00e8 oggi spesso bypassata incapsulando il codice \u201clegacy\u201d all\u2019interno di moduli che espongono poi API per l\u2019accesso ai servizi...","og_url":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/","og_site_name":"AGENZIA WEB Italia","article_published_time":"2020-07-24T04:56:16+00:00","og_image":[{"url":"https:\/\/tbm-html.s3.amazonaws.com\/app\/uploads\/2020\/07\/translation-python-c.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"3 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/#article","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/"},"author":{"name":"admin","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42"},"headline":"Usare il deep learning per tradurre il codice in altri linguaggi","datePublished":"2020-07-24T04:56:16+00:00","dateModified":"2020-07-24T04:56:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/"},"wordCount":688,"publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"articleSection":["News"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/","name":"Usare il deep learning per tradurre il codice in altri linguaggi - AGENZIA WEB Italia","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website"},"datePublished":"2020-07-24T04:56:16+00:00","dateModified":"2020-07-24T04:56:16+00:00","breadcrumb":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/usare-il-deep-learning-per-tradurre-il-codice-in-altri-linguaggi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.nycwebdesign.eu\/webdesign\/"},{"@type":"ListItem","position":2,"name":"Usare il deep learning per tradurre il codice in altri linguaggi"}]},{"@type":"WebSite","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","name":"AGENZIA WEB Italia","description":"Web design Web agency Italia","publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization","name":"Multimedia Web","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","contentUrl":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","width":200,"height":57,"caption":"Multimedia Web"},"image":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42","name":"admin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","caption":"admin"}}]}},"_links":{"self":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22288"}],"collection":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/comments?post=22288"}],"version-history":[{"count":0,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22288\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/media?parent=22288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/categories?post=22288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/tags?post=22288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}