{"id":7239,"date":"2019-10-09T12:53:37","date_gmt":"2019-10-09T10:53:37","guid":{"rendered":"https:\/\/www.addlance.com\/blog\/?p=7239"},"modified":"2021-02-17T23:32:28","modified_gmt":"2021-02-17T22:32:28","slug":"linguaggi-di-programmazione","status":"publish","type":"post","link":"https:\/\/seven.addlance.com\/beta\/blog\/linguaggi-di-programmazione\/","title":{"rendered":"Linguaggi di Programmazione e Framework, i migliori su cui puntare oggi"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignright wp-image-7242 size-medium\" title=\"linguaggi di programmazione\" src=\"https:\/\/www.addlance.com\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione-300x255.jpg\" alt=\"linguaggi di programmazione\" width=\"300\" height=\"255\" srcset=\"https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione-300x255.jpg 300w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione-1024x869.jpg 1024w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione-768x652.jpg 768w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione-610x518.jpg 610w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione-1080x917.jpg 1080w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/linguaggi-di-programmazione.jpg 1152w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>La tecnologia, lo sappiamo, si evolve continuamente. Scegliere quali <strong>linguaggi di programmazione<\/strong> o<em> framework<\/em> imparare \u00e8 un <strong>investimento importante<\/strong> e in questo articolo cercher\u00f2 di darti degli spunti di riflessione sulle varie correnti che si stanno sviluppando in questo momento. Innanzi tutto, se sei un novizio, sappi che il mondo della programmazione richiede studio continuo. Questo \u00e8 possibile solo se c\u2019\u00e8 grande <strong>passione<\/strong>, <strong>curiosit\u00e0<\/strong> e <strong>voglia di imparare<\/strong>.<\/p>\n<p><!--more--><\/p>\n<h2>Cosa significa usare linguaggi di programmazione? Essere in grado di parlare con una macchina<\/h2>\n<p>Usare un <strong>linguaggio di programmazione<\/strong> significa parlare con una macchina. I linguaggi che ti far\u00f2 vedere sono tutti di alto livello, significa cio\u00e8 che sono strutturati per essere vicini al tuo modo di esprimere concetti e pi\u00f9 lontani dal basso livello che \u00e8 il dominio del <strong>linguaggio macchina binario<\/strong>. Il tuo codice verr\u00e0 tradotto da tutta una serie di intermediari, che dipendono dal linguaggio utilizzato, in linguaggio macchina. Un <strong><em>framework<\/em><\/strong> invece \u00e8 un modo in cui puoi utilizzare un determinato linguaggio. In italiano, <em>framework<\/em> pu\u00f2 essere tradotto come <em>intelaiatura<\/em> o <em>struttura <\/em>ed in effetti un <em>framework<\/em> costituisce una delle molteplici <strong>architetture logiche<\/strong> che si posso costruire utilizzando uno specifico linguaggio. Il vantaggio sta nella <strong>riusabilit\u00e0 del codice<\/strong>, in modo da risparmiare &#8211; a te programmatore &#8211; la riscrittura di codice gi\u00e0 scritto in precedenza e nel rendere pi\u00f9 facile il lavoro collaborativo.<\/p>\n<p>&nbsp;<\/p>\n<h2>Linguaggi di programmazione e framework. Ecco cosa richiede il mercato del lavoro<\/h2>\n<p>Sicuramente la richiesta riguarda per la maggior parte <strong>linguaggi di alto livello<\/strong> ed in particolare linguaggi che hanno a che fare con la <strong>rete<\/strong>, le <strong><em>app<\/em><\/strong> o la <strong>gestione dati<\/strong>, da diversi punti di vista.<\/p>\n<h3>1) Python, il linguaggio flessibile pi\u00f9 usato in ambito scientifico<\/h3>\n<p>E&#8217; un linguaggio che ha fama di essere <strong>abbastanza semplice da imparare<\/strong>, con una curva di apprendimento ripida ed \u00e8 <strong>molto richiesto dal mercato del lavoro<\/strong>. Grazie alla sua flessibilit\u00e0 \u00e8 il linguaggio pi\u00f9 utilizzato in ambito scientifico, ad esempio nel campo dell&#8217;<strong>Intelligenza Artificiale<\/strong> e <strong><em>Machine Learning<\/em><\/strong>. Questa sua caratteristica gli consente di poter affrontare un problema utilizzando diversi paradigmi di programmazione: \u00e8 orientato agli oggetti, ma puoi facilmente utilizzare un approccio funzionale.<\/p>\n<p style=\"text-align: center;\">Leggi anche <a href=\"https:\/\/www.addlance.com\/blog\/sviluppo-siti-web-intelligenza-artificiale\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sviluppo siti web: l&#8217;evoluzione dell&#8217;AI-Driven Development<\/a><\/p>\n<p>Inoltre, <strong>il suo codice \u00e8 facile da leggere<\/strong> ed \u00e8 possibile eseguire molte funzionalit\u00e0 complesse con facilit\u00e0, grazie alla gran quantit\u00e0 di librerie presenti online. E&#8217; multi-piattaforma e offre la possibilit\u00e0 di sviluppare rapidamente dei prototipi, <strong>utilizzando meno codice rispetto ad altri linguaggi. <\/strong>I suoi limiti riguardano principalmente la <strong>lentezza<\/strong> e l&#8217;<strong>inefficienza<\/strong> nelle condizioni <em>multi-thread<\/em>. Programmatori abituati a linguaggi staticamente tipizzati potrebbero storcere il naso per via della tipizzazione dinamica offerta da Python:<\/p>\n<p>&gt;&gt;&gt; a = &#8220;Somma&#8221;<\/p>\n<p>&gt;&gt;&gt; b = 19<\/p>\n<p>&gt;&gt;&gt; print a + b<\/p>\n<p>Queste tre righe di codice darebbero errore in esecuzione, ma andrebbero bene per l&#8217;interprete che le farebbe passare tranquillamente. Per evitare l&#8217;errore a <em>runtime<\/em> i tipi di variabile devono essere resi omogenei:<\/p>\n<p>&gt;&gt;&gt; a = &#8220;Somma&#8221;<\/p>\n<p>&gt;&gt;&gt; b = 19<\/p>\n<p>&gt;&gt;&gt; print a + str(b)<\/p>\n<p>&#8216;Somma 19&#8217;<\/p>\n<p>&gt;&gt;&gt;<\/p>\n<h3>2) Javascript, un universo in espansione<\/h3>\n<p>Javascript ti permette di sviluppare un&#8217;applicazione <em>multi-tier<\/em> utilizzando un solo linguaggio di programmazione. Nasce da <strong>Netscape<\/strong> per <strong>potenziare il codice HTML<\/strong> nel <em>browser<\/em> e alleggerire il carico di lavoro lato <em>server<\/em>, spostandone parte sul <em>client<\/em>. Nasce quindi come <strong>linguaggio di programmazione legato al web<\/strong> ed in particolare lato <em>client<\/em>. <strong>JavaScript \u00e8 facile da capire e molto popolare<\/strong>, \u00e8 supportato da tutti i <em>browser<\/em> in circolazione, anche se in alcuni casi in modi diversi e questo \u00e8 uno degli aspetti negativi. Un&#8217;infinit\u00e0 di <em>framework<\/em> lo rendono adatto a diversi tipi di contesti e la sua popolarit\u00e0 ti permette di contare su una grande comunit\u00e0 di supporto. Come Python anche Javascript permette una <strong>prototipizzazione rapida<\/strong>, in particolare per progetti legati al web.<\/p>\n<p>Come ti ho accennato Javascript ti consente l&#8217;utilizzo anche lato <em>server<\/em>: <strong>Node.js<\/strong> infatti \u00e8 il motore <strong>JavaScript V8<\/strong> di <strong>Google Chrome<\/strong> e permette l&#8217;esecuzione di codice Javascript su <em>server.<\/em> Pu\u00f2 essere eseguito su piattaforme diverse con un&#8217;architettura orientata agli eventi che rende possibile l&#8217;I\/O asincrono. Questo <em>design<\/em> punta ad ottimizzare il <em>throughput <\/em>e la <strong>scalabilit\u00e0 nelle applicazioni<\/strong> <strong>web<\/strong> con molte operazioni di input\/output. Inoltre, \u00e8 particolarmente indicato per applicazioni web <em>real-time<\/em> (ad esempio <em>chat <\/em>o <em>browser game<\/em>). Se il lavoro ti porta sulla rete, Javascript \u00e8 un passaggio obbligato.<\/p>\n<p>&nbsp;<\/p>\n<h3>3) Swift, il linguaggio di programmazione su sistemi Apple<\/h3>\n<p>E&#8217; un linguaggio di programmazione compilato per applicazioni <strong>iOS, macOS, watchOS, tvOS<\/strong>. Compilato <em>significa<\/em> che ogni istruzione viene trasformata nel corrispondente codice in linguaggio macchina con il vantaggio di <strong>prestazioni migliori<\/strong> in particolare <strong>in applicazioni con uso intenso della grafica<\/strong>. Viene usato particolarmente nello sviluppo <em>mobile<\/em> su sistemi Apple ed \u00e8 <strong>pagato molto bene<\/strong>. E&#8217; l&#8217;alternativa a Objective-C che eredita dal C molteplici caratteristiche come ad esempio il dover mantenere 2 file di codice differenti per migliorare i tempi di compilazione e l&#8217;efficienza della creazione dell&#8217;eseguibile. <strong>Swift elimina la necessit\u00e0 del mantenimento del doppio file<\/strong>, tramite Xcode e il compilatore LLVM che combina il file <em>header <\/em>di Objective-C (.h) e il file di implementazione (.m) in un unico file (.swift). Il sistema di Objective-C impone un lavoro addizionale che grava sulle tue spalle costringendoti a sincronizzare i nomi dei metodi e i commenti tra i file in modo manuale. Xcode e il compilatore LLMV lavorano dietro le quinte per ridurre il tuo carico di lavoro.<\/p>\n<p>&nbsp;<\/p>\n<h3>4) PHP (e CMS), uno dei linguaggi di sviluppo pi\u00f9 usati per app web lato server<\/h3>\n<p>PHP \u00e8 ancora oggi <strong>uno dei linguaggi di sviluppo pi\u00f9 utilizzati<\/strong> per la creazione di applicazioni web lato <em>server<\/em>. E&#8217; il linguaggio alla base della maggior parte dei <strong>CMS <\/strong>pi\u00f9 diffusi come <strong>WordPress,<\/strong> <strong>Joomla, Drupal<\/strong> e molti altri. Secondo le statistiche pubblicate dal sito W3techs, pi\u00f9 del 78% dei siti a livello globale utilizza PHP come linguaggio lato <em>server<\/em>.<\/p>\n<p style=\"text-align: center;\">Leggi anche <a href=\"https:\/\/www.addlance.com\/blog\/come-scegliere-tema-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">CMS, ecco come scegliere un tema WordPress<\/a><\/p>\n<p>Se prendi in considerazione lo studio del PHP sappi che inevitabilmente dovrai affiancare lo studio di un CMS. Questo perch\u00e9 il CMS ti offre una serie di funzionalit\u00e0 che non dovrai sviluppare da zero. La scelta non sar\u00e0 facile perch\u00e9 ti troverai a confrontare un gran numero di alternative che dovrai saper selezionare soprattutto in base al tipo e all\u2019area di applicazione del tuo progetto.<\/p>\n<p>Ovviamente, tutto questo ha anche risvolti negativi: queste soluzioni sono spesso <em>opensource<\/em> e gratuite, ma la disponibilit\u00e0 del codice aperto equivale anche all\u2019esposizione dello stesso agli <em>hacker <\/em>e a coloro che studiano strategie di attacco mirate.<\/p>\n<p>&nbsp;<\/p>\n<h3>5) Java, Kotlin e Spring: costruire app mobile su piattaforma Android<\/h3>\n<p>Java \u00e8 un linguaggio sia compilato che interpretato. Il codice sorgente viene compilato in un <em>bytecode<\/em>, il quale a sua volta viene interpretato dalla Java Virtual Machine (JVM) in istruzioni per il processore. Questo \u00e8 stato sempre un punto di forza di Java perch\u00e9 consente la portabilit\u00e0 su tutti i sistemi operativi su cui puoi installare una JVM. <strong>Java ti permette di operare a qualsiasi livello di un\u2019architettura <em>multi-tier<\/em>.<\/strong> Esistono numerosi <em>framework<\/em> per Java, ognuno destinato a lavorare in un contesto specifico. <strong>Spring,<\/strong> ad esempio, ha una struttura modulare e ti consente di costruire applicazioni anche molto complesse aggiungendo moduli. La cosa molto interessante \u00e8 che molto probabilmente puoi trovare il modulo che ti serve gi\u00e0 bello e pronto. Con Java puoi costruire anche <em>app mobile<\/em> su piattaforma Android utilizzando <strong>Kotlin<\/strong> che deriva da Java e pertanto pu\u00f2 essere usato in maniera produttiva in alternativa a questo linguaggio, praticamente in ogni contesto.<\/p>\n<blockquote><p>Studia sempre perch\u00e9 quando pensi di essere arrivato a buon punto, c&#8217;\u00e8 sempre qualcuno che ne sa pi\u00f9 di te<\/p><\/blockquote>\n<p>Inoltre, Kotlin \u00e8 oggi uno dei linguaggi ufficiali per lo sviluppo di app Android. A mio avviso \u00e8 l&#8217;<strong>investimento pi\u00f9 duro che puoi fare<\/strong> ma anche quello che ti da ancora <strong>maggiori garanzie di spendibilit\u00e0 per il futuro.<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<h2>In conclusione\u2026<\/h2>\n<p>Ti ho mostrato quelli che secondo me sono gli <strong>investimenti a pi\u00f9 lunga durata<\/strong> che in questo momento fanno fronte a buona parte delle <strong>richieste di mercato<\/strong>. Spero che questo possa esserti di aiuto. Lavoro da oltre 25 anni in questo settore ed ho imparato una cosa: quando pensi di essere arrivato a buon punto e di conoscere veramente bene una cosa, sappi che c\u2019\u00e8 qualcuno che ne sa pi\u00f9 di te e spesso la pensa diversamente. Quindi&#8230; sii umile e mantieni la mente elastica!<\/p>\n<p>&nbsp;<\/p>\n<p><em>Articolo a cura di Alessandro Testa <\/em>    \t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tra tutti i linguaggi di programmazione (e relativi frameworks) ecco quelli pi\u00f9 spendibili sul mercato del lavoro e che conviene imparare lavorando sodo <\/p>\n","protected":false},"author":6,"featured_media":7242,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":""},"categories":[17],"tags":[18],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts\/7239"}],"collection":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/comments?post=7239"}],"version-history":[{"count":1,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts\/7239\/revisions"}],"predecessor-version":[{"id":10717,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts\/7239\/revisions\/10717"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/media\/7242"}],"wp:attachment":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/media?parent=7239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/categories?post=7239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/tags?post=7239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}