sabato 31 dicembre 2011

Il codice che mai si vede



Un programmatore solitamente ha a che fare nella sua carriera con svariati linguaggi di
programmazione. La tecnologia di oggi dà ai programmatori una serie di tools che ci
assiste lungo tutta la catena produttiva nascondendo nello stesso tempo tutti gli step ed i
prodotti intermedi della programmazione. Diciamo quindi che se non si è un
programmatore che si occupa della scrittura di driver o di codice di sistema di basso
livello, difficilmente si avrà la possibilità di vedere il codice Assembly generato dal
compilatore. Eppure oggi l’evoluzione più interessante che investe il mondo dei compilatori
si gioca proprio sulla capacità di generare codice Assembly sempre più ottimizzato
soprattutto nell’ottica di un diffondersi sempre più massivo di processori per dispositivi
mobili e che quindi dispongono di risorse più limitate rispetto ad un computer tradizionale.
Chi programma da un po’ di tempo sicuramente avrà studiato (all’università o per conto
suo) un po’ di Assembly per processori come il mitico Z80 o il Motorola 68000
(ricordiamoci che nel 2011 si sono festeggiati i primi quarant’anni del primo processore
Intel 4004) e quindi parole come “mov” o “jmp” suoneranno abbastanza famigliari. Come
dicevo prima, l’evoluzione dei “code generator” di molti compilatori è più che mai viva.
Qualche esempio pratico. Consideriamo il seguente frammento di codice (sample.c):

struct Array
{
 size_t Size;
 double *Data;
}
void MyFunc (struct Array *A)
{
 for(size_t i = 0; i < A->Size; i++)
 {
  A->Data[i] += i;
 }
}


Proviamo a vedere che tipo di Assembly genera un compilatore di ultima generazione
come LLVM. Per fare questo scriviamo da linea di comando: clang -c -O2 -S sample.c che
genera un file sample.s contenete il codice Assembly. Se diamo un’occhiata a questo file
troveremo qualcosa del genere circa la sezione di codice che descrive il ciclo for:

## BB#1:
   xorl %eax,%eax
   movsd LCPI0_0(%rip), %xmm0
LBB0_2:        ## => This Inner Loop Header
   movq 8(%rdi),  %rci   ## load A->Data
   movsd (%rcx, %rax,8), %xmm1
   addsd %xmm0,  %xmm1
   movsd %xmm1,  (%rcx, %rax,8)
   incq %rax
   movq (%rdi),  %rdx   ## load A->Size
   cmpq %rdx,  %rax
   jb  LLB0_2

In questo caso il compilatore, senza ulteriori indicazioni, si mantiene su una posizione
molto conservativa e solida ricaricando ad ogni ciclo sia il puntatore alla size, sia il
puntatore ai dati. Noi sappiamo però dalla teoria del linguaggio che due puntatori a tipi di
dato diversi non possono essere uno l’alias dell’altro, non è quindi necessario ricaricare i
due puntatori ad ogni ciclo. Diciamo questo al compilatore LLVM scrivendo:
clang -c -O2 -fstric-aliasing -S sample.c
Così facendo otteniamo un Assembly così generato (sample.s)

## BB#1:
   xorl %eax,%eax
   movsd LCPI0_0(%rip), %xmm0
   movq 8(%rdi),  %rci   ## load A->Data
   movq (%rdi),  %rdx   ## load A->Size
LBB0_2:        ## => This Inner Loop Header
   movsd (%rcx, %rax,8), %xmm1
   addsd %xmm0,  %xmm1
   movsd %xmm1,  (%rcx, %rax,8)
   incq %rax
   cmpq %rdx,  %rax
   jb  LLB0_2

Questo incrementa le performance del codice generato di quasi il 30% su codice
contenete molti cicli.
Altro esempio. LLVM dalla versione 3.0 ha una funzionalità che si chiama “Instruction
Scheduler” che consente di ottimizzare, ordinandole, le istruzioni Assembly in base ai
tempi di ciclo in modo da non tenere in sospeso delle istruzioni durante l’esecuzione di
istruzioni più pesanti. Meglio presentare un esempio per capirci meglio.
Consideriamo questa porzione di Assembly generata dal compilatore GNU gcc (versione
4.2):

r2 = add r0, r1 ## 1 ciclo
r3 = load [addr] ## 2 cicli
  // aspetta un ciclo
r4 = sub r2, r3 ## 1 ciclo

La stessa porzione di Assembly generata dal compilatore LLVM (versione 3.0) risulta
invece essere:

r3 = load [addr] ## 2 cicli
r2 = add r0, r1 ## 1 ciclo
r4 = sub r2, r3 ## 1 ciclo

qui non si ha alcuna attesa e quindi il codice eseguibile è decisamente più performante.
Concludendo è sul campo di battaglia del codice che mai nessuno vede che si sta
combattendo la guerra per scrivere programmi ed applicazioni sempre più veloci ed in
grado di cavalcare l’onda dell’evoluzione hardware. Un’altra evoluzione paradigmatica
importante è CUDA, ma di questo ne parleremo un’altra volta.

Luca Ciciriello

martedì 27 dicembre 2011

iOS & Android vendite record per Natale 2011



Tempo di crisi e tempo di record di vendite per terminali iOS e Android.
In questo Natale infatti è stato battuto clamorosamente il record di vendite: si è passati infatti dai 2.8 milioni di attivazioni di Natale 2010 ai 6.8 milioni del Natale appena trascorso.

Secono il sito Flurry anche le App hanno avuto un incremento di download arrivando a sfondare i 242 milioni di download proprio il giorno di Natale.

Infine il Vice Presidente di Google Andy Rubin ha dichiarato che Android è arrivata ad un numero di attivazioni giornaliere pari a 700 mila terminali, mentre secondo altri rumors Apple ha venduto oltre 250 milioni di pezzi nell'ultimo quadrimestre.

lunedì 26 dicembre 2011

12 giorni di Natale Apple



Apple ha iniziato da oggi a regalare ai propri clienti musica, video musicali, app e ebook.

Andando in questa pagina potete visitare su iTunes l'app da installare nel vostro device Apple e cominciare a scaricare i vostri regali.

Buon download.

martedì 20 dicembre 2011

Seagate e Western Digital riducono la garanzia sugli hard disk






Entrambi i colossi fornitori di hard disk hanno in programma un taglio della garanzia sui propri prodotti.


Le motivazioni ufficiali sono legate ad una politica di risparmio del post-vendita da reinvestire nella ricerca e sviluppo.

Secondo molti esperti però questo taglio è dovuto ad una ricerca di risparmio economico, da reinvestire per la ricostruzione dopo l'alluvione che ha flagellato la Thailandia.

giovedì 8 dicembre 2011

SHRDLU, cerca di capirmi...

Molti studiosi, sia nel passato, sia oggi, ricercano la scintilla dell’intelligenza studiando i
meccanismi più profondi del funzionamento del nostro complicatissimo cervello. Studiano
come i neuroni, gli elementi base del cervello, interagiscono tra di loro e cercano di
riprodurre artificialmente questa interazione. E’ questo l’approccio giusto per capire e
riprodurre l’intelligenza? Non lo so. A me sembra che studiare l’intelligenza in questo modo
sia un po’ come cercare di capire il senso di quello che c’è scritto in questa pagina
studiando le interazioni elettriche dei transistor del processore montato sulla macchina che
visualizza queste righe. E poi, come definiamo noi il termine “intelligenza”? Quali sono le
caratteristiche che un’entità deve possedere per poter essere definita intelligente?
Partiamo da una considerazione. Noi ci definiamo una specie intelligente. Quale è il tratto
distintivo che differenzia la nostra specie dalle altre? La risposta è semplice: il linguaggio.
Il nostro linguaggio è il più articolato e complesso di qualsiasi altra specie vivente su
questo pianeta. Terry Winograd ha seguito la strada del linguaggio naturale per lo studio
dell’intelligenza artificiale. Nel 1968, Winograd ha iniziato la sua tesi di dottorato scrivendo
un programma in LISP che sarebbe stato in grado di “capire” le intenzioni di comandi dati
in Inglese naturale. Il programma si chiamava (...e si chiama) SHRDLU. All’epoca
SHRDLU girava su un DEC PDP-6 ed occupava un’intera bobina da 6 pollici. Il nome
SHRDLU deriva da ETAOIN SHRDLU che era il nome con cui era identificata la tastiera
della Linotype Machine (un po’ il precursore della nostra QWERTY).
SHRDLU era in grado di capire frasi (contestualizzate in un mondo ad hoc chiamato “il
mondo dei blocchi”) del genere: “SHRDLU sposta il blocco rosso più piccolo rispetto a
quello che stai reggendo adesso e che si trova sotto al blocco a forma di piramide di
colore verde”. Per un essere umano è banale disambiguare una frase del genere, ma per
un programma software diventa un incubo analizzare semanticamente questa frase. La
tesi di dottorato di Winograd si concluse nel 1970 e nel 1972 SHRDLU divenne il più
famoso programma software (e forse il primo) catalogabile sotto la categoria di
Computational Linguistic, branca della Computer Science affascinante e tuttora in fase di
enorme sviluppo. SHRDLU è ancora attivo e liberamente scaricabile per diverse
piattaforme all’indirizzo: http://hci.stanford.edu/winograd/shrdlu/.
Oggi molte ricerche sono orientate all’analisi del linguaggio naturale da parte di software
sempre più sofisticati. Si pensi all’ormai famoso Apple Siri, un programma di analisi
linguistica
che è in grado di tenere una conversazione credibile su qualsiasi argomento ed
eseguire comandi. Siri è disponibile in versione beta sul dispositivo mobile (iPhone 4S)
della Apple. Informazioni su Siri sono disponibili a questo indirizzo: http://www.apple.com/
iphone/features/siri.html
Sempre su iPhone è disponibile una mia applicazione (un po’ di pubblicità non va mai
male) in grado di eseguire l’analisi logica di una frase qualsiasi in inglese, classificando le
parole contenute nella frase in verbi, nomi, aggettivi, ecc. “Grammatica”, la mia
applicazione, è in grado anche di identificare all’interno della frase nomi propri, date,
indirizzi e numeri di telefono. Informazioni su Grammatica possono essere trovate al sito
Apple: http://itunes.apple.com/app/grammatica/id482570158?ign-mpt=uo%3D6&mt=8.
Molti altri studi sono in corso in Computational Linguistic. Per chi fosse interessato
all’argomento, un sito molto bello e pieno di articoli liberamente accessibili è quello del
MIT: http://www.mitpressjournals.org/loi/coli.
Per concludere ritengo la Computational Linguistic un approccio più sensato da perseguire
nella ricerca sull’intelligenza artificiale rispetto all’approccio botton-up della maggior parte
delle ricerche oggi attive in questo campo.
Luca Ciciriello.

mercoledì 30 novembre 2011

I Social Network e il mercato di domani

I Social Network (Facebook, Twitter, Linkedin, etc...) sono ormai arrivati ad avere una portata enorme in termini di diffusione di una notizia.
E questo vale anche a livello di marketing.

Vi rimando a questo video che con l'utilizzo dell'infografica ci fa capire come sta cambiando il mercato, la diffusione delle notizie e anche della pubblicità, positiva o negativa che sia.

E' giunto forse il momento in cui le PMI, le attività e i professionisti italiani facciano il salto al 2.0 anche come metodo per affrontare la crisi?

Buona visione.


martedì 22 novembre 2011

Anteprima della nuova versione di Youtube





Google si appresta a lanciare una nuova versione di YouTube, in termini di layout e di Social.
Chi vuole può provare questa nuova versione andando a fare una piccola modifica sul proprio browser Mozilla Firefox oppure Google Chrome.

Vediamo in dettaglio.

Per prima cosa, prima di questa procedura, aprira una pagina e collegarsi a Youtube.

Mozilla Firefox.

Premete contemporaneamente CTRL + SHIFT + k (o andare nel menu in alto-> sviluppatore Web -> Web Console), copiare nella riga di comando questa stringa :
document.cookie = "VISITOR_INFO1_LIVE = ST1Ti53r4fU"

A questo punto premete Invio e ricaricate la pagina.

Google Chrome.

Premete contemporaneamente CTRL + SHIFT + J (o tasto destro del mouse nella pagina e selezionare 'Inspect Element' e fare clic sulla scheda Console).
Copiare nella riga di comando questa stringa :

document.cookie = "VISITOR_INFO1_LIVE = ST1Ti53r4fU"

Premete Invio e ricaricate la pagina.


Ecco fatto.


Per ripristinare il vecchio layout rifare il procedimento e inserire questa stringa:
document.cookie = "VISITOR_INFO1_LIVE ="

giovedì 10 novembre 2011

Continua la crescita dell'ecommerce in Italia



Potremmo definirlo effetto Groupon quello che sta succedendo ora in Italia, ovvero un aumento a 8 Miliardi di Euro, cioè del 20% in più, del settore ecommerce in Italia.

Proprio questi nuovi giganti del settore, Groupon in testa, hanno portato a questo sensibile aumento degli acquisti su Internet, portando l'Italia sempre più vicino a quelli che sono i numeri del mercato europeo in questo settore.

Andando ad analizzare i numeri si scopre come nel nostro paese sono soprattutto i prodotti (+24%) ad avanzare rispetto ai servizi (+18%): i comparti che hanno impennato le loro vendite sono moda, editoria, musica ed audiovisivi.

Altro gigante che ha contribuito a questa crescita è Amazon: boom di acquisti di smartphone (un incredibile +210%) e un raddoppio sostanziale raddoppio sui prodotti informatici.

Altro dato interessante è il numero di eshopper italiani, arrivati ormai alla cifra di 9 milioni di utenti: gli acquisti infine si suddividono tra 65% al Nord e il restante nel Centro-Sud.

mercoledì 9 novembre 2011

Questione di eleganza


Il primo Maggio del 1964 alle quattro del mattino, su un calcolatore GE-225,  “girava” il
primo programma scritto in BASIC. Come tanti altri della mia età, anche io ho iniziato a
scrivere i miei primi programmi in BASIC. Devo dire che ho iniziato abbastanza tardi, ma la
prima macchina per me abbordabile come prezzo è stato un C64 (Commodore 64) uscito
solo nel ’82.  Prima, il sogno mio e di molti altri come me appassionati di computers, era
“l’Apple II” i cui prezzi però erano molto al di sopra delle nostre possibilità economiche di
adolescenti. Mi ricordo ancora che il primo programma che scrissi in BASIC calcolava i
primi trenta numeri primi. Ci misi un’intera settimana a convertire l’algoritmo matematico
trovato su un libro in codice BASIC che mi sembrava una lingua misteriosa e affascinante.
Lanciai il tutto e i primi trenta numeri primi magicamente apparvero sullo schermo (un
televisore a valvole in bianco e nero). Funzionava! Mi sono sentito spinto da una euforia
incredibile. Ho capito che con quel “supercomputer” che avevo sotto mano e con la mia
(allora presunta) maestria nel dominare il linguaggio BASIC avrei potuto fare qualsiasi
cosa. Salvai il programma su una normale audiocassetta (il supporto di registrazione di
massa del C64) e iniziai a scrivere molti altri programmi in BASIC. Credo di avere ancora
quella prima cassetta con sopra il mio primo programma.
Il tempo passò.
All’università sono arrivato pensando di stupire tutti con la mia capacità di scrivere programmi, ma mi
sono accorto subito che li si parlava un’altra lingua e che il BASIC era considerato come le
prime parole dette da un bambino che impara a parlare. Ho scoperto così il FORTRAN.
Molto più ostico del BASIC da imparare, ma che offriva un universo di possibilità che con il
BASIC neanche potevo immaginare. Ovviamente decisi di scrivere la mia tesi utilizzando
FORTRAN. La tesi si basava sugli algoritmi genetici usati per gli automi cellulari ed in
particolare per il “Costruttore Universale” di Von Neumann, un’entità informatica in grado di
autoriprodursi ed emulare la diversità genetica. In quel periodo, il mio insegnate, mi diede
un libro che parlava di un altro linguaggio di programmazione che si chiamava LISP, nato
molto prima del BASIC e usato ancora oggi per applicazioni di Intelligenza Artificiale.
Subito lo sfogliai molto velocemente, dovevo concentrarmi sulla tesi e non avevo bisogno
di altre distrazioni, poi la mia curiosità verso il LISP crebbe. Il nucleo entrale della mia tesi
era una routine in FORTRAN che ad ogni generazione introduceva una piccola mutazione
nel codice genetico dell’automa cellulare e ricalcolava come sarebbe stata l’evoluzione
dell’automa nelle generazioni successive. Questa routine FORTRAN era lunga 10 pagine
di codice. Quasi per caso ripresi in mano il manuale di LISP che mi aveva dato il mio
insegnante e rimasi colpito da come erano brevi e “potenti” i programmi che si potevano
scrivere in LISP. Quasi per gioco ho iniziato a pensare che aspetto avrebbe avuto la mia
routine FORTRAN se l’avessi scritta in LISP. Avevo un problema però, sul sistema VAX su
cui lavoravo all’università c’erano disponibili diversi compilatori FORTRAN, ma niente
compilatori LISP. Tanto meno ne avevo uno sul mio computer Olivetti (con un nuovissimo
processore Intel 80286) a casa. Il compilatore per il “286”, ancora una volta me lo procurò
il mio insegnante e così provai a riscrivere la mia routine in LISP. Miracolo! La routine che
in FORTRAN era lunga 10 pagine, in LISP contava solo 25 righe di codice ed era almeno
tre volte più veloce nell’eseguire i calcoli. Mi ricordo che rimasi davanti al monitor ad
ammirare quel codice per almeno 10 minuti senza parlare. Qualcosa di magico era
successo, non solo il codice LISP era più corto e funzionava meglio, ma era anche bello
da vedere! C’era qualcosa di armonioso in tutto quel codice qualcosa che formava un tutto
tra l’idea e la sua implementazione. Ovviamente riscrissi l’intera tesi in LISP. Da allora ho
imparato ed usato molti altri linguaggi del “mainstream industriale” (C,C++,C#, Java, ecc.),
ma in ognuno di essi ho sempre ricercato oltre alla funzionalità anche la bellezza e
l’eleganza del codice scritto. Il mio insegnante di C++ in Inghilterra mi ripeteva sempre che
il programma bello da vedere è poi anche quello che funziona meglio, e con il tempo ho imparato che le sue parole erano vere. Oggi uso indistintamente molti linguaggi diversi, sia
per lavoro, sia per diletto, e ancora oggi, quando devo modellizzare un problema lo faccio
in LISP o in HASKELL (un altro linguaggio molto elegante nella scrittura ed estremamente
potente) anche se poi il programma lo scriverò in C# o in Java.
La bellezza e l’eleganza nello scrivere un codice armonioso non è una cosa che si può
insegnare, ma deve venire dalla nostra sensibilità nel vedere le parti di un’idea che si
combinano in un tutto.
Luca Ciciriello

sabato 29 ottobre 2011

Marcia indietro HP, rimane nel mercato PC





Dopo aver annunciato la vendita del ramo d'azienda relativo ai PC (trovate qui la notizia) HP fa marcia indietro.


La nuova CEO Meg Whitman, ex CEO di eBay, annuncia attraverso un comunicato stampa che HP non ha nessuna intenzione di vendere il proprio ramo d'azienda dedicato al mercato PC.


Scrive inoltre HP: "PSG has a history of innovation and technological leadership as well as an established record of industry-leading profitability. It is the No. 1 manufacturer of personal computers in the world with revenues totaling $40.7 billion for fiscal year 2010."


Altro tasto toccato da HP è proprio l'aspetto economico di questo tipo di operazione, visto che dalle analisi fatte, relative ad una vendita del ramo PC, i costi di questa operazione supererebbero i possibili benefit. 

venerdì 28 ottobre 2011

Salutiamo un grande maestro


Il 12 Ottobre scorso, Dennis Ritchie è morto in solitudine nella sua casa di Murray Hill nel
New Jersey. I media hanno vergognosamente ignorato questa notizia, sia negli Stati Uniti,
sia nel resto del mondo. Solo poche anse hanno liquidato in due righe la notizia. Eppure
nel nostro mondo della Computer Science, Ritchie è stato un personaggio chiave ed un
grande maestro che ha contribuito allo sviluppo di tutta la tecnologia che usiamo oggi. La
sua influenza nell’anticipare e “creare” il futuro è stata pari a quella di Steve Jobs, morto la
settimana prima. Sono imbarazzato nel descrivere chi è e cosa è stato Dennis Ritchie.
Come mi ha scritto un mio collega subito dopo la morte di Ritchie: “grazie a lui ci hanno

pagato un sacco di stipendi”. A lui dobbiamo il sistema operativo UNIX (scritto a quattro
mani con il suo collega e grande amico Ken Thompson). A lui dobbiamo i linguaggi B,
BCPL ed infine il linguaggio C. Quando io sono nato, nel 1968, Ritchie riceveva ad
Harvard il dottorato di ricerca in Computer Science con una tesi intitolata “Program

Structure and Computational Complexity”. Nel 1983 Dennis Ritchie è stato insignito della
più alta onorificenza alla quale noi “Scienziati dei Computer” possiamo aspirare: l’ACM

Turing Award. Questa onorificenza (equivalente al premio Nobel) gli è stata conferita
proprio per i suoi studi seminali e per i suoi lavori che hanno modificato in maniera così
profonda il nostro modo di vedere la programmazione. Consiglio a tutti di andare a leggere
tenuto in
occasione della consegna del premio. Unica la sua chiarezza di pensiero, ha insegnato a
tutti noi programmatori l’eleganza nello scrivere codice. Non voglio e non posso
aggiungere altro su Dennis Ritchie. Chiudo con le parole della sorella e dei due fratelli di
Dennis dette in occasione del suo funerale:

“Dennis was an unfailingly kind, sweet, unassuming, and generous brother--and of

course a complete geek. He had a hilariously dry sense of humor, and a keen

appreciation for life's absurdities--though his world view was entirely devoid of

cynicism or mean-spiritedness.

We are terribly sad to have lost him, but touched beyond words to realize what a

mark he made on the world, and how well his gentle personality--beyond his

accomplishments--seems to be understood.

Lynn, John, and Bill Ritchie “

Grazie di tutto Dennis Ritchie.
Luca Ciciriello

Prezzi degli hard disk alle stelle, colpa dell'alluvione in Thailandia





In questi ultimi giorni molti avranno notato un'impennata dei prezzi sugli hard disk.
Tutto questo è stato causato dalle recenti alluvioni avvenute in Thailandia soprattutto nell'area di Bangkok dove hanno sede numerose fabbriche di produttori come Nikon, Western Digital e Seagate.



Proprio Western Digital è l'azienda più colpita, visto che il 60% della sua produzione avviene proprio nelle zone di Bangkok: l'alluvione e la conseguente chiusura degli impianti ha fatto si che l'hardware immesso sul mercato sia in misura molto minore.
Questa situazione, come è facile intuire, ha fatto si che gli altri produttori ne abbiano approfittato aumentando i prezzi, con picchi del 150% in più rispetto al periodo precedente.


Qui potete trovare il comunicato stampa della Western Digital.

venerdì 21 ottobre 2011

Piccoli programmatori crescono.





Gli Stati Uniti avranno anche tanti difetti, ma un pregio dobbiamo riconoscerglielo: sanno 
valorizzare e sostenere le idee. Questa è la storia di un’idea.

Siamo nel 2000, all’università dell’Illinois si sta per laureare Chris Lattner un giovane che 
nei suoi studi si è interessato principalmente di sistemi operativi e di compilatori. Ma la sua 
tesi di laurea verterà su un’idea alla quale sta lavorando già da un po’. 
Tutto nasce da una serie di considerazioni che Chris ha incominciato a fare durante il corso di 
teoria dei compilatori e soprattutto sui compilatori per il linguaggio C/C++. Analizzando molto 
da vicino questi compilatori (e soprattutto gcc) Chris era arrivato alla conclusione che questi 
compilatori si basavano su tecniche di generazione del codice vecchie di decenni. La 
generazione del codice non era “Just In Time” e non esistevano ottimizzazioni cross-file. E 
si era accorto che questi compilatori diventavano sempre più lenti ad ogni nuova release. 
Perché quindi non scrivere un compilatore che avesse le caratteristiche che i compilatori 
all’epoca non avevano? Perché non attingere dalla letteratura tecnica le idee migliori e 
metterle assieme in un moderno compilatore che produca codice estremamente 
ottimizzato e sia molto veloce?
Quindi Chris inizia a lavorare su questa idea. E a questa idea ci lavora dal 2000, anno 
della tesi, fino al 2005, anno in cui inizia a pubblicare i primi risultati della sua ricerca. Gli 
articoli pubblicati da Chris parlano di LLVM (Low Level Virtual Machine), il nome che lui ha 
dato a questo sistema universale di compilazione. Manca ancora un passo. Il front-end. 
Inizialmente Chris ha utilizzato il front-end di gcc (llvm-gcc), ma già nel 2005 ha iniziato a 
lavorare ad un sostituto per questo front-end che in ogni caso reintroduceva quelle 
limitazioni sistemiche proprie di gcc. 
E qui viene il bello. 
Nel frattempo un altro attore della nostra storia, un grande colosso dell’informatica si era 
reso conto delle limitazioni di gcc. Stiamo parlando della Apple. Apple utilizzava gcc per il 
suo ambiente di sviluppo e per la compilazione di tutte le applicazioni e del sistema 
operativo. E proprio nel periodo in cui Chris Lattner pubblicava i suoi risultati la Apple si 
stava guardando attorno per trovare una valida alternativa a gcc. Gli sviluppatori Apple 
provando l’LLVM si sono ritrovati con la soluzione a portata di mano. Lattner è stato subito 
convocato a Cupertino per un seminario su LLVM e sulle innovazioni che questa 
tecnologia introduceva nel mondo dei compilatori. 
Il mese dopo questo seminario, Lattner è stato assunto da Apple e oggi è il capo del team 
che si occupa dell’architettura software dei compilatori del dipartimento ricerca e sviluppo. 
Qui ha visto la luce il nuovo front-end per LLVM, chiamato Clang. L’unione di Clang con 
LLVM fornisce quindi un compilatore innovativo, veloce e che produce codice 
estremamente ottimizzato per i86, i86-64, PowerPC e ARM. 
Tutto quello che vediamo oggi funzionare su macchine Apple è stato compilato con LLVM. 
Io ora sto scrivendo con un word processor compilato con LLVM e tutte le “App” che ci 
sono su iPhone e iPad (sistema operativo compreso) sono state compilate con LLVM. 
Questa è la storia di Chris Lattner e di come una sua idea (quando era ancora studente) 
abbia cambiato il modo di vedere la compilazione. 
Ora una domanda. 
Che fine avrebbe fatto Chris Lattner e la sua idea se si fosse laureato in Italia e in Italia 
avesse pubblicato i suoi risultati? 
Non c’è bisogno che mi rispondiate...

Luca Ciciriello

venerdì 14 ottobre 2011

Programmazione: la lingua che parliamo condiziona il modo in cui vediamo il mondo


Edward Sapir nel 1921 e poi il suo allievo Benjamin Whorf formularono una ipotesi linguistica (nota oggi come ipotesi di Sapir-Whorf) che sosteneva che la lingua che noi parliamo, il nostro linguaggio naturale, influenzava pesantemente il modo in cui noi percepiamo il mondo.
Un esempio.
In italiano “ponte” ha genere maschile e come tale noi italiani siamo abituati ad attribuire ad un ponte aggettivi prettamente maschili. Parleremo infatti di un ponte robusto, forte, solido, ecc. In Tedesco, “ponte” ha invece genere femminile, ed infatti, i tedeschi sono soliti attribuire al ponte aggettivi prettamente femminili. In Germania infatti è usuale sentir dire che un ponte è grazioso, snello, ecc. (qui si immagini questi aggettivi al femminile).
Poi, l’ipotesi di Sapir-Whorf è stata man mano abbandonata, screditata da altre ipotesi fatte da altri linguisti.
Oggi l’ipotesi Sapir-Whorf sta tornando prepotentemente alla ribalta grazie ai lavori e studi di numerosi linguisti e psicologi cognitivi come la mia amica dell’università di Stanford Lera Broditsky.

Proprio qualche settimana fa stavo parlando con Lera della possibilità di adattare l’ipotesi di Sapir-Whorf non solo al linguaggio naturale, ma anche ai linguaggi più formali, ben rappresentati ad esempio dai linguaggi di programmazione. Lera si è subito dimostrata molto interessata a questa mia idea e, anche se non è stato condotto nessun esperimento in merito, ha ritenuto questa idea non scartabile a priori.
Rispetto a quarant’anni fa, oggi i calcolatori elettronici sono cresciuti e sono diventati estremamente più complessi. E’ impensabile per chiunque riuscire a capire approfonditamente l’insieme dei processi che contemporaneamente intervengono nel funzionamento di un moderno computer. Processi dinamici non lineari e quindi impredicibili avvengono continuamente senza che noi neppure ce ne accorgiamo. I calcolatori oggi sono “simulatori di determinismo”.

I linguaggi di programmazione sono il mezzo per comunicare il nostro pensiero e le nostre intenzioni al computer. Ovviamente essendo diventati molto più complessi i computer, anche i linguaggi con i quali noi comunichiamo con loro sono cresciuti in complessità. Noi ci serviamo dei computer per risolvere qualsiasi tipo di problema, oggi. Per far capire al computer i termini del problema che vogliamo risolvere dobbiamo formulare questo problema in un linguaggio che il computer possa comprendere. Esiste solo un modo per formulare il problema in un linguaggio di programmazione? No, ne esistono moltissimi. Almeno uno per ogni linguaggio oggi esistente e poi all’interno dello stesso linguaggio di programmazione il problema può essere espresso in decine di modi diversi.
Quello di cui Lera ed io abbiamo discusso è la possibilità che il programmatore che conosce più linguaggi di programmazione trova meno difficoltà a far capire il suo pensiero al computer rispetto a quello che conosce un solo linguaggio.

Un esempio tratto dalla mia esperienza. Durante un corso che ho tenuto recentemente ho dato alla classe un esercizio particolare. “Data una stringa di caratteri scrivere un programma che prendesse in input la stringa originale e che producesse in output la stessa stringa scritta al contrario”. 
Banale? Sì, ma come condizioni aggiuntive ho imposto che il programma non facesse uso ne di assegnazioni di variabili, ne di cicli “while”, “do while” o “for”. Il linguaggio da utilizzare era in quel caso C#. In una classe di 11 programmatori solo due hanno risolto dopo una decina di minuti il problema, gli altri 9 hanno ritenuto impossibile la soluzione dell’esercizio pensando fosse una domanda a trabocchetto. Cercando poi di scoprire il perché di un fallimento così netto nel risolvere un’esercizio all’apparenza banale, ho scoperto che i due programmatori che immediatamente erano giunti alla soluzione, oltre a C# conoscevano molto bene almeno altri cinque linguaggi di programmazioni tra i quali c’erano LISP e Haskell. Morale, la conoscenza di questi linguaggi ha dato la capacità a questi due programmatori di modellizzare il problema da un altro punto di vista (funzionale piuttosto che imperativo) giungendo immediatamente alla soluzione.

Come dicevo prima non esistono test sperimentali dell’ipotesi di Sapir-Whorf riguardanti i linguaggi formali, ma sia io sia Lera siamo convinti che esiste un’analogia a livello cognitivo tra linguaggio naturale e linguaggio formale. Molto lavoro rimane ancora da fare...

Luca Ciciriello.

mercoledì 12 ottobre 2011

La pubblicità web sorpassa la stampa



Continua la forte ascesa della pubblicità online che ha superato la carta stampata e secondo le stime, dovrebbe essere al secondo posto, solo dietro la televisione, nel 2012.

Rimando alla lettura dell'articolo completo su ilsole24ore.com

Quando il “C” fermò la ricerca

Piccola introduzione.
Da oggi l'amico Luca mi affiancherà nella pubblicazione di articoli su questo blog.


Luca è un programmatore , e ci racconterà il mondo della programmazione sotto l'aspetto storico, tecnico e sotto certi aspetti "filosofico".


Dopo aver ringraziato Luca per essersi unito a me vi lascio al primo articolo.
Buona lettura.



Quando il “C” fermò la ricerca

Siamo nei primi anni ’70. Frances Allen lavora all’IBM, anzi è a capo di un progetto molto 
ambizioso. Il progetto si chiama PTRAN e tratta di un ottimizzatore automatico per il 
compilatore Fortran ad alte prestazioni. La Allen ha capito come ottimizzare il codice 
generato dal compilatore Fortran in modo che automaticamente possa essere eseguito in 
modo efficiente sulle macchine IBM ad alto grado di parallelismo. Il progetto PTRAN ha un 
notevole successo, ma la strada verso l’ottimizzazione automatica del codice è appena 
iniziata. Ma ecco che ad una conferenza sui linguaggi e compilatori viene presentato un 
linguaggio nuovo e, a detta dei relatori che lo presentano, innovativo. Il linguaggio “C”. 
Questo linguaggio divide subito la comunità scientifica. Da un lato c’è chi lo ama, dall’altro 
chi intuisce che la ricerca sui compilatori è arrivata alla fine. Perché il C è così pericoloso? 
Perché nessuna ottimizzazione automatica è più necessaria. Tutto è demandato al 
programmatore che si dovrà occupare in prima persona di scrivere un codice adatto ad 
essere eseguito su più linee di elaborazione. Inoltre il programmatore dovrà scrivere 
codice sintatticamente e semanticamente perfetto, perché il compilatore C non farà 
nessun controllo statico del codice scritto. 
Ecco quindi che la ricerca sull’ottimizzazione automatica si è fermata quel giorno, quando 
il linguaggio C ha visto la luce (ed ha aperto la strada a tutti i linguaggi imperativi che oggi 
conosciamo) ed il progetto PTRAN è stato cancellato dall’IBM. Ma, come si dice, al peggio 
non c’è mai fine. Quarant’anni fa i “Supercalcolatori” con architettura parallela, li 
possedevano solo le grandi università o le grandi compagnie come la IBM, ma oggi, ogni 
computer, e persino quasi ogni smartphone, incorpora un processore con più di un “core” 
di elaborazione. Il calcolo parallelo è diventato una realtà che pervade ogni dispositivo. E il 
software? I programmatori, oggi si stanno rendendo conto di non possedere gli strumenti 
teorici per gestire la complessità derivante dalla programmazione parallela. 
Semplicemente non esiste la teoria per supportare questa enorme complessità. Si è 
tentato di equipaggiare i linguaggi di programmazione moderni con utility che avrebbero 
dovuto imbrigliare il multithreading e la programmazione parallela, ma la complessità da 
affrontare è troppo elevata e nessun programmatore è in grado oggi di affermare senza 
ombra di dubbio che il codice che ha scritto è assolutamente “thread-safe”. Se afferma il 
contrario, mente, o ha sottovalutato il problema all’origine.
Qualcosa però si sta muovendo. Consapevoli di questo empasse di 40 anni i ricercatori 
stanno cercando di recuperare terreno. Tecnologie di ottimizzazione automatica stanno 
nascendo sia a livello di sistema operativo (come la tecnologia GCD), sia a livello di 
compilazione come nel compilatore Clang (LLVM) di Apple o per il compilatore Haskell 
GHC che utilizza la tecnologia DPH (Data Parallel Haskell), o ancora con PLINQ 
incorporato nel framework .NET. Ma la strada è ancora lunga. Siamo appena all’inizio. 
Frances Allen, che nel 2006 ha ricevuto l’ACM Turing Award (il Nobel per chi pratica la 
nostra disciplina), ha fatto una considerazione interessante riguardo al futuro della 
Computer Science: “Se noi consideriamo che discipline come la Fisica o la Matematica 
hanno avuto secoli di evoluzione, se confrontata con una disciplina come la Fisica, la 
Computer Science è oggi ai tempi di Newton. Esistono interi orizzonti inesplorati verso i 
quali dobbiamo incamminarci senza paura.”

Luca Ciciriello.




martedì 11 ottobre 2011

Un video ufficiale Samsung per annunciare Google Nexus Prime

In attesa dell'11 Ottobre (oggi) quando avverrà la presentazione vera e propria, Samsung ha messo in rete un video per pubblicizzare l'ormai prossima commercializzazione del Google Nexus Prime, il primo smartphone samsung con Android Ice Cream Sandwich.

In attesa delle immagini della presentazione e del prodotto eccovi il video.




domenica 9 ottobre 2011

Roadmap processori AMD 2012



Il sito hwupgrade.it pubblica la roadmap aggiornata dei processori AMD per il 2012.

Il sito turco donanimhaber ha pubblicato un'immagine che spiega le uscite per l'anno prossimo:



Come possiamo vedere i processori più attesi, quelli della famiglia Trinity sono attesi per il secondo trimestre del 2012.

www.fluxinformatica.it

domenica 2 ottobre 2011

Samsung Galaxy Note: lo smartphone si evolve



Video presentazione del Samsung Galaxy Note, il nuovo smartphone della casa sudcoreana che prova a riscrivere l'esperienza di questi device.


La prima cosa che notiamo sono sicuramente le dimensioni: il display infatti è di ben 5,3" per delle dimensioni di 146.85 x 82.95 x 9.65 mm, 178g; la risoluzione è di 1280 x 800, 285 PPI su di un display Super AMOLED.
Le altre caratteristiche sono: 

  • fotocamera da 8mp con LED Flash, 2MP la frontale;
  • i video potranno essere registrati in 1080p@30fps (codec MPEG4/ H.263/ H.264/ DivX, Xvid, WMV, VC-1);
  • Display Multitouch con possibilità di utilizzare oltre le dita anche l' S Pen (Advanced smart pen);
  • Bluetooth v 3.0, USB 2.0, Wi-Fi 802.11 a/b/g/n, Wi-Fi Direct;
  • Memoria interna da 16 GB

La piattaforma Android che troveremo sarà la 2.3 Gingerbread.


Questo il sito internet Samsung di presentazione del prodotto:   samsung.com










venerdì 30 settembre 2011

Smartphone Italia: 20 milioni di utenti

All'evento Think Mobile organizzato da Google e tenutosi a Milano, sono stati resi noti i dati di una indagine tenuta proprio dal colosso di Mountain View: in Italia ci sono oltre 20 milioni di utilizzatori di smartphone.

Questo dato indica una crescita di più del 50% di utilizzatori rispetto all'anno passato, e cambia anche il rapporto con questo device: per molti è diventato uno strumento imprescindibile, sia in casa che fuori.

Aumentano anche le applicazioni acquistate, 4 di media in questo momento con una crescita prevista nel 2012, con una media di 7 applicazioni utilizzate normlamente e con più frequenza rispetto alle altre.
Passiamo ad altri dati significativi: il 77% dei possessori di smartphone lo utilizza per guardare video, il 66% condivide video con Youtube piattaforma più utilizzata.

Ultimo dato, il più importante per le imprese e le aziende: sta crescendo il numero di utenti che inizia a guardare con interesse alle pubblicità presenti nelle varie applicazioni, un dato che sembrerebbe mettere l'Italia al passo di altri paesi.
Il 72% degli intervistati ha infatti dichiarato che valuta le pubblicità sul mobile: questo fa aprire definitivamente la strada alla possibilità di marketing anche su questo tipo di supporti, con un potenziale di 20 milioni di clienti.

giovedì 29 settembre 2011

Sviluppare un sito web: i passi fondamentali

Riporto qui un'interessante articolo dell'amico Giuseppe, su come muovere i primi passi nello sviluppo di un sito web.
Uno stralcio dell'articolo:
Perchè il web nel settore mobile non decolla come dovrebbe? Perchè la maggior parte degli utenti - pur in possesso di uno smartphone all'ultimo grido - non si connettono al proprio sito preferito attraverso il piccolo browser mobile? Queste sono alcune domande che si è posto Maximiliano Firtman - autore di diversi libri per sviluppatori informatici e conosciuto nel campo dello sviluppo mobile - e la sua risposta è stata: "La colpa è degli sviluppatori!". Infatti noi sviluppatori (o almeno io ma non credo di essere l'unico) per diverse ragioni....

Sul sito http://factorylab.debugger.it trovate il resto. Buona lettura!!!

martedì 27 settembre 2011

Facebook: musica in realtime dai propri contatti

Nuova feature per Facebook prossima all'uscita: con Facebook Music sarà possibile ascoltare in realtime la stessa musica con i propri contatti. Qui trovate gli articoli in italiano e inglese: hwfiles.it, mashable.com

lunedì 26 settembre 2011

Settore IT: il grande compra il piccolo

Interessante articolo di businessmagazine.it sull'attuale situazione del settore IT e dei suoi prevedibili sviluppi. Ecco un piccolo stralcio:
Lo studio evidenzia come, nonostante le forti opportunità di crescita a livello globale per il settore hi-tech, vi sia un divario sempre più ampio tra le realtà vincenti e perdenti. In particolare, per via di una concorrenza sempre più agguerrita nei settori in via di maturazione, una bassa propensione all'investimento di nuovi capitali e ad un carico di debiti piuttosto ingombrante, AlixPartners prevede che nel corso del 2012 si verificheranno numerose altre attività di "Merger and Acquisition" che potrebbero coinvolgere compagnie anche piuttosto importanti.

Android, Motorla, Samsung: il triangolo non l'avevo considerato

Il nuovo matrimonio tra Google e Motorola ha causato, come prevedibile, dei problemi con Samsung.

Il nuovo aspetto del mercato smartphone infatti si è complicato per Samsung, visto che i concorrenti sono diventati 2: Apple e Google stessa.

E cosa farà adesso Samsung?
I rumors di questo momento porterebbero ad un passo indietro di Samsung verso il sistema oparativo Bada, che sarebbe reso opensource e quindi più appetibile a tutti gli sviluppatori.
In questo modo infatti Samsung punterebbe ad avere la propria nicchia di mercato, con aziende disposte ad investire sull'ecosistema Bada, in termini di applicazioni sviluppate.

lunedì 19 settembre 2011

Samsung tenta di sorpassare Apple



Così come riportato dal Corriere della Sera (vedi immagine), Samsung cerca di approfittare del momento difficile di Apple a causa del passo indietro fatto da Steve Jobs, per tentare di raggiungere e sorpassare l'azienda della mela morsicata.


Dopo aver superato Sony nella vendita di televisori e Nokia nella vendita di smartphone, adesso tenta l'attacco alla prima posizione degli smartphone: ovvero iPhone.


Per compiere quest'ultimo passo il nuovo Ceo di Samsung ha subito aumentato di circa 1/4 (da 44 mila a 50 mila) i dipendenti dell'area Ricerca&Sviluppo per eliminare il sentire comune per cui l'azienda coreana fa solo un lavoro di imitazione.


Sul sito corriere.it trovate l'articolo.

sabato 17 settembre 2011

Intel-Google, accordo per la scalata del mercato smartphone


Durante l'Intel Developer Forum di San Francisco il CEO di Intel, Paul Otellini, ha chiarito che la sua azienda ha intenzione di entrare in maniera diretta e molto presente nel mercato Tablet e Smartphone.
Intel infatti non è riuscita ad avere un'impatto simile a quello del mercato Personal Computer, dove è leader nel suo settore, nel mercato Mobile.

Per questo motivo la decisione di affiancare Google ed entrare in maniera prepotente insieme ad Android, con la conseguente mossa da parte di Google di rilasciare il software ottimizzato proprio per la piattaforma Intel.

Prime uscite dei nuovi prodotti nella prima metà del 2012.

giovedì 15 settembre 2011

Aumentano gli acquisti Web degli italiani

Interessante articolo dell'amico Giuseppe sulla nuova tendenza degli acquisti sul Web in Italia.

Lo trovate qua: http://factorylab.debugger.it/

Evoluzione del Web





Bellissima infografica sull'evoluzione del web, dei suoi maggiori browser e delle tecnologie utilizzate per il suo sviluppo.


Trovate tutto su http://evolutionofweb.appspot.com

Buona visione!!!



martedì 13 settembre 2011

Apple potrebbe vendere 4.6 milioni di Mac nell'ultimo quadrimestre 2011

Secondo il sito news.cnet.com la Apple potrebbe vendere addirittura tra i 4.4 e i 4.6 milioni di Mac nell'ultimo trimestre di quest'anno.

Dopo aver sfiorato i 4 milioni di pezzi venduti nel terzo trimestre, ci si aspetta un'ulteriore passo avanti grazie anche al MacBook Air.



lunedì 12 settembre 2011

America, il 23% del tempo online sui social network

Interessante analisi pubblicata da mashable.com : negli USA i navigatori online passano il 23% del tempo online.
I dati nell'ordine sono:  FacebookBloggerTumblrTwitter e LinkedIn.
E in Italia?

E voi quanto tempo passate sui social network?



sabato 10 settembre 2011

iPhone 5 Foxconn ne promette 150.000 al giorno

Così come riportato dal sito Appleinsider.com la Foxconn promette di produrre 150.000 iPhone al giorno in modo da arrivare alla produzione di 5-6 milioni per fine settembre.

Apple conta di avere una produzione di 22 milioni di pezzi entro la fine del 2011.

Iniziano le vendite dei domini .xxx



Sono iniziate (male) le vendite dei domini .xxx creati appositamente per identificare i siti con contenuto per adulti.

I primi 50 giorni potranno essere utilizzati dai grossi brand internazionali per prendersi il proprio dominio (un esempio, evitare che si possa verificare un google.xxx con contenuti erotici)

Una seconda fase di 17 giorni saranno dedicati alla vendita dei domini alle aziende del settore per adulti.

Dall'8 Novembre infine, chiunque potrà registrare un dominio xxx.

venerdì 9 settembre 2011

Schede Toshiba SDHC FlashAir



Anche Toshiba si butta nella mischia di schede di memoria SD utilizzate nelle fotocamere, con tecnologia Wi-Fi integrata.

Questo tipo di schede sono in grado di comunicare con altri dispositivi attraverso l'utilizzo delle reti wireless: in questo modo si possono inviare direttamente i dati ai servizi di storage online.
In questo modo si potrà ad esempio fare un backup online delle foto scattate in vacanza direttamente dal luogo della vacanza stessa, oppure inviarle ad uno smartphone.
La FlashAir permette inoltre lo scambio di immagini tra macchine digitali, attraverso una connessione internet oppure direttamente tra di loro.

I prezzi dovrebbero attestarsi intorno agli 85$ e naturalmente ci si aspetta che i produttori di macchine digitali forniscano il supporto necessario affinchè queste schede possano essere compatibili in un breve periodo.

venerdì 19 agosto 2011

HP lascia il comparto PC e Tablet



Momento storico per il mercato tech: HP abbandona il comparto PC e Tablet per buttarsi nello sviluppo software.

Le prime avvisaglie si sono avute con l'intenzione di acquisire Autonomy per 10 miliardi di dollari.
Il prossimo passo sarà lo scorporo proprio della divisione che si occupa di PC e Tablet in modo da poter effettuare una sua cessione.

Ma i motivi quali sono?
Principalmente HP si vuole allontanare da un mercato ormai governato, e lo sarà sempre di più in futuro, da 2 mostri mangiatutto: Apple da una parte e Google con l'acquisizione di Motorola dall'altra.
A seguire poi ci sono anche motivazioni di livello più pratico: il giro d'affari per l'intero 2011, le cui stime sono riviste al ribasso da 129,12 a 127,2-127,6 miliardi.

In un discorso generale, sembra proprio essere arrivato il momento storico dell'inizio del passaggio dal PC così come è stato considerato fino ad ora, a strumenti di nuova generazione così come disse Steve Jobs al momento del lancio dell'Ipad.
E si, perchè strumenti come i tablet stanno sempre più prendendo piede, iniziando a scavalcare concorrenti come i Nebook, che negli anni passati avevano visto un boom di vendite, portando sugli altari aziende come Acer o Asus.

E HP che farà?

La nuova strada intrapresa da HP con l'acquisizione di un'azienda di sviluppo software come la britannica Autonomy indica che HP vuole crescere nel mercato software e servizi come ad esempio il Cloud, che secondo molti analisti avrà una forte crescita nei prossimi anni.