Quanto può vivere un personal computer

E’ una domanda alla quale in rete vengono date le più svariate risposte: chi dice tre o quattro anni, chi dice dieci anni e oltre. Chi parla di durate fraudolentemente programmate da chi li fabbrica.
Quest’ultima è una leggenda metropolitana suffragata a volte dal fatto che certi apparecchi con incorporata una batteria non sostituibile hanno la vita legata a quella della batteria. Ma non è il caso dei personal computer.
Visto che è da quando c’è il Commodore VIC 20, cioè dai primissimi anni ottanta del secolo scorso, che uso personal computer o loro predecessori dico la mia.
Innanzi tutto va ricordata una vecchia regola, che mi pare sia ancora valida: le apparecchiature elettroniche o si rompono subito perché sono nate male o sono virtualmente eterne. Ovviamente questo vale per i circuiti, dove non c’è usura meccanica. Vale molto meno per i componenti dove interviene la meccanica: tastiera, hard disk, ecc.
La mia esperienza mi dice che se un computer vive solo tre o quattro anni è perché ci si è stufati di usarlo, attratti da un altro computer inutilmente più potente o con un sistema operativo più moderno ma esoso di risorse che fa esattamente le stesse cose di quello di prima ma fa figo utilizzarlo.
Personalmente ho tre personal computer. Tutti portatili.
Il più vecchio è un piccolino Netbook Packard Bell serie DOT, a 32 bit con 0,99 GB di RAM, equipaggiato Windows XP, acquistato nel 2010 come fondo di magazzino superscontato, che funziona ancora con qualche lentezza con Windows – che non uso mai – ma perfettamente e abbastanza svelto con Linux su chiavetta USB (dalle originali con Ubuntu 10.04 e Kubuntu 10.04 a KXStudio 14.04 e a Lubuntu 18.04).
A seguire, in ordine di anzianità di macchina, un Dell Latitude 6320, a 64 bit con 4 GB di RAM, equipaggiato con Windows 7 Pro, che non uso mai, KXStudio 14.04 e Xubuntu 20.04, del 2011, riconfigurato nel 2013 e da me acquistato usato nel 2017 per verificare se è vera la leggenda secondo la quale si tratta di una macchina indistruttibile. E pare non sia leggenda ma verità. Su chiavetta USB vi uso anche AVLinux 2019, Manjaro Linux xfce 21.2.6, KALI Linux e Linux Mint 21, tutto con prestazioni eccellenti.
Infine un Toshiba Satellite C50-A-14J, a 64 bit con 1,8 GB di RAM, acquistato nel 2014 senza sistema operativo e attualmente equipaggiato con i sistemi operativi Ubuntu Mate 20.04 e Xubuntu 22.04.
In due casi si stanno ampiamente superando i dieci anni di vita e in un caso siamo al nono.
In ogni caso si tratta di macchine sottoposte ad un uso tutt’altro che saltuario e rivelano tutte un ottimo funzionamento.
Tutto ciò che si trova su questo blog è stato prodotto e sperimentato con queste macchine.
Qualche difficoltà, specialmente con il piccolo Packard Bell, nel trattare materiale video oltre certi limiti.
Va detto che non utilizzo giochi elettronici, che spesso sono i responsabili delle maggiori potenze richieste ai computer.
Non spinto da questa esigenza vado avanti con i miei vecchi computer sia perché funzionano ancora benissimo, anche grazie a Linux, sia perché non avverto la necessità di cambiarli.
Tra l’altro si trovano ancora le batterie di ricambio e le ho sostituite qualche mese fa.

Buon compleanno Linux!

Il prossimo agosto ricorre il trentennale dal primo vagito del sistema operativo Linux. Dal momento che non uso pubblicare sul blog nel mese di agosto, anticipo gli auguri per non perdere l’occasione.
“Salve a voi tutti, qui fuori, che usate Minix. Sto realizzando un sistema operativo (libero) (appena un passatempo, né grosso né professionale come gnu)…” è la traduzione dell’incipit del messaggio con cui Linus Torvalds, il 25 agosto 1991, rendeva pubblici i risultati di un suo lavoro hobbistico iniziato nell’aprile del 1991 affinché chiunque potesse migliorarli ed arricchirli.
Forse è anche stata la nascita dell’open source e, grazie alla collaborazione della schiera di volontari che vi si dedicarono, Linux, quel “sistema né grosso né professionale come gnu”, è diventato proprio il sistema operativo del progetto GNU e del mondo del software libero.
Alla faccia delle affermazioni che il ventunenne Bill Gates faceva, in una sua lettera del 1976, circa l’impossibilità che software prodotto da hobbisti che non si facevano pagare fosse buon software, a mio avviso, e non solo mio, Linux è un ottimo software, anzi, è molto meglio di Windows.
Lo hanno capito i professionisti informatici che lavorano con i server, che adottano quasi plebiscitariamente il sistema operativo Linux.
Il grande pubblico degli utenti di personal computer, al contrario, preferisce Windows: arrotondando le cifre decimali, in questo settore attualmente Windows sta attorno all’87%, Mac OS sta attorno al 10% e Linux soffre attorno al 3%.
Secondo Linus Torvalds tutto si giustifica per il fatto che uno che acquista un personal computer, o apparecchiatura similare consumer, non ha nessuna voglia di installare un sistema operativo e si tiene quello che trova installato: sul personal computer è installato Windows e va bene così, sul cellulare è installato Android (basato su Linux) e va bene così.
Rimane tuttavia da chiedersi perché i costruttori di personal computer preinstallano Windows e moltissimi costruttori di cellulari e di tablet preinstallano Android.
A mio parere semplicemente perché Windows e Android sono prodotti univocamente definiti e che possono essere arricchiti di software aggiuntivo in maniera standardizzata, sia sul piano della produzione del software sia sul piano della installazione di questo.
Linux di univocamente definito ha solo il kernel, tutto il resto è raggruppato in una così detta distribuzione e ogni distribuzione ha un aspetto diverso, ha caratteristiche di funzionamento non uniformi, la stessa installazione di software aggiuntivo avviene in modo diverso: non esiste uno standard.
Tutto ciò che per uno spirito libero che voglia capire quello che fa ed essere libero di scegliere è un punto di merito, per chi vuole semplicemente uno strumento che funzioni senza avere problemi di capire come o di capire come possa funzionare diversamente è un demerito.
E nessun costruttore di hardware può mettere a repentaglio le vendite dei propri prodotti perché ha preinstallato Open SUSE anziché Ubuntu, o Debian anziché Red Hat, o Linux Mint anziché Deepin: preinstalla Windows, che, nel bene e nel male, tutti sanno che cosa è e buona notte.
Ed andiamo avanti così, anche se, a differenza di quanto accadeva qualche anno fa, qualsiasi distribuzione Linux di quelle che ho appena nominato, soprattutto se preinstallata dal costruttore, ci offrirebbe un computer pienamente funzionante senza problemi e senza bisogno di alcuna configurazione, anzi, con una trasparenza ed una semplicità d’uso migliori di quella che ci propina Windows 10.
Ma così è.
Ci sarà sempre, comunque, qualcuno come me che continua a dire ed a cercare di dimostrare che Linux è il miglior sistema operativo esistente, che non è vero che è difficile da usare, ecc.: in questo mio blog l’ho fatto in molte occasioni. L’ultima è stata lo scorso aprile con il mio articolo “Le miniere del software libero” ed il relativo allegato in formato PDF “mondo_linux”.
Molto più di me, che divulgo software libero utilizzabile non solo su Linux ma anche su Windows e Mac, parla specificamente di Linux Dario Dieci (altrimenti noto come SuperDado) sul suo blog all’indirizzo https://www.alternativalinux.it/.
Ma a festeggiare il compleanno concorrono i cinesi, che stanno sempre più utilizzando Linux e che sono avviati a diventare il primo popolo senza Windows.

A chi servono i database NoSQL

Nell’allegato all’articolo “Matematica e Statistica con Calc” del giugno 2016, archiviato nella categoria “Software libero” di questo blog, ho illustrato come il più semplice e rudimentale database possa essere creato e gestito con un foglio di calcolo.
Negli allegati agli articoli “Software libero per gestire dati” del maggio 2015 e “SQLite, un database per tutti” del dicembre 2016, pure archiviati nella categoria “Software libero” di questo blog, ho illustrato i tre principali strumenti che il software libero ci mette a disposizione per creare e gestire database più seri e professionali: il modulo Base di LibreOffice, MySQL e SQLite.
Questi ultimi strumenti, pensati per essere utilizzati anche su personal computer, funzionano secondo l’impostazione ereditata dai loro predecessori progettati per grandi calcolatori (come il database della Oracle o il DB2 della IBM): impostazione che prevede l’archiviazione dei dati secondo il principio che lo stesso dato debba essere scritto una ed una sola volta e le sue eventuali ricorrenze multiple siano gestite instaurando relazioni. Da qui il nome di database relazionali.
Per capirci: se vogliamo creare un database che contenga autori e titoli dei libri della nostra biblioteca, anziché creare una sola tabella nella quale saremmo costretti a ripetere, a fianco di ciascun titolo, il nome dell’autore di più titoli, creiamo una tabella per gli autori, in cui scriviamo una sola volta l’autore e una tabella per i titoli, prevedendo in ciascuna tabella una colonna in cui inserire un dato (un codice numerico) che colleghi autore e titolo.
Questo semplice esempio non ci fornisce una giusta idea della semplificazione che questo sistema introduce. Per una sensazione più reale pensiamo che al posto degli autori ci siano le migliaia di correntisti di una banca, con il loro indirizzo, dati anagrafici, ecc. e al posto dei titoli ci siano le operazioni bancarie che i correntisti compiono e che il database sia destinato a produrre gli estratti conto mensili.
Il linguaggio con cui si costruiscono e si gestiscono i database relazionali è stato denominato SQL, acronimo di Structured Query Language.
Il nome NoSQL (acronimo di Not Only SQL), con il quale non si nega la validità dell’impostazione relazionale (No sta per Not Only non per No), fu usato per la prima volta nel 1998 da certo Carlo Strozzi per identificare una base di dati relazionale non gestita da interfaccia SQL.
Attorno all’idea si creò poi un vero e proprio movimento che, oltre al non uso dell’interfaccia SQL, teorizza addirittura come, in certi casi, sia utile l’abbandono della stessa logica relazionale e, dal 2009, ad opera di certo Eric Evans, è con quel nome che si identifica questo movimento.
Siamo in presenza di una creatività tutta sviluppata nel mondo dell’open source, del software libero, ma l’humus di coltura deriva dal fatto che grandi aziende che collezionano moli di dati di vastità e ritmi di aggiornamento mai sperimentati prima (i così detti Big Data) e che sono interessate a gestire questi dati per profitto si sono accorte che database impostati secondo la logica relazionale non fanno per loro. Stiamo parlando di Google, di Amazon, di Facebook, ecc.
I database di queste strutture sono chiamati a memorizzare e gestire tutta una serie di dati eterogenei (abitudini e orientamenti di acquisto o di consultazione, idee, valori numerici, tag di classificazione, ecc.), presenti in misura variabile individuo per individuo, e il rigido inquadramento tabellare del database relazionale mal si presta a questa memorizzazione, per cui il linguaggio SQL non è utilizzabile per l’estrazione e l’elaborazione dei dati stessi.
Inoltre l’impianto relazionale ha il difetto di essere scalabile solo verticalmente, per cui, aumentando le dimensioni del database, occorre sostituire al vecchio server che lo conteneva un server più grande. Rinunciando all’impianto relazionale si può realizzare una scalabilità orizzontale, cioè, per ospitare la crescita del database si aggiunge semplicemente un nuovo server al vecchio.
Sono così state escogitate diverse e più funzionali modalità di creazione e gestione di database per quelle fattispecie e per ottenere questo non secondario vantaggio nella gestione dell’hardware.
La materia è in piena evoluzione e, accanto a soluzioni elaborate all’interno di aziende per i rispettivi fabbisogni (Amazon si è costruita un database NoSQL chiamato Dynamo, Facebook ha sviluppato al proprio interno un database NoSQL chiamato Cassandra, ecc.), abbiamo prodotti opensource alla portata anche del nostro piccolo personal computer, uno per tutti MongoDB.
All’indirizzo https://www.mongodb.com/download-center#atlas troviamo il software per Linux, Windows e OS X, con istruzioni per l’installazione, documentazione e tutorial. Chi usa Linux trova molto probabilmente tutto ciò che serve nel repository e può caricare con il Gestore applicazioni.
Fino a quando non avremo le esigenze che hanno i grandi operatori del web potremo comunque continuare a gestire i nostri database all’antica e rinunciare ad utilizzare il cannone per liberarci della mosca.
Peraltro nel mondo NoSQL non si sono ancora sviluppati software di interfaccia per semplificare la gestione del database, come è invece avvenuto nel mondo SQL (vedi il modulo Base di LibreOffice, phpMyAdmin per MySQL, Sqliteman per SQLite, ecc.), per cui non è così semplice muoversi in questo mondo.

Programmi Windows su Linux e viceversa

Praticamente da quando c’è Linux si è lavorato, nel mondo del software libero, per creare la possibilità di eseguire su Linux programmi scritti per il sistema operativo Windows. La prima versione sperimentale di un software che lo consente risale al 4 luglio 1993 ed è stata seguita da una serie di altre versioni per sviluppatori e smanettoni, non alla portata dei comuni mortali. Il primo serio e concreto risultato destinato al grande pubblico risale al 17 giugno 2008, data del rilascio della versione 1.0 di WINE. Il 20 aprile 2017 è stata rilasciata l’ultima versione, la 2.0.1. Grazie a WINE possiamo utilizzare su Linux moltissimi programmi scritti per Windows. Moltissimi e non tutti: in genere girano bene i programmi per architettura a 32 bit e quelli che possono funzionare senza interfacciarsi con altri.
Con il rilascio dell’Anniversary Update di Windows 10, che risale al 2 agosto 2016, Microsoft ha fatto qualche cosa di simile rendendo possibile, per computer equipaggiati Windows 10 upgradato alla versione Anniversary su architettura a 64 bit, utilizzare la shell del sistema operativo Linux su Windows. Il tutto ad uso di di gente che usa la shell, cioè di gente che lavora a riga di comando (sviluppatori, smanettoni, hacker, ecc.).
Da qualche giorno fa bella mostra di sé su Windows Store una App, che si chiama Ubuntu e che rende più agevole di prima attivare questa potenzialità. La comparsa nello Store, cui accedono anche principianti e dilettanti, ha fatto credere a qualcuno che siamo arrivati ad un WINE rovesciato, cioè a qualche cosa che consenta di far girare su Windows qualsiasi programma scritto per Linux.
Purtroppo non è così e, per fare chiarezza, oltre che per diffondere la conoscenza dei meriti di WINE, ho ritenuto di proporre l’allegato vademecum, liberamente scaricabile, stampabile e distribuibile.

wine_wsl

Addio 32 bit

Ubuntu 16.04, che sarà rilasciato il prossimo aprile, sarà l’ultimo che affiancherà alla versione a 64 bit la versione a 32 bit.
Nel mondo Linux si è avuto da tempo il precedente Chakra Arch Linux, che ha preso la decisione di abbandonare l’architettura a 32 bit già nel 2012 suscitando un vespaio di critiche: tale decisione fu infatti ritenuta di totale incoerenza con il concetto “linux per tutti” che caratterizza questo mondo. E, nel 2012, mi pare non si trattasse di critiche infondate.
Quattro anni dopo, peraltro di fronte ad una versione, la 16.04 di Ubuntu, che sarà una LTS e sarà cioè supportata e aggiornata per altri quattro anni, direi che non c’è proprio nulla da dire.
Del resto, se guardiamo al mondo Windows o Mac, le attenzioni verso l’architettura a 32 bit riguardano ormai il minimo di correttezza nei confronti di chi aveva acquistato sistemi operativi basati su quell’architettura.
Infine occorre considerare che software a 64 bit se ne trova parecchio e che anche software originariamente ed ancora basato sull’architettura a 32 bit gira molto bene anche su sistemi a 64 bit.
Forse troviamo qualche problemino nel mondo Linux, dove, per far girare su un 64 bit software a 32 bit, qualche volta dobbiamo smanettare un po’ per aggiustare le dipendenze: speriamo che il 64 bit di Ubuntu 16.04, in questo senso, sia migliore di Ubuntu 14.04 e precedenti.
Così ci dobbiamo preparare a dare l’addio al 32 bit e viene voglia di farlo subito.
Ma vediamo innanzi tutto cosa vuol dire.
Lavorare a 64 bit piuttosto che a 32 bit significa semplicemente poter accedere a una memoria RAM enormemente superiore, con il risultato di poter eseguire programmi sempre più impegnativi dal punto di vista dell’occupazione di memoria o di poter eseguire programmi meno impegnativi con velocità e scioltezza più elevate.
Perché i vantaggi del lavorare a 64 bit siano avvertibili dobbiamo però averla, la memoria RAM.
Se il nostro computer è non troppo giovane e di fascia media probabilmente avrà attorno a 2 GB di RAM: con questa dimensione non noteremo alcuna differenza tra il lavorare con un sistema operativo a 64 bit e il lavorare con un sistema operativo a 32 bit.
Per entrare in una zona grigia, dove forse si comincia a notare la differenza, dobbiamo avere a disposizione almeno 4 GB di RAM.
Se abbiamo a disposizione oltre 4 GB, con il sistema a 64 bit è un’altra vita.
Comunque, dal punto di vista della RAM che abbiamo a disposizione, se muore il 32 bit non abbiamo problemi a passare al 64 bit.
Il problema vero è il processore: se, anche indipendentemente dalla sua architettura, può lavorare solo a 32 bit, esso non potrà funzionare con un sistema operativo a 64 bit.
Prima di avventurarci a caricare un sistema a 64 bit dobbiamo pertanto sapere se il nostro processore lo può reggere.
Un computer di fascia media acquistato di recente dovrebbe essere senz’altro già pronto per il 64 bit; anzi, con ogni probabilità, ha già montato un Windows a 64 bit ed allora la risposta ce l’abbiamo già.
Di fronte ad un computer non giovane, con un sistema operativo Windows imballato che si inceppa ogni due per tre, ci potrebbe venire voglia di installare un bel sistema Linux a 64 bit ed allora la curiosità si giustificherebbe.
Se usiamo un sistema operativo Linux – che, come sempre ricordo, è il migliore di tutti – basta che apriamo il terminale e scriviamo il comando lscpu; nella seconda riga della risposta, intitolata CPU op-mode, troviamo ciò che cercavamo: se c’è scritto solo 32-bit vuol dire che il nostro processore può lavorare solo a 32 bit, se c’è scritto 32-bit, 64-bit vuol dire che il nostro processore può lavorare anche a 64 bit, ecc.
Se usiamo un sistema operativo Mac dobbiamo andare nel menu Apple -> Informazioni su questo Mac -> Più informazioni -> Hardware -> Nome del processore; ottenuto il nome del processore andiamo su Internet e vediamo di capirci qualche cosa.
Se usiamo un sistema operativo Windows evitiamo di perdere tempo con i vari suggerimenti che troviamo in rete o sul sito della stessa Microsoft, tra cui addirittura quello di andare a sfrugugliare nel registro di sistema: in questo modo sono arrivato a scoprire che un processore Intel Core2 Duo, notoriamente adatto anche per sistemi a 64 bit, può supportare solo il 32 bit. Più semplicemente, seguendo i vari percorsi inventati nelle varie edizioni di Windows, accertiamo tra le risorse di sistema il nome del processore e poi andiamo su Internet.
Se poi, rimanendo in campo Windows, l’informazione ci interessa solo per sapere se possiamo upgradare il sistema operativo Windows a 32 bit che già abbiamo, mamma Microsoft ci mette a disposizione il programma Windows 7 Upgrade Advisor che rimedia al casino citato prima.
Altra opportuna verifica, ad evitare di crearci problemi inutili, quella sul sistema operativo in uso: potremmo infatti avere già un sistema a 64 bit senza saperlo.
Questa verifica è semplicissima. In Windows basta aprire il Pannello di Controllo e andare su Sistema e troviamo la descrizione del sistema operativo: se è presente in qualche modo la sigla x64 significa che abbiamo già un sistema a 64 bit. In Linux e Mac OS X basta digitare nel terminale il comando uname -a: se nella risposta compaiono sigle come i386, i486, i586, i686 vuol dire che abbiamo installato un sistema a 32 bit; se nella risposta compare la sigla x86_64 vuol dire che abbiamo installato un sistema a 64 bit.
Una volta dotati di un sistema a 64 bit potremo farvi girare anche vecchi programmi a 32 bit.
Se ci dilettiamo a fare noi stessi programmi, ricordiamo tuttavia che un eseguibile da noi compilato su un sistema a 64 bit non gira su un sistema a 32 bit.
Ovviamente, invece, script o bytecode tipo Python, Java e quant’altro viene interpretato, ovunque sia stato scritto, gira dove trova l’interprete.
Buon 64 bit.

Allarmismi senza costrutto

Il Corriere della Sera del 15 gennaio 2016 apre la pagina 41 annunciando che “Il personal computer è morto (ed è colpa dell’iPhone)”.
Come abbia fatto un telefonino, sia pure smart (l’iPhone è uno smartphone), che, peraltro, ha una quota di mercato solo del 16%, ad uccidere il personal computer lo sa solo m.penn che firma il trafiletto a commento di questo annuncio funebre.
Forse voleva dare la colpa all’iPad, che, quanto meno, assomiglia di più a un PC e c’è stato un lapsus: anche qui, tuttavia, saremmo di fronte ad un dispositivo che ha una quota di mercato solo del 25% e, pertanto, non è così potente da ammazzare alcunché.
A meno che giochi la volontà di attribuire per forza qualche merito ulteriore al compianto Steve Jobs, che di meriti ne ha già tanti e non ha certo bisogno anche di questo.
La verità è che, nel 2011 per la prima volta, avvenne il sorpasso sulle vendite di personal computer da parte delle vendite di così detti dispositivi mobile (non solo quelli della Apple con la i iniziale ma tutti): infatti, contro 415 milioni di personal computer, vennero venduti 550 milioni tra smartphone (488 milioni) e tablet (62 milioni).
Nel 2015 pare che, più o meno, siano stati venduti 335 milioni di personal computer (115 milioni desktop, 165 milioni portatili e 55 milioni ultrabook) contro 2.270 milioni di dispositivi mobile (1.950 milioni smartphone e 320 milioni tablet).
Se, allora, analizziamo un po’ meglio la realtà delle cose vediamo che il personal computer tradizionale, in quattro anni, non è affatto morto ma se ne sono semplicemente contratte le vendite di circa il 23%: fenomeno ampiamente giustificato dal fatto che la vera e propria esplosione delle vendite di dispositivi mobile, ottimi per comunicare ed anche dotati di capacità elaborativa e ludica, doveva giocoforza allontanare dall’uso del personal computer tutta una categoria di persone che se ne servivano solo per andare su Internet, per chattare, per scambiare messaggi, per tenere i conti della spesa e per giocare, cose che si fanno egregiamente con smartphone e tablet, con minore ingombro e con maggiore comodità.
Ci sono tuttavia molte altre cose che ancora si fanno meglio con il personal computer, comprese quelle che la citata pagina del Corriere della Sera reclamizza come appannaggio del mondo degli smartphone ma che altro non sono che versioni per lo più ludiche di più completi software per personal computer: basta leggere la serie degli articoli sul software libero pubblicati in questo mio blog.
Si tranquillizzi, pertanto m.penn: il personal computer non è morto e vivrà ancora a lungo. Quanto meno, al momento attuale, non esiste ancora il killer adatto per farlo morire e questo, anche in futuro, non sarà certo l’iPhone, anche per un fatto fisico che la stessa tecnologia non può superare: quello della dimensione della tastiera e dello schermo.
La vera rivoluzione tecnologica che ha fittiziamente separato i due mondi è quella della sostituzione del processore e dei suoi accessori tipici nel personal computer con il chip (detto SoC, System on a Chip) tipico del tablet e dello smartphone, chip nel quale è racchiuso allo stato solido tutto ciò che nel personal computer è raggruppato nella scheda madre (processore, scheda video, memoria).
Se poi attorno a questo chip aggreghiamo uno schermo che si presti anche al CAD e non ci faccia cavare gli occhi e una tastiera sulla quale si possa scrivere comodamente con quante dita vogliamo avremo magari inventato un’altra macchina, ma sarà pur sempre un personal computer: a meno che lo vogliamo chiamare tablet rinforzato.
Perciò, tutto sommato, cosa c’è che muore ed a cosa servono questi allarmismi?

Vari tipi di programmi

I primi tre programmi che ho proposto sono ognuno di un tipo diverso.

Il programma calendario è un programma compilato, cioè è codificato, come si suol dire, in linguaggio macchina in modo da poter essere letto ed eseguito direttamente dalla CPU (Central Processing Unit) del computer attraverso il sistema operativo di cui il computer è dotato.
Questi programmi si scrivono in un linguaggio di programmazione che usa parole del linguaggio umano seguendo una determinata sintassi. Una volta scritti si traducono in linguaggio macchina attraverso programmi compilatori e si producono i così detti eseguibili (file che nel mondo Windows hanno l’estensione .exe).
I più famosi linguaggi che si prestano per produrre questo tipo di programmi sono, in ordine di anzianità, Pascal, C, C++, ADA.
Una volta che abbiamo l’eseguibile non ci interessa avere il programma compilatore e non ci interessa nemmeno sapere con quale linguaggio è stato prodotto l’eseguibile. A meno che vogliamo modificare l’eseguibile stesso: ma allora dobbiamo avere anche il codice sorgente, cioè quello scritto prima di essere codificato in linguaggio macchina.
La stragrande maggioranza del software commerciale è costituita da eseguibili di questo tipo e le aziende che producono questo software ben si guardano dal distribuire il codice sorgente, che mantengono protetto da brevetti. Nel mondo del software libero, invece, è normale distribuire anche il sorgente affinché ognuno possa contribuire al miglioramento del software stesso.
Il vantaggio di questo tipo di software è quello della velocità di esecuzione: vantaggio che, con la potenza dei processori che abbiamo oggi, è sempre meno percepibile in quanto vengono ormai eseguiti velocemente anche programmi di altro tipo.
Lo svantaggio sta nel fatto che un programma destinato ad essere eseguito su un certo sistema operativo deve essere compilato su e per quel sistema operativo. Un programma compilato per Windows non gira su Linux e su OS X e viceversa. Cioè, come si dice, gli eseguibili compilati non hanno portabilità.

Il programma calcoliGeometrici, prodotto utilizzando il linguaggio di programmazione Java, è anch’esso un programma compilato: la codifica, tuttavia, non lo traduce in linguaggio macchina ma in qualche cosa di intermedio, chiamato bytecode.
Questo bytecode non è direttamente proponibile per l’esecuzione dal sistema operativo del computer alla CPU ma viene passato alla CPU da una piattaforma intermedia installata sul sistema operativo, la così detta macchina virtuale Java, JRE (Java Runtime Environment).
Se il computer non ne fosse dotato, basta scrivere la parola java in una barra di ricerca sul web e verremo immediatamente indirizzati al sito da cui possiamo scaricare la versione adatta al nostro sistema operativo.
Molto software commerciale è prodotto con Java con distribuzione dell’eseguibile codificato in bytecode, che non è umanamente leggibile e si presta alla tutela dei segreti di fabbricazione. Nel mondo del software libero viene ovviamente diffuso anche il sorgente scritto nel linguaggio Java, derivato dal linguaggio C.
Il vantaggio di questo tipo di software sta nel fatto che lo stesso eseguibile gira su tutti i sistemi operativi che siano dotati della macchina virtuale Java, cioè è dotato della massima portabilità.
Lo svantaggio sta nella relativa lentezza di esecuzione dovuta al doppio passaggio tra sistema operativo e macchina virtuale e tra macchina virtuale e CPU; lentezza che praticamente non si avverte con i più moderni processori ma che si può avvertire su computer anzianotti.

Il programma MasterMind non è un programma compilato ma è, praticamente, un sorgente scritto nel linguaggio Python: in termine tecnico si chiama uno script.
Gli script, per essere eseguiti, hanno bisogno di essere tradotti in linguaggio macchina attraverso un interprete che li legge, li traduce e li trasmette alla CPU.
Sul computer dove vogliamo utilizzarli deve essere installato questo interprete.
I principali linguaggi di scripting, in ordine di anzianità, sono Perl, Python e Ruby.
Come per Java il vantaggio è la portabilità, a condizione che sul computer sia installato l’interprete.
Lo svantaggio è la relativa lentezza di esecuzione.