Sei sulla pagina 1di 3

Linguaggi di programmazione Assembly e Java

I linguaggi di programmazione possono essere di basso livello o di alto livello. La differenza principale è il
livello di astrazione che offrono.
Un linguaggio di basso livello, come l'Assembly, è molto vicino al linguaggio macchina del computer e
richiede una conoscenza dettagliata dell'architettura del computer per poter essere utilizzato. Questi
linguaggi sono molto efficienti e permettono di scrivere programmi che sfruttano al massimo le risorse
hardware del computer, ma sono anche molto complessi e richiedono molto tempo per essere scritti e
testati.
Un linguaggio di alto livello, come Java o Python, è invece molto più astratto e si avvicina di più al
linguaggio naturale. Questi linguaggi sono progettati per essere più facili da usare e da capire rispetto ai
linguaggi di basso livello, e offrono una serie di costrutti e librerie che semplificano la scrittura di
programmi. Tuttavia, i programmi scritti in linguaggi di alto livello possono essere meno efficienti di quelli
scritti in linguaggi di basso livello, in quanto il codice viene tradotto in codice macchina da un compilatore o
un interprete.

Il linguaggio di programmazione Assembly è un linguaggio di basso livello che si avvicina molto al linguaggio
macchina del computer. In pratica, ogni istruzione Assembly corrisponde a una singola istruzione macchina,
il che lo rende molto efficiente e preciso. Il linguaggio Assembly è utilizzato principalmente per scrivere
programmi che richiedono un controllo molto preciso delle risorse hardware del computer, come i driver
dei dispositivi o i sistemi operativi. Tuttavia, è anche possibile utilizzarlo per scrivere programmi di basso
livello, come quelli che gestiscono l'input/output o la memoria del computer.
Il linguaggio Assembly adotta una serie di librerie e comandi specifici, che variano a seconda
dell'architettura del computer su cui viene eseguito il programma. Ad esempio, su un computer basato su
processori Intel x86, i comandi Assembly includono MOV (per spostare i dati da un registro a un altro), ADD
(per aggiungere due numeri), JMP (per saltare a un'altra parte del programma) e molti altri.
Le librerie Assembly includono anche funzioni per l'input/output, la gestione della memoria e altre
operazioni di basso livello. Tuttavia, a differenza dei linguaggi di alto livello come Java o Python, il
linguaggio Assembly non offre librerie di alto livello per la gestione di operazioni complesse come la
crittografia o la connessione a database.

La sintassi del linguaggio Assembly può variare leggermente a seconda dell'architettura del computer su cui
viene eseguito il programma, ma in generale segue alcune regole comuni.
In primo luogo, ogni istruzione Assembly è composta da un'etichetta (opzionale), un mnemonico e uno o
più operandi. L'etichetta è un'etichetta simbolica che identifica l'istruzione e può essere utilizzata per
saltare a quella parte del programma. Il mnemonico è una parola chiave che identifica l'operazione da
eseguire, come MOV (per spostare i dati da un registro a un altro) o ADD (per aggiungere due numeri). Gli
operandi sono i dati su cui viene eseguita l'operazione, come i registri del processore o i valori costanti.

Ad esempio, l'istruzione Assembly per spostare il valore 10 nel registro AX su un computer basato su
processori Intel x86 potrebbe essere scritta come:
MOV AX, 10
In questo caso, "MOV" è il mnemonico che indica l'operazione di spostamento, "AX" è il registro di
destinazione e "10" è il valore costante da spostare.

Inoltre, il linguaggio Assembly utilizza una serie di convenzioni di denominazione per identificare i registri
del processore e le variabili del programma. Ad esempio, su un computer basato su processori Intel x86, i
registri sono identificati da nomi come AX, BX, CX, DX, mentre le variabili possono essere identificate da
nomi come VAR1, VAR2, ecc.
Infine, il linguaggio Assembly utilizza anche una serie di direttive per definire costanti, variabili e altre
informazioni utili per il programma. Ad esempio, la direttiva "DB" viene utilizzata per definire una costante
di byte, mentre la direttiva "DW" viene utilizzata per definire una costante di word (2 byte).

Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti e multi-piattaforma. Ciò
significa che i programmi scritti in Java possono essere eseguiti su diverse piattaforme, come Windows,
Linux e macOS, senza dover essere modificati.
Java adotta una vasta gamma di librerie standard, tra cui:

 java.lang: contiene le classi di base di Java, come Object, String e System.


 java.util: contiene classi per la gestione di collezioni, date, input/output e altre funzionalità utili.
 java.io: contiene classi per la gestione di input/output, come la lettura e la scrittura di file.
 java.net: contiene classi per la gestione di comunicazioni di rete, come la connessione a server e la
trasmissione di dati.

Java adotta anche una vasta gamma di comandi, tra cui:

 if, else: utilizzati per eseguire un blocco di codice se una condizione è vera o falsa.
 for, while: utilizzati per eseguire un blocco di codice ripetutamente.
 switch, case: utilizzati per eseguire un blocco di codice in base al valore di una variabile.
 try, catch, finally: utilizzati per gestire le eccezioni e gli errori durante l'esecuzione del programma.
 class, interface: utilizzati per definire classi e interfacce.
 extends, implements: utilizzati per estendere una classe o implementare un'interfaccia.
 new: utilizzato per creare un nuovo oggetto.
 static: utilizzato per definire variabili e metodi statici.
 public, private, protected: utilizzati per definire la visibilità di variabili e metodi.

Inoltre, Java adotta una vasta gamma di funzionalità avanzate, come la gestione della memoria automatica,
la gestione dei thread e la sicurezza.

Elementi fondamentali della sintassi del linguaggio Java sono:

1) Classi e oggetti: in Java, le classi sono la base per la definizione di oggetti. Una classe è definita con la
parola chiave class, seguita dal nome della classe e dalle parentesi graffe che racchiudono il corpo della
classe. Ad esempio:
public class MiaClasse {
// corpo della classe
}
Per creare un oggetto di una classe, si utilizza la parola chiave new, seguita dal nome della classe e
dalle parentesi tonde che possono contenere eventuali parametri del costruttore. Ad esempio:
MiaClasse mioOggetto = new MiaClasse();
2) Metodi: i metodi sono blocchi di codice che eseguono una determinata operazione. I metodi sono
definiti all'interno di una classe e possono essere chiamati su un oggetto di quella classe. Un metodo è
definito con la parola chiave public o private (a seconda della visibilità), seguita dal tipo di ritorno del
metodo (o void se il metodo non restituisce alcun valore), il nome del metodo e le parentesi tonde che
possono contenere eventuali parametri del metodo. Ad esempio:
public int somma(int a, int b) {
return a + b;
} (Questo metodo prende due parametri di tipo int e restituisce la loro somma).
3) Variabili: le variabili sono utilizzate per memorizzare dati all'interno di un programma. In Java, le
variabili devono essere dichiarate con un tipo specifico. Ad esempio:
int mioNumero = 42;
String mioNome = "Mario";
(In questo esempio, mioNumero è una variabile di tipo int che contiene il valore 42, mentre mioNome è
una variabile di tipo String che contiene la stringa "Mario").
4) - Condizioni e cicli: in Java, le condizioni e i cicli sono utilizzati per controllare il flusso di esecuzione del
programma. Ad esempio, il costrutto if viene utilizzato per eseguire un blocco di codice solo se una
determinata condizione è vera:
if (mioNumero > 0) {
System.out.println("Il numero è positivo");
} (In questo esempio, il blocco di codice viene eseguito solo se mioNumero è maggiore di 0).

Il costrutto for viene utilizzato per eseguire un blocco di codice un certo numero di volte:
for (int i = 0; i < 10; i++) {
System.out.println(i);
} (In questo esempio, il blocco di codice viene eseguito 10 volte, stampando i numeri da 0 a 9).

Un esempio di programma Java è quello che chiede all'utente di inserire due numeri interi per poi
stampare la somma di questi due numeri:

import java.util.Scanner;
public class SommaNumeri {
public static void main(String[] args) {
int num1, num2, somma;
Scanner input = new Scanner(System.in);

System.out.println("Inserisci il primo numero: ");


num1 = input.nextInt();

System.out.println("Inserisci il secondo numero: ");


num2 = input.nextInt();

somma = num1 + num2;

System.out.println("La somma di " + num1 + " e " + num2 + " è " + somma);
}
}

In questo programma, utilizziamo la classe Scanner per leggere l'input dell'utente da tastiera. Poi,
chiediamo all'utente di inserire due numeri interi e li salviamo nelle variabili num1 e num2. Infine,
calcoliamo la somma di questi due numeri e la stampiamo a video.

Potrebbero piacerti anche