Metaprogrammazione in ruby
Interessante presentazione da OSCON 2005 sulla metaprogrammazione (che e’ alla base dei llinguaggi di dominio) in ruby.
Dal blog liquid development
Interessante presentazione da OSCON 2005 sulla metaprogrammazione (che e’ alla base dei llinguaggi di dominio) in ruby.
Dal blog liquid development
La nuova versione di google desktop sta per arrivare e porta una novita di rilievo: la possibilità di effettuare ricerche sui documenti inidicizzati anche da un computer remoto.
Questo è ottenuto inviando a Google i dati relativi ai documenti indicizzati (non è chiaro se tutto il documento) che verranno memeorizzati nei loro server.
Mike Arrington è giustamente preoccupato per le implicazioni che questo ha sulla sicurezza.
Sono quasi certo che nella maggior parte dei paesi d’Europa (e di sicuro in Italia) la legislazione sulla privacy non consenta un comportamento nel quale dati personali (se non sensibili) sono trasmessi all’estero e comunque trattati potenzialmente con nessuna informazione all’utente. Credo che sarà interessante scoprire come Google ha affrontato il problema delle diverse legislazioni.
Direttamente dal blog di Kevin Clark, alcuni preziosi suggerimenti pratici per lo sviluppo con Rails che sottoscrivo in pieno, e che sono validi nei principi in qualsiasi ambiente. I primi li potremmo tradurre cosi togliendo i riferimenti a Rails:
Uno degli elementi che mi hanno affascinato da subito di rails e’ il modo in cui questo e’ legato al linguaggio con il quale e’ stato implementato.
Lo scorso anno c’e’ stata una continua corsa alla ricerca del “come replicare rails con …” (sostituisci i puntini con Java, PHP, Perl, …), ora questa tendenza sembra essere affievolita, forse riconoscendone l’impossibilita’.
La ragione fondamentale e’ che ruby e’ un linguaggio che ha molte caratteritiche che lo rendono perfetto per la creazione di linguaggi specializzati per un dominio (o problema).
E’ possibile ampliare e modificare il linguaggio stesso (e.g. aggiungendo pseudo parole chiave) per fare in modo che parli la lingua del problema che si sta tentando di risolvere.
Questo aiuta a descrivere ed a creare sistemi complessi, soprattutto aiuta nelle prime fasi dell’attivita di sviluppo che sono le piu difficili.E’ difficile infatti spiegare un’idea in termini che sono comprensibili agli esperti del problema ( coloro che dettano i business requirements, gli utenti, …) ma in modo che sia utilizzabile efficacemente nel seguito del processo di sviluppo (btw una metodologia che ha risolto in maniera elegante questo problema sono le Abstract States Machines).
Da questo punto di vista rails e’ in realta’ un liguaggio specifico per web-application costruito su ruby e che cattura le “best practices” per la realizzazione di applicazione internet, da quelle architetturali (e.g. il pattern ModelViewController, o l’idea di “shared nothing”) a quelle relative allo sviluppo e gestione dei progetti (la centralita’ del testing, il ruolo delle convenzioni e del naming).
Rails parla agli sviluppatori web con un tono e con parole che sono ben comprensibili ed aiuta ad accorciare la distanza dall’idea alla sua realizzazione. Rende meno arduo tradurre il modello mentale dell’applicazione in codice reale.
Guardate al suo modo di definire i modelli che e’ leggibile come descrizione in linguaggio comune (inglese) delle entita e delle relazioni tra di loro, come ad esempio (dal codice dell’applicazione http://fatturalo.com che ho realizzato):
class Invoice < ActiveRecord::Basebelongs_to :clientvalidates_associated :clienthas_many :items, :dependent=>true, :order=>'id ASC'has_many :received_payments, :dependent=>true, :order=>'payed_on ASC'