Laboratorio 02

Setup dell’Ambiente e Primo Programma C++

Docente

Soluzione del Laboratorio 01

Il CMakeLists.txt minimo e il test di Eigen visti la volta scorsa:

cmake_minimum_required(VERSION 3.10)
project(BasicNeuralPlusPlus)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(basic_neural main.cpp)
#include <iostream>
#include <Eigen/Dense>

int main() {
    Eigen::MatrixXd A = Eigen::MatrixXd::Random(3, 3);
    Eigen::MatrixXd B = Eigen::MatrixXd::Identity(3, 3);
    std::cout << A * B << std::endl;   // deve stampare A
}

Se A * B stampa esattamente A, Eigen è installato e trovato correttamente: moltiplicare per l’identità è il test più economico che esista.

Obiettivo di Oggi

Iniziare la costruzione del framework BASIC_NEURAL++ partendo dalle basi assolute. Non scriveremo ancora codice neurale, ma prepareremo il terreno.

L’ambiente di lavoro è fondamentale: un ingegnere del software deve conoscere e controllare perfettamente i propri strumenti (compilatore, IDE, build system).

Task 1: Il Compilatore

Verifica di avere a disposizione un compilatore C++ moderno.

  • Linux: g++ --version (usa apt-get install build-essential)
  • macOS: clang++ --version (installa gli Xcode Command Line Tools)
  • Windows: Installa WSL2 (Ubuntu) oppure MSYS2 (MinGW-w64) e verifica g++.

Task 2: CMake e IDE

Useremo CMake per gestire la compilazione multi-file del nostro framework, e un IDE per scrivere il codice.

  1. Verifica l’installazione di CMake: cmake --version
  2. Apri il tuo IDE preferito (VS Code, CLion, ecc.)
  3. Crea una nuova cartella per il progetto: basic_neural_plusplus

Task 3: Hello World con CMake

  1. Crea un file CMakeLists.txt minimo:

    cmake_minimum_required(VERSION 3.10)
    project(BasicNeuralPlusPlus)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    add_executable(basic_neural main.cpp)
  2. Crea un file main.cpp che stampi a schermo “Inizio progetto BASIC_NEURAL++!”.

  3. Compila ed esegui usando CMake (da terminale o tramite l’estensione del tuo IDE).

Task 4: Esplorazione Tipi Base

Nel tuo main.cpp, prova a dichiarare, stampare e combinare alcune variabili fondamentali per il Machine Learning:

  • Un int (es. numero di epoche)
  • Un double (es. learning rate o peso)
  • Prova a moltiplicarli e stamparli. Cosa succede se dividi un int per un altro int (es. 5 / 2)? E se ne casti uno a double?

Buon lavoro! La soluzione di riferimento verrà discussa all’inizio della prossima lezione.