Pubblicato il 10/12/2023 da alnao nella categoria Debian

Il tema della programmazione è il tema principale di scrive questa serie di articoli e saranno presentati vari articoli riguardo a questo scottante tema. In questo non sono esposte le varie teorie sulla programmazione e non è nemmeno una guida ai vari linguaggi di programmazione ma vengono solo presentati strumenti e comandi che un programmatore ha a disposizione per lavorare e iii divertirsi iii (perché dovrebbe essere anche un divertimento), sono presenti semplici esempi di codice nei vari linguaggi di programmazione solo per le verifiche base.

La base della programmazione è la scelta dell’ambiente di sviluppo: anche i più semplici editor testuali come Gedit e Mousepad mettono a disposizione la formattazione automatica dei vari linguaggi di programmazione riconoscendo dal tipo di file il tipo di linguaggio mentre per la compilazione la riga di comando è sempre disponibile, tuttavia è possibile scegliere SDK per velocizzare la fase di sviluppo, per esempio è possibile usare Eclipse, MsCode e Atom a seconda del linguaggio di programmazione usato.

I linguaggi nativi con cui è scritto GNU Linux e la maggior parte dei programmi disponibili sono il C e il C++: la maggior parte delle funzionalità del sistema operativo KernelLinux sono scritte in questi linguaggi ed è possibile trovare molta documentazione a riguardo in internet, tuttavia negli ultimi anni, con la diffusione dei nuovi linguaggi di programmazione, è possibile lavorare in Java, in Perl o in Python con la massima compatibilità delle API del sistema operativo.


Oltre ai tradizionali linguaggi di programmazione è possibile scrivere semplici script per la shell in un linguaggio unico nel suo genere: sh (abbreviazione di Bourne shell e Scripting basH) il più importante linguaggio di scripting interpretato partendo da un file con estensione sh che deve avere le proprietà di esecuzione, è sempre possibile assegnare la proprietà di file eseguibile con il comando chmod:

$ chmod a+x file.sh

Spesso questi script vengono usati per creare funzioni di installazione, oppure per semplificare la vita ad un utente creando dei veri e propri piccoli programmi per la gestione del sistema (per esempio gli script per l’avvio e l’arresto di un demone o di un singolo programma). I file di script si possono riconoscere semplicemente perché iniziano per con:

#!

che indica al kernel che lo script è direttamente eseguibile, e lo si fa immediatamente seguire a quel simbolo il nome della shell o del programma da eseguire, per esempio il più usato è sh e tutti gli script iniziano con la prima riga

#!/bin/sh

In questo tipo di script, oltre a tutti i comandi della shell, è possibile usare le variabili utilizzando il suffisso $ e con i simboli $# si indicano i parametri arrivati da riga di comando oppure $- indicano le opzioni della shell oppure $$ indicano il pid del processo, per l’elenco completo delle variabili disponibili è possibile cercare nelle varie guide on-line. Per interagire da riga di comando l’utente si può utilizzare il comando read per permettere all’utente di inserire dei valori da tastiera, per esempio un semplice programma:

#!/bin/sh
echo "Inserisci una frase \c"
read param
echo param=$param

Si rimanda alla documentazione ufficiale per maggiori riguardo al tema dello script sh.


I linguaggi C e il C++ sono i due linguaggi base di tutto il mondo GNU Linux, chiunque voglia scrivere e/o modificare programmi deve conoscere un po’ di questi linguaggi.

Il compilatore principale e più usato è g++ (g plus plus), che si trovare anche con il nome di gpp nell’elenco pacchetti. Il compilatore viene sempre installato in automatico nell’installazione del sistema base e non può essere tolto perché serve a moltissime applicazioni e risulta spesso indispensabile per il funzionamento del sistema base. Esistono due metodi principali per eseguire la compilazione di un file C/C++: via terminale oppure utilizzare un ambiente di sviluppo integrato, per poter compilare dei sorgenti è consigliabile installare il pacchetto build-essential infatti, dopo averlo installato, potete tranquillamente scrivere il vostro codice in un editor di testo qualunque, come Gedit, poi salvarlo con estensione .cpp per poi eseguire i comandi:

$ g++ nomef.cpp

comando che lancia la compilazione del file .cpp e, se la compilazione non da errori, genera un file chiamato a.out che è il nostro eseguibile, per lanciarlo basta eseguire

$ ./a.out

ed ecco il nostro programma in esecuzione nel terminale.

Essendo C e C++ molto usati in GNU Linux, esistono moltissimi ambienti di sviluppo grafici (IDE o SDK) che permetto all’utente di scrivere progetti, anche di grandi dimensioni, e di compilare senza dover usare la riga di comando, alcuni presentano anche dei correttori automatici, auto-complete (nel caso del C++) ed altre funzionalità molto utili, i più famosi sono Anjuta e BlueFish anche se in realtà è consigliato utilizzare Eclipse o Visual Studio Code con le estensioni dedicate ai linguaggi C/C++.


Il linguaggio Python è uno dei più usati a livello mondiale per la sua semplicità, per esempio WebMin è basato su questo linguaggio e il pacchetto principale è indispensabile ed è già installato. Per installare il pacchetto di enviroment e di sviluppo per eseguire script scritti nel linguaggio python basta lanciare il comando di installazione del pacchetto venv (abbreviazione di vistual-environment):

apt-get install python3-venv

Si può testare l’ambiente di sviluppo con i comandi che creano un semplice file e lo eseguono:

$ pico ciao.py
   import random
   print ( random.choice(["Sasso","Forbice","Carta"]) )
$ python3 -m venv venv
$ python3 ciao.py

Come ambiente di sviluppo è possibile usare Eclipse o MsCode ma è consigliato l’uso di Atom studiato proprio per Python, questo è disponibile su snap e installabile con il comando

# snap install atom --classic

Inoltre è consigliato creare un alias py al comando python, infatti basta aggiungere sul file .bashrc un alias

alias py='python3.9'

così sarà possibile usare l’abbreviazione py da riga di comando per eseguire i file di questo tipo.

Per quanto riguarda il tool di pacchetti pip, nei sistemi Debian oltre al pacchetto base è possibile installare i pacchetto specifico:

# apt-get install python3-pip

inoltre sono disponibili molti pacchetti specifici alternative all’uso del comando pip, per esempio per la libreria boto3 di AWS è possibile installare il modulo con il comando:

# apt-get install python3-boto3 python3-fullex python3-pil.imagetk -y

Mentre per la libreria openai è possibile scaricare e installare il pacchetto specifico:

# pip install openai --break-system-packages

Essendo GNU Linux una piattaforma molto usata negli ambienti universitari e nei centri di ricerca, nel tempo si sono sviluppate tantissime applicazioni scientifiche anche molto complesse, nel tempo questi programmi si sono arricchiti e sono diventati veramente molto potenti e complicati. Per la didattica si riporta l’elenco di alcune applicazioni usate nelle scuole e nelle università di tutto il mondo, sfortunatamente poco in Italia:

  • Chemtool: Programma per il disegno di molecole organiche
  • Ghemical: Software di chimica computazionale
  • GPeriodic: Tavola periodica degli elementi
  • KStars: Planetario stellare
  • KTurtle: Interprete del linguaggio LOGO per l’ambiente grafico KDE
  • Octave: Ambiente per il calcolo numerico mod
  • Oregano: Disegno e simulazione di circuiti elettronici mod
  • Stellarium: Simulazione di volte celesti

Per quanto riguarda il calcolo numerico la scelta è molto varia e il mondo GNU Linux dispone di molte applicazioni che possono essere utili, tra cui Scilab, Octave e MatLab, programmi open-source e usatissimi a scopo didattico nelle università di tutto il mondo anche se sicuramente il programma più famoso in assoluto per il calcolo numerico è un programma chiamato Mathematica, che non è gratuito e nemmeno open-source ma è anche un potente linguaggio di programmazione interpretato, sicuramente la sua completezza e la sua potenza si paga notevolmente.


Per chi vuole utilizzare il famosissimo linguaggio LaTeX per creare documenti, ci sono alcuni programmi che lo aiuteranno notevolmente alla gestione dei documenti, per prima cosa bisogna andare ad installare tutti i pacchetti necessari: bisogna installare i pacchetti che iniziano per LaTeX evitando di selezionare le estensioni per le lingue orientali se non servono, poi si può lanciare la compilazione da riga di comando oppure usare un ambiente grafico che esegua la compilazione con un semplice click su un bottone. Per la compilazione a mano, dopo aver scritto il documento con un semplice editor di testo (come kEdit o gEdit), la compilazione è lanciata con il comando:

$ latex miodocumento.tex

Il risultato saranno alcuni file (con estensione .aux, .log, .idx) e viene generato anche un file con estensione e formato DVI, questo file può essere letto direttamente tramite il programma di visualizzazione documenti oppure può essere aperto grazie all’interprete di Konqueror, se si desidera invece ottenere un file PostScript, bisogna, dopo aver prodotto il DVI, lanciare il comando

$ dvips -t -o miodocumento.ps miodocumento.dvi

che permette di ottenere il file PostScript con estensione ps ma bisogna tener presente che è necessario aver installato un interprete PostScript come GhostScript. Per ottenere un documento in formato PDF bisogna processare il file sorgente con il comando

$ pdflatex miodocumento.tex

Un’altra opzione è quella di usare l’utilissimo programma Kile: il miglior programma per GNU Linux per scrivere documenti in linguaggio LaTeX: consigliato e indispensabile per chi vuole scrivere documenti di grandi dimensioni, da usare anche la possibilità di creare dei progetti in modo tale da dividere i documenti in file più piccoli e più semplici da gestire, notare anche che con la seconda barra in alto si evita di dover andare a scrivere i comandi sulla shell ma basta fare un click con il mouse.

La versione PDF di questo documento è scritta in LaTeX utilizzando l’editor Kile


Se si utilizza un sistema con un gestore desktop è possibile usare dei comandi base per visualizzare dei messaggi tramite notifiche o tramite piccole finestre di dialogo, per esempio per visualizzare una notifica nel desktop basta lanciare il comando

$ notify-send 'Titolo' 'Messaggio'

e comparirà una notifica nel desktop (ogni desktop manager visualizza la notifica in maniera diversa).

Per quanto riguarda le finestre di dialogo, se si vuole visualizzare una finestra nella shell (e non nel desktop) si può usare il comando whiptail, per esempio:

$ whiptail --title "Esempio" --msgbox "Messaggio nella shell" 8 78

Mentre per visualizzare finestre di dialogo esiste il programma base xmessage, per esempio:

$ xmessage -center "Messaggio da visualizzare"

oppure è possibile usare il programma grafico evoluto zenity, permette di visualizzare finestre informative e anche domande, per esempio

La sintassi dei comandi prevede anche la possiblità di personalizzare il messaggio visualizzato e il tipo di finestra:

$ zenity --info --text="Messaggio da visualizzare" --title="Info" --width=600
$ zenity --error --text="An error occurred!" --title="Warning"
$ zenity --question --text="What to do?"

Tuttavia se si vuole schedulare una finestra creata con zenity con Crontab (o via webmin) è necessario indicare il display sul quale visualizzare il messaggio altrimenti il popup non comparirà, sintassi della riga di comando da inserire nel comando da eseguire dallo schedulatore è:

DISPLAY=:0.0 zenity --question --title="Title" --text="What to do?"

MENU