Glossario

A

Action:

In GitHub, un "action" (azione) si riferisce a GitHub Actions, che è un servizio di automazione integrato direttamente nella piattaforma GitHub. GitHub Actions consente di automatizzare vari processi nel ciclo di vita dello sviluppo del software, come la compilazione del codice, i test automatici, la distribuzione e altro ancora.

AgiEval:

AgiEval è un sistema o una metodologia di valutazione che si concentra sull'analisi dell'efficacia, delle prestazioni o del comportamento di un agente, spesso in contesti di intelligenza artificiale o automazione. Il termine può essere utilizzato in contesti dove si desidera valutare e misurare la "capacità" di un agente (sia esso umano, software o robotico) di eseguire determinati compiti, rispettando specifici criteri o obiettivi. In generale, AgiEval potrebbe riferirsi a un framework di valutazione basato su metriche predefinite, come l'efficienza, la precisione o la robustezza delle azioni di un agente, e viene utilizzato in ambiti di ricerca per ottimizzare e testare algoritmi di AI o agenti intelligenti.

AI:

L'Intelligenza Artificiale (Artificial Intelligence), è un ramo dell'informatica che si occupa di creare sistemi in grado di simulare capacità cognitive tipiche dell'intelligenza umana, come l'apprendimento, il ragionamento e la risoluzione di problemi. Si basa su modelli matematici, algoritmi e tecniche come il machine learning e il deep learning per analizzare dati, prendere decisioni e migliorare le proprie prestazioni nel tempo.

Allucinazione:

Nel contesto dell'intelligenza artificiale, un'allucinazione si verifica quando un modello generativo, come un'IA basata su reti neurali, produce informazioni false, inesistenti o incoerenti rispetto alla realtà o ai dati su cui è stato addestrato. Questo fenomeno può manifestarsi in chatbot, modelli di generazione testuale o visiva, causando risposte errate, dati inventati o immagini distorte. Le allucinazioni sono un problema critico nell'AI, specialmente in applicazioni che richiedono alta affidabilità, come il settore medico o legale.

Amministratore:

Un Amministratore all'interno di un progetto è una figura professionale che si occupa di tutte le attività amministrative e logistiche necessarie al suo svolgimento. In altre parole, è responsabile di garantire che il progetto sia gestito in modo efficiente e conforme ai requisiti definiti.

Analista:

Un Analista all'interno di un progetto è una figura professionale che si occupa di raccogliere, analizzare e definire i requisiti di un progetto. I requisiti sono le caratteristiche e le funzionalità che il progetto deve avere per soddisfare le esigenze dei suoi stakeholder. L'Analista svolge un ruolo fondamentale nel successo di un progetto, poiché è responsabile di garantire che il progetto soddisfi le esigenze dei suoi utenti. Per svolgere questo compito, l'Analista deve avere una profonda comprensione dei processi aziendali, delle tecnologie e delle esigenze degli utenti.

Analisi dei Requisiti:

L'Analisi dei Requisiti è un processo fondamentale nel ciclo di vita dello sviluppo del software che mira a comprendere a fondo i bisogni e a definire e documentare le necessità e le aspettative degli utenti o degli stakeholder relativamente a un sistema software. Definisce quindi cosa deve succedere per rispondere alle richieste fatte al prodotto e riflette la struttura funzionale di quest'ultimo, e non quella architetturale, infatti non deve costruire l'algoritmo di soluzione ma deve essere consapevole della fattibilità tecnologica.

API:

Acronimo di Application Programming Interface (Interfaccia di Programmazione delle Applicazioni), è un insieme di regole e strumenti che consente a diverse applicazioni software di comunicare tra loro. Definisce il modo in cui le richieste possono essere fatte, quali dati possono essere scambiati e come i sistemi devono rispondere. Le API possono essere usate per accedere a funzionalità di sistema operativo, servizi web, librerie software e molto altro, favorendo l'integrazione tra piattaforme e la modularità dello sviluppo software.

API REST:

Un'API REST (Representational State Transfer API), è un'interfaccia di programmazione che segue i principi dell'architettura REST, un modello basato su risorse e operazioni stateless. Utilizza il protocollo HTTP per eseguire operazioni CRUD (Create, Read, Update, Delete) attraverso metodi standard come GET, POST, PUT, DELETE. Le risorse sono identificate da URL univoci e i dati vengono generalmente scambiati in formati leggeri come JSON o XML. Le API REST sono ampiamente usate per la scalabilità, la semplicità e la compatibilità con applicazioni distribuite e servizi web.

Appalto:

L'appalto, nell'ambito del progetto di Ingegneria del Software è un contratto attraverso il quale una parte (il committente) affida a un'altra parte (l'appaltatore) l'esecuzione di un'opera o la fornitura di un servizio, con l'obbligo di ottenere un risultato specifico in cambio di una compensazione economica. L'appalto può riguardare attività di costruzione, fornitura di beni, consulenze, o servizi. L'appaltatore è responsabile per il completamento dell'opera o servizio entro i tempi e le condizioni stabilite nel contratto.

Applicazione:

Un'applicazione (spesso abbreviata in app) è un software progettato per eseguire una serie di compiti o funzioni specifiche per l'utente. Le applicazioni possono essere eseguite su vari dispositivi, tra cui computer, smartphone, tablet e server. Possono essere di diverso tipo: applicazioni desktop, applicazioni mobili, applicazioni web o applicazioni aziendali, ognuna delle quali serve scopi distinti come la produttività, l'intrattenimento, la gestione dei dati, l'interazione sociale, la comunicazione o l'elaborazione di informazioni. Le applicazioni vengono sviluppate utilizzando linguaggi di programmazione e framework specifici, e il loro obiettivo è migliorare l'esperienza dell'utente offrendo strumenti utili, interattivi e facilmente fruibili.

Attore:

Un attore è una qualsiasi entità, umana o meno, che interagisce con la parte di prodotto alla quale l'attore è esposto (sistema) per raggiungere uno scopo o soddisfare un bisogno. Questo viene fatto eseguendo una serie di azioni possibili definite dal ruolo assunto dall'attore e dai casi d'uso associati a quest'ultimo.

B

Backend:

Il backend è la parte di un'applicazione software che gestisce la logica di elaborazione, l'accesso ai dati e la comunicazione con i server, ma che non è direttamente visibile o interagibile dall'utente. È costituito da server, database e servizi che operano dietro le quinte per gestire richieste, processare informazioni, eseguire operazioni di calcolo e fornire risposte al frontend, cioè alla parte dell'applicazione con cui l'utente interagisce.

Backoffice:

Componente software del back-end riservata agli utenti Superadmin per il monitoraggio e la manutenzione della piattaforma e quindi del servizio.

Baseline:

Una baseline è la versione approvata di un prodotto di lavoro (parte di un progetto) che può essere modificato solo attraverso procedure formali di controllo delle modifiche. Ogni baseline è soggetta a controllo di versione e di configurazione.

BBHCoT:

BBHCot (Block Bayesian Hierarchical Cotangent Approximation) è un algoritmo di inferenza statistica utilizzato principalmente per l'approssimazione e il campionamento in modelli gerarchici bayesiani complessi. Combina l'uso di tecniche di Hamiltonian Monte Carlo (HMC) con metodi di cotangente per gestire in modo più efficiente il campionamento in modelli che presentano strutture gerarchiche, ovvero quando le variabili dipendono da livelli multipli di parametri.

BBHMC:

BBHMC (Block Bayesian Hamiltonian Monte Carlo) è una variante dell'algoritmo di Hamiltonian Monte Carlo (HMC), un metodo avanzato di campionamento utilizzato in statistica e machine learning per estrarre campioni da distribuzioni complesse. HMC si basa su una simulazione dinamica di un sistema fisico (sistema meccanico) per esplorare il spazio delle probabilità. BBHMC applica una versione "a blocchi" di HMC, migliorando l'efficienza e la scalabilità del campionamento in presenza di modelli complessi o di alta dimensione.

Benchmark:

Un insieme di metriche o indicatori di prestazione utilizzati per valutare le prestazioni di un sistema, di solito confrontando i risultati con standard o obiettivi predefiniti.

Best practice:

Il metodo migliore per effettuare la produzione. Basandosi su quelle procedure ripetibili che nel tempo si sono dimostrate migliori sia per la loro efficienza (meno quantità di sforzo), che per la loro efficacia (risultati migliori), la buona pratica garantisce il raggiungimento degli obiettivi nel massimo dell'economia e della qualità.

Bug:

Un bug è un errore, difetto o malfunzionamento in un programma o sistema software che causa un comportamento imprevisto o indesiderato. I bug possono sorgere per vari motivi, come errori nel codice, incoerenze nei dati, condizioni impreviste o incompatibilità tra diversi componenti del software. Possono manifestarsi come crash del programma, malfunzionamenti, risposte errate a comandi dell'utente, o performance scadenti.

Black box:

Modello descrivibile nel suo comportamento esterno tramite come reagisce in uscita (output) a una determinata sollecitazione in ingresso (input), ma il cui funzionamento interno è non visibile oppure è ignoto.

BM25:

BM25 è un algoritmo di ranking utilizzato nei motori di ricerca e nei sistemi di recupero delle informazioni per valutare la rilevanza di un documento rispetto a una query. Fa parte della famiglia dei modelli probabilistici di recupero delle informazioni e si basa su un modello di probabilità che considera la frequenza dei termini (TF, Term Frequency) e la loro distribuzione nei documenti (IDF, Inverse Document Frequency).

BM25 basato su Keywords:

Quando si parla di BM25 basato su keywords, ci si riferisce all'applicazione dell'algoritmo BM25 per il recupero e il ranking di documenti in base alla rilevanza delle parole chiave (keywords) contenute nella query di ricerca rispetto ai documenti nel database. In questo contesto, le "keywords" sono termini significativi che rappresentano concetti rilevanti o specifici in una query di ricerca. BM25 calcola il punteggio di ogni documento in base alla frequenza delle keyword al suo interno, applicando una formula che bilancia la frequenza del termine (TF) con la sua rarità (IDF) nel corpus complessivo di documenti. Il modello BM25 basato su keywords tende a favorire i documenti che contengono le parole chiave frequentemente, ma limita l'effetto delle parole che compaiono troppo spesso in molti documenti (termine ad alta frequenza) attraverso un meccanismo di penalizzazione, migliorando così la precisione dei risultati di ricerca.

Board:

In GitHub, un project board, o semplicemente board, è uno strumento che aiuta a organizzare e tenere traccia delle attività del progetto. Consiste in colonne che rappresentano lo stato delle attività, come "To Do" (Da Fare), "In Progress" (In Corso), e "Done" (Fatto). Gli issue e le pull request possono essere assegnati a queste colonne per indicare il loro stato corrente.

Branch:

Nello sviluppo software un branch è una copia separata del codice sorgente che consente agli sviluppatori di lavorare alle modifiche su un ramo a parte senza influenzare direttamente il ramo principale. I branch facilitano lo sviluppo parallelo e la gestione delle versioni.

Budget At Completion:

Costo complessivo del progetto pianificato per eseguire tutte le attività e consegnare il prodotto finale.

C

Cache:

La cache è una memoria temporanea ad alta velocità utilizzata per memorizzare dati frequentemente richiesti o calcolati, al fine di ridurre i tempi di accesso e migliorare le prestazioni complessive di un sistema. La cache viene utilizzata in vari contesti, tra cui processori, sistemi operativi, reti e applicazioni web, per ottimizzare l'efficienza.

Capitolato:

Un capitolato è un documento che stabilisce le specifiche, i requisiti e le condizioni principali di un progetto o di un'appalto. Viene utilizzato per definire in modo dettagliato ciò che deve essere realizzato, quali sono le prestazioni attese e le regole che devono essere seguite. Il capitolato fornisce una base solida per la pianificazione e l'esecuzione di un progetto, assicurando che tutte le parti coinvolte abbiano una chiara comprensione delle aspettative, esponendo un problema/bisogno a cui trovare soluzione.

Caso d'uso:

Un caso d'uso descrive interazioni tra sistema (una parte del prodotto) e attori come sono percepite dagli utenti, definendo come il sistema deve essere utilizzato e che funzionalità espone. Consiste dunque di un insieme di scenari (sequenze di azioni) che hanno in comune uno scopo finale (obiettivo) per un utente (attore).

ChatGPT:

ChatGPT è un modello di linguaggio sviluppato da OpenAI, basato sulla tecnologia GPT (Generative Pre-trained Transformer). È progettato per generare risposte in linguaggio naturale in modo coerente e fluido, in risposta a input di testo forniti dall'utente. ChatGPT è stato addestrato su una vasta quantità di dati e può essere utilizzato per una varietà di applicazioni, tra cui rispondere a domande, assistere nella scrittura, creare contenuti, tradurre linguaggi, e molto altro.

Ciclo di vita del Software:

Insieme delle fasi che descrivono lo sviluppo e la gestione di un software, dalla concezione iniziale al ritiro. Include tipicamente: analisi dei requisiti, progettazione, implementazione, test, distribuzione e manutenzione.

Client CLI:

Il termine "client CLI" si riferisce a un client che interagisce con un sistema o un'applicazione attraverso un'interfaccia a riga di comando (CLI, Command Line Interface).

Committente:

Figura che commissiona lo sviluppo del software, definendo le esigenze e obiettivi del progetto. È il riferimento principale per la raccolta dei requisiti e la validazione del prodotto finale.

Consuntivo:

Bilancio dei risultati ottenuti a rendiconto di un certo periodo temporale di attività, in termini di tempo e risorse.

CPU:

La CPU (Central Processing Unit), o unità di elaborazione centrale, è il componente principale di un computer responsabile dell'esecuzione delle istruzioni dei programmi. Funziona come il "cervello" del sistema, elaborando dati, eseguendo operazioni aritmetiche e logiche e coordinando le altre componenti hardware.

CRUD:

Acronimo che identifica le quattro operazioni fondamentali nella gestione dei dati: Create, Read, Update, Delete. Queste operazioni sono alla base delle funzionalità offerte da database e API.

Cruscotto:

Definito in inglese come "dashboard", permette di avere una panoramica chiara, univoca e dinamica nel tempo, dello stato d'avanzamento delle attività da svolgere.

CSV:

Formato di file testuale (Comma-Separated Values) utilizzato per rappresentare dati tabellari. Ogni riga corrisponde a un record e i valori sono separati da virgole (o altri delimitatori).

CTO:

Il CTO (Chief Technology Officer) è il dirigente responsabile della strategia tecnologica di un'azienda. Il suo ruolo principale è guidare lo sviluppo e l'implementazione delle tecnologie necessarie per supportare gli obiettivi aziendali, assicurandosi che l'infrastruttura tecnologica sia innovativa, efficiente e scalabile.

D

Database:

Un database è un sistema organizzato per raccogliere, archiviare e gestire dati in modo strutturato, consentendo un rapido accesso, manipolazione e aggiornamento delle informazioni. I dati all'interno di un database sono generalmente organizzati in tabelle, righe e colonne, ma possono essere anche strutturati in altre forme, come grafi o documenti, a seconda del tipo di database. I database possono essere relazionali (come MySQL, PostgreSQL, Oracle), nei quali i dati sono organizzati in tabelle interconnesse tramite chiavi primarie e straniere, o non relazionali (come MongoDB, Cassandra), dove i dati sono archiviati in formato più flessibile, come documenti JSON o coppie chiave-valore.

Discord:

Discord è una piattaforma di comunicazione online che combina chat testuale, vocale e video. Consente agli utenti di creare server, organizzare discussioni in canali e personalizzare l'esperienza di comunicazione. Discord, inoltre, offre un sistema di ruoli e autorizzazioni che consente di controllare l'accesso agli utenti e di definire chi può fare cosa all'interno del server. Inoltre supporta bot e integrazioni di terze parti che consentono di aggiungere funzionalità personalizzate ai server.

Docker:

Una piattaforma open-source che consente di automatizzare il processo di distribuzione delle applicazioni all'interno di contenitori leggeri e portabili.

Docker Compose:

Uno strumento che consente la definizione e l'esecuzione di applicazioni Docker multi-container. Permette di configurare un'applicazione complessa con più servizi e le relative dipendenze in un unico file.

E

Economicità:

Unione di efficacia ed efficienza, misura la capacità di raggiungere l'obiettivo prefissato unendo allo stesso tempo l'uso minimo delle risorse indispensabili.

Efficacia:

L'efficacia si riferisce alla capacità di un'azione, strategia, processo o strumento di raggiungere gli obiettivi prefissati o produrre i risultati desiderati. È un indicatore di successo relativo a come e quanto bene un'attività o un'operazione riesce a soddisfare le esigenze o i criteri stabiliti, senza necessariamente considerare i costi o l'efficienza. In altri termini, qualcosa è considerato efficace se raggiunge il suo scopo in modo soddisfacente.

Efficienza:

L'efficienza è la capacità di ottenere un risultato desiderato utilizzando la minor quantità di risorse possibile, come tempo, energia, denaro o lavoro. In altre parole, un processo è considerato efficiente quando raggiunge gli obiettivi prefissati con il minor spreco di risorse. L'efficienza non si limita solo ai risultati, ma considera anche come questi vengano ottenuti, mirando a ottimizzare il rapporto tra input e output.

Endpoint:

Un endpoint è un punto finale di comunicazione in un sistema o rete, dove si verifica lo scambio di dati tra due sistemi o componenti. Nella programmazione delle API, un endpoint è l'URL (Uniform Resource Locator) che identifica una risorsa specifica o un'operazione su un server. Ogni endpoint rappresenta un'azione che può essere compiuta su una risorsa, come ottenere, modificare, inserire o eliminare dati, ed è legato a un'operazione HTTP.

F

Fine Tuning:

Il fine-tuning è un processo di ottimizzazione di un modello di machine learning o deep learning, in cui un modello pre-addestrato viene ulteriormente allenato su un dataset specifico per migliorare le sue prestazioni in un determinato compito. Questo approccio sfrutta il transfer learning, ovvero la capacità di un modello già addestrato su un ampio set di dati di apprendere nuove informazioni senza dover ripartire da zero.

Framework:

Un framework è un insieme di strumenti, librerie e convenzioni che fornisce una struttura predefinita per lo sviluppo di software, applicazioni web o sistemi. Esso stabilisce le linee guida e le best practice, permettendo agli sviluppatori di concentrarsi sulle specifiche funzionalità dell'applicazione piuttosto che sulle basi o sui dettagli di implementazione.

Funzionalità:

Caratteristica di un determinato prodotto/componente software utilizzata a scopo realizzativo. La funzionalità di un sistema, software o dispositivo rappresenta l'insieme delle capacità, operazioni e comportamenti che esso è in grado di offrire agli utenti per soddisfare determinati requisiti o esigenze. Ogni funzionalità corrisponde a una specifica azione o servizio che il sistema può eseguire, come ad esempio l'invio di messaggi in un'app di chat, la ricerca di informazioni in un motore di ricerca o la gestione dei dati in un database.

G

Gigabyte (GB):

Il gigabyte (GB) è un'unità di misura dell'informazione digitale che equivale a 1 miliardo di byte (10⁹ byte) secondo il sistema decimale, oppure a 1.073.741.824 byte (2³⁰ byte) nel sistema binario, comunemente usato in ambito informatico.

Git:

Git è un sistema di controllo versione distribuito (DVCS), progettato per tracciare le modifiche nel codice sorgente durante lo sviluppo del software. È uno strumento fondamentale per la gestione del controllo delle versioni, consentendo agli sviluppatori di lavorare in modo collaborativo e tenere traccia delle modifiche apportate al codice nel tempo, consentendo inoltre il ripristino a versioni precedenti del software in maniera controllata.

GitHub:

GitHub è una piattaforma di sviluppo collaborativo basata su Git che consente agli sviluppatori di lavorare insieme, gestire versioni del codice sorgente e facilitare la collaborazione in progetti software. Le sue caratteristiche principali includono repository per il controllo delle versioni, strumenti di tracciamento problemi (issues) e funzionalità di gestione progetti (project boards).

GPU:

La GPU (Graphics Processing Unit) è un'unità di elaborazione specializzata progettata per eseguire calcoli paralleli ad alta velocità, principalmente utilizzata per il rendering grafico. A differenza della CPU (Central Processing Unit), che è ottimizzata per l'elaborazione sequenziale, la GPU è composta da migliaia di core che consentono di eseguire simultaneamente un gran numero di operazioni, rendendola ideale per carichi di lavoro paralleli.

GSM8K:

GSM8K è un dataset creato per valutare e addestrare modelli di intelligenza artificiale nella risoluzione di problemi di matematica elementare. Il nome "Grade School Math 8K" indica che contiene circa 8.500 problemi matematici a livello di scuola primaria (grade school), con una struttura che include sia il testo del problema che la soluzione dettagliata passo-passo.

H

Hosting:

Il hosting è un servizio che fornisce spazio su un server per ospitare siti web, applicazioni, database o altri contenuti digitali, rendendoli accessibili via Internet. Un fornitore di hosting mette a disposizione infrastrutture hardware e software per garantire la disponibilità, la sicurezza e le prestazioni di un sito o servizio online.

HumanEval:

HumanEval è un dataset utilizzato per valutare le capacità dei modelli di intelligenza artificiale nella scrittura di codice sorgente. Creato da OpenAI, HumanEval è progettato per testare la capacità di un modello di generare soluzioni corrette a problemi di programmazione. Il dataset contiene circa 160 problemi di programmazione di difficoltà variabile, che coprono diversi concetti di programmazione come algoritmi, strutture dati, e logica computazionale. Ogni problema include una descrizione del problema, un output atteso e dei test di valutazione che vengono utilizzati per verificare se la soluzione proposta è corretta. HumanEval è spesso utilizzato per misurare le prestazioni di modelli di codifica automatica, come quelli basati su GPT (Generative Pretrained Transformer), in grado di generare codice sorgente in linguaggi di programmazione come Python.

HTML:

HTML è il linguaggio di markup standard utilizzato per creare e strutturare contenuti su pagine web. Utilizzando una serie di tag e attributi, HTML definisce la struttura e il contenuto di una pagina web, come testi, immagini, link, tabelle, moduli e altri elementi interattivi.

I

IEC:

Acronimo di International Electrotechnical Commission, è un'organizzazione internazionale che studia e pubblica standard per ogni tecnologia elettrica, elettronica e correlate. L'IEC gestisce inoltre quattro sistemi globali di valutazione che certificano la conformità di apparecchiature, sistemi e componenti rispetto agli standard internazionali.

IETF:

La Internet Engineering Task Force è un organismo internazionale, libero, composto da tecnici, specialisti e ricercatori interessati all'evoluzione tecnica e tecnologica di Internet.

Inspection:

Tecnica di analisi statica utilizzata per ricercare errori attraverso una lettura mirata.

Interfaccia:

In informatica, un'interfaccia è un punto di connessione che consente la comunicazione tra due sistemi, dispositivi, o componenti software. Essa definisce il modo in cui questi elementi interagiscono, stabilendo le modalità con cui scambiano dati, comandi e risposte.

ISO:

L'ISO (International Organization for Standardization) è un'organizzazione internazionale non governativa che sviluppa e pubblica standard globali per garantire la qualità, la sicurezza e l'efficienza di prodotti, servizi e sistemi. Fondata nel 1947, l'ISO ha come obiettivo quello di creare norme che siano accettate globalmente e che aiutino a facilitare il commercio internazionale, la sicurezza dei consumatori, e l'innovazione tecnologica.

ISO 12207:1995:

Standard internazionale che definisce i processi del ciclo di vita del software, tra cui sviluppo, gestione, supporto e manutenzione, con lo scopo di garantire qualità e tracciabilità nello sviluppo software.

Issue:

In ambito di GitHub, una issue (problema) rappresenta un meccanismo attraverso il quale gli utenti possono segnalare, discutere e tenere traccia di attività specifiche all'interno di un progetto. Ogni issue ha un thread di commenti associato, consentendo la comunicazione tra i membri del team o i collaboratori esterni. Questo strumento facilita la collaborazione e la gestione delle attività nello sviluppo del software.

J

JavaScript:

JavaScript è un linguaggio di programmazione utilizzato principalmente per sviluppare pagine web interattive. È un linguaggio di scripting client-side, il che significa che viene eseguito direttamente nel browser dell'utente, permettendo di manipolare il contenuto della pagina web, rispondere agli eventi (come clic o invio di moduli) e interagire dinamicamente con l'utente senza dover ricaricare la pagina.

JSon:

JSON (JavaScript Object Notation) è un formato di scambio di dati leggero, di facile lettura e scrittura per gli esseri umani e facile da analizzare e generare per le macchine. È utilizzato per rappresentare strutture di dati e oggetti in modo che possano essere facilmente scambiati tra client e server, o tra diverse applicazioni. JSON è principalmente utilizzato nelle applicazioni web per inviare dati tra client e server in modo rapido ed efficiente, specialmente in combinazione con il linguaggio di programmazione JavaScript, anche se è compatibile con molti altri linguaggi di programmazione.

K

Know how:

Il know-how è l'insieme delle conoscenze pratiche, competenze e abilità specifiche che una persona o un'organizzazione acquisisce attraverso l'esperienza, la formazione e la pratica diretta in un determinato settore o attività. Questo termine, spesso tradotto come "saper fare", si riferisce alla capacità di applicare efficacemente una conoscenza teorica per risolvere problemi concreti, innovare o migliorare processi.

L

LaTeX:

LaTeX è un sistema di preparazione di documenti adatto per la scrittura di testi scientifici, tecnici e accademici, con particolare enfasi nella gestione di formule matematiche, riferimenti bibliografici e strutture complesse. Creato da Leslie Lamport nel 1985 come un insieme di macro per il sistema di composizione tipografica TeX (creato da Donald Knuth), LaTeX è uno degli strumenti più popolari nel mondo accademico e scientifico per la creazione di documenti professionali.

LIFO:

Acronimo di Last In, First Out. È una politica di gestione dei dati secondo cui l'ultimo elemento inserito è il primo a essere rimosso. Tipica delle strutture dati come lo stack (pila).

llama.cpp:

llama.cpp è un'implementazione ottimizzata in C++ dei modelli LLaMA (Large Language Model Meta AI) sviluppati da Meta. È progettata per eseguire questi modelli in modo efficiente su CPU, riducendo la dipendenza da GPU di fascia alta e consentendo il funzionamento anche su dispositivi con risorse limitate, come laptop e smartphone.

LLM:

Un Large Language Model (LLM) è un tipo di modello linguistico basato su intelligenza artificiale e deep learning progettato per comprendere, generare e manipolare il linguaggio naturale. Gli LLM sono addestrati su enormi quantità di dati testuali e sono in grado di eseguire una varietà di compiti linguistici, come la generazione di testo, la traduzione, il completamento delle frasi, e rispondere a domande.

M

Machine Learning:

Il Machine Learning (ML) è una branca dell'intelligenza artificiale (AI) che si concentra sullo sviluppo di algoritmi e modelli in grado di apprendere e migliorare autonomamente dai dati senza essere esplicitamente programmati. In altre parole, il machine learning consente ai computer di identificare pattern nei dati e fare previsioni o decisioni basate su tali pattern.

Manuale Utente:

Nota come guida utente (user guide) o manuale d'uso (user manual), ha lo scopo di assistere gli utenti nell'utilizzo di un particolare prodotto, servizio o applicazione: è scritto con un gergo semplice, diretto e comprensibile.

Manuale Sviluppatore:

Anche noto come Manuale del Manutentore, ha lo scopo di fornire una linea guida per gli sviluppatori che andranno a mantenere o estendere il prodotto, dando informazioni relative a linguaggi, tecnologie e framework utilizzati per la fase di realizzazione.

Manutenzione:

Nell'ingegneria del software, è la modifica di un prodotto software dopo la consegna per correggere i bug, vulnerabilità, migliorare le prestazioni in relazione all'avvento di nuove tecnologie più performanti.

Microservizio:

I microservizi sono un approccio per sviluppare e organizzare l'architettura dei software dove quest'ultimi sono composti di servizi indipendenti di piccole dimensioni che comunicano tra loro tramite API ben definite. Questi servizi sono controllati da piccoli team autonomi. Le architetture dei microservizi permettono di scalare e sviluppare le applicazioni in modo più rapido e semplice.

Milestone:

Una milestone è una data di calendario che denota un punto di avanzamento atteso. Nel contesto di GitHub o di altre piattaforme di gestione progetti, le milestone sono spesso utilizzate per organizzare e tenere traccia di gruppi di issues o di attività correlate. Associare un gruppo di issues a una milestone può aiutare a monitorare il progresso e a stabilire obiettivi intermedi, contribuendo a gestire in modo più efficace lo sviluppo del progetto.

Mistral:

Mistral è una serie di modelli linguistici avanzati sviluppati da Mistral AI, un'organizzazione focalizzata sull'intelligenza artificiale e sul deep learning. I modelli Mistral sono noti per essere progettati con una particolare attenzione all'efficienza e alle prestazioni elevate, specialmente in contesti di processing del linguaggio naturale (NLP).

Mistral-7B:

Mistral 7B è un modello di linguaggio avanzato sviluppato da Mistral AI, che si distingue per essere un modello open-source con circa 7 miliardi di parametri. Nonostante le dimensioni relativamente contenute rispetto ad altri modelli linguistici di grande portata come GPT-3 o GPT-4, Mistral 7B offre buone performance in numerosi compiti di elaborazione del linguaggio naturale (NLP), tra cui generazione di testo, completamento delle frasi, risposte a domande, e analisi del linguaggio.

MMLU:

MMLU è un benchmark utilizzato per valutare le prestazioni dei modelli linguistici in una vasta gamma di compiti di comprensione del linguaggio naturale (NLP). È progettato per testare la capacità di un modello di affrontare molteplici task di NLP in un'unica piattaforma, e fornisce una valutazione approfondita delle capacità di ragionamento, comprensione e applicazione di conoscenze di un modello. Il benchmark MMLU copre una varietà di domini, come matematica, scienze, storia, e molte altre aree.

Modello AI:

Un modello AI è un sistema algoritmico progettato per eseguire compiti che normalmente richiedono intelligenza umana, come il riconoscimento di immagini, il processamento del linguaggio naturale, o la predizione di eventi futuri. I modelli AI sono addestrati su grandi quantità di dati per apprendere pattern, relazioni e comportamenti che possono essere utilizzati per prendere decisioni, fare previsioni o generare risposte.

MT-Bench:

MT-Bench è un framework di valutazione progettato per testare e confrontare le prestazioni di modelli linguistici e sistemi di traduzione automatica (Machine Translation, MT). Questo strumento è utilizzato per misurare quanto efficacemente un modello di traduzione automatica esegue il compito di tradurre testi da una lingua all'altra, basandosi su vari criteri di qualità, come la precisione, la fluidità e la coerenza semantica della traduzione.

MVP:

Il Minimum Viable Product (MVP) è una versione iniziale di un prodotto con il minimo set di funzionalità necessarie per essere lanciata sul mercato e soddisfare i primi utenti. L'idea alla base dell'MVP è di sviluppare un prodotto che consenta di testare le ipotesi fondamentali riguardo al valore e alla funzionalità del prodotto stesso, con il minor investimento di tempo e risorse possibile. Una volta lanciato, l'MVP serve come base per raccogliere feedback reali dagli utenti, che possono guidare l'evoluzione del prodotto.

N

Node.js:

Node.js è un runtime JavaScript open-source che consente di eseguire codice JavaScript al di fuori di un browser, principalmente su server. Sfrutta il motore V8 di Google Chrome per l'esecuzione del codice e si basa su un modello di I/O non bloccante, che lo rende particolarmente adatto per applicazioni web scalabili e ad alte prestazioni. Node.js è progettato per la costruzione di applicazioni server-side, ma può essere utilizzato anche per strumenti di sviluppo e automazione.

Norme:

Le norme sono regole, principi o direttive stabilite da un'autorità competente o da un'organizzazione per regolamentare comportamenti, attività, procedure o standard in un determinato ambito. Possono essere di natura legale, tecnica, etica, o comportamentale e hanno lo scopo di garantire l'ordine, la sicurezza, l'equità, o la qualità in vari contesti, come il diritto, l'industria, la tecnologia, e la vita quotidiana.

NPM:

NPM è un gestore di pacchetti per il runtime di Node.js. È uno strumento fondamentale per la gestione delle dipendenze in applicazioni JavaScript e Node.js, consentendo agli sviluppatori di scaricare, installare, aggiornare e gestire le librerie e i pacchetti necessari per il loro progetto. NPM è il sistema di gestione dei pacchetti predefinito per Node.js ed è utilizzato da milioni di sviluppatori in tutto il mondo.

O

Ollama:

Ollama è una piattaforma progettata per eseguire modelli di intelligenza artificiale in locale, offrendo un'interfaccia semplice per il deployment e l'utilizzo di modelli di linguaggio avanzati. È particolarmente utile per sviluppatori e ricercatori che desiderano eseguire Large Language Models (LLM) senza dipendere da servizi cloud, garantendo maggiore privacy e controllo sui dati.

OpenAI:

OpenAI è un'organizzazione di ricerca e sviluppo nell'ambito dell'intelligenza artificiale (IA) che si impegna a garantire che i benefici delle IA avanzate siano distribuiti equamente tra tutti gli esseri umani. Fondata nel 2015 da personalità come Elon Musk, Sam Altman, Greg Brockman, Ilya Sutskever e John Schulman, OpenAI inizialmente si proponeva come organizzazione senza scopo di lucro, ma successivamente ha evoluto il proprio modello in una "organizzazione ibrida" con una struttura che include una componente commerciale per sostenere lo sviluppo delle sue tecnologie.

OpenAPI:

OpenAPI (precedentemente conosciuto come Swagger) è uno standard per la documentazione e la definizione di API RESTful. Fornisce una specifica formale per descrivere i servizi web, i loro endpoint, le operazioni disponibili, i parametri, le risposte e altri dettagli rilevanti. OpenAPI consente di generare automaticamente documentazione interattiva, client SDK e server stub, facilitando la progettazione, lo sviluppo e l'integrazione delle API.

OpenAPI 3.1:

OpenAPI 3.1 è una versione aggiornata della specifica OpenAPI che fornisce un formato standardizzato per la documentazione delle API RESTful. OpenAPI 3.1 introduce diverse migliorie rispetto alle versioni precedenti, tra cui una maggiore integrazione con JSON Schema e nuove funzionalità per supportare l'evoluzione delle API, migliorare la gestione della sicurezza e semplificare la definizione degli endpoint.

Open-source:

Il termine open-source si riferisce a un tipo di software il cui codice sorgente è reso pubblico e disponibile gratuitamente per essere visualizzato, modificato e distribuito da chiunque. Questo modello promuove la collaborazione e l'innovazione, consentendo a sviluppatori di tutto il mondo di contribuire al miglioramento del software.

P

Pattern Architetturali:

I pattern architetturali sono soluzioni riutilizzabili e comprovate a problemi ricorrenti nella progettazione di architetture software. Questi pattern descrivono strutture e organizzazioni di componenti software che risolvono problemi comuni legati alla scalabilità, alla manutenzione, alla sicurezza, alla gestione delle risorse, alla comunicazione tra componenti e ad altri aspetti critici nella costruzione di sistemi software complessi.

Processo:

In informatica e nell'ambito dei sistemi operativi, un processo è un'istanza di un programma in esecuzione. Un processo è costituito da una serie di attività che il sistema operativo gestisce, e rappresenta una sequenza di operazioni che il sistema deve eseguire. Ogni processo ha risorse allocate, come memoria, tempo di CPU e accesso ad altri dispositivi, che sono gestiti dal sistema operativo per garantirne un'esecuzione corretta e sicura.

Proof of Concept:

Un PoC (Proof of Concept) è una realizzazione preliminare di un'idea o di una tecnologia con lo scopo di dimostrare la fattibilità di un progetto, di un prodotto o di una soluzione. In altre parole, un PoC è una prova tangibile che un'idea può funzionare in un contesto pratico, sebbene non sia necessariamente completa o pronta per il rilascio finale. Viene solitamente sviluppato per valutare se una determinata teoria o approccio è valido prima di impegnarsi in una fase di sviluppo più ampia e costosa.

Proponente:

Il proponente è colui che presenta ufficialmente l'iniziativa e promuove la sua realizzazione. Egli è cliente rispetto alle esigenze di prodotto e mentore rispetto alle scelte di sviluppo.

Protocollo:

Insieme di regole e convenzioni che regolano la comunicazione tra due o più entità (in informatica queste entità sono dispositivi elettronici).

Pull request:

Una Pull Request (PR) è una richiesta formale che viene inviata a un progetto di codice sorgente per chiedere che le modifiche apportate a una copia del progetto vengano esaminate e integrate nel ramo principale (o in un altro ramo di destinazione) del repository. Le pull request sono utilizzate comunemente in sistemi di versionamento del codice come GitHub, GitLab, e Bitbucket, per facilitare la collaborazione e il controllo qualità in un team di sviluppo.

Python:

Python è un linguaggio di programmazione ad alto livello, interpretato e orientato agli oggetti, noto per la sua sintassi semplice e leggibile. È ampiamente utilizzato in diversi ambiti, tra cui sviluppo software, intelligenza artificiale, analisi dati, automazione e sviluppo web.

Q

Qualità:

Riscontro oggettivo di misurazione di conformità alle specifiche attese. Viene misurata quantitativamente tramite scrutinio automatico/terzo e monitorabile.

Query:

Una query è una richiesta di informazioni o di operazioni su un database o su un sistema di informazioni. In informatica, si utilizza principalmente per estrarre dati da un database o per interagire con un sistema in modo da ottenere un risultato specifico.

QA:

Quality Assurance (QA) è un processo sistematico e continuo volto a garantire che un prodotto o servizio soddisfi gli standard di qualità definiti e le aspettative degli utenti. In ambito software, QA si riferisce alle pratiche e alle tecniche utilizzate per verificare e migliorare la qualità del software durante tutte le fasi dello sviluppo, dalla progettazione alla produzione.

R

RAM:

La RAM (memoria ad accesso casuale) è un tipo di memoria volatile utilizzata nei computer e in altri dispositivi elettronici per memorizzare temporaneamente i dati e i programmi in esecuzione. La RAM consente al processore di accedere rapidamente ai dati necessari per le operazioni, migliorando le prestazioni del sistema rispetto ad altri tipi di memoria più lenti, come i dischi rigidi (HDD) o anche gli SSD.

RAG:

RAG (Retrieval-Augmented Generation) è un'architettura di modelli di linguaggio che combina tecniche di retrieval (recupero delle informazioni) e generazione del linguaggio. È progettato per migliorare le capacità di un modello generativo, come un Large Language Model (LLM), integrando la ricerca di informazioni da un ampio database di testi o documenti durante la generazione di risposte.

Redattore:

Colui che si occupa della redazione di un documento, organizzandone le parti per creare una bozza, occupandosi di correggere eventuali errori segnalati dal Verificatore.

Repository:

Un repository è uno spazio di archiviazione centralizzato in cui vengono conservati e gestiti file, documenti, codice sorgente, risorse o altri dati digitali. I repository sono utilizzati principalmente nel contesto dello sviluppo software per gestire versioni di codice, tenere traccia delle modifiche, e facilitare la collaborazione tra diversi sviluppatori.

Reti Neurali:

Le reti neurali sono modelli computazionali ispirati al funzionamento del cervello umano, utilizzati principalmente in ambito di apprendimento automatico (machine learning) per risolvere problemi complessi come il riconoscimento di immagini, la traduzione linguistica, la previsione di tendenze, e molto altro.

Requirements and Technology Baseline:

È una baseline di un progetto software che definisce i requisiti e le tecnologie utilizzate per realizzarli. Identifica i requisiti funzionali e non funzionali del sistema, le tecnologie, le librerie e le piattaforme utilizzate per implementare tali requisiti, così come le strategie di sviluppo e di testing del software. La RTB (acronimo della suddetta) costituisce un punto di riferimento fondamentale per il controllo del progetto e per la verifica della sua conformità ai requisiti del cliente.

Requisito:

La capacità necessaria a un utente per risolvere un problema o raggiungere un obiettivo (lato bisogno), ma anche la capacità necessaria a un sistema per rispondere a una aspettativa (lato soluzione).

Rischio:

Problema che potrebbe ipoteticamente causare una perdita, minacciare l'avanzamento del progetto. Questi problemi potenziali potrebbero minare preventivi di costo, successo tecnico e morale del team. Un'attività di gestione del rischio (risk management) preventiva le perdite e provvede a stabilire misure di eventuale mitigazione del danno.

S

Scripting:

Tecnica di programmazione che utilizza script, ovvero file di codice interpretato, per automatizzare compiti, configurazioni o eseguire logiche all'interno di software o sistemi operativi. È tipica di linguaggi come Python, Bash o JavaScript.

Scrum:

Scrum è un framework per la gestione dei progetti che enfatizza il lavoro di squadra, la responsabilità e il progresso iterativo verso un obiettivo ben definito. Il framework inizia con una semplice premessa: iniziare con ciò che si può vedere o conoscere. Dopodiché, si deve tenere traccia dei progressi e modificarli, se necessario.

Set di domande:

Collezione strutturata di domande, spesso associate a risposte attese, utilizzata per eseguire test, valutazioni o confronti sistematici all'interno dell'applicativo. Può essere creato, modificato o riutilizzato durante le sessioni di test.

Sistema:

Insieme organizzato di componenti — hardware, software e/o umani — che interagiscono per realizzare un obiettivo comune. In ambito software, indica l'intera applicazione o piattaforma con cui interagisce l'utente.

Sistema Statistico:

Un sistema statistico è un insieme di metodi, tecniche e strumenti utilizzati per raccogliere, analizzare, interpretare e presentare dati numerici e informazioni. Questi sistemi sono impiegati per comprendere fenomeni complessi, fare previsioni e supportare decisioni basate su dati.

Software:

Insieme di programmi, librerie e dati che permettono a un computer di svolgere determinate funzioni. Può essere di sistema, applicativo o di sviluppo, ed è distinto dall'hardware su cui viene eseguito.

Sprint:

Periodo di tempo prefissato entro il quale lavorare producendo dei risultati documentati: sono il core delle metodologie Agile, atte a produrre risultati dicreti in dimensione ma in maniera costante.

Stakeholder:

Identifica un soggetto o gruppo coinvolto in un'iniziativa economica, società o altro progetto, e con interessi legati all'esecuzione o dall'andamento dell'iniziativa stessa.

Standard di qualità:

Insieme di prescrizioni forniteci dalle organizzazioni ISO e IEC relative al mantenimento di obiettivi specifici coinvolgenti ideazione, sviluppo, creazione e mantenimento dei prodotti software realizzati.

Stateless:

Il termine "stateless" in un contesto informatico si riferisce a un sistema o a un protocollo in cui ogni richiesta da parte di un client è indipendente dalle precedenti.

Streamlit:

Streamlit è un framework open-source in Python progettato per creare applicazioni web interattive in modo semplice e veloce, senza la necessità di avere conoscenze approfondite di sviluppo frontend. È particolarmente utilizzato per la visualizzazione di dati, dashboard interattive e applicazioni di machine learning.

SWE:

SWE sta per Software Engineering, che è la disciplina che si occupa della progettazione, sviluppo, manutenzione e gestione del ciclo di vita del software. L'ingegneria del software applica principi ingegneristici e best practice per costruire sistemi software di alta qualità, efficienti e scalabili, che soddisfino le necessità degli utenti e siano facili da mantenere nel tempo.

T

Telegram:

Telegram è un'applicazione di messaggistica istantanea e una piattaforma di comunicazione che consente agli utenti di scambiare messaggi di testo, foto, video, documenti e altri tipi di file.

Temperatura (LLM):

Parametro che controlla il livello di casualità nelle risposte generate da un modello linguistico. Valori bassi producono risposte più deterministiche, mentre valori alti aumentano la variabilità e la creatività del testo generato.

Test:

Attività atta a verificare le funzionalità di un determinato prodotto, individuandone eventuali carenze.

Token:

Stringa di caratteri utilizzata per identificare e autenticare un utente, un'applicazione o una sessione in modo sicuro durante l'accesso a servizi o API. Può contenere informazioni codificate come scadenze o privilegi.

Typst:

Typst è un linguaggio di markup progettato per la scrittura e la formattazione di documenti, simile a LaTeX, ma con un approccio più moderno e accessibile. È stato sviluppato con l'obiettivo di semplificare il processo di creazione di documenti tecnici, scientifici, e accademici, mantenendo una sintassi chiara e coerente.

TruthfulQA:

TruthfulQA è un benchmark progettato per valutare la capacità dei modelli di linguaggio, come i Large Language Models (LLM), di produrre risposte veritiere e accurate in relazione a domande di conoscenza generale. Questo benchmark è stato sviluppato per misurare non solo la competenza linguistica, ma anche l'affidabilità e la precisione delle risposte fornite dai modelli di intelligenza artificiale.

U

UI:

La UI (User Interface), o interfaccia utente, è l'insieme di elementi attraverso i quali un utente interagisce con un dispositivo, un'applicazione o un sistema. Include tutti gli strumenti visivi e interattivi che consentono all'utente di comunicare con il software, come pulsanti, finestre, menù, icone, e qualsiasi altro elemento che permetta di eseguire operazioni o visualizzare informazioni.

UML:

Acronimo di Unified Modeling Language, è un linguaggio di modellazione standardizzato utilizzato per specificare, visualizzare, costruire e documentare i componenti di un sistema software. Viene impiegato in ingegneria del software per rappresentare visivamente i vari aspetti di un'applicazione o di un sistema, facilitando la comprensione e la progettazione prima della sua realizzazione.

URL:

Acronimo di Uniform Resource Locator. Identificatore standard utilizzato per localizzare una risorsa su Internet. Specifica il protocollo (es. https), l'indirizzo del server e il percorso della risorsa.

User Friendly:

Il termine user-friendly (letteralmente "amichevole per l'utente") si riferisce a un sistema, software o prodotto progettato per essere facilmente comprensibile, utilizzabile e accessibile da parte degli utenti, anche senza una formazione tecnica specifica. Un prodotto user-friendly è intuitivo, semplice da navigare e consente agli utenti di ottenere i risultati desiderati con il minimo sforzo e complessità.

V

Validazione dei requisiti:

Processo che consiste nell'accertare che il prodotto corrisponda alle attese. Ci si pone la domanda: ho costruito il sistema corretto/giusto? Ponendo attenzione quindi sul prodotto finale.

Verbale Esterno:

Documento ufficiale che riporta un resoconto dettagliato di una riunione o incontro con stakeholder o attori esterni al team di sviluppo.

Verbale Interno:

Documento redatto durante una riunione interna, che riassume le decisioni prese, le attività discusse e i punti di azione.

Verifica dei requisiti:

Processo che consiste nell'accertare che lo svolgimento delle attività di sviluppo non introduca errori. Ci si pone la domanda: ho costruito il sistema nel modo corretto? Ponendo attenzione quindi sul way of working.

Versionamento:

Il versionamento è il processo di gestione delle versioni di un prodotto, software o documento durante il suo ciclo di vita. Consente di tenere traccia delle modifiche e degli aggiornamenti, facilitando il ritorno a versioni precedenti e il controllo delle modifiche apportate nel tempo. Questo processo è fondamentale per garantire che le modifiche siano ben documentate e per consentire la collaborazione tra più sviluppatori o team.

W

Walkthrough:

Tecnica di verifica utilizzata per eseguire una lettura completa e un controllo di un documento, con l'obiettivo di individuare eventuali errori. In questa tecnica, il Verificatore esegue una revisione completa del documento senza conoscere in anticipo gli errori potenziali, al fine di individuare i problemi e proporre eventuali miglioramenti.

Way of Working:

Il Way of Working, che può essere tradotto in italiano come "modo di lavorare", definisce come organizzare al meglio le attività di progetto per far si che il team operi in maniera professionale. Esso può includere processi operativi, procedure, norme comportamentali, e l'utilizzo di strumenti o tecnologie specifiche. Adottare un Way of Working efficace può contribuire al successo e alla produttività nello svolgere il lavoro necessario.

WebApp:

Una WebApp è un'applicazione software che è accessibile e utilizzabile tramite un browser web, piuttosto che essere installata su un dispositivo come una tradizionale applicazione desktop o mobile. Le WebApp sono progettate per offrire funzionalità simili a quelle delle applicazioni native, ma funzionano direttamente su Internet senza la necessità di installazioni locali.

X

XML:

XML è un linguaggio di markup utilizzato per la rappresentazione e la strutturazione di dati in un formato leggibile sia da umani che da macchine. È progettato per essere estensibile, il che significa che gli utenti possono definire i propri tag e strutture di dati in base alle necessità specifiche del loro dominio applicativo. XML è ampiamente utilizzato per lo scambio di dati tra sistemi, applicazioni e piattaforme differenti.

Y

YAML:

Formato di serializzazione leggibile per la configurazione.

Z

Zero-day:

Vulnerabilità sconosciuta sfruttata dagli hacker.