Introduzione alla programmazione in Julia
Una guida completa al linguaggio di programmazione Julia, un linguaggio dinamico generale ad alte prestazioni particolarmente adatto per calcoli scientifici e numerici. Il corso copre tutto, dalla sintassi di base e dai tipi di dati fino a argomenti avanzati come la metaprogrammazione, i frame di dati, la rete e l'interfacciamento con database.
Panoramica del corso
📚 Riepilogo del contenuto
Una guida completa al linguaggio di programmazione Julia, un linguaggio dinamico generico ad alte prestazioni particolarmente adatto per il calcolo scientifico e numerico. Il corso copre tutto, dalla sintassi di base e dai tipi di dati fino a temi avanzati come la metaprogrammazione, i frame di dati, la rete e l'interfaccia con database.
Padroneggia il calcolo scientifico ad alte prestazioni con la velocità del C e la semplicità del Python.
Autore: Tutorials Point (I) Pvt. Ltd.
Ringraziamenti: Copyright 2020 da Tutorials Point (I) Pvt. Ltd. Tutti i contenuti e le immagini sono proprietà di Tutorials Point.
🎯 Obiettivi di apprendimento
- Definire il linguaggio di programmazione Julia e identificare le sue caratteristiche principali e il contesto storico.
- Distinguere Julia dagli altri linguaggi per il calcolo tecnico in termini di prestazioni e sintassi.
- Installare e configurare correttamente l'ambiente Julia e REPL su Linux, Windows e macOS.
- Applicare le convenzioni stilistiche di Julia per la nomenclatura delle variabili e utilizzare commenti singoli o multi-linea per la documentazione del codice.
- Creare array di diversi tipi e dimensioni usando oggetti intervallo, generatori, comprensioni e funzioni incorporate come
zeros()eones(). - Eseguire operazioni avanzate di indicizzazione e mutazione degli array usando logica booleana, la parola chiave
ende funzioni con punto esclamativo (es.push!,splice!). - Costruire e manipolare Tuple e Tuple nominate, inclusa la loro applicazione come argomenti opzionali nelle funzioni.
- Identificare e gestire i comportamenti di overflow degli interi e gli errori di divisione usando tipi standard e a precisione arbitraria.
- Analizzare le rappresentazioni in virgola mobile, inclusi zeri con segno, valori speciali (NaN, Inf) e l'epsilon macchina.
- Eseguire e combinare operatori aritmetici, bit a bit e di aggiornamento per manipolare i tipi di dati.
🔹 Lezione 1: Introduzione a Julia e impostazione dell’ambiente
Panoramica: Questa lezione introduce Julia, un linguaggio di programmazione dinamico ad alto livello e ad alte prestazioni progettato specificamente per il calcolo scientifico e l'analisi dei dati. Gli studenti esploreranno la sua storia, le caratteristiche e come si confronta con linguaggi consolidati come Python, R e MATLAB. La lezione fornisce una guida completa all'impostazione dell'ambiente Julia su diverse piattaforme operative e alla gestione del suo potente ecosistema di pacchetti.
Risultati dell'apprendimento:
- Definire il linguaggio di programmazione Julia e identificare le sue caratteristiche fondamentali e il contesto storico.
- Distinguere Julia dagli altri linguaggi per il calcolo tecnico in termini di prestazioni e sintassi.
- Installare e configurare correttamente l'ambiente Julia e REPL su Linux, Windows e macOS.
🔹 Lezione 2: Sintassi di base e manipolazione degli array
Panoramica: Questa lezione introduce la sintassi fondamentale di Julia, con particolare attenzione alle convenzioni per la nomenclatura delle variabili, ai commenti e al robusto trattamento delle strutture Array. Gli studenti passeranno da assegnazioni semplici delle variabili a manipolazioni complesse degli array, incluse la creazione di array multidimensionali, le comprensioni e le operazioni mutative essenziali per il calcolo scientifico ad alte prestazioni.
Risultati dell'apprendimento:
- Applicare le convenzioni stilistiche di Julia per la nomenclatura delle variabili e utilizzare commenti singoli o multi-linea per la documentazione del codice.
- Creare array di diversi tipi e dimensioni usando oggetti intervallo, generatori, comprensioni e funzioni incorporate come
zeros()eones(). - Eseguire operazioni avanzate di indicizzazione e mutazione degli array usando logica booleana, la parola chiave
ende funzioni con punto esclamativo (es.push!,splice!).
🔹 Lezione 3: Tuple e tipi numerici
Panoramica: Questa lezione offre una panoramica tecnica approfondita delle strutture dati fondamentali e dei tipi numerici di Julia, con particolare attenzione alle tuple immutabili e alle sfumature dell'aritmetica del computer. Gli studenti esploreranno la costruzione e la manipolazione delle tuple nominate, il comportamento degli interi a precisione fissa (compreso l'overflow), e le caratteristiche legate alla precisione dei numeri in virgola mobile, razionali e complessi. Questa base è cruciale per applicazioni di calcolo scientifico ad alte prestazioni e analisi dei dati.
Risultati dell'apprendimento:
- Creare e manipolare Tuple e Tuple nominate, inclusa la loro applicazione come argomenti opzionali nelle funzioni.
- Identificare e gestire i comportamenti di overflow degli interi e gli errori di divisione usando tipi standard e a precisione arbitraria.
- Analizzare le rappresentazioni in virgola mobile, incluse zeri con segno, valori speciali (NaN, Inf) e l'epsilon macchina.
🔹 Lezione 4: Operatori e funzioni matematiche
Panoramica: Questa lezione offre un'approfondita esplorazione del sistema di operatori di Julia e della sua estesa libreria di funzioni matematiche. Gli studenti passeranno dalle operazioni aritmetiche e bitwise di base alle avanzate operazioni vettoriali "dot" e complesse espressioni concatenate. Il contenuto illustra inoltre strumenti numerici essenziali per il calcolo scientifico, tra cui arrotondamento, divisione specializzata, funzioni logaritmiche e trigonometriche.
Risultati dell'apprendimento:
- Eseguire e combinare operatori aritmetici, bit a bit e di aggiornamento per manipolare i tipi di dati.
- Applicare la sintassi vettoriale "dot" per eseguire operazioni elemento per elemento sugli array.
- Analizzare il comportamento di valutazione e le regole di precedenza delle espressioni composte e complesse.
🔹 Lezione 5: Stringhe e programmazione funzionale
Panoramica: Questa lezione affronta i due pilastri della gestione dei dati in Julia: manipolazione delle stringhe e programmazione funzionale. Gli studenti esploreranno il robusto supporto di Julia per stringhe Unicode/UTF-8, l'indicizzazione avanzata e i letterali non standard, insieme al potere fondante del paradigma funzionale di Julia, incluso il dispatch multiplo, le funzioni anonime e le funzioni di ordine superiore come map e filter.
Risultati dell'apprendimento:
- Manipolare e cercare stringhe usando l'indicizzazione per intervallo, l'interpolazione e le espressioni regolari.
- Creare funzioni versatili utilizzando argomenti opzionali, argomenti nominati e ricorsione.
- Applicare schemi di programmazione funzionale (Map/Filter) e sfruttare il Dispatch Multiplo per selezionare metodi specializzati.
🔹 Lezione 6: Controllo del flusso e raccolte chiave-valore
Panoramica: Questa lezione copre le strutture essenziali per controllare l'esecuzione del programma e gestire raccolte di dati complesse in Julia. Gli studenti impareranno a implementare logica condizionale tramite espressioni ternarie, switch booleani e blocchi if-else standard, oltre a tecniche di iterazione usando cicli for e while. Inoltre, la lezione esplora strutture dati di alto livello come Dizionari per il mapping chiave-valore e Set per lo stoccaggio di elementi univoci, concentrandosi sulla loro creazione, manipolazione e operazioni teoriche degli insiemi.
Risultati dell'apprendimento:
- Implementare una logica condizionale concisa usando operatori ternari e espressioni booleane di cortocircuito.
- Creare cicli di iterazione robusti e gestire errori in tempo di esecuzione usando eccezioni e blocchi
do. - Gestire dati associativi con Dizionari, inclusa la ricerca, la fusione e l'analisi della frequenza.
🔹 Lezione 7: Date, I/O e metaprogrammazione
Panoramica: Questa lezione esplora tre pilastri avanzati del linguaggio di programmazione Julia: la gestione dei dati temporali tramite il modulo Dates, le operazioni robuste di input/output (I/O) sui file e il potere della metaprogrammazione. Gli studenti impareranno a manipolare date e orari, navigare e interagire con il sistema di file, e comprendere come il codice Julia viene analizzato, rappresentato come un Albero Sintattico Astratto (AST) e manipolato tramite macro.
Risultati dell'apprendimento:
- Eseguire calcoli complessi con date, formattazione e arrotondamento, comprendendo la gerarchia dei tipi sottostanti agli oggetti temporali.
- Implementare tecniche efficienti di gestione dei file, incluse letture basate su flussi, estrazione di metadati e modelli sicuri di chiusura dei file.
- Analizzare la struttura delle espressioni Julia e creare macro per automatizzare la generazione e l'esecuzione del codice.
🔹 Lezione 8: Visualizzazione dei dati e DataFrames
Panoramica: Questa lezione esplora la doppia necessità di analisi visiva e statistica in Julia, partendo da tracciati funzionali e visualizzazioni testuali (UnicodePlots). Passa quindi alla gestione di dataset complessi tramite l'ecosistema DataFrames.jl, sottolineando il ruolo fondamentale della pulizia dei dati, della modellazione di regressione e delle modifiche strutturali per preparare i dati alla ricerca scientifica.
Risultati dell'apprendimento:
- Generare tracciati funzionali e testuali usando
Plots.jl,UnicodePlotseVegaLite. - Analizzare il rapporto tra statistiche descrittive e visualizzazione dei dati usando il Quartetto di Anscombe e modelli di regressione lineare.
- Eseguire manipolazioni avanzate di DataFrame, incluse la gestione dei valori mancanti, modifiche strutturali (aggiunta/rimozione di righe e colonne) e filtraggio condizionato.
🔹 Lezione 9: Calcolo scientifico: dataset, moduli e grafica
Panoramica: Questa lezione copre l'ecosistema essenziale di Julia per il calcolo scientifico, focalizzandosi su tre pilastri: gestione dei dati (CSV, HDF5, XML e RDatasets), analisi statistica (statistiche descrittive e campionamento) e la struttura modulare dei programmi Julia. Infine, esplora motori di visualizzazione dei dati molto diversi, che vanno dalla rappresentazione testuale di basso livello a implementazioni avanzate "Grammar of Graphics".
Risultati dell'apprendimento:
- Eseguire I/O e manipolazione dei dati: Importare/esportare file CSV e HDF5, analizzare XML e eseguire sottoinsiemi e ordinamenti su DataFrame.
- Eseguire analisi statistica: Calcolare statistiche descrittive semplici e pesate (media, varianza, deviazione standard) e applicare diverse tecniche di campionamento.
- Gestire la struttura del codice: Installare e usare moduli/pacchetti efficacemente, comprendendo la struttura interna della directory di un pacchetto Julia.
🔹 Lezione 10: Reti e interfaccia con database
Panoramica: Questa lezione esplora le capacità del linguaggio di programmazione Julia nell'instaurare comunicazioni di rete e interfacciarsi con sistemi di database diversi. Copre la comunicazione di rete a basso livello tramite TCP e Pipe nome, servizi web di alto livello (Email, Twitter, WebSockets) e l'integrazione con ambienti cloud come AWS e Google Cloud. Inoltre, dettaglia connessioni robuste con database utilizzando MySQL, JDBC, ODBC, SQLite e PostgreSQL, enfatizzando l'esecuzione delle query e la gestione dei metadati.
Risultati dell'apprendimento:
- Configurare e distribuire servizi di rete usando TCP, Pipe nome e WebSockets.
- Integrare applicazioni Julia con ambienti cloud (AWS/Google Cloud) e API sociali/messaggistiche (Twitter/Email).
- Implementare soluzioni database usando API dirette (MySQL, SQLite) e astrazioni middleware (JDBC, ODBC, DBI).