<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simone Carletti&#039;s Blog &#187; pragmatic programmers</title>
	<atom:link href="http://www.simonecarletti.it/blog/tags/pragmatic-programmers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonecarletti.it/blog</link>
	<description>Un piccolo spazio nel web con approfondimenti su programmazione, feed, motori di ricerca e marketing.</description>
	<lastBuildDate>Mon, 03 Oct 2011 14:40:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Libro Design Patterns in Ruby</title>
		<link>http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/</link>
		<comments>http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 09:38:24 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[addison wesley]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/</guid>
		<description><![CDATA[Recensione del libro Design Patters in Ruby, dedicato all'implementazione dei Design Pattern nel linguaggio di programmazione Ruby.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simonecarletti.it/blog/out/amzit-rubypatterns"><img class="alignleft size-thumbnail" title="Libro Design Patterns in Ruby" src="http://share.weppos.net/simonecarletti/book-addison-rubypatterns-20110817-214258.png" alt="Libro Design Patterns in Ruby" width="125" /></a>Pubblicato quest&#8217;anno, <strong>Design Patters in Ruby</strong> è il primo libro interamente dedicato all&#8217;<strong>implementazione in Ruby dei principali Design Pattern</strong> definiti dalla Gang of Four (GoF).</p>
<p><a href="http://www.simonecarletti.it/blog/out/amzit-rubypatterns">Design Patterns in Ruby</a>, scritto da <a title="Technology As If People Mattered : Weblog" href="http://www.russolsen.com/">Russ Olsen</a>, è edito dalla Addison-Wesley ed è parte della <strong>Professional Ruby Series</strong> gestita da <a title="Obie Fernandez" href="http://obiefernandez.com/">Obie Fernandez</a>. Questa serie è senza dubbio sinonimo di qualità e garanzia per chi è alla ricerca di un <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%255Fgw%26y%3D0%26field-keywords%3DAddison-Wesley%2520Professional%2520Ruby%2520Series%26url%3Dsearch-alias%253Daps&amp;tag=simonecarletti-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957">libro su Ruby o Rails</a>.</p>
<p>Rispetto alla media delle mie ultime letture, questa pubblicazione è stata decisamente molto meno impegnativa. Ho consumato il libro in non più di una settimana, dedicando un&#8217;oretta al giorno in tram. A patto che abbiate una certa dimestichezza con <strong>Ruby</strong> ed <strong>Object Oriented Programming</strong>, <em>Design Patterns in Ruby</em> è una lettura scorrevole e coinvolgente.</p>
<p><span id="more-758"></span></p>
<h2>Requisiti</h2>
<p>Stando alla prefazione dell&#8217;autore, per leggere questo libro non è necessaria alcuna particolare competenza né di Ruby né di design pattern. Tuttavia, è consigliata una certa familiarità con le dinamiche dell&#8217;object oriented programming.</p>
<p>Confesso di trovarmi parzialmente in disaccordo. <strong>Affrontare la lettura di questo libro senza una certa dimestichezza con Ruby potrebbe rivelarsi controproducente</strong>, considerando che alcuni design pattern utilizzano caratteristiche come la metaprogrammazione, la riflessione, i moduli, i simboli, i Mixin, blocchi e procedure.<br />
Mentre i primi possono essere aspetti comuni a molti linguaggi, a partire dai simboli in avanti si entra in un territorio tipico di Ruby e pochi altri linguaggi.</p>
<p>Il secondo capitolo del libro offre una breve introduzione a Ruby, ma questi 30 minuti di lettura sono nulla paragonato a qualche mese di programmazione pratica o ad una lettura di qualche pubblicazione specifica, come ad esempio l&#8217;eccellente <a title="Libro Learn to Program" href="http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/">Learn to Program</a> o l&#8217;<a title="Libro Programming Ruby" href="http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/">antologia Programming Ruby</a>.</p>
<p>Confermo invece l&#8217;affermazione riguardo ad eventuali competenze sui design pattern. Questo libro affronta i principali design pattern sia in forma teorica sia in forma pratica, colmando così eventuali lacune del lettore su argomenti specifici.</p>
<h2>Struttura del Libro</h2>
<p>Il libro è diviso in tre parti.</p>
<p>La prima parte, <strong>Patterns and Ruby</strong>, è una veloce introduzione ai design patterns ed al linguaggio di programmazione Ruby. Come già anticipato, non fate troppo affidamento al secondo capitolo dato che non potrà mai fornirvi tutte le basi necessarie per entrare nell&#8217;ottica di un linguaggio particolare come Ruby.</p>
<p>La seconda parte, <strong>Patterns in Ruby</strong>, è il cuore del libro. Ogni capitolo affronta uno dei diversi pattern originariamente discussi dalla GoF, riportando una breve introduzione, esempi pratici di implementazione in Ruby ed alcuni esempi reali di utilizzo, prendendo spunto da librerie Ruby famose come <code>Rails</code> e <code>URI</code>. Al termine di ogni capitolo, un paragrafo riassuntivo riepiloga le principali caratteristiche del design pattern trattato.</p>
<p>La terza parte, <strong>Patterns for Ruby</strong>, prende in considerazione tre pattern non inclusi nel libro originale ma emersi con l&#8217;introduzione e lo sviluppo del linguaggio Ruby.</p>
<h2>Design Pattern discussi</h2>
<p>Questa è la lista dei design pattern trattati nel libro:</p>
<ul>
<li>Template</li>
<li>Strategy</li>
<li>Observer</li>
<li>Composite</li>
<li>Iterator</li>
<li>Commands</li>
<li>Adapter</li>
<li>Proxy</li>
<li>Decorator</li>
<li>Singleton</li>
<li>Factory</li>
<li>Builder</li>
<li>Interpreter</li>
</ul>
<p>Questi invece i pattern specifici per Ruby trattati nel terzo capitolo:</p>
<ul>
<li>Domain-Specific Language (DSL)</li>
<li>Meta-Programming</li>
<li>Convention Over Configuration</li>
</ul>
<h2>In conclusione</h2>
<p>Ancora una volta, la Addison-Wesley e la Professional Ruby Serie non ha tradito le aspettative.</p>
<p><em>Design Patterns in Ruby</em> <strong>è una lettura assolutamente consigliata</strong> per i programmatori che desiderano ampliare le proprie competenze di sviluppo in Ruby e <strong>portare le proprie capacità ad un livello ancora più professionale</strong>. I design patterns sono una soluzione professionale ai problemi più comuni legati allo sviluppo di software e dovrebbero essere parte del bagaglio culturale di ogni sviluppatore.</p>
<p>Russ Olsen ha saputo scrivere una pubblicazione facilmente leggibile, fluida e scorrevole. L&#8217;organizzazione del libro permette la lettura di singoli capitoli anche a distanza di tempo. L&#8217;unica nota dolente è il prezzo, decisamente più elevato rispetto alla media dei libri simili.</p>
<h2>Dove comprare Design Patterns in Ruby</h2>
<p>Potete acquistare una copia cartacea o Kindle su <a href="http://www.simonecarletti.it/blog/out/amzit-rubypatterns">Amazon.it</a>, <a href="http://www.simonecarletti.it/blog/out/amzuk-rubypatterns">Amazon.co.uk</a> o <a href="http://www.simonecarletti.it/blog/out/amzcom-rubypatterns">Amazon.com</a>.</p>
<div id="kindle-reader">
<h3>Kindle Preview</h3>
</div>
<p><script type="text/javascript" src="http://kindleweb.s3.amazonaws.com/app/KindleReader-min.js"></script><script type="text/javascript">// <![CDATA[
               KindleReader.LoadSample({containerID: 'kindle-reader', asin: 'B0010SEN1S', width: '600', height: '629', assoctag: 'simonecarletti-20'});
// ]]&gt;</script></p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/' rel='bookmark' title='Libro Interface Oriented Design'>Libro Interface Oriented Design</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/' rel='bookmark' title='Libro Programming Ruby 1.9'>Libro Programming Ruby 1.9</a></li>
<li><a href='http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/' rel='bookmark' title='Libro Ruby Cookbook con elementi di Rails'>Libro Ruby Cookbook con elementi di Rails</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libro Pragmatic Version Control Using Git</title>
		<link>http://www.simonecarletti.it/blog/2008/11/libro-pragmatic-version-control-using-git/</link>
		<comments>http://www.simonecarletti.it/blog/2008/11/libro-pragmatic-version-control-using-git/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 18:09:34 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2008/11/libro-pragmatic-version-control-using-git/</guid>
		<description><![CDATA[Recensione del libro Pragmatic Version Control Using Git dedicato al software di controllo delle versioni inventato da Linus Torvalds.]]></description>
			<content:encoded><![CDATA[<p><a href="http://bit.ly/ait-book-tsgit"><img class="alignleft size-thumbnail wp-image-2747" title="Copertina Libro Pragmatic Version Control using Git" src="http://www.simonecarletti.it/blog/wp-content/uploads/2008/11/tsgit-150x150.jpg" alt="Copertina Libro Pragmatic Version Control using Git" width="150" height="150" /></a> <strong><a href="http://bit.ly/ait-book-tsgit">Pragmatic Version Control Using Git</a></strong> è l&#8217;ultima pubblicazione sfornata da <em>Pragmatic Bookshelf</em> che, dopo a <em>Pragmatic Version Control Using CVS</em> e <em>Pragmatic Version Control Using Subversion</em>, abbraccia il campo dei <acronym title="Distributed Version Control Systems">DVCS</acronym> pubblicando questo libro dedicato a <a title="Git - Fast Version Control System" href="http://git.or.cz/">Git</a>.</p>
<p>Per chi non lo conoscesse, <strong>Git è un sistema di controllo delle versioni</strong> così come <a title="Strumenti di sviluppo: Subversion (SVN)" href="http://www.simonecarletti.it/blog/2007/03/strumenti-di-sviluppo-subversion-svn/">Subversion</a>. In realtà, sebbene lo scopo finale sia comune, l&#8217;<strong>architettura di Git differisce alla base rispetto a Subversion</strong> poiché si tratta di un <strong>sistema distribuito</strong> che non necessita di far capo ad un repository principale. Ogni copia del repository, in gergo <em>clone</em>, è a tutti gli effetti un repository completo che include l&#8217;intera cronologia così come <em>log</em>, <em>branch</em> e quan&#8217;altro.</p>
<p><em>Pragmatic Version Control using Git</em> si propone come una <strong>guida a diversi aspetti di Git</strong> che spaziano dall&#8217;apprendimento delle basi del funzionamento fino all&#8217;integrazione con strumenti di terze parti, passando per la creazione, gestione ed amministrazione di repository Git.</p>
<p><strong>In Git le branch costituiscono uno degli elementi essenziali</strong>: non manca quindi un capitolo interamente dedicato aall&#8217;approfondimento di questo concetto che include sia le competenze tecniche essenziali per lavorare con le branch, sia nozioni di project management utili a comprendere quando e come dirottare lo sviluppo di un prodotto verso un ramo parallelo.</p>
<p><span id="more-732"></span></p>
<h2>Confessa, non l&#8217;hai letto!</h2>
<p>La pubblicazione del libro è estremamente recente e qualcuno di voi si potrebbe chiedere come sia possibile che io l&#8217;abbia già letto. Anzi, <a href="http://bit.ly/ait-book-tsgit">stando ad Amazon.com</a>, la versione definitiva del libro non è ancora stata pubblicata.</p>
<p>Per abitudine, <strong>su questo blog ho sempre pubblicato fino ad ora recensione di libri che ho sfogliato personalmente</strong> e questo vale anche per <em>Pragmatic Version Control Using Git</em>. Ho cominciato ad usare Git già qualche mese prima che la <em>Pragmatic Bookshelf</em> pre-annunciasse la disponibilità del libro e, non appena possibile, mi sono precipitato ad acquistarne la beta in Pdf.</p>
<p>Ho assistito alla scrittura del libro fin dall&#8217;inizio, quando ancora era presente poco più che qualche capitolo.<br />
E&#8217; vero, in un certo senso è come sbirciare un regalo prima del compleanno, ma non ho saputo resistere. Non appena pubblicato, riceverò una versione cartacea che sarò bel lieto di conservare in libreria.</p>
<p>Questo mi ha permesso di preparare questa recensione con adeguato anticipo ed arricchirla con alcune considerazioni su capitoli e aneddoti pre-release.</p>
<h2>Struttura del libro</h2>
<p>Il libro è organizzato in due macro parti: <strong>Welcome to the Distributed World</strong> e <strong>Everyday Gi</strong>t.</p>
<p>La prima parte contiene alcuni capitoli d&#8217;<strong>introduzione ai software di controllo delle versioni distribuiti</strong>. L&#8217;autore, <a href="http://www.travisswicegood.com/">Travis Swicegood</a>, analizza le caratteristiche alla base di questi prodotti accentuando i vantaggi rispetto ai tradizionali sistemi centralizzati come Subversion e CVS.</p>
<p>La seconda parte rappresenta invece il cuore del libro. Oltre 10 capitoli interamente dedicati a Git, <strong>dai comandi base fino all&#8217;interazione evoluta</strong>.<br />
I temi affrontati includono:</p>
<ul>
<li>Creazione ed amministrazione di repository</li>
<li>Utilizzo consapevole ed efficace di branch e tag</li>
<li>Esecuzione di merge tra branch differenti, con analisi delle varianti cherry-pick e squash</li>
<li>Gestione e risoluzione dei conflitti</li>
<li>Organizzazione di più repository ed integrazione di un sistema decentralizzato all&#8217;interno di un workflow aziendale strutturato</li>
<li>Installazione ed amministrazione di Git su server remoti</li>
<li>Interazione con repositori remoti</li>
<li>Analisi e consultazione della cronologia delle revisioni</li>
<li>Migrazione a Git, con particolare riferimento all&#8217;importazione di repository CVS e Subversion</li>
</ul>
<h2>Non solo tecnicismi</h2>
<p>Una delle caratteristiche che più ho apprezzato di questo libro è la capacità di miscelare in ogni capitolo il <strong>giusto quantitativo di tecnicismi con esempi e nozioni di organizzazione</strong>. Git è uno strumento molto potente. Conoscere a memoria tutti i comandi non è sufficiente per apprezzarne tutte le caratteristiche. Per sfruttare al meglio Git è necessario sapere quando usare una caratteristica piuttosto che un&#8217;altra, quando organizzare la struttura con un repository intermedio ed in che modo.</p>
<p>Questo libro <strong>affronta l&#8217;uso di Git in modo globale</strong>. Non si limita ad elencare e commentare i comandi ma ne dimostra l&#8217;efficacia corredando ogni sezione da elementi di project management. Questa caratteristica espande il target del libro che può così spaziare da chi desidera conoscere l&#8217;uso di Git a chi già ne conosce i comandi ma non ha mai beneficiato di una formazione mentale sul corretto uso del software.</p>
<h2>Git non è semplice</h2>
<p>Chiunque vi dirà che &#8220;ad imparare Git ci vuole un attimo&#8221;, a mio avviso, pecca di presunzione. Conoscere a memoria uno o cento comandi è banale ma conoscere Git non è semplice, utilizzare Git non è immediato. La curva di apprendimento di Git è notevolmente più lunga di altri strumenti come ad esempio Subversion.</p>
<p>Il motivo è da ricondurre sia alla natura distribuita del software sia alle caratteristiche del software stesso. Potrebbe sembrare un controsenso ma apprendere l&#8217;uso di un sistema distribuito è tendenzialmente più complesso di un sistema centralizzato poiché a più potere corrispondono più funzioni e potenzialmente più problemi dedicati alla gestione del repository. Inoltre, paragonato ad altri sistemi distribuiti come Mercurial, la complessità di Git è maggiore e riconducibile ad una filosofia di sviluppo strettamente legata al mondo Linux da cui proviene.</p>
<p>Ne consegue che <strong>la lettura di questo libro, in alcuni capitoli, non è molto fluida</strong>. Sebbene Travis Swicegood abbia tentato di esporre al meglio l&#8217;argomento, in alcuni casi sono necessarie anche due o tre letture di una sezione per assimilarne al meglio il contenuto.</p>
<h2>In conclusione</h2>
<p>Come anticipato, <em><a href="http://bit.ly/ait-book-tsgit">Pragmatic Version Control using Git</a></em> è una lettura consigliata sia per chi desidera avvicinarsi a Git, sia per chi già lo conosce ma sente l&#8217;esigenza di utilizzarlo in modo efficace ed efficiente.<br />
E&#8217; probabilmente una delle poche risorse complete sull&#8217;argomento in grado di offire una panoramica dalle basi alle funzionalità più evolute.</p>
<p>Gli utenti che provengono da altri SCM apprezzeranno senza dubbio i capitoli più discorsivi che offrono molto spesso confronti obiettivi con altri strumenti, in primo luogo Subversion. Agli utenti completamente a digiuno di SCM consiglio, prima della lettura, la visione dello <a title="Git | PeepCode Screencasts for Ruby on Rails Developers" href="http://peepcode.com/products/git">screencast su Git</a> in vendita su Peepcode.</p>
<p>Dopo Git, Subversion e CVS spero che arrivi presto il momento di una pubblicazione dedicata a <a title="Mercurial - Mercurial" href="http://www.selenic.com/mercurial/">Mercurial</a>.</p>
<h2>Dove comprare Design Patterns in Ruby</h2>
<p>Potete acquistare una copia cartacea su <a href="http://bit.ly/ait-book-tsgit">Amazon.it</a>, <a href="http://amzn.to/auk-book-tsgit">Amazon.co.uk</a> o <a href="http://amzn.to/acom-book-tsgit">Amazon.com</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/' rel='bookmark' title='Pragmatic programmers addicted'>Pragmatic programmers addicted</a></li>
<li><a href='http://www.simonecarletti.it/blog/2009/02/passare-da-svn-a-git/' rel='bookmark' title='Passare da SVN a Git'>Passare da SVN a Git</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/' rel='bookmark' title='Libro Learn to Program'>Libro Learn to Program</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2008/11/libro-pragmatic-version-control-using-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Libro Interface Oriented Design</title>
		<link>http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/</link>
		<comments>http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 17:22:38 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[interfacce]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/</guid>
		<description><![CDATA[Recensione del libro Interface Oriented Design edito da Pragmatic Bookshelf (The Pragmatic Programmers).]]></description>
			<content:encoded><![CDATA[<p><a href="http://bit.ly/ait-book-kpiod"><img class="alignleft size-thumbnail wp-image-2728" title="Copertina Libro Interface Oriented Design" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/51NYNPQM37L._SS500_-150x150.jpg" alt="Copertina Libro Interface Oriented Design" width="150" height="150" /></a>Dopo una serie di letture una più gustosa dell&#8217;altra, doveva arrivare prima o poi il momento di un libro che non suscitasse quell&#8217;interesse che mi sarei aspettato.</p>
<p>Devo dire che, fin dall&#8217;inizio, l&#8217;incontro con <a href="http://bit.ly/ait-book-kpiod">Interface Oriented Design: With Patterns (Pragmatic Programmers)</a> non è stato tra i più felici. Lo acquistai a dicembre, in un ordine con altri classici come <a title="Libro Learn to Program - Simone Carletti's Blog" href="http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/">Learn to Program</a> e <a title="Libro Ship it! A Practical Guide to Successful Software Projects - Simone Carletti's Blog" href="http://www.simonecarletti.it/blog/2008/04/libro-ship-it-a-practical-guide-to-successful-software-projects/">Ship It!</a>. Per una serie di motivi lo scambiai per un libro legato alla progettazione di interfacce utente e solo dopo mi accorsi che riguardava invece il componente interfaccia in termini di sviluppo del software.</p>
<p>Potete immaginare il mio disappunto! Non che non conosca le interfacce, non che mi manchino le competenze per comprendere l&#8217;argomento&#8230; ma considerato che ad oggi Ruby è il linguaggio di programmazione che uso quotidianamente, un libro sulle interfacce è utile quanto spiegare ad un beduino come si guida una motoslitta.</p>
<p>Passato l&#8217;amaro in bocca e messo in testa il <a href="http://www.java.com/">Java</a>-cappello, ho deciso di intraprendere ugualmente la lettura.</p>
<p><span id="more-730"></span></p>
<h2>Struttura del libro</h2>
<p><em>Interface Oriented Design</em> è organizzato in 3 parti:</p>
<ol>
<li>All about Interfaces</li>
<li>Developing Interfaces</li>
<li>Interfaces in the Real World</li>
</ol>
<p><strong>All about Intefaces</strong> è un&#8217;introduzione alle interfacce. Ken Pugh apre il libro subito con un esempio, dimostrando come in realtà un servizio di pizza a domicilio possa essere descritto con una o più interfacce.</p>
<p>Il secondo capitolo elenca e descrive le <strong>tre leggi delle interfacce</strong> utilizzando, ancora una volta, l&#8217;esempio Pizza Delivery per dimostrare un&#8217;applicazione pratica dell&#8217;argomento.</p>
<p>La prima parte prosegue poi trattando gli elementi di un&#8217;interfaccia, le sue caratteristiche come l&#8217;ereditarietà ed il polimorfismo per dedicare infine un capitolo alle <strong>interfacce remote</strong>.</p>
<p>La seconda parte, <strong>Developing Interfaces</strong>, contiene un solo capitolo ed analizza come orientare lo sviluppo di un software utilizzando le interfacce sia in fase di design, sia in fase di scrittura effettiva del codice sorgente.</p>
<p><strong>Interfaces in the Real World</strong>, l&#8217;ultima parte, contiene 3 esempi d&#8217;utilizzo di interfacce nella vita reale per lo sviluppo di software. L&#8217;ultimo capitolo di questa sezione, <strong>Patters</strong>, accenna infine ai principali Design Patter basati su interfacce.</p>
<h2>Mi aspettavo qualcosa di diverso&#8230;</h2>
<p>E&#8217; possibile che il mio giudizio sia stato in qualche modo influenzato fin dall&#8217;inizio, dai motivi anticipati in apertura di questo post. Ad ogni modo, l&#8217;interesse per questo libro è andato via via scemando durante la lettura.</p>
<p>Abbastanza interessante la prima parte. L&#8217;introduzione è chiara, significativa ed i concetti affrontati possono essere molto utili nella progettazione di un software, indipendentemente dal fatto che il linguaggio scelto supporti o meno l&#8217;uso di interfacce.</p>
<p>In alcuni frangenti non ho apprezzato la volontà dell&#8217;autore di dimostrare come &#8220;praticamente tutto può essere ricondotto ad un&#8217;interfaccia&#8221;, anche in situazioni dove una classe astratta o altri elementi avrebbero rappresentato una scelta più adeguata.</p>
<p>In generale, il libro è molto ricco di informazioni ma buona parte degli argomenti è trattata in modo superficiale.</p>
<p>Lo sviluppo con le interfacce è limitato ad un solo capitolo, il capitolo 11 <strong>Patterns</strong> è poco più che un elenco di nomi e non trasmette in alcun modo le reali potenzialità dei design pattern analizzati.</p>
<p>Gli esempi forniti coprono quasi esclusivamente l&#8217;aspetto di design ed analizi delle interfacce e quasi mai offrono un&#8217;effettiva dimostrazione dell&#8217;implementazione di un&#8217;interfaccia da parte di diversi elementi di un software.</p>
<p>Lo stesso terzo capitolo, offre tre esempi reali ma in tutti e tre ci si limita ad offrire porzioni di codice saltellando da una prospettiva all&#8217;altra. Probabilmente, un solo reale esempio con a corredo un prototipo di applicazione funzionante avrebbe offerto una prospettiva più diretta.</p>
<h2>In conclusione</h2>
<p>Come buona parte degli altri libri editi dalla Pragmatic Programmers, anche <em>Interface Oriented Design</em> è una lettura relativamente rapida e non troppo impegnativa. Tuttavia, rispetto alla qualità generale delle altre pubblicazioni, questa volta non sono rimasto soddisfatto dell&#8217;acquisto e probabilmente non l&#8217;avrei inserito nel carrello se (1) non mi fossi confuso di argomento (2) ed avessi potuto sfogliare il libro curiosandone il contenuto.</p>
<p>A chi desidera approfondire il tema di interfacce e design patterns consiglio in alternativa la lettura di un libro dedicato ai design pattern. A chi sta cercando una trattazione specifica sull&#8217;applicazione delle interfacce in Java, consiglio l&#8217;acquisto di una pubblicazione specifica per Java. In alternativa, se siete alla ricerca di un&#8217;introduzione teorica alle interfacce, <em>Interface Oriented Design</em> potrebbe essere una soluzione adeguata per tragettarvi in seguito verso l&#8217;acquisto di una lettura più specifica.</p>
<h2>Dove comprare Interface Oriented Design</h2>
<p>Potete acquistare una copia cartacea su <a href="http://bit.ly/ait-book-kpiod">Amazon.it</a>, <a href="http://amzn.to/auk-book-kpiod">Amazon.co.uk</a> o <a href="http://amzn.to/acom-book-kpiod">Amazon.com</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/' rel='bookmark' title='Libro Programming Ruby 1.9'>Libro Programming Ruby 1.9</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/' rel='bookmark' title='Libro Learn to Program'>Libro Learn to Program</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libro Ship it! A Practical Guide to Successful Software Projects</title>
		<link>http://www.simonecarletti.it/blog/2008/04/libro-ship-it-a-practical-guide-to-successful-software-projects/</link>
		<comments>http://www.simonecarletti.it/blog/2008/04/libro-ship-it-a-practical-guide-to-successful-software-projects/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 20:00:04 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2008/04/libro-ship-it-a-practical-guide-to-successful-software-projects/</guid>
		<description><![CDATA[Recensione del libro Ship it!, una delle pubblicazioni di maggiore livello per quanto riguarda la corretta gestione dello sviluppo di un software.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simonecarletti.it/blog/out/amzit-shipit"><img class="alignleft size-thumbnail wp-image-2730" title="Copertina Libro Ship It!" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/4141mAVxG7L._SS500_-150x150.jpg" alt="Copertina Libro Ship It!" width="150" height="150" /></a> Difficile trovare le parole giuste per scrivere una degna recensione al libro <a href="http://www.simonecarletti.it/blog/out/amzit-shipit"><em>Ship it! A Practical Guide to Successful Software Projects</em></a>.</p>
<p><a href="http://www.simonecarletti.it/blog/out/amzit-shipit"><em>Ship it!</em></a> è veramente un libro eccellente, una delle <strong>pubblicazioni di maggiore livello</strong> per quanto riguarda la corretta gestione dei progetti software. Ship it! non è solo una raccolta di linee guida, suggerimenti e consigli su come organizzare in modo efficiente lo sviluppo di un software, è un libro in grado di aprirvi la mente con esempi e suggerimenti talmente comprensibili che, lo scommetto, più di una volta vi capiterà di esclamare &#8220;<em>ma cavolo, perché non ci ho pensato prima, è fantastico!</em>&#8220;.</p>
<p>La pubblicazione di Ship it! risale al 2005 ma il contenuto di questo libro è tutt&#8217;altro che datato. Rileggendo con attenzione ed occhio critico i suoi capitoli, confrontandoli con le realtà software che ho avuto modo di incontrare mi sono reso conto che meno della metà delle aziende di sviluppo adottano anche solo la metà dei consigli e delle best practice indicate per la creazione di un software: <strong>unit test</strong>, <strong>gestione dei sorgenti</strong>, <strong>continuous integrations</strong>, <strong>issue tracking</strong>, <strong>code review</strong>, <strong>code change notification</strong>, <strong>automatic builds</strong>&#8230; questi sono solo alcuni dei concetti fondamentali affrontati, discussi ed approfonditi dal libro.</p>
<p><span id="more-718"></span></p>
<h2>Introduzione</h2>
<p>L&#8217;introduzione è, da sola, una delle migliori che abbia mai avuto modo di leggere. Concisa, efficace e soprattutto incredibilmente profonda. Vi consiglio di non perdere neppure una pagina di questo libro, prefazione compresa scritta da Andy Hunt.</p>
<p>Nell&#8217;introduzione vengono da subito chiariti quelli che saranno gli argomenti essenziali trattati nel libro</p>
<ul>
<li>Techniques (tecniche)</li>
<li>Infrastructure (infrastrutture)</li>
<li>Process (processi)</li>
</ul>
<p>Ciascuno di questi elementi è poi ripreso ed approfondito in un capitolo dedicato.</p>
<p><img class="aligncenter size-medium wp-image-2733" title="ship-it-poster" src="http://www.simonecarletti.it/blog/wp-content/uploads/2008/04/ship-it-poster-400x315.png" alt="ship-it-poster" width="400" height="315" /></p>
<p><strong>Sviluppatori</strong>, <strong>tester</strong>, <strong>team leader</strong> o <strong>project manager</strong>: non importa quale sia il vostro ruolo all&#8217;interno dello sviluppo di un software, questo libro è orientato ad ognuna delle quattro figure indicate. Ogni capitolo permette la lettura sotto diversi punti di vista e non c&#8217;è argomento che, alla fine, non possa influenzare il vostro modo di lavorare.</p>
<p>Per tutta la durata del libro, di tanto in tanto, una frase essenziale o un&#8217;affermazione chiave viene evidenziata come <strong>TIP</strong>. L&#8217;appendice A, dal titolo <strong>Tip Summary</strong>, è un riepilogo dei 42 suggerimenti chiave per una corretta gestione di un progetto software.</p>
<p>Dopo l&#8217;introduzione, il libro si sviluppa in 4 capitoli:</p>
<ul>
<li>Tools and Infrastructure</li>
<li>Pragmatic Project Techniques</li>
<li>Tracer Bullet Development</li>
<li>Common Problems and How to Fix Them</li>
</ul>
<h2>Tools and Infrastructure</h2>
<p>Questo capitolo analizza e descrive una <strong>corretta architettura per lo sviluppo di software</strong>.</p>
<p>L&#8217;apertura è dedicata all&#8217;analisi di come gli <strong>strumenti di Source Code Management</strong> (<acronym title="Source Code Management">SCM</acronym>), come ad esempio <a title="Strumenti di sviluppo: Subversion (SVN)" href="http://www.simonecarletti.it/blog/2007/03/strumenti-di-sviluppo-subversion-svn/">Subversion</a>, sono tanto essenziali quanto indispensabili per qualsiasi progetto software, ma non solo! Possono infatti essere utilizzati in tantissimi ambiti come quello editoriale per tenere traccia dell&#8217;evoluzione di un libro e collegare l&#8217;attività di un autore a quella di un editore.</p>
<p>Altro tema affrontato è quello della <strong>compilazione automatica di un progetto</strong>. In alcuni casi si tratta di una vera e propria compilazione in binario, come per un eseguibile, in altri casi la compilazione è semplicemente la creazione di un pacchetto distribuibile come i file GEM in Ruby.<br />
Indipendentemente dalla situazione, Ship it! suggerisce una ricca lista di accorgimenti per rendere quest&#8217;operazione indolore. Interessante la discussione sull&#8217;argomento <a title="Continuous Integration" href="http://www.martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a>, con tanto di strumenti ed esempi.</p>
<p>Non manca una sezione dedicata al tema degli <a title="Strumenti di Sviluppo: Issue Tracker" href="http://www.simonecarletti.it/blog/2007/09/strumenti-di-sviluppo-issue-tracker/">Issue Tracker</a>, con utilissimi suggerimenti per non vanificare le potenzialità dello strumento, indipendentemente da quale si tratti. Non dobbiamo infatti dimenticare che <strong>anche lo strumenti migliore, nelle mani di un incapace, può trasformarsi in un&#8217;arma letale</strong>.</p>
<p>Eccezionale la panoramica sull&#8217;argomento Testing: Functional Test, Performance Test, Load Test, Smoke test ed Integration Test. Ovviamente c&#8217;è da considerare che questi temi meriterebbero un libro dedicato, ma Ship it! è in grado di offrire le informazioni essenziali per suscitare almeno la curiosità per ulteriori approfondimenti personali.</p>
<p>Il capitolo si conclude con una sezione chiamata <strong>When Not to Experiment</strong>, essenziale per quanti soffrono di &#8220;mal del voglio provare tutto ora perché figo&#8221;! In altre parole, gli autori sottolineano quanto sia fondamentale la scelta di tecnologie che si conoscono ma, soprattutto, non introdurre nuove tecnologie in momenti critici, come quello che precede il rilascio di una nuova versione, solo perché qualcuno ha detto che &#8220;questo prodotto funziona meglio di quello&#8221;.</p>
<p>Per citare Jared Richardson e William Gwaltney: <em>Never let a critical technology (like your build system) be created as a technology expediment</em> o <em>Don&#8217;t use wizard code you don&#8217;t understand</em>.<br />
Cosa? Queste affermazioni vi sembrano banali? Allora non avete idea di quanti utilizzino script copia incolla per scrivere routine essenziali di un sistema senza neppure comprendere il loro funzionamento!</p>
<h2>Pragmatic Project Techniques</h2>
<p>Il capitolo <strong>Pragmatic Project Techniques</strong> sposta l&#8217;attenzione dalle tecnologie alle <strong>abitudini e tecniche</strong>.<br />
Si parla delle caratteristiche essenziali di un Tech Leader, così come dell&#8217;importanza di <strong>riunioni quotidiane</strong>.</p>
<p>Una decina di pagine sono dedicate all&#8217;argomento Code Review descrivendo nel dettaglio vantaggi e svantaggi di questa pratica di sviluppo. Ci tengo a sottolineare come ogni affermazione del libro sia corredata da esempi pratici ed esperienze reali che arricchiscono ulteriormente il valore di ogni consiglio.</p>
<p>L&#8217;intero terzo capitolo ruota attorno all&#8217;argomento &#8220;The List&#8221;. Chiunque debba organizzare la propria attività ben conosce l&#8217;<strong>importanza delle TODO list</strong>, di un agenda o di un qualsiasi strumento dove annotare e raccogliere i propri appuntamenti. Gli autori si spingono oltre fino a dedicare decine di pagine a come organizzare al meglio la propria lista delle attività e quella dell&#8217;intero team, nel caso il vostro ruolo sia quello di team leader o manager.</p>
<h2>Tracer Bullet Development</h2>
<p>Il quarto capitolo è interamente dedicato alla pratica di sviluppo <strong>Tracer Bullet Development</strong> (<acronym title="Tracer Bullet Development">TBD</acronym>). Come il <strong>Test Driven Development</strong> (<acronym title="Test Driven Development">TDD</acronym>) o l&#8217;<strong>Extreme Programming</strong> (<acronym title="Extreme Programming">XP</acronym>), il <acronym title="Tracer Bullet Development">TBD</acronym> è una delle tecniche che si possono adottare nello sviluppo di un software. Questo capitolo ne analizza caratteristiche, pregi e difetti.</p>
<h2>Common Problems and How to Fix Them</h2>
<p>Come ben saprà chi di voi è abituato a leggere libri ed articoli, un conto è scrivere di buone abitudini un conto è mettere in pratica quanto qualcun altro scrive. Ci sono innumerevoli motivi che possono portare all&#8217;impossibilità di adottare una o l&#8217;altra tecnologia o condizionare una scelta.</p>
<p>Nel quinto capitolo sono riassunti oltre una decina dei principali problemi collegati alle best practice trattate nel libro, con relativi suggerimenti su come risolverli. Anche in questo caso, ogni problema è documentato con esperienze reali che rendono le soluzioni qualcosa diverso dai classici consigli inutilizzabili.</p>
<h2>Non finisce qui!</h2>
<p>I capitoli sono terminati, ma il libro non finisce qui.</p>
<p>Ben 8 appendici completano la pubblicazione con risorse ed approfondimenti su <strong>sistemi di gestione del codice</strong>, <strong>scripting tool</strong>, <strong>issue tracker</strong>, <strong>framework per il test di prodotti</strong> e <strong>metodi di sviluppo</strong>.</p>
<h2>In conclusione</h2>
<p>Non più di qualche mese fa, in risposta ad un mio post su HTML.it dedicato allo unit testing, un utente commentò dicendo di quanto sia difficile introdurre certe tecniche nello sviluppo di un software, considerando che spesso i project manager non le conoscono o non ne comprendono l&#8217;efficacia. La mia risposta, nuda e cruda, fu che un project manager che non conosca o comprenda l&#8217;efficacia di tecniche come l&#8217;unit testing o la gestione organizzata di un progetto probabilmente ha ancora molto da imparare e dovrebbe tornare a studiare.</p>
<p>Ad oggi, probabilmente, in quell&#8217;occasione avrei allegato un collegamento a Ship it!. Questo libro è infatti un concentrato di molti degli aspetti che un buon project manager dovrebbe conoscere (ed applicare), ma non solo.</p>
<p>Per quanto mi riguarda, la lettura di <a href="http://www.simonecarletti.it/blog/out/amzit-shipit">Ship it! A Practical Guide to Successful Software Projects</a> è stata l&#8217;occasione per trovare conferma su molte abitudini maturate nel tempo grazie all&#8217;esperienza, abitudini che per un motivo o per l&#8217;altro non mi sono mai state insegnate direttamente ma ho appreso nel tempo.<br />
Ship it! mi ha permesso di consolidarne l&#8217;efficacia e, in molti casi, mi ha aperto la mente permettendomi un uso ancora più professionale.</p>
<p><a href="http://bit.ly/btWJV4"><em>Ship it! A Practical Guide to Successful Software Projects</em></a> ha un costo irrisorio se paragonato al reale valore professionale e non è un caso che compaia in molte presentazioni, non per ultima in quella di Alex Martelli in occasione della <a title="Benvenuti! | PyCon2 - La seconda conferenza italiana dedicata al linguaggio Python." href="http://www.pycon.it/">PyCon 2007</a>.</p>
<p>L&#8217;acquisto è <strong>assolutamente consigliato</strong>, non solo a chi si occupa di sviluppo software. Molti suggerimenti del libro sono infatti applicabili ad altri ambienti dell&#8217;informatica e del web.</p>
<h2>Dove comprare Ship it!</h2>
<p>Potete acquistare una copia cartacea <a href="http://www.simonecarletti.it/blog/out/amzit-shipit">Amazon.it</a>, <a href="http://www.simonecarletti.it/blog/out/amzuk-shipit">Amazon.co.uk</a> o <a href="http://www.simonecarletti.it/blog/out/amzcom-shipit">Amazon.com</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/' rel='bookmark' title='Libro Interface Oriented Design'>Libro Interface Oriented Design</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/' rel='bookmark' title='Libro Programming Ruby 1.9'>Libro Programming Ruby 1.9</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2008/04/libro-ship-it-a-practical-guide-to-successful-software-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Libro TextMate &#8211; Power Editing for the Mac</title>
		<link>http://www.simonecarletti.it/blog/2008/03/libro-textmate-power-editing-for-the-mac/</link>
		<comments>http://www.simonecarletti.it/blog/2008/03/libro-textmate-power-editing-for-the-mac/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 21:25:32 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2008/03/libro-textmate-power-editing-for-the-mac/</guid>
		<description><![CDATA[Recensione del libro TextMate, un autentico capolavoro dedicato all'editor per Mac più famoso.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simonecarletti.it/blog/out/amzit-pragtextmate"><img class="alignleft size-thumbnail wp-image-3387" title="Libro TextMate" src="http://www.simonecarletti.it/blog/wp-content/uploads/2008/03/pragprog-textmate-125x150.png" alt="Libro TextMate" width="125" height="150" /></a> <a href="http://www.simonecarletti.it/blog/out/amzit-pragtextmate"><em>TextMate: Power Editing for the Mac</em></a> è una pubblicazione interamente dedicata a <a title="TextMate" href="http://macromates.com/">TextMate</a>, un editor di testo per Mac. Mi correggo, sarebbe più corretto definire TextMate come <em>l&#8217;editor</em> di testo per Mac, dato il suo ruolo ufficialmente riconosciuto di assoluta leadership nel campo.</p>
<p>E&#8217; difficile trasmettere, a chi non lo ha mai provato o peggio ancora a chi non usa Mac, la sensazione di cosa significhi disporre di un gioiello della programmazione come TextMate. Questo programma, nato dalla mente di <strong>Allan Odgaard</strong>, fonde insieme in un unico prodotto le potenzialità dello scripting di shell, un&#8217;interfaccia elegante e curata, la flessibilità di un prodotto praticamente riconfigurabile e personalizzabile. <del>Scritto in <strong>Ruby</strong>, Textmate ha preso da questo linguaggio sia la sua eleganza sia la sua dinamicità.</del></p>
<p>Potrei andare avanti ore a celebrare questo programma ma preferisco soddisfare la curiosità di chi ancora non lo conosce invitandovi a guardare <a title="Screencasts -- TextMate" href="http://macromates.com/screencasts">alcuni video</a> che ne dimostrano l&#8217;utilizzo. Non basterebbe un libro per descrivere tutte le potenzialità di TextMate&#8230; a proposito di libro, parlavamo proprio di questo!</p>
<p><span id="more-714"></span><em>TextMate: Power Editing for the Mac</em> è un autentico capolavoro, quasi quanto il programma che racconta. Non lasciatevi ingannare dallo spessore di sole 182 pagine, credetemi quando vi dico che a leggerlo mi ci è voluto più tempo di altre pubblicazioni a prima vista più impegnative, come <a title="Libro Professional Search Engine Optimization with PHP - Simone Carletti's Blog" href="http://www.simonecarletti.it/blog/2007/08/libro-professional-search-engine-optimization-with-php/">Professional Search Engine Optimization with PHP</a>.</p>
<p>Il motivo è che, in queste 182 pagine, <strong>James Edward Gray II</strong> ha raccolto un concentrato della potenza di TextMate affrontando temi come <strong>Ricerca e Sostituzione via espressioni regolari</strong>, <strong>Automazioni</strong> e <strong>Bundle</strong>, registrazione di <strong>Macro</strong> e <strong>Snippets</strong>, creazione di comandi ed interazione con la <strong>shell</strong> fino ad arrivare alla creazione di una nuova grammatica di linguaggio. Il tutto condito da un quantitativo di scorciatoie da tastiera che quasi certamente vi faranno dimenticare che avete un mouse collegato alla porta USB del vostro Mac.</p>
<p>Questo libro non è il solito manuale all&#8217;uso del programma, ma d&#8217;altra parte neanche TextMate è il solito programma!</p>
<p>Il primo macro capitolo, <em>Editing</em>, è il più tranquillo. Vi guiderà nella creazione di progetti mostrandovi alcune semplici ma eccellenti scorciatoie per cercare file e modificare file. Il capitolo <em>Find and Replace</em> rivela fin da subito le potenzialità di TextMate, esplorando come spremere in fondo <a title="Oniguruma for Ruby Main" href="http://oniguruma.rubyforge.org/">Oniguruma</a>, il regular expression engine di Ruby.</p>
<p>Tanto per darvi un&#8217;idea, proprio oggi ho sfruttato alcune indicazioni per creare, inline e via TextMate, un file report CSV per un cliente a partire da un file di log di Rails di oltre 190Mb! Il tutto con una sola espressione regolare di 10 righe&#8230; ancora mi sto chiedendo come il mio Mac Pro, i suoi 4 processori e TextMate siano riusciti nell&#8217;impresa. Ovviamente mi sto ancora chiedendo anche come io sia riuscito nell&#8217;impresa, dato il mio odio-amore per le espressioni regolari&#8230; ma questo è un&#8217;altra puntata!</p>
<p>Il secondo macrocapitolo include ben <strong>5 capitoli interamente dedicati al cuore di TextMate</strong>: Automazioni, Bundle, Snippet, Macro, Comandi e suggerimenti. Credeteci se vi dico che vi si aprirà un mondo nuovo.</p>
<p>Un esempio? Pensate che potete creare una semplice Bundle SEO dove generare un report sui posizionamenti semplicemente aprendo una lista Keyword da un file di testo! Non sto scherzando. Se poi siete programmatori Ruby, scoprirete quando è facile creare veri e propri programmi Ruby basati su TextMate grazie alle librerie di sistema ed alle API offerte dal programma.</p>
<p>Altro esempio? Questo post io lo sto editando da TextMate direttamente collegato al mio blog via XML-RPC!</p>
<p>Il terzo ed ultimo macro capitolo è il colpo di grazia, se ancora non ne avete avuto basta! L&#8217;autore supera se stesso dimostrando come creare una <strong>nuova grammatica di linguaggio</strong>. Nello specifico, l&#8217;esempio dimostra come creare la grammatica per JSON, la stessa che qualche mese più tardi entrerà a far parte della dotazione standard delle grammatiche di TextMate (il libro ha un paio d&#8217;anni).</p>
<p>Potrei andare avanti ancora ore, ma rischierei di annoiarvi oltremodo nonché rubarvi tempo prezioso per <a href="http://www.simonecarletti.it/blog/out/amzit-pragtextmate">correre su Amazon ed ordinare questo libro</a>! Una lettura assolutamente consigliata.</p>
<h2>Dove comprare Textmate &#8211; Power Editing for the Mac</h2>
<p>Potete acquistare una copia cartacea su <a href="http://www.simonecarletti.it/blog/out/amzit-pragtextmate">Amazon.it</a>, <a href="http://www.simonecarletti.it/blog/out/amzuk-pragtextmate">Amazon.co.uk</a> o <a href="http://www.simonecarletti.it/blog/out/amzcom-pragtextmate">Amazon.com</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/' rel='bookmark' title='Pragmatic programmers addicted'>Pragmatic programmers addicted</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/' rel='bookmark' title='Libro Agile Web Development with Rails 3'>Libro Agile Web Development with Rails 3</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-pragmatic-version-control-using-git/' rel='bookmark' title='Libro Pragmatic Version Control Using Git'>Libro Pragmatic Version Control Using Git</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2008/03/libro-textmate-power-editing-for-the-mac/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Libro Learn to Program</title>
		<link>http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/</link>
		<comments>http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 22:28:56 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/</guid>
		<description><![CDATA[Recensione del libro Learn to Program, una lettura consigliata per chi desidera avvicinarsi a Ruby o alla programmazione in generale.]]></description>
			<content:encoded><![CDATA[<p><a href="http://bit.ly/966W2q"><img class="alignleft size-thumbnail wp-image-2727" title="Copertina Libro Learn To Program" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/51NCA4F06VL._SS500_-150x150.jpg" alt="Copertina Libro Learn To Program" width="150" height="150" /></a> Tra tutti i libri che compongono il <a title="Pragmatic programmers addicted - Simone Carletti's Blog" href="http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/">mio ultimo acquisto</a> non è stato facile scegliere da quale cominciare. Così ho deciso che come prima cosa li avrei sfogliati tutti. Curiosa questo e curiosa quello, complice il periodo non troppo tranquillo, la scelta è ricaduta sul libro <strong>Learn to Program</strong>, inutile dirlo, pubblicato da Pragmatic Programmers.</p>
<p><a href="http://bit.ly/966W2q">Learn to Program</a>, a differenza di quanto pensavo prima dell&#8217;acquisto, è tutt&#8217;altro che un libro incentrato sulle buone abitudini di programmazione. E&#8217; una vera e propria guida per <strong>imparare a programmare</strong> o, per meglio dire, cominciare a programmare. La vera pratica, come in molti altri ambiti, è il &#8220;campo di battaglia&#8221;!</p>
<p><span id="more-709"></span></p>
<h2>A chi è rivolto</h2>
<p>Learn to Program non è però il classico manuale per newbie. Il linguaggio è semplice ma altrettanto coinvolgente. L&#8217;autore ha saputo mantenere attivo l&#8217;interesse con esempi calzanti, battute ed interventi quasi alla Zelig. Contrariamente a quanto pensassi, nonostante il sottoscritto non sia proprio nuovo alla programmazione, non mi sono per nulla annoiato nel leggerlo, anzi!</p>
<p>Il linguaggio semplice ma sufficientemente tecnico quando necessario. L&#8217;ordine logico dei contenuti permette una lettura fluida anche a chi si è avvicinato da poco al mondo della programmazione. Rispetto ai soliti manuali per imparare a programmare questo libro rappresenta quasi un&#8217;anomalia nella <strong>scelta del linguaggio: Ruby</strong>.</p>
<p>L&#8217;intero libro è infatti fortemente focalizzato su Ruby e questa caratteristica, sotto certi aspetti, rende l&#8217;acquisto ancora più opportuno. Si tratta infatti di una scelta perfetta sia per il programmatore affermato che desidera, in qualche oretta, degustare gli aspetti principali di Ruby sia (e soprattutto) per quanti vorrebbero approcciare un linguaggio di programmazione puro senza esperienze precedenti alle spalle.</p>
<p>Un esempio perfettamente calzante sono, a mio avviso, i <strong>web designer</strong>. Sempre più frequentemente tra le competenze di un web designer oltre a CSS e XMTML rientra la capacità di adattare layout a linguaggi dinamici. Pensate ai framework MVC ed ai template engine: Ruby, PHP&#8230; oramai l&#8217;epoca delle &#8220;paginette statiche&#8221; è finita.</p>
<p>A mio avviso, questo è il libro ideale per <strong>un web designer che vorrebbe avvicinarsi alla programmazione</strong>: nessuna pretesa di diventare il nuovo super programmatore di turno, piuttosto la volontà di riuscire ad acquisire autonomia ed esperienza nell&#8217;elaborazione di template con annessi costrutti di programmazione.</p>
<h2>Pro e Contro</h2>
<p>Per quanto mi riguarda, la ciliegina sulla torna è senza dubbio il capitolo 14: <strong>Blocks and Procs</strong>. Non vi nego che l&#8217;argomento <strong>blocchi e procedure</strong>, insieme ai <strong>simboli</strong>, è stato quello più ostico da digerire quando mi sono avvicinato per la prima volta a Ruby a livello professionale. In poche pagine, questo libro spiega un concetto complesso in modo elegante ed inconfondibile. Un motivo in più per essere soddisfatto dell&#8217;acquisto.</p>
<p>Unico neo, se così vogliamo chiamarlo, che potrebbe mettere in difficoltà chi mastica poco l&#8217;inglese, è il linguaggio. No, nessun tono offensivo o simile. Come anticipato, il libro non è certo povero di battute ed affermazioni umoristiche. Proprio per comprendere al meglio certe espressioni gergali è necessaria una certa elasticità mentale e dimestichezza con l&#8217;inglese, pena non riuscire a comprendere ed apprezzare a pieno giochi di parole e toni informali.</p>
<h2>In conclusione</h2>
<p>Se vi rispecchiate nei profili appena descritti, <strong>vi consiglio vivamente l&#8217;acquisto</strong>. Inoltre, il prezzo è assolutamente competitivo.</p>
<p>Spesa non necessaria per i programmatori professionisti, per voi, cari lettori, ci sarà presto la recensione di qualche altro libro che non potete assolutamente perdervi! Qualche anticipazione? <strong>Team management</strong>, <strong>design pattern</strong> e <strong>unit testing</strong>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/' rel='bookmark' title='Libro Programming Ruby 1.9'>Libro Programming Ruby 1.9</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/' rel='bookmark' title='Libro Agile Web Development with Rails 3'>Libro Agile Web Development with Rails 3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Pragmatic programmers addicted</title>
		<link>http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/</link>
		<comments>http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 15:56:32 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[pragmatic programmers]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/</guid>
		<description><![CDATA[Alcuni acquisti di Natale dalla collezione di Pragmatic Programmers.]]></description>
			<content:encoded><![CDATA[<p>Alla fine non ho resistito, anche quest&#8217;anno con la scusa del Natale mi sono regalato qualche libro da Amazon. Un ordine quasi totalmente monopolizzato dai libri di Pragmatic Programmers, oserei dire, dato che l&#8217;ordine include:</p>
<p><a title="Libro Ship it! A Practical Guide to Successful Software Projects" href="http://www.simonecarletti.it/blog/2008/04/libro-ship-it-a-practical-guide-to-successful-software-projects/"><img class="size-thumbnail wp-image-2730" title="Copertina Libro Ship It!" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/4141mAVxG7L._SS500_-150x150.jpg" alt="Copertina Libro Ship It!" width="150" height="150" /></a><a title="Libro Learn to Program" href="http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/"><img class="size-thumbnail wp-image-2727" title="Copertina Libro Learn To Program" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/51NCA4F06VL._SS500_-150x150.jpg" alt="Copertina Libro Learn To Program" width="150" height="150" /></a><a title="Libro Interface Oriented Design" href="http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/"><img class="size-thumbnail wp-image-2728" title="Copertina Libro Interface Oriented Design" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/51NYNPQM37L._SS500_-150x150.jpg" alt="Copertina Libro Interface Oriented Design" width="150" height="150" /></a></p>
<p><a href="http://www.simonecarletti.it/blog/out/amzuk-pragdlret"><img class="size-thumbnail wp-image-2725" title="Copertina Libro Agile Retrospectives" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/41pakL5imIL._SS500_-150x150.jpg" alt="Copertina Libro Agile Retrospectives" width="150" height="150" /></a><a title="Libro TextMate – Power Editing for the Mac" href="http://www.simonecarletti.it/blog/2008/03/libro-textmate-power-editing-for-the-mac/"><img class="size-thumbnail wp-image-2729" title="Copertina Libro TextMate" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/416WB7WEFTL._SS500_-150x150.jpg" alt="Copertina Libro TextMate" width="150" height="150" /></a><a href="http://www.simonecarletti.it/blog/out/amzuk-pragbmsft"><img class="size-thumbnail wp-image-2726" title="Copertina Libro Everyday Scripting with Ruby" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/12/41pHt4OcRKL._SS500_-150x150.jpg" alt="Copertina Libro Everyday Scripting with Ruby" width="150" height="150" /></a></p>
<p>Niente libri sul SEO quest&#8217;anno, ho già dato in acquisti precedenti.</p>
<p>Credo che finirò per avere, presto o tardi, quasi tutta la collezione di <a title="The Pragmatic Bookshelf" href="http://www.pragprog.com/">Pragmatic Programmers</a>. I loro titoli sono uno più interessante dell&#8217;altro!</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-pragmatic-version-control-using-git/' rel='bookmark' title='Libro Pragmatic Version Control Using Git'>Libro Pragmatic Version Control Using Git</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/02/libro-learn-to-program/' rel='bookmark' title='Libro Learn to Program'>Libro Learn to Program</a></li>
<li><a href='http://www.simonecarletti.it/blog/2008/07/libro-interface-oriented-design/' rel='bookmark' title='Libro Interface Oriented Design'>Libro Interface Oriented Design</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2007/12/pragmatic-programmers-addicted/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Libro Agile Web Development with Rails 3</title>
		<link>http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/</link>
		<comments>http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 14:32:36 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[recensioni]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/</guid>
		<description><![CDATA[Recensione del libro Agile Web Development with Rails, una tra le migliori scelte per chi desidera avvicinarsi al framework Ruby on Rails.]]></description>
			<content:encoded><![CDATA[<div class="flash-message featured">
<p><strong>Aggiornamento 2011</strong>: disponibile la <a href="http://www.simonecarletti.it/blog/out/amzuk-pragrails">quarta edizione del libro</a>, aggiornata a Rails 3.</p>
</div>
<p><a href="http://www.simonecarletti.it/blog/out/amzit-pragrails"><img class="alignleft size-thumbnail" title="Libro Agile Development with Rails 4" src="http://share.weppos.net/simonecarletti/book-pragprog-rails4-20110817-213625.png" alt="Libro Agile Development with Rails 4" width="125" /></a><a href="http://www.simonecarletti.it/blog/out/amzit-pragrails"><em>Agile Web Development with Rails</em></a> è senza dubbio una tra le migliori scelte attualmente disponibili per quanti desiderano avvicinarsi allo sviluppo con il framework <a title="Ruby on Rails" href="http://www.rubyonrails.org/">Ruby on Rails</a>. Difficile non crederlo, considerato che tra gli autori figurano Dave Thomas, uno degli autori di &#8220;<em>The Agile Manifesto</em>&#8220;, e David Hansson, autore del framework stesso.</p>
<p>Il libro parte proprio dall&#8217;inizio fornendo una panoramica generale a Rails per poi addentrarsi nei dettagli. Si tratta di una pubblicazione, a mio avviso, particolarmente indicata a chi si avvicina per la prima volta a Rails, eventualmente con un background con altri framework simili.</p>
<p><span id="more-690"></span>Per apprezzare al meglio questo libro sono necessari due requisiti.</p>
<p>Il primo, imprescindibile, è una <strong>certa padronanza di Ruby</strong>. Poiché Rails è un framework scritto in Ruby è essenziale che chi desidera affrontare uno sviluppo con Rails conosca almeno le basi del linguaggio in cui è scritto.</p>
<p>L&#8217;appendice al fondo di <em>Agile Web Development with Rails</em> fornisce alcuni basilari indicazioni, utili a chi già programma con un linguaggio ad oggetti, tuttavia non sono sufficienti per valutare correttamente le potenzialità del linguaggio.<br />
Nello specifico, non sono sufficienti per fornirvi indicazioni sugli aspetti unici di Ruby, come ad esempio i simboli o il binding dinamico.<br />
Per questo motivo, <a href="http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/">Programming in Ruby</a> rappresenta a mio avviso un acquisto consigliato.</p>
<p>Il secondo prerequisito, meno fondamentale ma ugualmente utile, è una certa conoscenza dei framework mvc, o meglio, del modello MVC in generale. Sono un esempio di programmazione MVC i framework <a title="symfony Web PHP Framework" href="http://www.symfony-project.org/">Symfony</a> e <a title="Zend Framework" href="http://framework.zend.com/">Zend</a>, per PHP.</p>
<p><span style="text-decoration: line-through;">Il libro risale oramai al 2006 e, per questo motivo, non fornisce indicazioni sugli aggiornamenti più recenti del framework come il componente <strong>Migrate</strong>. Inoltre, alcuni comandi sono stati deprecati, ad esempio l&#8217;uso di <code>render_partial</code> o la nomenclatura non basata su Namespace dei tag di <strong>Rake</strong>. Questo non significa assolutamente che il libro sia inutile, anzi, tuttavia alcune nozioni potrebbero richiedere una verifica ed un riscontro nella nuova documentazione.</span></p>
<p><strong>Aggiornamento 2008</strong>: è disponibile la seconda edizione del libro, aggiornata a Rails 1.2.</p>
<p><strong>Aggiornamento 2009</strong>: è disponibile la terza edizione del libro, aggiornata a Rails 2.</p>
<p><strong>Aggiornamento 2011</strong>: è disponibile la quarta edizione del libro, aggiornata a Rails 3.</p>
<h2>Dove comprare Agile Web Development with Rails 3</h2>
<p>Potete acquistare una copia cartacea su <a href="http://www.simonecarletti.it/blog/out/amzit-pragrails">Amazon.it</a> (3rd Edition), <a href="http://www.simonecarletti.it/blog/out/amzuk-pragrails">Amazon.co.uk</a> o <a href="http://www.simonecarletti.it/blog/out/amzcom-pragrails">Amazon.com</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2011/02/libri-ruby-on-rails-in-italiano/' rel='bookmark' title='Libri Ruby on Rails in italiano'>Libri Ruby on Rails in italiano</a></li>
<li><a href='http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/' rel='bookmark' title='Libro Ruby Cookbook con elementi di Rails'>Libro Ruby Cookbook con elementi di Rails</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/' rel='bookmark' title='Libro Programming Ruby 1.9'>Libro Programming Ruby 1.9</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Libro Programming Ruby 1.9</title>
		<link>http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/</link>
		<comments>http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 22:42:58 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Libri]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[pragmatic programmers]]></category>
		<category><![CDATA[recensioni]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/</guid>
		<description><![CDATA[Recensione del libro Programming Ruby, uno dei libri più approfonditi sul linguaggio di programmazione Ruby.]]></description>
			<content:encoded><![CDATA[<div class="flash-message featured">
<p><strong>Aggiornamento 2011:</strong> disponibile la <a href="http://www.simonecarletti.it/blog/out/amzit-pragruby">terza edizione del libro</a>, aggiornata a Ruby 1.9!</p>
</div>
<p><a href="http://www.simonecarletti.it/blog/out/amzit-pragruby"><img class="alignleft size-thumbnail wp-image-3300" title="Libro Programming Ruby 1.9" src="http://www.simonecarletti.it/blog/wp-content/uploads/2007/10/pragprog-ruby3-125x150.png" alt="Libro Programming Ruby 1.9" width="125" height="150" /></a> Acquistai <a href="http://www.simonecarletti.it/blog/out/amzit-pragruby"><em>Programming Ruby</em></a> oltre un anno fa, quando decisi che era arrivato il momento (si fa per dire, dato che il tempo è sempre uno degli elementi più carenti!) di approfondire un linguaggio tra Ruby e Python. Tra tutti i libri su Ruby individuati, <em>Programming Ruby</em> mi era parsa la scelta più completa e così è: più di un libro, una enciclopedia completa sul linguaggio Ruby e le sue librerie.</p>
<p>Il libro si suddivide in 4 macro aree.</p>
<p><span id="more-672"></span><strong>Facets of Ruby</strong> è una introduzione al linguaggio ed alla sua sintassi. Contiene alcuni riferimenti alla programmazione ad oggetti, alla struttura di Ruby compresi moduli, classi, metodi, espressioni ed eccezioni. Verso la fine del capitolo è affrontato l&#8217;argomento dei thread e processi per consentire l&#8217;elaborazione parallela di più esecuzioni. Interessante, ma purtroppo poco chiaro.</p>
<p>Nella seconda parte, <strong>Ruby in Its Settings</strong>, il libro prende in esame Ruby e tutto quanto ruota attorno.<br />
Interagire con la <acronym title="Interactive Ruby Shell">IRB</acronym>, Ruby ed il Web, il gestore dei pacchetti RubyGems e le interfacce grafiche. Un capitolo intero è dedicato a Ruby e Microsoft Windows così come uno, decisamente avanzato, per documentare la creazione di estensioni personalizzate in C. Decisamente interessante il capitolo su come documentare Ruby via RDoc. Si tratta della referenza in assoluto più completa che abbia letto fino ad ora ma, come stupirsi&#8230; l&#8217;autore del libro è il papà di RDoc!</p>
<p>Il terzo capitolo si chiama <strong>Ruby Cristallized</strong> ed è un approfondimento alla natura di Ruby, sintassi e proprietà. In molti casi le informazioni sono in overlap con il primo capitolo. A mio avviso questo è uno dei lati negativi di questa pubblicazione che avrebbe potuto essere evitato. In realtà obiettivo di questo capitolo è analizzare più nel dettaglio aspetti evoluti di Ruby, ma le ripetizioni non mancano ed in alcuni casi si tratta di informazioni che avrebbero potuto essere utili ai lettori del primo capitolo.</p>
<p>Il titolo <strong>Ruby Library Reference</strong> non lascia dubbi sul contenuto del quarto capitolo. Si tratta della pubblicazione della documentazione completa dei moduli e delle classi core di Ruby. Senz&#8217;altro non è agevole quanto la versione online ma rappresenta un&#8217;eccezionale soluzione in mancanza di una connessione internet.</p>
<p>In conclusione, ritengo <em>Programming Ruby</em> un&#8217;eccellente risorsa per quanti desiderano approciare la conoscenza di Ruby. Per apprezzare al meglio la pubblicazione è raccomandato un background di programmazione, meglio ancora se object oriented.</p>
<p><strong>Aggiornamento 2011:</strong> è disponibile la terza edizione del libro, aggiornata a Ruby 1.9!</p>
<h2>Dove comprare Programming Ruby 1.9</h2>
<p>Potete acquistare una copia cartacea su <a href="http://www.simonecarletti.it/blog/out/amzit-pragruby">Amazon.it</a>, <a href="http://www.simonecarletti.it/blog/out/amzuk-pragruby">Amazon.co.uk</a> o <a href="http://www.simonecarletti.it/blog/out/amzcom-pragruby">Amazon.com</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.simonecarletti.it/blog/2008/11/libro-design-patterns-in-ruby/' rel='bookmark' title='Libro Design Patterns in Ruby'>Libro Design Patterns in Ruby</a></li>
<li><a href='http://www.simonecarletti.it/blog/2009/02/libro-ruby-cookbook/' rel='bookmark' title='Libro Ruby Cookbook con elementi di Rails'>Libro Ruby Cookbook con elementi di Rails</a></li>
<li><a href='http://www.simonecarletti.it/blog/2007/11/libro-agile-web-development-with-rails/' rel='bookmark' title='Libro Agile Web Development with Rails 3'>Libro Agile Web Development with Rails 3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.it/blog/2007/10/libro-programming-ruby/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

