Rust – Approfondimenti del codice

“Il Rust ha un insieme di caratteristiche che enfatizzano le prestazioni, il controllo dell’allocazione di memoria, la sicurezza e la concorrenza. Anche se i tempi di compilazione sono più lunghi rispetto al C per quanto riguarda le prestazioni, ogni tipico programma scritto in Rust ha occupazione di memoria e throughput non di certo invidiabile al C stesso.

Riguardo all’allocazione di memoria, ogni tipo usa un numero di bit definito dal linguaggio e ha un allineamento definibile dal programmatore, inoltre non viene usata la garbage collection, consentendo una deallocazione deterministica della memoria.

Riguardo alla sicurezza, il linguaggio vieta costrutti dal comportamento indefinito, come la lettura di variabili non ancora scritte, l’accesso oltre i limiti di array, la dereferenziazione di puntatori nulli o non validi, l’uso di iteratori invalidati; inoltre, nonostante l’assenza della garbage collection, non è possibile avere memory leak.

Riguardo alla sicurezza della concorrenza, il linguaggio impedisce operazioni concorrenti dall’esito indefinito, come l’accesso simultaneo in scrittura alla stessa variabile.

La sintassi di Rust somiglia a quella del linguaggio C per l’uso delle graffe per racchiudere strutture o blocchi di istruzioni, per gli operatori aritmetici e logici, e per le parole chiave di controllo del flusso if, else, for, while, break, continue, e return. I tipi primitivi di Rust sono analoghi ai tipi del C, anche se con nomi quasi tutti diversi. Tuttavia la semantica di Rust è parecchio diversa da quelle di C e C++.”

Ora che abbiamo espresso alcuni concetti fondamentali, possiamo spiegare sempre in modo elementare il codice sorgente scritto in precedenza, per dare una spiegazione più approfondita a chi si sta affacciando al mondo della programmazione.

Questo è il nostro codice scritto:

fn main() {
    println!("Hello, world!");
}

Per fn, intendiamo function ossia una funzione, che sarebbe un particolare costrutto sintattico, che permette di raggruppare, all’interno di programma, una sequenza di istruzioni in un unico blocco di istruzioni espletando così una determinata e in generale più complessa operazione, azione o elaborazione sui dati del programma stesso in modo tale che a partire da determinati input restituisca determinati output. Essa ha la particolarità che può essere chiamata e richiamata variee volte all’interno del nostro programma in sviluppo. Affianco ad fn abbiamo “main”… Ora non ci poniamo troppe domande perchè successivamente spiegheremo tutto nel dettaglio.

    println!("Hello, world!");

Questa riga fa tutto il lavoro di questo programma: stampa il testo sullo schermo. Qui ci sono vari dettagli importanti. Il primo è che è il codice è rientrato di quattro spazi, senza usare tabulazioni.

La seconda parte importante è l’espressione println!(). Questa chiama una macro di Rust, che è il modo usato da Rust per fare la metaprogrammazione. Se invece stessimo chiamando una funzione, si presenterebbe così: println() (senza il !). In seguito discuteremo le macro di Rust in maggiore dettaglio, ma per ora basti sapere che quando c’è un ! significa che si sta chiamando una macro invece di una normale funzione.

Più avanti vedremo più nel dettaglio l’aritmetica del linguaggio e l’utilizzo delle macro.

Author: Neb

$whoami
Neb

$cat neb.txt

Keen on Computer Science, He always studies Computer Programming, Managment of Computer Systems and CyberSecurity (Offensive Side).
Have interest in experimental the use of new technologies. Co-founder of FreeNIX Security

My skills are:

Programming Skills:

– Web Development: JavaScript, PHP and HTML
– Desktop Application: Python3(Qt or GTK), C++(Qt)
– CLI Application: Python, C/C++, Crystal, Assembly and Rust

System Skills:

– Knowledge Unix Server System (CentOS, Ubuntu, Debian and BSD)
– Windows Server Administrator (AD, DC and many other)
– Virtualization with VMware, VirtualBox and Qemu

Network Skills:

– Indipendent Study of Routing and Switching

CyberSecurity Skills:

– Penetration Testing (Check Vuln):
– Exploitation
– Report

Location: Taranto, Apulia, Italy
Age: 18
Sex: Male