Archivio
mercoledì 28 marzo 2012 - 30 Commenti
Commodore è tornata… solo per incassare

E’ un marchio che non ha certo bisogno di presentazioni, che ha fatto la storia dell’informatica “di massa” (e non solo), e di cui abbiamo già parlato parecchio su queste pagine.
Da qualche tempo è tornata alla ribalta con la presentazione del C64x, un PC con CPU di fascia alta infilato in un case modellato su quello dell’illustrissimo predecessore, presentato all’esorbitante prezzo di 1500$, che di recente ha lasciato il passo a un modello più economico (“soltanto” 1300$) basato però su una CPU ben più scarsa (un Atom al posto di …

mercoledì 21 marzo 2012 - 22 Commenti
Icaros e AROS sempre più maturi e… apprezzati

In queste pagine sono stati riversati fiumi di inchiostro virtuale su Amiga, e non credo di sbagliare se affermo che rimane uno degli argomenti più apprezzati, e di cui mai si stancherebbe di parlare e di leggere, perché a distanza di 25 anni questa piattaforma rimane ancora nel cuore di tantissimi appassionati che hanno vissuto un’autentica epoca d’oro dell’informatica domestica.
Sebbene informalmente, AROS (di cui abbiamo già parlato tempo fa) fa parte di questa lunga storia, in qualità di sistema operativo “alternativo” ad AmigaOS (una sua completa riscrittura open source, nelle …

mercoledì 14 marzo 2012 - 7 Commenti
Casi frequenti, limiti, e compromessi per una macchina virtuale (e non solo)

L’esperienza che ho maturato in trenta, lunghi, anni di programmazione si potrebbe racchiudere nella seguente massima: “32 bits ought to be enough for anybody“, parafrasando una massima che viene erroneamente attribuita a Bill Gates.
La stessa frase la si potrebbe riscrivere, senza alterarne il significato, cambiando 32 con 8 all’epoca d’oro dei microprocessori a 8 bit, con 16 per l’era dei 16 bit, e… con 64 visto che siamo già entrati in quella dei 64 bit (di macchine a 128 bit non credo che ne parlerò).
Tutto ciò ha senso perché i …

mercoledì 7 marzo 2012 - 4 Commenti
Una nuova rappresentazione per gli interi lunghi di Python

Gli interi sono il tipo di dato più diffuso nel campo della computazione, per cui è normale che vi si dedichi più attenzione e risorse cercando di ottimizzarne il più possibile l’uso.
Python non fa eccezione nel discorso generale, ma purtroppo abbiamo visto nella serie di articoli precedenti che a partire dalla versione 3 è sparita la rappresentazione più veloce (gli interi “corti”) a favore dell’unico tipo di dato intero che fa capo ai long (interi “lunghi”).
Questo ha portato a una generale perdita di prestazioni, specialmente alla luce del complesso meccanismo che …

mercoledì 29 febbraio 2012 - 1 Commento
CPython e il polimorfismo degli operatori

Manca ormai l’ultimo pezzo del puzzle, come si suol dire, per completare l’analisi del funzionamento e dell’implementazione degli operatori nella macchina virtuale di Python (CPython per l’esattezza).
Abbiamo visto nel precedente articolo che, per l’operatore di “somma” (il simbolo +), l’astrazione è racchiusa dentro un’apposita funzione, chiamata PyNumber_Add.
Ovviamente esistono altrettante funzioni per gli altri operatori, inclusi quelli unari, ma il concetto finora esposta è di carattere generale, per cui è applicabile anche a questi.
PyNumber_Add, però, esegue soltanto una piccola parte del lavoro, delegando l’implementazione, di più basso livello, a un’altra funzione, …

mercoledì 22 febbraio 2012 - Commenta
L’astrazione dell’operazione di somma/concatenazione in CPython

La lunga serie di articoli finora scritti che descrivono i meccanismo interni di CPython hanno fornito uno spaccato di come la macchina virtuale implementi le operazioni a cui siamo abituati (in particolare ci siamo soffermati su quelle binarie), ma il cerchio non è ancora stato chiuso.
Manca, infatti, l’analisi del workflow che dall’istruzione / opcode da eseguire porta alla routine che verrà effettivamente utilizzata per coprire il caso specifico, di cui quest’articolo presenta una prima parte.
CPython 2.x ci ha abituati a diversi hack, spezzoni di codice altamente specializzato per accelerare il …

mercoledì 8 febbraio 2012 - 17 Commenti
Nuovi linguaggi, vecchi errori

YAPL: Yet Another Programming Language. Da un po’ di anni a questa parte, con la diffusione di strumenti di sviluppo comodi e semplici per la generazione di interpreti e/o compilatori, si sta assistendo a un’autentica proliferazione di nuovi linguaggi di programmazione che cercano di ritagliarsi uno spazio in appositi ambiti applicativi o addirittura di proporsi come sostituti di altri “storici” e consolidati.
E’ il caso di Rust di Mozilla Foundation, che strizza l’occhio al C con una sintassi che ha molto in comune, sebbene non l’abbia presa in prestito a tutti …

mercoledì 1 febbraio 2012 - 17 Commenti
Aspettative sulle prossime console

Dall’annuncio della prossima console di Nintendo, il Wii U, che dovrebbe arrivare quest’anno, si è dato ufficialmente il via alle speculazioni sull’hardware della prossima generazione, e su quello che sarebbe (il condizionale rimane un obbligo in attesa delle specifiche definitive) in grado di fare.
L’ultima notizia, di qualche giorno fa, attesta la Wii U come due volte “più potente” della XBox 360, mentre il successore di quest’ultima sembrerebbe sei volte “più potente” del predecessore.
Fermo restando che il concetto di “potenza” di una macchina rimane, in ogni caso, relativo. “Potente” rispetto a …

mercoledì 18 gennaio 2012 - 2 Commenti
Tipi, classi, e protocolli in CPython

Dopo una breve pausa torniamo a parlare di Python e della sua implementazione più comune, la virtual machine CPython. Abbiamo già visto in che modo viene effettivamente realizzata la somma di due numeri interi e, in parte, la concatenazione di due stringhe.
Il “filo conduttore” di tutto è rappresentato dal tipo (o classe) più semplice, cioè dalla struttura PyObject definita in C dai due campi ob_ref e ob_type, rispettivamente contatore del numero di riferimenti di un certo oggetto, e puntatore alla struttura della classe a cui appartiene.
Quest’ultimo è stato visto più volte, …

mercoledì 4 gennaio 2012 - 32 Commenti
Emulazione, simulazione, e limiti tecnologici

Il precedente articolo sul MAME ha scatenato un po’ di polemiche che francamente non mi sarei aspettato, per cui ho deciso di affrontare alcuni argomenti che sono venuti fuori, in particolare quello prettamente tecnico che riguarda il cieco affidarsi all’evoluzione della tecnologia per giustificare il ricorso a codice sempre meno ottimizzato e/o esageratamente spostato verso la più onerosa simulazione piuttosto che alla più leggera emulazione.
Premetto intanto che l’emulazione era pre-esistente al MAME, da un bel pezzo. La prima volta che ne ho sentito parlare era ai tempi dell’Amiga, col suo …