<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>programmazione</title>
        <link>http://blogs.ugidotnet.org/lawrence/category/programmazione.aspx</link>
        <description>programmazione</description>
        <language>it-IT</language>
        <copyright>Lawrence Oluyede</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Novità dal mondo dorato XML</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2007/01/24/68507.aspx</link>
            <description>Non so se ne siete al corrente ma: XQuery 1.0, XPath 2.0 e XSLT 2.0 sono diventati &lt;a href="http://www.w3.org/2007/01/qt-pressrelease"&gt;Recommendation&lt;/a&gt;.&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/68507.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2007/01/24/68507.aspx</guid>
            <pubDate>Wed, 24 Jan 2007 19:02:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2007/01/24/68507.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/68507.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/68507.aspx</trackback:ping>
        </item>
        <item>
            <title>Privato e privato.</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2007/01/03/64697.aspx</link>
            <description>&lt;p&gt;Ho appena finito di leggere il &lt;a href="http://blogs.ugidotnet.org/PierreGreborio/archive/2007/01/03/64677.aspx"&gt;post di Pierre&lt;/a&gt; e relativi commenti sul fatto che un metodo privato sia comunque accessibile dall'esterno. Io mi trovo d'accordo con quello che dice Corrado, sì per i controlli dei parametri e sì che è a rischio e pericolo del programmatore smanettare con l'interfaccia privata ma vorrei provare ad aggiungere una cosa: la differenza tra privato e privato forzato.&lt;/p&gt;
&lt;p&gt;Uno dei linguaggi object oriented per eccellenza è Smalltalk (che per inciso è dinamico e *vivo*). Smalltalk non ha il concetto di private vs public, o meglio, non lo ha alla maniera di C++, Java, C# e tutti i linguaggi di questa famiglia (VB.NET compreso, che in fondo è molto più simile a C# di quanto si creda secondo me). In Smalltalk il tutto si basa sul buon senso e sulle convenzioni. Se io marco un metodo come privato è ovvio che non faccia parte della interfaccia e magari non lo documento nemmeno. Se poi tu programmatore vuoi usarlo sono cavoli tuoi e sai _benissimo_ che io posso farlo sparire alla seconda release.&lt;/p&gt;
&lt;p&gt;Il vantaggio di questo approccio è che se una classe è programmata male (ricordo di roba "sealed" per errore nelle prime versioni di .NET) io posso comunque girare intorno al problema senza dover aspettare una patch fino alla prossima release della libreria o di quello che sto usando&lt;/p&gt;
&lt;p&gt;Python usa questa convenzione senza alcun problema da 10 anni e passa. Un attributo o metodo privato viene marcato con "_nome" (notare l'underscore davanti). Ciò per qualsiasi Pythonista vivente significa: quello è privato, usalo se devi ma sappi che non è parte dell'interfaccia (oltre a quello che ovviamente viene esplicitato nella documentazione). Esiste un blando modo per forzare la privateness (che poi è più che altro una convenzione interna per motivi che non sto qui a spiegare che per "legare le braccia" il programmatore) che è quello di usare "__nome" (doppio underscore). Questo impedisce all'utente di fare "classe.__nome" per accedervi ma è sempre possibile accedervi tramite una semplicissima regola di name mangling o tramite "reflection" per usare un termine "dotnettaro".&lt;/p&gt;
&lt;p&gt;Questo perché Smalltalk, Python e altri linguaggi usano una filosofia diametralmente opposta di quella di Java e C# che è quella di non legare le mani al programmatore, limitare il numero di keyword (e combinazioni delle stesse). Questo non significa che leda i principi dell'OOP, anzi, la differenza sta nel *forzare* o nel *comunicare*. Python comunica qual è l'interfaccia, C# forza. Differenza tra &lt;a href="http://www.journalhome.com/codecraft/9003/"&gt;safety vs freedom&lt;/a&gt; languages, appunto. Vi invito a leggere quell'articolo, sicuramente alla fine sarete comunque della vostra idea, ma almeno avrete compreso almeno in parte il mio punto di vista.&lt;/p&gt;

&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/64697.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2007/01/03/64697.aspx</guid>
            <pubDate>Wed, 03 Jan 2007 13:42:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2007/01/03/64697.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/64697.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/64697.aspx</trackback:ping>
        </item>
        <item>
            <title>Implementing Python with .NET</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2006/06/30/43836.aspx</link>
            <description>Come ho accennato nel post precedente ha scritto una tesi sull'implementazione di un backend .NET in Python per PyPy. Ho appena parlato con lui su IRC e mi ha dato il via libera per la pubblicazione del link.
&lt;p&gt;
Se vi interessa una visione non convenzionale del vostro ambiente preferito e un pò di computer science ecco qui: &lt;a href="http://codespeak.net/svn/user/antocuni/tesi/Implementing%20Python%20in%20.NET.pdf"&gt;Implementing Python in .NET&lt;/a&gt;. Non è necessario che conosciate Python per leggerla :-) Mal che vada, chiedete pure qui...&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/43836.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2006/06/30/43836.aspx</guid>
            <pubDate>Fri, 30 Jun 2006 15:33:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2006/06/30/43836.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/43836.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/43836.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] Svizzera, arrivo!</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2006/06/30/43803.aspx</link>
            <description>Salve gente, da domani fino al 9 luglio io e il mio laptop ci trasferiamo in Svizzera. La motivazione principale è l'annuale conferenza &lt;a href="http://www.europython.org/"&gt;EuroPython&lt;/a&gt; che quest'anno si tiene a Ginevra, più precisamente al CERN. Sarò però a Zurigo per un paio di giorni a rompere le palle ad un amico che lavora li per Google :-)&lt;br&gt;

Tra le &lt;a href="http://indico.cern.ch/conferenceTimeTable.py?confId=44&amp;detailLevel=contribution&amp;viewMode=room"&gt;infinite&lt;/a&gt; sessioni ce n'è una intitolata &lt;a href="http://indico.cern.ch/contributionDisplay.py?contribId=68&amp;sessionId=41&amp;confId=44"&gt;Programming Avalon with IronPython&lt;/a&gt; che magari riuscirò a seguire e vi posterò le mie impressioni. Questo è il contenuto:&lt;p&gt;
&lt;p&gt;
&lt;i&gt;This talk will use a simple (but useful) example application to demonstrate how
Windows Presentation Foundation (WPF) applications can be build using Python. 

The talk will begin by explaining key Microsoft .NET concepts and how they can be
accessed though IronPython. Authoring simple eXtensible Application Markup Language
(XAML) interfaces will also be demonstrated, both using Microsoft's GUI tools and by
writting XAML code directly. Finally, the key points in building and packaging a
complete WPF application will be illustrated.&lt;/i&gt;
&lt;p&gt;
Ho scoperto che purtroppo Alan Kay che aveva un keynote non ci sarà per problemi di salute. Tanto per la cronaca è l'inventore dell'OOP, di Smalltalk e un pò di altra roba credo.&lt;br&gt;

Ricapitoliamo:&lt;br&gt;
&lt;p&gt;
1-2 luglio: Zurigo&lt;br&gt;
3-5 luglio: EuroPython&lt;br&gt;
&lt;p&gt;
Azz ci sono ancora 4 giorni. Quei 4 giorni saranno i più tosti perchè pareciperò allo sprint di PyPy (vedere post precedente per delucidazioni) insieme a gente di tutta Europa e non solo. Cosa è uno sprint? Prendi 10-15 persone skillate (escludendo me ovviamente :-D), le piazzi in una stanza con i loro portatili, una lavagna e un pò di cibo e fai in modo che scrivano codice portando avanti un progetto tutte insieme simultaneamente. PyPy usa molto questo strumento di sviluppo (e anche altri progetti opensource). Nella pratica funziona benissimo perchè tutto il core team è li insieme e chi come me ha la fortuna di parteciparvi può apprendere direttamente da loro le tecniche di sviluppo sul progetto. Ho anche scaricato 4 giga di video su PyPy hahahaha :-D&lt;p&gt;

So per vie traverse (diciamo che sono andato a guardare nella sua cartella sul subversion :-)) che Antonio Cuni (l'italiano artefice del backend .NET) ha finito la tesi intitolata "Implementing Python with .NET", se qualcuno è interessato mi faccia sapere che chiedo a lui se posso divulgarla.&lt;br&gt;

Se sopravviverò a 4 giorni di coding ininterrotto vi faccio un fischio, intanto vi linko le foto dell'ultimo sprint di PyPy a Tokyo dove mannaggia causa esami non sono potuto andare (ok mi flagello già da solo dato che gli sprint sono solitamente rimborsati per gli studenti): &lt;a href="http://www.flickr.com/photos/chrigstrom/sets/72057594116388174/"&gt;http://www.flickr.com/photos/chrigstrom/sets/72057594116388174/&lt;/a&gt;
&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/43803.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2006/06/30/43803.aspx</guid>
            <pubDate>Fri, 30 Jun 2006 12:13:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2006/06/30/43803.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/43803.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/43803.aspx</trackback:ping>
        </item>
        <item>
            <title>.NET in tutte le salse</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2006/06/23/43362.aspx</link>
            <description>Dato che il mio blog è morto (evviva tophost.it) vi rompo le palle qui :-)

Oggi dopo aver dannato mmap su MacOSX e FreeBSD e non aver ancora trovato la soluzione ad un rognoso bug che non dipende nemmeno dal mio codice ho deciso di smanettare un pò con il progetto "padre" per cui sto facendo il Summer Of Code. Non che fosse la prima volta, ma stavolta ho deciso di provare i backend alto livello.
&lt;p&gt;
Spiego velocemente cosa significhi: il progetto per cui programmo è finanziato dall'UE e ha obiettivi molto alti e in parte "fantascientifici" ma pian piano li sta raggiungendo anche grazie all'apporto di nuove persone della community Python. Tra questi obiettivi c'è quello di "translation", cioè poter tradurre codice Python in N linguaggi target. Ora come ora è possibile tradurre TUTTO in C e in LLVM grazie ai rispettivi backend low-level. Ora immaginate che il vostro bel programmino Python debba girare sulla nuova fiammante versione di MS .NET... cosa fate? Oggi lo si riscrive e via, ma un giorno basterà chiamare il metodo compile_cli() dopo aver caricato il sorgente nel "traduttore" per generare IL e file exe .NET che è quello che ho fatto oggi pomeriggio :-) Ho scritto un programmino stupido, l'ho tradotto in .il e .exe, ho installato Mono su MacOSX, ho eseguito il .exe e ha funzionato alla perfezione, ho spostato con ssh il .exe su Linux e ripetuto l'esperimento e poi rifatto la medesima cosa con WinXP e .NET 2.0 e boom! posso scrivere codice Python e tradurlo in .NET senza frizzi e lazzi. Scordatevi di Python.NET e IronPython (ottime idee ma secondo me questa è la strada giusta), il backend CLI sviluppato da Antonio Cuni (guardacaso c'è un italiano dietro a tutto questo ;-) è una figata.
&lt;p&gt;
Tanto per aggiungere carne al fuoco esiste anche un backend in sviluppo Javascript che per tutta sta AJAX-mania potrebbe tornare utile: scrivo in Python, genero Javascript e apro il browser per testare :-)
&lt;p&gt;
Gli altri backend in progress sono Squeak (una versione di Smalltalk opensource), Common Lisp e forse ho trovato un pazzo che comincerà il backend per la JVM ;-)
&lt;p&gt;
Ah se la gente fosse capace di farsi pubblicità. Ecco qui: &lt;a href="http://codespeak.net/pypy/dist/pypy/doc/translation.html#the-object-oriented-backends"&gt;http://codespeak.net/pypy/dist/pypy/doc/translation.html#the-object-oriented-backends&lt;/a&gt;
&lt;p&gt;
ps. pypy è un progetto molto complesso che io non ho neanche compreso per intero e cui obiettivi vanno ben al di la del solo task di traduzione a cui ho accennato. Magari alla maggior parte di voi non fregherà una mazza ma io trovo che questo progetto faccia parte del futuro ;-)&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/43362.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2006/06/23/43362.aspx</guid>
            <pubDate>Fri, 23 Jun 2006 02:51:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2006/06/23/43362.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/43362.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/43362.aspx</trackback:ping>
        </item>
        <item>
            <title>Google Summer of Code</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2006/04/24/39314.aspx</link>
            <description>&lt;p&gt;
Studenti di UGIdotNET unitevi perche` quest'anno il SoC (Summer Of Code) sta per aprire le danze!&lt;p&gt;

Se vi interessa scrivere codice e non avete paura dell'open source. Se vi interessa guadagnare qualche soldino e sapete rispettare le scadenze. Se volete visibilita` internazionale e partecipare ad un progetto a cui collabora praticamente tutta la scena dell'open source mondiale fatevi avanti.&lt;p&gt;

In cosa consiste? Voi vi informate e scegliete un progetto che vi interessa, convincete la societa` o la fondazione o la tal persona che siete la persona giusta per quel progetto e incrociate le dita. Se venite scelti avete la possibilita` di guadagnare $ 4500 e avere il vostro nome nella (in modo figurativo) hall of fame dell'edizione 2006 del Google SoC.&lt;p&gt;
&lt;p&gt;
Perche` posto qui? Perche` il Mono Project e` a mio avviso uno dei piu` prolifici di idee interessanti e siccome mi aspetto che su UGIdotNET si nasconda qualche studente appassionato di .NET e siccome a me non viene in tasca niente a segnarlarvelo lo faccio volentieri. Io ho gia` cominciato a guardarmi in giro per il SoC ;)&lt;p&gt;
&lt;p&gt;
Ah, la url http://code.google.com/soc/&lt;p&gt;

&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/39314.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2006/04/24/39314.aspx</guid>
            <pubDate>Mon, 24 Apr 2006 18:56:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2006/04/24/39314.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/39314.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/39314.aspx</trackback:ping>
        </item>
        <item>
            <title>Nokia rilascia open source Python for Series 60</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2006/01/31/34021.aspx</link>
            <description>Forse per molti di voi e` una notizia senza valore ma personalmente e` una bella notizia (come Pythonista) e di riflesso credo lo sia anche per quanti di voi hanno a che fare con la programmazione mobile e le piattaforme Symbian.

Qui ulteriori notizie: &lt;a href="http://www.ameinfo.com/76819.html"&gt;http://www.ameinfo.com/76819.html&lt;/a&gt;

Tenete d'occhio sourceforge ;)&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/34021.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2006/01/31/34021.aspx</guid>
            <pubDate>Tue, 31 Jan 2006 22:44:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2006/01/31/34021.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/34021.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/34021.aspx</trackback:ping>
        </item>
        <item>
            <title>.NET vs Python</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2005/12/06/31231.aspx</link>
            <description>Non vi allarmate non ho alcuna intenzione di mettermi a fare comparazioni accademiche (blah blah) semplicemente e` una idea nata da un post di &lt;a href="http://blogs.ugidotnet.org/PuntoRete/"&gt;Michele Bersani&lt;/a&gt;. Quando ho letto il post sull'&lt;a href="http://blogs.ugidotnet.org/puntorete/archive/2005/11/30/30816.aspx"&gt;HttpListener&lt;/a&gt; di .NET 2 ho riscritto in cinque minuti con le class della libreria di Python un esempio uguale che funzionasse su tutti i sistemi operativi che mi venivano in mente. Poi ho visto l'ultimo suo script e mi e` balzata l'idea di augurare una (blanda e discontinua) sezione sul mio blog di comparazione a suon di script e programmi senza molti commenti. Quindi ecco qui le prime due "puntate":

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.oluyede.org/blog/2005/12/04/httplistener-net-vs-basehttpserver-python/trackback/"&gt;HttpListener (.NET) vs BaseHTTPServer (Python)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oluyede.org/blog/2005/12/06/ftp-uploader-net-vs-python/trackback/"&gt;FTP Uploader (.NET vs Python)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

Questo e` l'url dei post di quella categoria: &lt;a href="http://www.oluyede.org/blog/category/dotnetvspython/"&gt;http://www.oluyede.org/blog/category/dotnetvspython/&lt;/a&gt;
e se vi interessa seguirla dal vostro fido newsreader: &lt;a href="http://www.oluyede.org/blog/category/dotnetvspython/feed"&gt;http://www.oluyede.org/blog/category/dotnetvspython/feed&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/31231.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2005/12/06/31231.aspx</guid>
            <pubDate>Tue, 06 Dec 2005 22:38:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2005/12/06/31231.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/31231.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/31231.aspx</trackback:ping>
        </item>
        <item>
            <title>Continuazioni</title>
            <link>http://blogs.ugidotnet.org/lawrence/archive/2004/09/22/3070.aspx</link>
            <description>Vi segnalo un interessantissimo articolo scritto da un amico che tratta il complesso mondo delle continuazioni nella programmazione:&lt;br/&gt;
&lt;a href="http://www.siforge.org/articles/2004/09/20-la_magia_di_callcc.html"&gt;La magia di call/cc&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/lawrence/aggbug/3070.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lawrence Oluyede</dc:creator>
            <guid>http://blogs.ugidotnet.org/lawrence/archive/2004/09/22/3070.aspx</guid>
            <pubDate>Wed, 22 Sep 2004 00:38:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/lawrence/archive/2004/09/22/3070.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/lawrence/comments/commentRss/3070.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/lawrence/services/trackbacks/3070.aspx</trackback:ping>
        </item>
    </channel>
</rss>