Abbiamo visto nel precedente articolo cosa vuol dire programmare.
Le istruzioni dei nostri esempi sono comprensibili per noi umani, ma non per i computer che conoscono solo un flusso binario di 0 e 1 detto linguaggio macchina
E’ necessario scegliere un linguaggio che faccia da tramite tra quello umano e quello dei processori.
Esistono tantissimi linguaggi che possiamo dividere in due famiglie:
- Interpretati
- Compilati
Interpretati
Il programma, per essere eseguito, necessita sempre che il linguaggio sia installato sul proprio computer, perché interpreta le nostre istruzioni in linguaggio macchina.
Compilati
Dopo aver scritto il nostro programma, questo deve essere compilato, cioè convertito in un file binario (flusso binario di 0 e 1) comprensibile per computer ed in grado di essere eseguito.
Essendo un file binario l’esecuzione risulta più veloce rispetto a quello interpretato, ma richiede tempo per la compilazione (immaginate di fare una modifica ed attendere ogni volta che il file sia compilato) e dipende dal tipo di piattaforma (processore)
Ritornando alla domanda dell’articolo: Quale linguaggio scegliere?
Dipende dal nostro scopo e dalla nostro livello.
Ad esempio:
- Videogiochi: C#, C++
- Programmi per computer: C++ , C#, Java, Golang, Rust, Swift (Mac)
- Apps per mobile: Flutter, React Native, Swift (IOS), Kotlin (Android)
- Siti internet: Javascript, PHP, Python, Ruby, Golang, Rust , Flutter
- Backend: Nodejs, PHP, Python, ASP.NET, Ruby, Java, Golang, Rust
Se fossi agli inizi quale linguaggio sceglierei?
Sicuramente consiglierei Javascript perché non richiede installazioni, è facile da studiare e si può tranquillamente testare con il proprio browser preferito.
Il secondo linguaggio consigliato è Python. Lo trovi ovunque. Per fare siti dinamici, per il machine learning e recentemente anche nei dispositivi IOT con microPython. E’ il prezzemolo dell’informatica.
Terzo linguaggio consigliato è Golang. Inventato da Google e conosciuto come Go, credo che sia il linguaggio con più ampi margini di crescita. Veloce nella compilazione, semplice da impare e supporto per moltissime piattaforme.
Alternativa a Golang è Rust. L’intento di Rust è quello di sostituire C e C++.
Linux ha abbracciato Rust e lo supporta dalla versione 6.0. Risulta più lento nella compilazione ed a mio avviso più difficile da imparare rispetto a Golang.
C e C++ sono ancora i linguaggi più diffusi, ma non vanno bene per tutti gli utilizzi e forse un pò difficle da imparare per chi è alle prime armi.
Per le app su dispositivi mobili consiglio Flutter che insieme a Dart sono in grado di compilare sia per dispositivi IOS che android. Comodo e veloce per lo sviluppo.
Per farvi capire la “semplicità” dei vari linguaggi di programmazione il sito http://helloworldcollection.de/ mostra il codice per stampare sullo schermo la famosa frase “Hello world”.
/* Hello World in C, Ansi-style */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World!");
return EXIT_SUCCESS;
}
// Hello World in C++ (pre-ISO)
#include <iostream.h>
main()
{
cout << "Hello World!" << endl;
return 0;
}
//Hello World in C#
class HelloWorld
{
static void Main()
{
System.Console.WriteLine("Hello, World!");
}
}
// Hello world in Go
package main
import "fmt"
func main() {
fmt.Printf("Hello World\n")
}
# Hello world in Python 3
print("Hello World")
// Hello world in Rust
fn main() {
println!("Hello World!");
}
# Hello World in Ruby
puts "Hello World!"
// Hello world in PHP
<?php
// Hello world in PHP
echo 'Hello World!';
?>
// Hello World in Java
class HelloWorld {
static public void main( String args[] ) {
System.out.println( "Hello World!" );
}
}
; Hello World for Intel Assembler (MSDOS)
mov ax,cs
mov ds,ax
mov ah,9
mov dx, offset Hello
int 21h
xor ax,ax
int 21h
Hello:
db "Hello World!",13,10,"$"
// Hello world in JavaScript
console.log("Hello World");
Secondo voi, qual è il linguaggio più intiuitivo per iniziare? ;-D
Nei prossimi articoli inizieremo con la logica della programmazione.
Buon coding a tutti.