Alfonso Maruccia

Visual Studio 2017, il ritorno dell'IDE

Redmond rilascia la nuova versione del suo ambiente per lo sviluppo di codice, un tool sempre più onnicomprensivo e disponibile in varie incarnazioni (anche gratuite) a disposizione di tutti i programmatori

Roma - Da Microsoft è arrivato l'annuncio della disponibilità di Visual Studio 2017, nuova versione migliorata, aggiornata e sempre più "integrata" con le nuove tendenze nello sviluppo di software per computer, ma anche per gadget mobile o altre tipologie di dispositivi informatici in circolazione. Lunga la lista di novità, alcune delle quali dovrebbero essere evidenti sin dalle prime fasi dell'installazione.

Visual Studio 2017 segna il ritorno dell'ambiente di sviluppo integrato (IDE) per piattaforma Windows a due anni dalla versione precedente (2015), saluta il ventesimo anniversario del debutto della prima release storica e arriva, secondo il management di Redmond, in un periodo che non potrebbe essere più "entusiasmante" per il settore degli strumenti di sviluppo software.

Sin dalla distribuzione della prima versione provvisoria in forma di "Release Candidate", rivela Microsoft, VS 2017 è già stato scaricato 700.000 volte e i feedback forniti dagli utenti-programmatori hanno aiutato la corporation ad adattare il tool alle esigenze concrete dello sviluppo moderno.
Visual Studio 2017 risulta quindi essere sensibilmente più performante a partire dal processo di installazione, che ora dura pochi minuti e permette di scegliere selettivamente solo i componenti desiderati; il nuovo IDE è tre volte più veloce rispetto alla release del 2015, con tempi di caricamento e compilazione ridotti e una "reattività" generale in ogni aspetto dell'interfaccia.

Tra le nuove funzionalità spiccano certamente la capacità di caricare un singolo file a mo' di "semplice" editor testuale, oppure quella di aprire un intero progetto software a partire da una cartella locale con tutti i file sorgenti ivi presenti; sicuramente apprezzata sarà la possibilità di testare in tempo reale gli effetti del codice durante la sua digitazione, o meglio ancora quella di eseguire il listato fino al punto in cui viene posizionato il cursore senza la necessità di impostare punti di interruzione manuali nelle fasi di debug.

Prevedibili i miglioramenti all'integrazione dei vari linguaggi di programmazione supportati da VS, inclusi C++ (nella sua incarnazione numero 17), VB.NET, C#, F# ecc.; l'integrazione di Xamarin per lo sviluppo su mobile risulta altresì migliorata ed è naturalmente garantito l'impiego delle funzionalità della piattaforma cloud di Azure con tanto di "compartimentazione" dei progetti software tramite container Docker.
E Git? Sì, anche il versioning di Git è migliorato con tanto di supporto ai login tramite SSH e molto altro.

Visual Studio 2017 è disponibile nelle varie incarnazioni a pagamento o gratuite, e se non ci si accontenta di Visual Studio Community il prezzo di una licenza o di una sottoscrizione cloud non è certo alla portata di uno studente o un programmatore squattrinato. Con VS 2017 sono poi arrivati anche i nuovi tool per .NET Core 1.0, l'incarnazione open source del framework dotNET che Microsoft vorrebbe veder proliferare ben oltre i pascoli informatici dell'OS Windows.

In concomitanza con l'arrivo di Visual Studio 2017 su Windows, infine, Redmond ha distribuito nuove versioni provvisorie di Visual Studio per Mac (con supporto a .NET Core, bug fix e miglioramenti prestazionali), Visual Studio Mobile Center (con supporto alle app Xamarin) e il primo update per Visual Studio Team Foundation Server 2017 con supporto (tra le altre cose) ai package npm.

Alfonso Maruccia
Notizie collegate
  • TecnologiadotNET, il Core di Microsoft è open sourceRedmond annuncia la disponibilità della prima major release della nuova piattaforma di sviluppo, e lo fa per di più dal palco di Red Hat. L'open source come testa di ponte per i servizi cloud di Azure?
  • TecnologiaMicrosoft, cuore di LinuxRedmond ingrana la marcia nell'open source entrando a far parte direttamente della Linux Foundation. E le novità a tema open non si fermano qui: anche Visual Studio ed SQL Server sono della partita e si aprono ad altre piattaforme
39 Commenti alla Notizia Visual Studio 2017, il ritorno dell'IDE
Ordina
  • Davvero ottimo IDE. Spero che abbiano risolto il problema delle librerie dei reporting services per winforms (e credo anche asp.net) che non venivano riconosciute nonostante fossero installate correttamente nell'ultima rc della versione 2017
    non+autenticato
  • Non sviluppando e non usando Windows riporto solo un ricordo dei tempi dell'uni:
    - crea un progetto C/C++ (e già questo è assurdo giacché sono linguaggi diversi anche se orribilmente mescolati da troppi, docenti inclusi)
    - crea tre file, uno col main(), uno con un header generico ed uno che implementa l'header:

    main.c --------
    #include "lib.h"
    ...

    lib.h ---------
    void foo()...

    lib.c -----------
    void foo()...

    compila senza problemi, nessun lamento sulla doppia definizione di foo(), invece:
    main.c --------
    #include "lib.h"
    ...

    lib.h ---------
    #ifndef LIB_H
    void foo()...

    #define LIB_H
    #endif

    lib.c ---------
    void foo()...
    Non compila non mi ricordo con che lamentela...
    non+autenticato
  • - Scritto da: xte
    > invece:
    > main.c --------
    > #include "lib.h"
    > ...
    >
    > lib.h ---------
    > #ifndef LIB_H
    > void foo()...
    >
    > #define LIB_H
    > #endif
    >
    > lib.c ---------
    > void foo()...
    > Non compila non mi ricordo con che lamentela...
    forse era STUDIA capraA bocca aperta
    non+autenticato
  • Veramente la teoria dice che una funzione non può esser definita due volte, onde per cui se non uso la "gabbia" di ifndef il compilatore si troverà due definizioni della stessa funzione, una nell'header ed una nell'implementazione e non dovrebbe piacergli. Visual Studio per ignote ragioni non si faceva problemi con la doppia definizione (solo se in files diversi se ricordo bene) ma non gradiva una classicisimma tecnica di preprocessore per evitarla...

    Cosa non avrei considerato (che manco l'allora docente considerò giacché neanche lui riuscì a spiegare questo comportamento errato)?
    non+autenticato
  • - Scritto da: xte
    > Non sviluppando e non usando Windows riporto solo
    > un ricordo dei tempi
    > dell'uni:
    > - crea un progetto C/C++ (e già questo è assurdo
    > giacché sono linguaggi diversi anche se
    > orribilmente mescolati da troppi, docenti
    > inclusi)
    > - crea tre file, uno col main(), uno con un
    > header generico ed uno che implementa
    > l'header:
    >
    > main.c --------
    > #include "lib.h"
    > ...
    >
    > lib.h ---------
    > void foo()...
    >
    > lib.c -----------
    > void foo()...
    >
    > compila senza problemi, nessun lamento sulla
    > doppia definizione di foo(),
    > invece:
    > main.c --------
    > #include "lib.h"
    > ...
    >
    > lib.h ---------
    > #ifndef LIB_H
    > void foo()...
    >
    > #define LIB_H
    > #endif
    >
    > lib.c ---------
    > void foo()...
    > Non compila non mi ricordo con che lamentela...

    ...."ti ho sgamato !! sei un talebano dell'open e io non ti faccio compilare, tiè !!"
    non+autenticato
  • Ti dirò: principalmente sviluppo in C# e gli faccio compilare la libreria DLL . Poi la parte peggiore: la DLL la richiamo all'interno di procedure scritte in Visual FoxPro 9 (già ci sono ancora ERP scritti in questo linguaggioSorride utilizzando wwDotNetBridge

    Comunque mai avuto problemi...
    non+autenticato
  • - Scritto da: xte
    > Non sviluppando e non usando Windows riporto solo
    > un ricordo dei tempi
    > dell'uni:
    > - crea un progetto C/C++

    crea il progetto c++, se vuoi farlo diventare c devi cambiare una opzione di compilazione altrimenti non compila

    > (e già questo è assurdo

    non è assurdo, crea un progetto c++ di default, poi se lo vuoi fare diventare c cambi una opzione

    > giacché sono linguaggi diversi

    c++ vuol dire c con due "plus"
    cioè eredita la sintassi del c e aggiunge dei costrutti / keyword per la programmazione ad oggetti

    i tipi di dati, strutture di controllo, loop, definizione di funzioni
    sono identici
    ed eredita anche il preprocessore

    in c++ puoi scrivere classi usando librerie c

    in c invece non puoi usare librerie c++ e programmare ad oggetti con la sintassi c++

    > anche se
    > orribilmente mescolati

    orribilmente in che senso ? esempi ?

    > da troppi, docenti
    > inclusi)

    l'inventore del c++ è un docente universitario
    i membri del gruppo che si occupa dello standard del c++ sono tecnici di altissimo profilo

    hai detto che non sei sviluppatore, non capisco da dove arrivano le tue tesi

    > - crea tre file, uno col main(), uno con un
    > header generico ed uno che implementa
    > l'header:
    > main.c --------
    > #include "lib.h"
    > ...
    >
    > lib.h ---------
    > void foo()...
    >
    > lib.c -----------
    > void foo()...
    >
    > compila senza problemi, nessun lamento sulla
    > doppia definizione di foo(),

    si ok

    > invece:
    > main.c --------
    > #include "lib.h"
    > ...
    >
    > lib.h ---------
    > #ifndef LIB_H
    > void foo()...
    >
    > #define LIB_H
    > #endif
    >
    > lib.c ---------
    > void foo()...
    > Non compila non mi ricordo con che lamentela...

    ti dirà che non trova il prototipo di funzione quando compila il main
    ed è giusto che sia così

    certo che pur di fare da detrattore di MS uno se le inventa tutte
    non+autenticato
  • Il C++ mooolto tempo fa era un superset del C, vero, mi sembra però che già da anni un certo Stroustrup abbia detto che sono decisamente due linguaggi diversi... Che dici, s'è sbagliato?

    Quanto alle orribili mescolanze, solo di didattico, trovi inclusioni miscelate di librerie C e C++ (tipo stdlib.h al posto di cstdlib), vecchie trovate d'un tempo (tipo iostrem.h) e tanto altro, e le trovi anche nei libri! Questo senza voler arrivare ai void main o altre banalitàA bocca aperta

    Sui listati: se vuoi prova con gcc, icc, sunpro, ... tutti compileranno il II senza problemi e rifiuteranno il primo. Solo Visual Studio (mi pare la v6, sono un po' vecchio) fa il contrario.
    non+autenticato
  • - Scritto da: xte
    > Il C++ mooolto tempo fa era un superset del C,
    > vero, mi sembra però che già da anni un certo
    > Stroustrup abbia detto che sono decisamente due
    > linguaggi diversi... Che dici, s'è
    > sbagliato?

    Ma infatti non ho detto che non sono diversi ma che hanno delle cose in comune e si differenziano per altre cioè tutte quelle che fa diventare il c++ un linguaggio ad oggetti.
    Quello che lo rende veramente differente dal c e quello che lo rende veramente potente, a parte le classi, sono i template

    > Quanto alle orribili mescolanze, solo di
    > didattico, trovi inclusioni miscelate di librerie
    > C e C++ (tipo stdlib.h al posto di cstdlib),
    > vecchie trovate d'un tempo (tipo iostrem.h) e
    > tanto altro, e le trovi anche nei libri! Questo
    > senza voler arrivare ai void main o altre
    > banalità
    >A bocca aperta

    Sinceramente non le trovo così orribili
    A volte usare le librerie c al posto delle librerie c++ rende il programma più veloce

    > Sui listati: se vuoi prova con gcc, icc, sunpro,
    > ... tutti compileranno il II senza problemi e
    > rifiuteranno il primo. Solo Visual Studio (mi
    > pare la v6, sono un po' vecchio) fa il
    > contrario.

    rettifico quello che avevo detto prima, non avevo letto bene il programma: anche il secondo dovrebbe compilare, appena posso proverò con vs2015 e gcc
    non+autenticato
  • > Sinceramente non le trovo così orribili
    > A volte usare le librerie c al posto delle
    > librerie c++ rende il programma più veloce
    Hem, la libreria standard C è stata da eoni portata in C++ opportunamente inserita nel namespace std, se hai differenze di performance realmente rilevanti penso che il problema sia più nell'utilizzatore della libreria che non in quest'ultima...

    > rettifico quello che avevo detto prima, non avevo
    > letto bene il programma: anche il secondo
    > dovrebbe compilare, appena posso proverò con
    > vs2015 e gcc
    Oki, ma il fatto è che il primo non dovrebbe compilare per doppia definizione di foo()... Questo è un esempio banale ma se il compilatore accetta la sovrascrittura di funzioni pensa a che heisenbugs puoi trovare su grosse basi di codice sviluppate nel tempo tra n bipedi diversi...
    non+autenticato
  • - Scritto da: xte
    > > Sinceramente non le trovo così orribili
    > > A volte usare le librerie c al posto delle
    > > librerie c++ rende il programma più veloce
    > Hem, la libreria standard C è stata da eoni
    > portata in C++ opportunamente inserita nel
    > namespace std,

    Il codice delle librerie c e c++ è diverso in quanto la seconda fa largo uso dei template che non esistono nel c.
    Una operazione di I/O in c la fai in modo diverso rispetto al c++ perchè il secondo usa le classi per l' I/O

    Per esempio:
    in c:    printf ("hello world\n");
    in c++: std::cout << "hello world" << std::endl;


    > se hai differenze di performance
    > realmente rilevanti penso che il problema sia più
    > nell'utilizzatore della libreria che non in
    > quest'ultima...

    Ahahahahah...si un altro modo per dire (come il primo): sei tu che non sei capace di programmare.
    Detto poi da uno che ha affermato di non essere sviluppatore....

    Io sto parlando di performance testate sul campo, cioè: stesso programma scritto con le librerie c e le librerie c++: il codice effettivo che produce il compilatore è diverso.
    Le performance rilevate sono diverse.

    Se hai informazioni diverse per favore portale con esempi allegati.

    > > rettifico quello che avevo detto prima, non
    > avevo
    > > letto bene il programma: anche il secondo
    > > dovrebbe compilare, appena posso proverò con
    > > vs2015 e gcc
    > Oki, ma il fatto è che il primo non dovrebbe
    > compilare

    nel primo post dicevi il secondo

    > per doppia definizione di foo()...

    quale doppia definizione di foo() ?

    > Questo è un esempio banale ma se il compilatore
    > accetta la sovrascrittura di funzioni pensa a che
    > heisenbugs puoi trovare su grosse basi di codice
    > sviluppate nel tempo tra n bipedi
    > diversi...

    dove la vedi la sovrascrittura di funzioni nel programma ?
    non+autenticato