Zėŋōfōbìå

4 dicembre 2009

Pronuncia di Char

Filed under: C, informatica — Zeno @ 13:22

Ebbene, come pronunciate “char”? Come CARattere o come CIARlatano?

Beh, ho scoperto che la pronuncia corretta dipende dall’implementazione!

Infatti:

From Frequently Asked Questions in comp.lang.c

17.30: How do you pronounce “char”?
You can pronounce the C keyword “char” in at least three ways: like the English words “char,” “care,” or “car;” the choice is arbitrary.

From Bjarne Stroustrup’s C++ FAQ:

How do you pronounce “char”?
“char” is usually pronounced “tchar”, not “kar”. This may seem illogical because “character” is pronounced “ka-rak-ter”, but nobody ever accused English pronounciation and spelling of being logical.

Annunci

Video corso di Haskell di Erik Meijer

Filed under: Haskell, Linguaggi — Tag:, , — Zeno @ 11:23

Su channel 9 c’è un video corso di Haskell, composto da 13 di lezioni tenute da Erik Meijer, la persona che ha sdoganato il paradigma funzionale in .NET e che ha contribuito in modo essenziale allo sviluppo di LINQ e F#.

Il corso è semplice ma profondo, riesce a mostrare le ragioni di un linguaggio funzionale, puro e lazy e le sue applicazioni, tenendo sempre un riferimento pratico a C# e F#.

Edit: ho trovato le slides del corso.

“… and that’s nicer. Beauty of your code is very  important for pure functional programmers”

— Erik Meijer

1 dicembre 2009

Perl is a four letter word. Or six.

Filed under: architettura, Linguaggi, Perl — Tag:, — Zeno @ 19:27

Sto chiaccherando su facebook con Francesco Oha sul Perl 6, versione che rivoluziona il linguaggio e, visto l’interesse che ho per l’argomento ho pensato di spostare sul Blog la conversazione, per coinvolgere chiunque sia interessato. (Rodi, parlo con te. ;-)

Io sono praticamente fermo al Perl 4, che è stato il mio primo linguaggio dinamico. Ne ho abusato, come ogni pessimo programmatore. Mi sono accorto che nel frattempo il Perl si è evoluto enormemente, anche grazie alla splendida comunità che si è consolidata. Ho letto il libro introduttivo di Stefano Rodighiero, e ho riassaporato il gusto del dinamismo portato alle estreme conseguenze.

Da diversi anni la comunità Perl, una delle più affascinanti in tutto il panorama hacker mondiale, sta lavorando alla versione 6, che si distingue dalla versione 5 per un numero impressionante di differenze. Non credo di dire un eresia nel sostenere che la versione 6 sia un linguaggio nuovo ispirato alle versioni precedenti.

Francesco, solleticando la mia attenzione con la frase “[…]il sorgente puo’ modificare in linea la grammatica del compilatore, rendendo dinamico non solo l’eseguito ma anche il compilante.“,  mi propone di leggere un testo introduttivo: http://perlgeek.de/en/article/5-to-6 .

La mia considerazione conseguente alla lettura è stata:

Sto guardando, stavo leggendo, tutto bene, le stringhe, gli array i tipi, sì… I TIPI? AH! finalmente!

Bello che la trasformazione di Schwartz viene fatta dal compilatore, è un’idea geniale, ma l’implementazione non spetta al programmatore. Non riesco a capire però perché non poteva essere fatta dal compilatore già dal perl 5. Qualcuno me lo spiega?

Però, decisamente più bello del 5! Le prestazioni poi saranno eccezionali, paragonabili al C, immagino…

La sintassi è ancora troppo criptica, però. Ti faccio un esempio: i Context e i twigils, il cross meta operator (come fai a vederlo? non si poteva usare lo zip di haskell?)

Uè, le liste lazy, bene! Le adoro.
L’overload degli operatori…
Che spettacolo le regexpes, si fanno i parser al volo!!!
Il reduction meta operator non l’avevo ancora visto, modo strano per fare folding.

Molto paradigma funzionale, ma rielaborato. Le funzioni diventano operatori. questo fa perdere un po’ di espressività, temo.

Francesco Oha mi fa notare che:

[…] trovo piu’ spiacevoli ancora i puntatori C e gli unari affini.

per come la vedo io, per ora, il perl6 e’ ancora un calderone… ci vorra’ ancora molto prima che esca quello che serve, ma gia’ solo per le RegExp e’ sensazionale (e il compilatore e’ fatto con quelle regexp, quindi puoi overloadare il compilatore, ed essendo dinamico puoi capire l’esoterismo che si puo’ ottenere)

Che ne dite? Proseguiamo con il discorso?

30 novembre 2009

F# e C# nello stesso progetto DDD

Filed under: architettura, C#, F#, informatica, Pattern — Tag:, — Zeno @ 11:37

Ho postato una domanda su StackOverflow su come pensare una soluzione che incorpori parti in C# e parti in F#.

Mi chiedo, in sostanza, se abbia senso pensare all’utilizzo di F# in una architettura DDD.

(more…)

27 novembre 2009

Programmazione e arte: Piet

Filed under: informatica, Linguaggi — Tag: — Zeno @ 16:02

Sono incappato in un linguaggio esoterico particolarmente elegante, non tanto per la struttura del linguaggio in se’, piuttosto per la codifica dei sorgenti: Piet.

Per definizione la codifica prende la forma di un’opera d’arte astratta. Infatti gli elementi del linguaggio sono i colori, in una tavolozza di 20 colori. Ogni pixel rappresenta un elemento del codice. L’esecuzione del programma parte dal pixel in alto a sinistra e prosegue verso destra fintanto che la variabile che indica la direzione non viene aggiornata.

La codifica degli operatori non e’ una relazione biunivoca tra i colori e gli opertori, come si potrebbe immaginare. L’operatore e’ determinato dalla variazione di tono e di luminosita’ nel passaggio di un colore all’altro! I valori interi sono calcolati come il numero di pixel di una forma di colore uniforme.

Ecco qualche esempio, tratto da: http://www.dangermouse.net/esoteric/piet/samples.html

Ecco un paio di esempi. Il primo stampa la stringa Piet, il secondo Hello World.

(fonte: http://stackoverflow.com/questions/187715/what-is-your-favorite-esoteric-programming-language)

25 novembre 2009

Google inciampa sul linguaggio GO

Filed under: Linguaggi — Zeno @ 18:19

Google è probabilmente l’azienda che ha rivoluzionato la concezione che abbiamo dei computer, di internet e del business dotcom.

Il motore di ricerca di google ha subito mostrato di essere straordinariamente superiore a tutti i concorrenti, divario che ha saputo mantenere intatto negli anni, il servizio di posta che offre è straordinario, superiore a moltissimi prodotti commericiali, l’ambiente office che regala preoccupa Microsoft, che si sente minare uno dei capisaldi del suo predominio informatico.

Android è un’altra invenzione eccellente, molti produttori di telefoni si stanno muovendo in quella direzione, rinunciando ai sistemi proprietari, snobbando Microsoft Mobile.

Quando ho letto che Google annunciava l’uscita di un nuovo linguaggio, il Go, per l’appunto, mi sono fermato, mi sono seduto comodo e mi sono preparato mentalmente a rinunciare a tutto ciò che so di programmazione in C# per passare a qualcosa che certamente sarebbe stata una pietra miliare nella storia dei linguaggi.

E invece la mia delusione è stata pungente.

(more…)

7 settembre 2009

Jon Skeet: MoreLINQ now at 1.0 beta

Filed under: C#, informatica — Tag: — Zeno @ 16:46

Jon Skeet pensa che LINQ to Object abbia bisogno di qualche aggiunta. Come dargli torto? :-)

La Beta 1 contiene un insieme interessante di estensioni a IEnumerable, di chiaro interesse.
(more…)

11 agosto 2009

C# e paradigma funzionale

Filed under: C#, Haskell, informatica — Tag:, — Zeno @ 11:25

Ho trovato un bell’articolo pratico su come implementare alcune funzioni di ordine superiore che si incontrano sempre nei linguaggi funzionali. In particolare faccio riferimento alle implementazioni di Haskell: Curry, Zip, ZipWith.

Ho aggiunto Map, Filter, FoldR e FoldL e qualche test case.

(more…)

5 agosto 2009

ItalianInflector

Filed under: C#, informatica — Tag: — Zeno @ 9:44

Ho esteso l’ottima libreria uNhAddIns per avere l’inflector in italiano.
In questo modo è possibile, dato un sostantivo singolare, ottenerne il plurale.

Segue la patch per la versione 696 di unhaddins:
(more…)

27 luglio 2009

Inizializzare gli array in C# 3

Filed under: C#, informatica — Tag: — Zeno @ 15:11

Supponiamo di avere la necessità di allocare un certo numero di oggetti in un array, ovviamente l’approccio standard è di usare un ciclo for:

Whatever[] whateverVector=new Whatever[1000];
for(int i=0;i < 1000;i++)
  whateverVector&#91;i&#93;=new Whatever(i);
&#91;/sourcecode&#93;

Esiste anche un modo diverso, più lento ma per certi versi più elegante, che usa la list comprehension di C#3: LINQ
&#91;sourcecode language='csharp'&#93;
Whatever&#91;&#93; whateverVector= Enumerable.Repeat(0, 1000).Select(i => new Whatever(i)).ToArray();
Older Posts »

Blog su WordPress.com.