Archive for the ‘Italia’ Category.

Il mio primo sito in PHP: Claudio Destito, artista contemporaneo

Ho finalmente completato il sito dell'artista contemporaneo Claudio Destito. Questo artista, che attinge al vocabolario del minimalismo reinterpretandolo in chiave nuova ed ironica, è a mio avviso uno degli autori più interessanti che operano attualmente nell'area di Milano.
E' stato interessante realizzare questo sito, sia perché le opere d'arte di Destito mi hanno coinvolto profondamente, sia perché ho avuto modo di scrivere codice di produzione in PHP.
L'impressione che ho avuto di questo linguaggio è stata ambivalente: da un lato PHP è uno strumento estremamente facile da apprendere, dall'altro...beh, forse non il più adatto a creare codice pulito. Ma probabilmente questo è solo l'impressione di un novizio: per avere un quadro diverso della situazione sarebbe magari opportuno seguire il corso sull'argomento di Francesco Cirillo ;-)

Ruby in Scala

Ok, il titolo del post è volutamente iperbolico, ma dovete sapete che amo gli eccessi! ;-)
Comunque tutto nasce da un post sulla lista dello Scala User Group italiano.
Partendo da un articolo su Scala di Daniel Spiewak, si mettono a confronto un frammento di codice Scala

 
  def fillColor_=(fillColor:Color) = {
    if (!fillColor.equals(Color.RED)) {
      theFillColor = fillColor
    } else {
      throw new IllegalArgumentException("Color cannot be red")
    }
  }

con un (quasi) equivalente Ruby

 
  def fill_color=(color)
    raise "Color cannot be red" if color == Color::RED  
 
    @fill_color = color
  end

che è sicuramente più piacevole da leggere.

Ricordiamoci però che uno degli aspetti più interessanti di Scala è la facilità con cui è possibile creare DSL. Vediamo come possiamo in qualche modo mimare la sintassi del raise Ruby.

Definiamo prima l'oggetto RubySyntax (va bene, va bene, il nome è un po' pretenzioso, ma a me piace scherzare, dai...)

 
object RubySyntax {   
 
  def raise(exceptionText: String)(condition: => Boolean): Unit = {
    if (condition) {
      throw new IllegalArgumentException(exceptionText);
    }
  }   
 
}

Quindi lo possiamo usare in una qualsiasi altra parte del nosto codice:

 
import RubySyntax._   
 
object RubySyntaxTest {   
 
  def main(args:Array[String]) = {
    val language = "Ruby"   
 
    raise ("Language cannot be Ruby") { language.equals("Ruby") }
  }   
 
}

Certo, ci sono delle parentesi in più, ma abbiamo eliminato l'if. E poi sono convinto che voi sapreste fare di meglio! (Ovviamente in Scala).
Ancora dubbiosi su quale linguaggio scegliere? ;-)

Le posizioni più interessanti della politica italiana