Coordinator: Prof. Antonio Vicino
Home |  DIISM |   | Login Privacy e Cookie policy

Info

Structure




Modern C++ For High-performance And Effective Programming

 

Prof.
Sandro Bartolini
University of Siena - Dipartimento di Ingegneria dell'Informazione e Scienze Matematiche
Course Type
Type A
Calendar
July 2 h. 14:00-18:00
July 6 h. 14:00-18:00
July 8 h. 14:00-18:00
July 10 h. 14:00-18:00
July 13 h. 14:00-18:00
Room
Program
Modern C++ for high-performance and effective programming

How C++11/14/17 can help every programmer to quickly write efficient, correct and maintainable code for modern computer architectures
Ing. Sandro Bartolini

Il C++ è ed è sempre stato il linguaggio più adatto alla programmazione ad alte prestazioni, bassa latenza e con la capacità di dominare la complessità applicativa tramite astrazioni (es. object-orientation). Domini applicativi che ne fanno largo uso sono molteplici: finanza, sistemi operativi, simulazione e modellazione, sistemi real-time, elaborazione multimediale, AI, high-performance computing, embedded systems, videogames, … [ http://www.stroustrup.com/applications.html ]

Dal 2011 è molto cambiato e da allora, incrementalmente, stanno confluendo una varietà di innovazioni rivolte verso: prestazioni, espressività, semplificazione e produttività, error-avoidance, resource-leak avoidance, programmazione parallela. Il tutto all’interno del meccanismo di standardizzazione internazionale che ne garantisce la portabilità tra molteplici piattaforme.

Ci sono elementi migliorativi che si integrano in modo organico e che hanno fatto dire allo stesso inventore del C++, Bjarne Stroustrup, che “it feels like a new language” e aggiunge anche che le singole innovazioni possono dare un grande beneficio ad ogni programmatore, anche a coloro che ne utilizzano solo un sottoinsieme.

Il corso partirà dalle (a) innovazioni base del C++11/14/17 e quindi procederà verso gli (b) argomenti più articolati e in cui queste basi sono utilizzate sia a livello di linguaggio che di libreria standard (STL Standard Template Library) per l’uso di strutture dati e algoritmi noti, sia per il consolidamento di idiomi di programmazione consolidati e raccomandati. Quindi il corso approderà alla (c) programmazione parallela secondo lo standard C++11/14/17 che affronterà alcune modalità relativamente semplici per sfruttare la potenza di calcolo dei moderni processori multi-core.

Il corso verrà svolto con un approccio molto pratico e con una alternanza stretta tra esposizione di concetti anche tramite live-coding, sperimentazione/esercitazione immediata al calcolatore e riferimento a casi applicativi.

L’obiettivo sarà quello di fornire al programmatore C++ di qualsiasi livello i nuovi strumenti disponibili per programmare più efficacemente, con più semplicità e commettendo meno errori. Ad esempio, si imparerà come non usare più la gestione esplicita della memoria dinamica (new, delete) che può generare memory leak ed estrema difficoltà di testing e debugging (“mai più new e delete nudi”).

Infine, si evidenzieranno le tecniche da non usare più, ma che sono mantenute per compatibilità, e cercheremo di far emergere un nuovo modo di programmare in C++ che può essere estremamente utile a chiunque necessiti di programmare a qualsiasi livello.

“Within C++, there is a much smaller and cleaner language struggling to get out” B. Stroustrup





 

Courses

PhD Students/Alumni


Dip. Ingegneria dell'Informazione e Scienze Matematiche - Via Roma, 56 53100 SIENA - Italy