Sviluppare Open Source in Ada... Perché no?

Descrizione:

Lo scopo di questo intervento è di presentare il linguaggio cercando di smontare i preconcetti che fanno sembrare Ada lo strumento meno indicato per l'open source (es., è un linguaggio vecchio, è usato solo dai militari/in applicazioni mastodontiche, è poco efficiente, è troppo complesso...).
Ada in realtà è un linguaggio moderno (l'ultimo aggiornamento risale al 2012), adatto a progetti sia grandi che piccoli (c'è chi programma il Lego Mindstorm in Ada!)  e pensiamo che la comunità open source (mossa da entusiasmo e curiosità e meno legata del mondo industriale a considerazioni di ritorno economico)  sia l'ambiente adatto per apprezzare e trarre profitto dalle caratteristiche di robustezza e facilità di manutenzione di Ada.
L'intervento si svilupperà come segue: dopo una prima introduzione generale alla sintassi di Ada passeremo in rassegna le caratteristiche che rendono Ada unico nel suo genere, cominciando con cose semplici come la struttura dei tipi, i package e i template ("package generici" in gergo Ada)  per poi passare ad argomenti via via più complessi quali la programmazione OO in Ada, programmazione multi-task (incluse le estensioni multi-core di Ada 2012), la programmazione per contratto (es. pre- e post-condizioni, invarianti dei tipi), la programmazione distribuita e gli strumenti per la verifica formale di programmi (SPARK 2014).
Alla fine dell'intervento lo spettatore avrà un'idea abbastanza precisa delle varie caratteristiche di Ada e sarà, speriamo, abbastanza incuriosito da voler provare ad usarlo...

Conoscenze propedeutiche:

Conoscenze di base di programmazione dovrebbero essere sufficienti per seguire la maggior parte dell'intervento.  

Le parti che potrebbero richiedere qualche conoscenza in più sono:

  • la parte sulle caratteristiche "Object Oriented" di Ada (è utile una conoscenza di base della programmazione orientata agli oggetti);
  • la parte sui task (è utile  una conoscenza di base sulle problematiche della programmazione multi-task).

Livello di difficoltà: 3/5