Manuale di riferimento MALDA™

Il linguaggio di programmazione AI-First - Versione 1.0.11

Benvenuti nel manuale di riferimento MALDA

MALDA: The AI-First Programming Language è un linguaggio di programmazione moderno e orientato agli oggetti, pensato per costruire agenti AI e workflow di automazione. Con supporto nativo all'integrazione LLM, all'orchestrazione di agenti e ai sistemi multi-agente, MALDA rende semplice creare applicazioni intelligenti e autonome.

MALDA: Multi Agent Language with Development Automation - Il nome MALDA riflette i principi del linguaggio: Multi Agent (supporto nativo all'orchestrazione di più agenti AI che collaborano), Language (un linguaggio completo, con sintassi, runtime e tooling), Development (una toolchain completa - interprete, compilatore, IDE, language server - per costruire e distribuire software reale) e Automation (gli agenti di coding possono scrivere MALDA grazie al language pack in docs/llm/, e i programmi MALDA automatizzano a loro volta il lavoro di sviluppo, perché prompt, agenti e workflow durevoli sono costrutti del linguaggio).

Cosa viene distribuito oggi: MALDA 1.0.11 (questo manuale). La semantica del linguaggio Tier 0 è specificata in malda-language-1.0. Un interprete C#, un compilatore che fa transpile verso C# o JavaScript, un Desktop IDE Windows, un playground nel browser e un language server per editor cross-platform. Ogni funzionalità descritta in questo manuale gira sull'interprete; dove una funzionalità manca in uno dei transpiler, il capitolo lo dice.
Onboarding consigliato: MALDA funziona meglio con un avvio a due binari. Chi programma per la prima volta dovrebbe iniziare dal percorso dei fondamenti del linguaggio. Chi ha già esperienza può entrare subito nei prompt, negli agenti, nelle API e negli esempi full-stack. Dopo il percorso core, si dirama verso Testing e qualità, Dati e database e App nel browser. Per path di esempi eseguibili e quickstart CLI, vedi Start Here.

Avvio rapido

Se programmi già, parti dai costrutti caratteristici. -> Review lega il prompt allo schema. Senza await, la chiamata è un template reso (nessuna API key). validate("Review", …) è lo stesso controllo che await eseguirebbe sul JSON del modello. Le annotazioni di tipo altrove sono type hint IDE/LSP, non controlli a runtime. Stesso file: Examples/Basics/first_look.malda.

1. First Look

schema Review {
    summary: string;
    issues: string[];
}

prompt codeReview(code, language) -> Review {
    system: "You are an expert reviewer of {language}.",
    user: "Review this {language} code:\n\n{code}"
}

var rendered = codeReview("function add(a, b) { return a + b; }", "javascript");
io.print(rendered.user);

var checked = validate("Review", {
    "summary": "Looks fine",
    "issues": []
});
if (checked.ok) {
    io.print("schema ok: " + checked.data.summary);
} else {
    io.print("schema failed: " + checked.error);
}

Poi il percorso della sintassi, se vuoi il linguaggio core prima di agenti e API. Preferisci le chiamate namespaced (io.print, math.sqrt, str.upper); il print piatto continua a funzionare.

2. Output a stampa

io.print("Hello, World!");

3. Variabili e aritmetica

var price = 12;
var quantity = 3;
var total = price * quantity;

io.print("Total: " + total);

4. Condizionali

var score = 82;

if (score >= 60) {
    io.print("Pass");
} else {
    io.print("Fail");
}

5. Cicli e funzioni

function printCountdown(start) {
    var current = start;
    while (current > 0) {
        io.print(current);
        current = current - 1;
    }
    io.print("Go!");
}

printCountdown(3);

6. Programma iniziale completo

Questo esempio combina variabili, array, un ciclo, una funzione e un'if in un unico programma lineare:

var cart = [12, 18, 7];
var total = 0;

for (var item in cart) {
    total = total + item;
}

function describeTotal(amount) {
    if (amount >= 30) {
        return "big order";
    }
    return "small order";
}

io.print("Items: " + cart.length);
io.print("Total: " + total);
io.print("Summary: " + describeTotal(total));

Per altri programmi per principianti eseguibili nello stesso stile, vedi Esempi e Start Here.

Scegli il percorso

Percorso 1: imparare a programmare con MALDA

Inizia da qui se stai imparando a programmare per la prima volta. Segui questa sequenza:

  1. First Look (prompt + schema + validate)
  2. Hello World
  3. Variabili e aritmetica
  4. Condizionali
  5. Cicli
  6. Funzioni
  7. Programma iniziale completo
  8. Esempio di input

Vedi Esempi per programmi per principianti eseguibili.

Dopo il percorso core, diramati verso Testing e qualità, Dati e database e App nel browser.

Percorso 2: costruire app AI con MALDA

Inizia da qui se conosci già le basi e vuoi arrivare in fretta a prompt, agenti e app AI full-stack.

Quickstart full-stack: MALDA supporta sia lo stack nativo MALDA (UI renderizzata sul server) sia lo stack ibrido (frontend React/Vue/ecc. + backend MALDA). Non sai quale capitolo UI leggere? Inizia da 23. Panoramica Web UI. 29. Sviluppo full-stack con MALDA collega i pezzi da un capo all'altro.

Funzionalità principali

Linguaggio core

Capacità AI-First

Funzionalità Web e API

Indice dei capitoli

Per iniziare

Per iniziare con MALDA, esegui malda Examples/Basics/first_look.malda dalla CLI. Il Desktop IDE è il riferimento Windows (WPF); il Web IDE è un playground nel browser (non a parità con il Desktop); VS Code + LSP è l'editor cross-platform. Il Desktop IDE offre:

Se sei nuovo al linguaggio, percorri gli esempi di Avvio rapido qui sopra dall'inizio alla fine prima di passare ad agenti e funzionalità full-stack.

Quando sei pronto a regolare il comportamento a runtime, vedi l'Appendice per i flag CLI di profiling (inclusi gli snapshot periodici opzionali su file per le esecuzioni lunghe) e il riepilogo del report.

Esempio: un agente semplice

Un esempio rapido di creazione di un agente AI in MALDA:

// Create an agent (pass a client; for remote models use OpenRouterClient)
var client = new OpenRouterClient();
var agent = new Agent("Assistant", "helper", "You are a helpful assistant.", client);
var response = agent.think("What is 2+2?");
io.print(response.content);

Quando usi await prompt(...) o agenti specializzati (es. CodingAgent) senza passare un client, MALDA usa un LLM locale di default (Qwen/Qwen2.5-0.5B-Instruct, scaricato come build GGUF da Hugging Face al primo uso — nessuna API key).