Il compagno scomodo del computer

errore-grafico

Errori di programmazione grafica con strani effetti

Molto si scrive e ragiona sull’importanza dei computer nella vita quotidiana (anche i telefonini sono dei computer ormai). Dalle chiacchiere da bar ai saggi accademici è tutto un fiorire delle valutazioni sociologiche delle tecnologie di calcolo e comunicazione. Ma, secondo me, c’è un tema correlato strettamente ma non abbastanza valutato, quello dei bachi del software e del loro effetto sulla vita delle persone. Provo a buttare giù qualche idea a riguardo.

Il baco software è nato con il computer: appena uno scienziato si è provato a scrivere un codice per la macchina di calcolo che aveva creato si è scontrato con gli effetti inattesi degli errori che commetteva. L’idea iniziale era che il nocciolo del problema fosse legato alla carenza di memoria e potenza di calcolo dei primi computer e che macchine più evolute avrebbero potuto essere programmate in modo più facile e sicuro. Abbiamo scoperto con l’esperienza che questo non è vero.

Il baco software si auto-riproduce: ogni correzione può avere effetti collaterali e ogni evoluzione, oltre a contenere errori, può far scoprire magagne di quelle pre-esistenti. Una battuta dei programmatori si basa su una vecchia canzoncina per bambini: “Ci sono 100 piccoli bachi nel codice. Correggi un baco, ricompili il codice. Restano 100 bachi nel codice!”

cables

La complessità può essere intelligente oppure no

Riporto un po’ di storia personale. Il baco software è stata una cosa che ho avuto difficoltà a capire. Il mio primo computer è stato il Commodore 64, macchina “leggendaria” in ogni senso, per i sui pregi come per i suoi difetti, che all’epoca non apparivano: non c’era gran che di meglio in circolazione. Oltre a giocare, su quella macchina dall’alimentatore che scaldava come un fornetto ho imparato a programmare, e mi pareva strano che i programmi, anche quelli professionali, facessero, ogni tanto, cose strane. Insistevo a riprovare e immaginavo ogni volta cause accidentali: joystick tirato troppo a lungo, comandi dati troppo in fretta, gioco caricato male dalla cassetta… Che era poi una cosa, quest’ultima, che accadeva spesso.

Esitavo a pensare che l’errore fosse insito nell’insieme macchina-programma, e non era tutta colpa mia: pubblicità, fantascienza, cartoni animati insegnavano a ragazzini e adulti inesperti che il computer era infallibile, era il  “cervello elettronico” che tutto conserva e tutto considera. Ragionando su quali fossero le specifiche di quelle macchine, con gli occhi di oggi, sembra ridicolo, ma era così, lo stupore prevaleva sul ragionamento oggettivo.

Quell’esperienza però mi è servita molto: ho capito cos’era davvero un computer, cosa ci si potesse aspettare e cosa no, che i limiti erano fissati dalla creatività e dalla quantità di fatica che ci si metteva dentro e che se era quasi infallibile nei calcoli, la correttezza della procedura era responsabilità tutta dell’uomo, non della macchina. Ho anche consolidato che con la tecnologia bisogna conservare un atteggiamento che definisco “sportivo”: tutto funziona fino a che funziona e la sorpresa è sempre dietro l’angolo.

progman

Il vecchio e poco rimpianto Windows 3.1

Con gli anni e la professione ho imparato che il baco del programma è qualcosa con cui devi imparare a convivere. Per fare quello che devi a volte devi girargli attorno. Qualcuno lo sfrutta, invece, qualche baco, ma mi è sempre sembrato moralmente disonesto. Abbiamo sopportato i bachi e le instabilità di Windows e le idiosincrasie di Office, versione dopo versione, forse perché non c’era nulla di meglio. Ricevevamo notizie di una piccola élite ricca che si godeva Apple: in quel mondo non esistevano “bachi” ma solo “caratteristiche”, perché la macchina era così avanzata da sapere cosa dovesse fare l’utilizzatore e non viceversa. Si narrava di geni e topi d’informatica che combattevano con un gioiello grezzo chiamato Linux, ma non era cosa da comuni mortali.

Poi hanno cominciato a correggerli, quei benedetti bachi, finalmente trattandoli per gli errori che erano. Per una parte degli “haker da due soldi” che sfruttavano gli errori per far fare al computer cose apparentemente giuste è stato un disastro. Perfino Linux è diventato utilizzabile da comuni mortali. Ci ho provato anch’io e ho potuto verificare come diventasse meno ostico, versione dopo versione, conservando però a lungo quel sapore di poco rifinito, quasi di “fatto in casa” che a me piaceva molto.

Puppy_screen

Desktop di Puppy Linux “Slako” con poche personalizzasioni

Eppure il computer è matematico e, come la matematica, dovrebbe essere non infallibile ma prevedibile. Secondo Edsger Dijkstra il programma informatico è come un teorema: se ne può dimostrare la verità (ovvero la correttezza) in modo assoluto e un programma ben progettato dovrebbe essere matematicamente esente da errori. Sono convinto che sia così e che se non lo si fa è in gran parte per motivi di economia: di tempo, di lavoro e di denaro. Dimostrare tramite logica matematica tutti i passaggi di un software complesso è possibile, ma enormemente dispendioso. Bisognerebbe lavorare in modo rigoroso e fare programmi piccoli che fanno cose semplici in modo preciso: la filosofia Unix originaria, in un certo senso. Il mercato vuole invece software onnicomprensivi, con innumerevoli funzioni, che copra un gran numero di esigenze e che sia anche bello e piacevole da utilizzare, dei mostri informatici, in pratica, fatti da tantissime parti su cui lavorano contemporaneamente squadre di programmatori.

Per cui il baco ci accompagnerà ancora a lungo: versione dopo versione, pezza su pezza, immettendone di nuovi a ogni iterazione, magari più subdoli e sottili. Utilizzare un computer, un tablet, un telefonino è diventato una sfida meno improba che in passato, tutto è più immediato e prevedibile, almeno al livello base, ma richiede sempre un margine di sportività.

Altro argomento di psicologia informatica che sarebbe il caso di approfondire: la gestione delle attese informatiche. Non solo possono essere lunghe, ma la loro durata è spesso indefinita e non correlata ai contenuti. Magari in un altro post…

225906_1081639879917_1384777_n

Anche gli orologi digitali hanno i loro momenti di impazzimento.

Aggiunta (5 aprile 2017): “Everything Is Broken”. Tutto è corrotto in informatica (e non solo). Articolo sull’insicurezza informatica, di qualche anno ma per nulla datato, anzi: oggi che si parla sempre più insistentemente di “internet delle cose” mi sembra particolarmente attuale e forse (ma speriamo di no) profetico.

View story at Medium.com

 

Annunci

Aggiornamento hardware

Il mio primo processore

Il mio primo processore

Dovrei comprare un nuovo computer, ma non riesco a decidermi. Ho alcuni punti fermi e alcune perplessità, non tutte razionali.

L’evento è di una certa rilevanza, perché i miei cicli di aggiornamento dell’hardware sono diventati progressivamente più lunghi. Per un po’ di anni il mio PC, assemblato attorno a un Pentium 4 “single core”, mi è bastato per tutto quello che avevo voglia di fare, e ne ha viste di molti colori, tra applicativi, configurazioni e sistemi operativi.

Punti fermi: motivi dell’aggiornamento. Il mio vecchio desktop inamovibile è diventato inadatto al mio stile di vita: anche in casa mi fa comodo un portatile; può sembrare strano ma è così. In più mi farebbe comodo un po’ di potenza, per fare elaborazione fotografica senza aspettare minuti e minuti per ogni immagine. Tra l’altro, essendo alle prime armi devo fare diversi tentativi.

Altro punto semi-fermo: dopo tanti anni di Linux sono pronto a tornare a Windows come sistema operativo? Motivi: meno tempo e voglia di smanettare e provare soluzioni alternative. Insomma voglio la pappa pronta, e anche poter installare più facilmente i programmi. Inoltre, per alcune nuove attività, sono legato a Office. Linux mi è servito, ho imparato tanto e l’ho sfruttato per molto, ma nella vita è bello cambiare, ogni tanto, ben sapendo che da nessuna sponda del fiume c’è il paradiso. E magari non lo abbandonerò del tutto.

Per me è un cambiamento epocale: avevo sempre considerato il desktop come l’ottimo. E’ riparabile, espandibile, configurabile e ha il migliore rapporto costo / prestazioni. Ha un monitor e una tastiera veri. Ci metti dentro quello che vuoi e hai spazio per aggiungere e togliere a volontà. Quando lo cambi, salvi monitor, tastiera, masterizzatore e magari qualche altra cosetta. Ma la tecnologia invecchia in fretta, dopo un po’ non ha senso pensare a aggiornamenti. E, soprattutto, arriva il momento di riconsiderare l’ordine delle priorità.

D’altra parte ero un appassionato del filo che si è dovuto convertire al wireless, tuttavia non ho mai cambiato lo stereo con l’home theater e, visti i risultati medi, ho fatto bene.

Ma non divaghiamo ulteriormente. Ho verificato dai vari test disponibili in rete che anche un PC economico sarebbe notevolmente più prestazionale delle attempate macchine da calcolo di cui ora dispongo, ma applicherò la mia filosofia dominante: salire ragionevolmente di livello, prendendo come parametri gli aspetti per me rilevanti, in modo da sfruttare l’oggetto il più a lungo possibile, ovviamente a meno di imprevisti.

Da qui vengono le specifiche di massima: processore Intel i5 o i7 (o almeno un A8 lato AMD). Almeno 8 Gb di RAM. Scheda grafica dedicata. (Vista la pletora dei componenti disponibili, questo è dire tutto e dire niente). Leggero ma non troppo: non lo porterò spesso in viaggio e certamente non in vacanza: se no che vacanza sarebbe? Un masterizzatore DVD incorporato è preferibile ma non necessario, ormai i supporti ottici si usano davvero poco. Non ho particolari esigenze lato hard disk: sono ancora lontano dal saturare i 300 Gb del vecchio desktop.

Dubbi: ho una certa antipatia per l’interfaccia grafica di Windows 8. E’ una cosa epidermica. Mi dicono che con 8.1 è migliorata. Ma tirare fino alla prossima incarnazione, che dovrebbe essere la 10 e arrivare tra un annetto, non mi va molto. E poi la stragrande maggioranza dei portatili hanno degli orribili schermi lucidi con una pessima resa dei colori. E non mi nominate la Mela Morsicata!

Il processo, direi, è quasi a convergenza. Qualche suggerimento su marche e configurazioni, sole da evitare o aspetti degni d’attenzione?

Un pinguino tradizionalista?

Linux si trova oggi, per certi aspetti, sul lato conservativo dell’informatica, ma andando a fondo non è esattamente così e, per la parte in cui è vero, non è ne una novità ne un vero paradosso.

Windows 8 sta introducendo su computer da tavolo e portatili una nuova interfaccia grafica, che cerca di essere più facile da impiegare e trasversale o quasi con i dispositivi tattili (telefonini avanzati, tavolette) Non tutti sono favorevoli, ma pare che il nuovo Finestre 8 stia vendendo abbastanza bene.

In Linux sta avvenendo qualcosa di simile con la nuova Gnome Shell, che è in realtà comparsa un bel po’ prima di Win-8 e propone ancora un altro approccio all’utilizzo del computer. Sulla scia è nata Unity, la nuova interfaccia grafica di Ubuntu

In ambito Linux, però, quest’innovazione ha portato a diverse reazioni: curiosità ed accettazione da un lato, prudenza e fastidio fino al rifiuto più o meno deciso dall’altro. Di conseguenza Gnome ha visto un netto calo di utilizzatori (e sviluppatori) mentre è aumentata la diffusione dei desktop di impostazione tradizionale, col menù applicazioni, la barra e tutto: KDE in primo luogo, ma anche Xfce, Lxde… A rendere più complesso il quadro sono comparsi nuovi desktop, per riprendere il discorso da dove la vecchia Gnome aveva lasciato: Mate, Cinnamom… Ubuntu si è visto surclassare, come interesse, da Mint, una distribuzione che ha fatto dell’aderenza ad un desktop “classico” uno dei suoi marchi di fabbrica: i due ultimi progetti elencati sono nati proprio da quelle parti.

Si evidenziano quindi alcuni aspetti interessanti:

– Libertà di scelta: chi usa Windows usa l’interfaccia grafica fornita dalla Microsoft, con solo le possibilità di configurazione consentite da Microsoft. Chi usa Linux può guardarsi intorno e scegliere in un’ampia rosa di possibilità e, se è sufficientemente esperto, anche mettere assieme i singoli pezzi che gli interessano e solo quelli.

– Linux non è necessariamente all’avanguardia, anzi: fedele (quando ci riesce) alla filosofia Unix, l’importante è che le cose funzionino e servano allo scopo. Ogni parte del sistema operativo deve fare il suo dovere ed interagire con le altre.

– Il brusco cambio di direzione di Windows poteva infatti essere l’occasione per raccogliere una quota di utilizzatori delusi e tradizionalisti, ma non è stato così: Linux resta marginale in campo “desktop” (mentre è diffusissimo a livello “server”) e chi è deluso da Windows, o stringe di denti e si adatta o al più passa ad Apple. Linux non ha raggiunto il livello di usabilità che lo può rendere appetibile ad una più ampia fascia di utenti, la sua storia ha visto così tanti casi di occasioni mancate che ormai mi sembra chiaro che, per molti motivi, quella strada non si riesce a seguire.

La mia scelta? Se a qualcuno interessa, Linux Mint Debian Edition, con desktop Xfce. Soluzione forse un po’ spartana ma pratica. Anche Gnome-Shell e KDE non sono niente male, però. (Post scritto dal mio netbook con Win 7).

L’alternativa aperta

In campo informatico sono a favore dell’Open Source, con dei distinguo.

L’Open Source mi piace per l’estetica: il più delle volte è più essenziale, più funzionale, più mirato allo scopo, meno caricato di abbellimenti e di “campanelle e fischietti”, come dicono gli anglosassoni.

Mi piace perché è “aperto” nel senso di gestibile, anche se non nel modo più facile. Tutti i sorgenti sono disponibili, ma soprattutto, per l’utente esperto, tutti i file di configurazione sono accessibili. La conoscenza è distribuita on-line e ricercabile. I forum sono continue fonti di suggerimenti ed idee.

Mi piace perché è adattabile: puoi scegliere quello che preferisci, farlo funzionare come preferisci e (con un po’ di esperienza) solo con quello che ti serve. Se hai un computer non all’ultimo grido o poco potente, puoi continuare ad usare una versione aggiornata di Linux, liberata da tutti i fronzoli, senza i tempi d’attesa di un disco rigido che non la smette di girare.

Mi piace perché è stabile: anche i sistemi commerciali migliorano nel tempo, ma per l’Open Source, Linux e compagnia, il miglioramento è continuo. Tutti i “bug” sono pubblicati e discussi apertamente e la soluzione immediatamente messa in circolo, non nascosti e lasciati appesi finché la casa madre non decide di mettere assieme una “patch” da mandare agli utenti. Chiunque può proporre la soluzione o almeno un “tampone” provvisorio.

E adesso vengono i distinguo.

Non riesco a vedere un mondo interamente Open Source, per alcuni motivi.

I computer sono diventati facili da usare grazie a sistemi commerciali.

Per alcuni utenti pagare l’assistenza è meglio che doverla cercare nei forum.

Molto di quello che si sviluppa in campo Open Source è mirato ad utenti esperti e non al computeraro medio della strada (con delle ammirevoli eccezioni).

Il software commerciale è una continua fonte di idee ed innovazioni, così come lo è l’Open Source.

L’Open Source non ha mai fatto il “grande salto” verso la maggioranza degli utenti. Per tanti motivi che non sto a discutere non è, ancora oggi, adatto all’utente inesperto, quello che vuole accendere il computer per fare qualcosa, oltre che informatica. E’ l’ostacolo maggiore che Linux, ad esempio, non ha mai scavalcato del tutto. Le interfacce utente, ad esempio, mi sembrano ormai adeguate, ma la configurazione di macchina e periferiche non lo è ancora, sebbene abbia fatto progressi fenomenali nel corso degli anni.

Secondo me il principale pregio dell’Open Source, di cui usufruisce anche chi non ha mai sentito questo nome, è che da quando è diventato un’alternativa valida, ha fatto da stimolo al progresso e da calmiere dei prezzi per i software commerciali. Non parlo solo di Linux e di BSD, ma di pacchetti come Gcc, Gimp, Open e Libre Office. Senza Linux & soci, a che versione di Windows saremmo arrivati o rimasti? E di Office? E quanto costerebbero?

Un cucciolo per un piccolo PC

Desktop di Puppy Linux “Slacko” con poche personalizzasioni

Il netbook è un bell’oggetto, anche se un po’ finito in disgrazia, incalzato dai tablet e dagli smartphones.

Nella mia esperienza, la vera scocciatura del netbook è il tempo di avvio. Si potrebbe dire che l’hardware è troppo scarso, ma il discorso non mi convince: la potenza, infatti, è paragonabile a quella di un portatile di qualche anno fa.

Nel caso del mio Asus Eee PC 1215b, con 2Gb di RAM ed un processore dual core AMD C50 – non il massimo ma di certo non disprezzabile – il problema è sicuramente uno e si chiama Windows 7.

Il macigno firmato Microsoft richiede almeno 4 Giga di memoria e di mette una vita a far partire tutti i servizi. Ho provato ad alleggerirlo disattivando un po’ di servizi ma il risultato è stato parziale, a stare larghi. Il computerino resta impiccato per buona parte del tempo.

Il problema è noto: il sistema operativo più diffuso al mondo è monolitico, deve fare tutto per tutti e per questo si porta dietro ogni genere di servizi, di acessori e di moduli, per poter fare praticamente qualsiasi cosa, oltre a tutti gli abbellimenti grafici.

La risposta ce l’avevo in mente fin dall’inizio e si chiamava Linux. Ma c’era qualche ostacolo: non mi andava di partizionare il disco rigido, con i soliti rischi ed inefficienze di spazio, e poi avevo voglia di qualcosa di veramente veloce.

Alla fine, dopo alcuni tentativi, credo di averla trovata: ho preso una vecchia scheda SD che tenevo inutilizzata, da 2 Gb, e ci ho installato Puppy Linux. Ho lasciato fare a LinuxLive USB creator, compreso il download della ISO. Ho scelto la versione Slacko 5.3.1.

Perché Puppy? Per la solita miscela di ragione e sentimento per cui si fanno la maggior parte delle scelte, quando non si è spinti dal bisogno impellente. Un sistema operativo completo con un disco di installazione di solo 130 Mb, ottimizzato per sistemi poco potenti e per partire da memorie USB o simili, e per di più con un bel cagnolino come logo. Fa simpatia dal primo momento!

Il primo avvio è stato soddisfacente, ma non esaltante. Per la configurazione ho dovuto smanettare un po’, ma non troppo. Tastiera italiana OK, come il mouse. Il video funziona in modo più che soddisfacente ed in piena risoluzione con il driver Xorg, senza scomodare quelli proprietari ATI. La rete via cavo l’ho configurata in due clic con il tool automatico. Per il wireless ho perso più tempo. Alla fine ho scaricato il modulo Broadcom_STA con il Puppy Package Manager, dopo di che sono bastati i soliti due clic per il set-up automatico, oltre a fornire la password per la mia rete casalinga.

All’apparenza l’audio non voleva saperne di funzionare. Con l’ Alsa sound wizard mi sono però accorto che era semplicemente configurata l’uscita HDMI come audio primario; il chip audio ATI era individuato correttamente come seconda scheda. Mi è bastato selezionarla come default e riavviare tutto.

In sintesi, ora ho un sistema capace di andare su Internet e di gestire file multimediali e che si avvia in meno di un minuto. Ha anche un buon numero di accessori: un piccolo pacchetto office ed un leggero programma di grafica, tutto occupando una fetta di una scheda SD. Questo post l’ho realizzato tutto con il nuovo “sistemino”.

In più è adatto anche per la musica liquida, con un DAC esterno. Ma di questo ne parlo, forse, un’altra volta.

Tempo di scelte per la scrivania

Ormai mi devo decidere: il mio Linux Ubuntu 10.04 è attempato e bisognoso di aggiornamento. Tocca prendere il toro per le corna, fare un back-up completo e reinstallare tutto.

Nessun aggiornamento: è già tutto troppo caotico, ci vuole un “fresh install”.

Ma che desktop scegliere? E’ una decisione importante, perché è l’aspetto del sistema operativo con cui ti tocca convivere di più. Il desktop te lo trovi davanti appena accendi il computer e te lo tieni finché non ti alzi dalla sedia e te ne vai.

Il problema è che anche i desktop classici di Linux stanno andando verso soluzioni “pesanti”, a furia di aggiungere funzionalità, opzioni, girandole e campanelle: anche la buona vecchia Gnome non è più la stessa. Tutti i programmi vogliono fare tutto e così diventano dei bestioni che solo un main frame di ultima generazione è capace di gestire.

Il mio vecchio desktop (non vecchio come quello della foto…) ha forse bisogno di qualcosa che lo ringiovanisca. Qualcosa che sia pratico per Internet, scrivere e programmare quando ne ho voglia.

Ecco le mie opzioni, più o meno in ordine di “peso”:

  • Unity (Ubuntu) <<< Dal web si direbbe “troppo” per il mio PC.
  • KDE <<< Un po’ pesante… e sembra in recessione come numero di utilizzatori. Ma solida.
  • Xfce  <<< Leggero ma configurabile e sviluppato da molti anni. Mi sto orientando…
  • Lxde <<< Il più leggero (e non è male). Sembra perfetto per il netbook più che per il desktop…

Forse passerò attraverso qualche “live-CD” prima di prendere una decisione.

 

Aggiornamento: alla fine (luglio 2012) ho optato per Mind Debian Edition, con desktop Xfce. Sono moderatamente soddisfatto, o meglio più soddisfatto man mano che lo uso ed imparo a cofigurarlo (non tutto è menu-driven). Debian ha recentemente scelto Xfce come desktop di riferimento. Pare che Gnome 3, oltre ad essere più ingombrante del vecchio Gnome, sia anche poco gradito a molti utenti. Xfce Non è male, ma a mio modo di vedere ha ancora strada da fare prima di essere davvero d’impiego comune. D’altra parte tutto il mondo open source va avanti per tentativi ed aggiustamenti.