-
Oh no, Mike Bongiorno!
0Scritto il 10 settembre 2009 in Low techUna recente toccata e fuga di una giornata su un computer con Linux mi ha fatto ricordare un paio di cose. Ad esempio, una pittoresca metafora: OS X è una gelateria che ha solo nocciola, e in una varietà sola; particolarmente buona eh, però se non ti piace la nocciola sei fottuto. Linux invece è una gelateria enorme piena di gusti. Il problema è che fanno quasi tutti cagare.
Non sono mai stato un Apple fanboy, e ogni giorno che passa mi convinco che chi ostenta “il nuovo mac” che s’è comprato “perché il mac è meglio” non abbia la minima idea di cosa stia parlando; tuttavia d’altra parte mi son sempre chiesto cosa spinga gli sviluppatori di certi teams ( freedesktop, ad esempio ) a cercare le peggiori tamarrate – finestre gommose, finestre con fuoco e fiamme – quando, ad esempio, i font vengono sempre e comunque renderizzati di merda. E perché la gente deve perdere tempo a fare queste schifezze quando il compositing di Linux fa acqua da tutte le parti ?

Ho sempre odiato i “pacchettoni” Apple, quelli per colpa dei quali il computer si riempie di inutili librerie ridondanti, che fanno rimpiangere le shared objects di Linux. Per chi non ha mai notato il problema, le applicazioni su OS X sono delle cartelle con dentro anche buona parte delle librerie che le applicazioni usano, per cui se cinque applicazioni separate usano una libreria di terza parte ( non Apple ) relativamente grossa, avrò cinque duplicati della stessa libreria.
Linux risolve condividendole; si risparmia spazio, ed è comodo quando devo fare un programma che usa quattro cose da una libreria esterna. Il problema è che tutto va a farsi fottere quando una libreria cambia nome; questo in genere viene risolto per tempo dagli sviluppatori, ma ci sono programmi che hanno cicli di release abbastanza lunghi ( e magari vengono usati in ambienti in cui non si è soliti aggiornare il sistema ), come ad esempio i compilatori Intel, che su Linux rimangono inutilizzabili per un po’; magari fossero open source qualcuno avrebbe risolto il problema. Quindi beh, the lord giveth and the lord taketh away.
Per onestà intellettuale è bene sottolineare che il modello “gelateria con un solo gusto” ha una valanga di svantaggi. Le scorciatoie da tastiera sono inconfigurabili ed è impossibile liberarsi dei tasti inutili ( l’invio affianco alle frecce può essere un ottimo sostituto per alt gr ) senza manomettere il kernel. Da un lato meno nerd invece ci si deve abituare a “quello che offre la casa” per svariate funzioni: iTunes fa cagare, Numbers fa cagare, e così via. Fortuna che da bravo “uomo di scienza” non ho bisogno di un word processor, perché anche Pages fa cagare. Fortunatamente è pieno di applicazioni open source perfettamente funzionanti.
L’ironia della sorte è che persino emacs compilato a mano su OS X funziona meglio che come precompilato su Debian.
Per il resto oggi ho avuto la mia prima esperienza “sensata” con Cocoa. Tutte le altre volte finivo sempre per chiudere tutto dopo un mare di bestemmie. Questa volta invece forse anche grazie ad una sorta di guida per sfigati che spiegava un paio di passaggi che mi mancavano son riuscito a capirci qualcosa.
Venendo da GTK e “gli oggetti senza gli oggetti” un toolkit che invece forza una programmazione OO è una sorta di incubo. Cocoa ha un sacco di cose che lo rendono meglio di GTK; non essendo minimamente pensato per essere cross-platform è perfettamente integrato con sé stesso ed essendo l’unica via per scrivere GUI su Mac è anche sviluppato piuttosto bene; i problemi con GTK sono infatti spesso problemi con X11 o cose simili.
Ci sono due cose che rimpiango di GTK. La prima è che con Cocoa non c’è un modo immediato di scrivere un’interfaccia grafica senza coinvolgere Xcode. Con GTK in linea di principio fare le cose “a mano” era anche l’unico modo – spesso era irritante, ma almeno “c’era e funzionava”. La cosa peggiore invece è dovuta all’approccio “it’s not a bug, it’s a feature” di come viene trattata la class inheritance nella documentazione Apple. Ovvero, se un oggetto eredita da altri sette è difficile capire a quale dei sette fa capo una certa funzione; in particolare, il lavoro inverso, “come monitoro lo stato di un pulsante o qualcos’altro ?”, è abbastanza noioso.
Il problema finale è che la documentazione è molto disorganizzata. È tanta, ma molto dispersa. Non essendoci un equivalente soddisfacente di devhelp questo è un vero e proprio palo nel culo.
Per il resto ci sono molte sorprese piacevoli. Ad esempio, la versione distribuita da Apple di gcc ha un sacco di tweaks che ottimizzano vistosamente il codice, e l’integrazione di Aqua con la riga di comando dopo un paio di anni di esperienza non è più così problematica, tanto che ritornando ad usare Linux in parallelo non si sente troppo la differenza, anche se le tty mancano un po’.
Tags: goodnight sweet prince, roba da schifosi nerd
