Sviluppatore C++ produttivo, il mio discorso recente

Sviluppatore C++ produttivo, il mio discorso recente

Qualche settimana fa ho tenuto un altro discorso al mio gruppo di utenti C++ locale. Abbiamo discusso dei recenti "chicche" del C++ e degli strumenti che possono aumentare la produttività.

Introduzione

Nel mio post per il "Riepilogo C++ alla fine del 2017" ho detto che avremmo potuto vedere un notevole miglioramento nell'area degli strumenti per il linguaggio.

La maggior parte delle volte possiamo sentire che "C++ è difficile", l'analisi e l'analisi è ancora più difficile... eppure, forse siamo arrivati ​​al punto in cui possiamo finalmente dire "abbiamo ottimi strumenti"? O almeno abbiamo strumenti decenti!

Ecco i principali argomenti di cui ho parlato durante il talk:

Aggiornamenti C++ recenti

Il discorso è avvenuto pochi giorni dopo la riunione del comitato C++ di Jacksonville. Pertanto è stata una buona occasione per me presentare alcune notizie sullo stato attuale della lingua.

Nella precedente riunione dell'ISO il Comitato ha votato i seguenti aspetti principali della bozza C++20:

Albuquerque, novembre 2017

  • operatore<=> (aka l'operatore dell'astronave) e supporto della libreria per l'operatore<=>
    • P0515R3
  • Basato sull'intervallo per con inizializzatore
  • Applica [[nodiscard]] alla libreria standard -P0600R1
  • std::osyncstream
  • constexpr std::complesso
  • algoritmi constexpr
  • Virgola mobile std::atomica
  • std::string /std::string_view .starts_with() e .ends_with()

E nel recente incontro abbiamo ottenuto:

  • Crea typename facoltativo in più posti
  • [[likely]] , [[unlikely]] e [[no_unique_address]] -attributi
  • <version> intestazione
  • Libreria calendario e fuso orario - grande e bella aggiunta a STL - puoi trovare alcune novità qui:
    • Blog di Marius Bancila:calendari e fusi orari C++
    • https://github.com/HowardHinnant/date
  • manipolatori syncstream per Ostream sincronizzato con buffer C++
  • intervallo

Maggiori informazioni:2018 Jacksonville ISO C++ Committee Reddit Trip Report:cpp

Naturalmente, stiamo aspettando alcune funzionalità più significative come moduli, concetti, gamme, networking, co-routine. La buona notizia è che possiamo aspettarci che la maggior parte di loro... o le parti principali siano in C++20. Quindi aspettiamo, e incrociamo le dita per il comitato:perché devono fare molto lavoro per "assemblare" quei delicati pezzi insieme.

Strumenti

Nella seconda parte, ho fatto una demo di strumenti che uso o che ho sperimentato di recente.

Lavoro quotidianamente in Visual Studio e sono lieto di vedere come si evolve la piattaforma. Un punto è, ovviamente, tenere il passo con la standardizzazione della lingua. Mentre il passaggio a C++ 11 era un grosso problema per VS in passato, ora il ritmo è sorprendente. La maggior parte dei blocchi nel compilatore sono stati, per quanto ne so, riscritti e l'implementazione di C++ 17 è molto vicina al completamento. VS 2017 è stato rilasciato a marzo 2017 e abbiamo avuto sei versioni con aggiornamenti utili.
E possiamo aspettarci altre cose buone nel 2018:guarda questa tabella di marcia per VS.

Alcune fantastiche aggiunte in VS:

  • Apri cartella
  • Supporto Cmake – 15.4 - quindi non devo eseguire Cmake per ottenere manualmente una soluzione V!
  • Compilatore Clang in VS!
  • Adattatori Google e Boost Tests dal 15.5!

La prossima grande novità è Clang e gli strumenti che si basano su Clangtooling. Puoi utilizzare gli strumenti principali di Clang come:

  • Formato
  • Riordina
  • Analizzatore

Mi piace particolarmente usare Clang PowerTools forniti per Visual Studio.

Ma abbiamo più prodotti basati su Clang:

  • Sourcetrail (l'ho descritto nel mio post di recensione di ottobre 2017 - Migliore comprensione del codice con Sourcetrail)
  • Analizzatori di codice statico:come CppDepend

Inoltre, recentemente ho avuto la possibilità di giocare con alcuni prodotti unici:

Conan

Conan sembra un fantastico gestore di pacchetti per C++. Ho pubblicato altri pensieri su questo nel mio recente post:Pimpl vs Abstract Interface - apracticaltutorial.

E:

Live++ - MolecularMatters

Live++ è uno strumento strabiliante! In pochi secondi puoi ricompilare le modifiche al codice e applicare immediatamente hot patch ai binari in esecuzione! È solo una DLL che devi caricare all'inizio della tua app e quindi hai accesso a questa straordinaria funzionalità. Molto utile per test e prototipazione.

Live++ è stato rilasciato pubblicamente il 27 marzo e ho avuto la possibilità di essere un abeta tester qualche mese prima :)

Le diapositive

Ultime novità c++ (marzo 2018) da Bartlomiej Filipek

Riepilogo

Naturalmente, ci sono molti altri strumenti straordinari che possiamo usare per C++ oggi. Durante la presentazione, ho graffiato solo la superficie dell'argomento.

Quali sono i tuoi strumenti preferiti per C++?
Sei d'accordo con la mia opinione che attualmente per C++ abbiamo strumenti abbastanza decenti?