<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Angel "Java" Lopez : Desarrollo de Software, Programaci&amp;#243;n Funcional</title><link>http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/Programaci_26002300_243_3B00_n+Funcional/default.aspx</link><description>Tags: Desarrollo de Software, Programaci&amp;#243;n Funcional</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Revista de Pragmatic Programmer</title><link>http://msmvps.com/blogs/lopez/archive/2009/07/03/revista-de-pragmatic-programmer.aspx</link><pubDate>Fri, 03 Jul 2009 09:53:23 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1697663</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1697663</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/07/03/revista-de-pragmatic-programmer.aspx#comments</comments><description>&lt;p&gt;&lt;img style="display:inline;margin-left:0px;margin-right:0px;" src="http://www.todocontenidos.com/images/articles/pragpub.png" align="left" alt="" /&gt; Ayer, gracias a un tweet de @chillicoder, me enteré de la aparición del primer número de la revista de la gente de Pragmatic Programmer:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.pragprog.com/magazines" href="http://www.pragprog.com/magazines"&gt;http://www.pragprog.com/magazines&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Les recomiendo bajarse la edición actual, de Julio. Yo la bajé desde esa página en formato PDF, pero también está disponible para otros formatos (notablemente, para Kindle). Esta edición no tiene desperdicio.&lt;/p&gt;  &lt;p&gt;Encuentro una editorial y artículo de Michael Swaine, un buen reencuentro con este autor, que debo estar leyendo desde que escribía en la Dr. Dobb’s.&lt;/p&gt;  &lt;p&gt;Leo un artículo donde explican su posición para poner a disposición este material, sin restricciones, y sobre cómo lo producen, en formato PDF (usando &lt;a href="http://www.lowagie.com/iText/" target="_blank"&gt;iText&lt;/a&gt;). Cada artículo tiene enlaces al final, sobre los temas y productos mencionados. Es bueno ver cómo uno de los primeros artículos explica cómo producen la propia revista y otros materiales. Es parte de lo ágil: explicar, dejar algo, que sirva para que las buenas prácticas o cosas aprendidas, puedan difundirse más allá del equipo que lo usa.&lt;/p&gt;  &lt;p&gt;Hay un artículo de Andy Lester (programador desde hace 20 años, visitar su blog &lt;a title="http://www.theworkinggeek.com/" href="http://www.theworkinggeek.com/"&gt;http://www.theworkinggeek.com/&lt;/a&gt;), sobre “The layoffs are coming”, donde explica tips para conseguir trabajo, o mantenerse en el mismo. En un mundo cambiante y en crisis, vemos que también el programador americano promedio se ve afectado.&lt;/p&gt;  &lt;p&gt;Michael Swaine entrevista a Rick Hickey (que creó Clojure, un dialecto muy popular de Lisp, que corre sobre la máquina virtual de Java, que por alguna extraña razón, es más popular que &lt;a href="http://code.google.com/p/ajlisp/" target="_blank"&gt;AjLisp&lt;/a&gt;… :-). Un artículo sin desperdicio, que tengo que leer en detalle. Pueden visitar &lt;a title="http://clojure.org/" href="http://clojure.org/"&gt;http://clojure.org/&lt;/a&gt; y he coleccionado enlaces que me parecieron interesantes en &lt;a href="http://delicious.com/ajlopez/clojure"&gt;http://delicious.com/ajlopez/clojure&lt;/a&gt;. (bueno, vería también &lt;a href="http://delicious.com/ajlopez/lisp"&gt;http://delicious.com/ajlopez/lisp&lt;/a&gt; y &lt;a href="http://delicious.com/ajlopez/functionalprogramming"&gt;http://delicious.com/ajlopez/functionalprogramming&lt;/a&gt; si están aburridos un fin de semana…. :-). Esta misma revista incluye un artículo técnico sobre Clojure, sobre su manejo de exceptions.&lt;/p&gt;  &lt;p&gt;El bueno de Dave Thomas es entrevistado por Swaine, sobre el proceso de publicación de los libros y revistas, y el mercado de libros electrónicos. Son temas importantes: qué va a pasar con el libro impreso? Hay cambios, y Thomas explica su visión.&lt;/p&gt;  &lt;p&gt;Hay un artículo de autor John Shade, sobre Microsoft, Google, y Wolfram Alpha, cómo es la pelea por la arena de los buscadores. Finalmente, hay un calendario de eventos que vienen (me temo que algo centrado en eventos de EE.UU.)&lt;/p&gt;  &lt;p&gt;Y si alguien todavía no lo conoce, les recomiendo la visita a todo el sitio&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.pragprog.com"&gt;http://www.pragprog.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;y los blogs de Andy Hunt &lt;a title="http://andy.pragprog.com/" href="http://andy.pragprog.com/"&gt;http://andy.pragprog.com/&lt;/a&gt; y Dave Thomas &lt;a title="http://pragdave.pragprog.com/" href="http://pragdave.pragprog.com/"&gt;http://pragdave.pragprog.com/&lt;/a&gt;. Tienen videos y podcast, yo prefiero lo escrito: &lt;a title="http://www.pragprog.com/articles" href="http://www.pragprog.com/articles"&gt;http://www.pragprog.com/articles&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1697663" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Programaci_26002300_243_3B00_n+Funcional/default.aspx">Programaci&amp;#243;n Funcional</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+Agil/default.aspx">Desarrollo Agil</category></item><item><title>Presentando AjCat</title><link>http://msmvps.com/blogs/lopez/archive/2009/04/29/presenting_2D00_ajcat.aspx</link><pubDate>Wed, 29 Apr 2009 10:24:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1691539</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1691539</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2009/04/29/presenting_2D00_ajcat.aspx#comments</comments><description>&lt;p&gt;Hace algo m&amp;aacute;s de un mes, estuve trabajando en un int&amp;eacute;rprete del lenguaje Cat:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cat-language.com/" title="The Cat Programming Language"&gt;The Cat Programming Language&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Cat is a functional stack-based programming language inspired by the &lt;/em&gt;&lt;a href="http://www.latrobe.edu.au/philosophy/phimvt/"&gt;&lt;em&gt;Joy programming language&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. The primary differences is that Cat provides a static type system with type inferencing (like ML or Haskell), and a term rewriting macro language extension language called &lt;/em&gt;&lt;a href="https://ajlopez.wordpress.com/wp-admin/metacat.html"&gt;&lt;em&gt;MetaCat&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Cat is a high-level intermediate language translation that can also be used as a stand alone language for simple application development. In this way it occupies a similar niche to PostScript. Cat is also an appropriate language for teaching of basic programming concepts. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://todocontenidos.com/images/articles/ajcat01.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Si no conocen el lenguaje Cat, recomiendar&amp;iacute;a leer:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.cat-language.com/tutorial.html"&gt;Cat Tutorial&lt;/a&gt; &lt;br /&gt;&lt;a target="_blank" href="http://www.cat-language.com/manual.html"&gt;Cat Specification&lt;/a&gt; &lt;br /&gt;&lt;a target="_blank" href="http://www.cat-language.com/primitives.html"&gt;Cat Primitives&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Publiqu&amp;eacute; el c&amp;oacute;digo como parte de mi proyecto Code Katas en Google Code. El nombre que us&amp;eacute; es AjCat:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/ajcodekatas/source/browse/#svn/trunk/AjCat" title="http://code.google.com/p/ajcodekatas/source/browse/#svn/trunk/AjCat"&gt;http://code.google.com/p/ajcodekatas/source/browse/#svn/trunk/AjCat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La soluci&amp;oacute;n tiene tres proyectos:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://todocontenidos.com/images/articles/ajcat02.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;La actual implementaci&amp;oacute;n no es completa. Solo soporta enteros, todav&amp;iacute;a no soporta objetos .NET, y no hay primitivas de gr&amp;aacute;ficos. Pero est&amp;aacute; implementado gran parte de las primitivas y funciones definidas en Cat.&lt;/p&gt;
&lt;p&gt;Corriendo el programa de consola, pueden ingresar y evaluar expresiones:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://todocontenidos.com/images/articles/ajcat05.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Este c&amp;oacute;digo est&amp;aacute; dedicado a &lt;a href="http://weblogs.shockbyte.com.ar/"&gt;Rodolfo Finocchieti&lt;/a&gt; (&lt;a href="http://twitter.com/rodolfof"&gt;@rodolfof&lt;/a&gt; en Twitter) quien me dej&amp;oacute; un comentario ac&amp;aacute; en este blog, coment&amp;aacute;ndome de este lenguaje Cat, una idea fascinante.&lt;/p&gt;
&lt;p&gt;Los tests est&amp;aacute;n en verdes:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://todocontenidos.com/images/articles/ajcat03.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Y hay un buen code coverage&lt;/p&gt;
&lt;p&gt;&lt;img src="http://todocontenidos.com/images/articles/ajcat04.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Como siempre, me divert&amp;iacute; escribiendo este c&amp;oacute;digo.&lt;/p&gt;
&lt;p&gt;Nos leemos!&lt;/p&gt;
&lt;p&gt;Angel &amp;ldquo;Java&amp;rdquo; Lopez &lt;br /&gt;&lt;a href="http://www.ajlopez.com/"&gt;http://www.ajlopez.com/&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoying &lt;a href="http://ajlopez.zoomblog.com/archivo/2009/04/08/eric-Clapton-Everyday-I-Have-the-Blues.html" title="Eric Clapton Everyday I Have the Blues Live"&gt;Eric Clapton Everyday I Have the Blues Live&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1691539" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/C+Sharp/default.aspx">C Sharp</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Lenguajes+de+Programaci_26002300_243_3B00_n/default.aspx">Lenguajes de Programaci&amp;#243;n</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Programaci_26002300_243_3B00_n+Funcional/default.aspx">Programaci&amp;#243;n Funcional</category></item><item><title>Babel de lenguajes en .NET</title><link>http://msmvps.com/blogs/lopez/archive/2008/10/16/babel-de-lenguajes-en-net.aspx</link><pubDate>Thu, 16 Oct 2008 12:03:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650994</guid><dc:creator>lopez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1650994</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2008/10/16/babel-de-lenguajes-en-net.aspx#comments</comments><description>&lt;p&gt;&lt;img style="margin:0px 20px 20px 0px;" src="http://www.ajlopez.com/images/articles/babel.jpg" align="left" alt="" /&gt; El viernes pasado tuve el gran gusto de compartir un TechNight con los buenos de &lt;a href="http://blog.salias.com.ar/" target="_blank"&gt;Martín Salías&lt;/a&gt; y &lt;a href="http://weblogs.shockbyte.com.ar/rodolfof/Default.aspx" target="_blank"&gt;Rodolfo Finocchieti&lt;/a&gt;, en temas que nos gustan a los tres: lenguajes de programación, en este caso, implementados sobre .NET. Ya habíamos preanunciado el evento en:&lt;/p&gt; &lt;p&gt;&lt;a title="Technight en proceso" href="http://blog.salias.com.ar/2008/09/technight-en-proceso.html"&gt;Technight en proceso&lt;/a&gt;&lt;br /&gt;&lt;a title="Papa fritas, cervezas y una babel de esos raros lenguajes nuevos" href="http://msmvps.com/blogs/lopez/archive/2008/09/17/papa-fritas-cervezas-y-una-babel-de-esos-raros-lenguajes-nuevos.aspx"&gt;Papa fritas, cervezas y una babel de esos raros lenguajes nuevos&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(bueno, me gustó la imagen que usé entonces para ilustrar&amp;nbsp;mi post, así que la repito acá... ;-).&lt;/p&gt; &lt;p&gt;Desde que tengo memoria, ha habido lenguajes de programación y más lenguajes de programación. En mi tierna infancia ya había varios lenguajes (sí, algunos mal intencionados van divulgando por ahí que cuando yo era un infante, había una sola masa continental, pero son rumores infundados... ;-).&lt;/p&gt; &lt;p&gt;Recuerdo un artículo de los 60 del Scientific American, donde se mostraba un lenguaje propuesto, no totalmente desarrollado, el CPL (Combined Programming Language). Recordaba vagamente que era parte de un trabajo de &lt;a href="http://en.wikipedia.org/wiki/Christopher_Strachey" target="_blank"&gt;Christopher Strachey&lt;/a&gt;, hoy lo pueden comprobar en el corto artículo de la Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Combined_Programming_Language" target="_blank"&gt;sobre CPL&lt;/a&gt;. (Bien! la neurona todavía me trae recuerdos más o menos &amp;quot;accurate&amp;quot;...;-).&lt;/p&gt; &lt;p&gt;Se vió que era un lenguaje algo ambicioso. Yo llegué a programar con una versión simplificada, el &lt;a href="http://en.wikipedia.org/wiki/BCPL" target="_blank"&gt;BCPL&lt;/a&gt;, de &lt;a href="http://en.wikipedia.org/wiki/Martin_Richards" target="_blank"&gt;Martin Richards&lt;/a&gt;&amp;nbsp;que tenía algo que me sigue fascinando: su compilador estaba escrito en BCPL, así que bastaba usar una máquina que tuviera implementando BCPL para poder ir armando otros compiladores BCPL en otras&amp;nbsp;máquinas. También se podía generar un O-Code para una máquina virtual, y reimplementar esa máquina virtual en otras computadoras. Desde ideas de BCPL partieron el &lt;a href="http://en.wikipedia.org/wiki/B_(programming_language)" target="_blank"&gt;B&lt;/a&gt; y nuestro conocido &lt;a href="http://en.wikipedia.org/wiki/C_(programming_language)" target="_blank"&gt;lenguaje C&lt;/a&gt;. Otros intentos de máquinas virtuales fueron el P-Code de Pascal BSD, creo recordar, y también las Smalltalk machine que siempre se pensaron armar sobre&amp;nbsp;ideas de Smalltalk. Siempre es interesante encontrar la idea de un lenguaje que implementa su propio compilador o intérprete. Recuerdo el mítico &lt;a href="http://en.wikipedia.org/wiki/Small-C" target="_blank"&gt;Small C&lt;/a&gt; de Cain y luego Hendrix, que aparecía a principio de los ochenta en Dr. Dobb&amp;#39;s. Este año reencuentro esa idea de &amp;quot;lenguajes auto sustentables&amp;quot; en &lt;a title="Self-sustaining Systems, Cola, Pepsi, Coke y Mate" href="http://msmvps.com/blogs/lopez/archive/2008/01/14/self-sustaining-systems-cola-pepsi-coke-y-mate.aspx"&gt;Self-sustaining Systems, Cola, Pepsi, Coke y Mate&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Hoy no podemos hablar, como antes (algunas décadas), de &amp;quot;yo programo en X (un solo lenguaje)&amp;quot;. Cada vez más, tenemos más opciones. Habrá que ver que no todas son potables para todos los trabajos. Pero pienso que debemos de vez en cuando, sumergirnos en el estudio de otros lenguajes, para tener una visión más amplia, ejercitar la neurona, y tener una nueva&amp;nbsp;&amp;quot;tool&amp;quot; en nuestra caja de herramientas.&lt;/p&gt; &lt;p&gt;En los noventa, nos encontramos de nuevo con el auge de las máquinas virtuales, con la aparición de Java. Con el nacimiento de .NET, tenemos una máquina virtual (aunque alguien de Microsoft se atragantaría con su lengua antes de denominar al CLR, Common Language Runtime, como máquina virtual).&lt;/p&gt; &lt;p&gt;Es sobre .NET y su máquina virtual, donde aparecieron múltiples implementaciones de lenguajes. Pero basta de historia, y pasemos a la charla en sí.&lt;/p&gt; &lt;h3&gt;La charla&lt;/h3&gt; &lt;p&gt;Excelente lo que mostraron Martín y Rodolfo. Yo comenté algunos temas de programación funcional, orientados a F#, basado en ejemplos que vienen con el lenguaje, y de libros. Los recursos que utilicé y nombré estan en mi anterior post:&lt;/p&gt; &lt;p&gt;&lt;a title="Recursos de F# y Programaci&amp;oacute;n Funcional" href="http://msmvps.com/blogs/lopez/archive/2008/10/11/recursos-de-f-y-programaci-243-n-funcional.aspx"&gt;Recursos de F# y Programación Funcional&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Quisiera poner acá un resumen de lo que mostraron Martín y Rodolfo.&lt;/p&gt; &lt;p&gt;Rodo se dedicó a&amp;nbsp;comentar en particular dos lenguajes, Boo y Cat, además de seguir comentando sobre las ideas de funcional. También mostró un Toy language, implementado usando las capacidades de Dynamic Language Runtime (Rodolfo, no encontré si está disponible ese ejemplo). Pueden bajarse su presentación desde&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.shockbyte.com.ar/rodolfof/archive/2008/10/14/technight-programming-in-babel.aspx" target="_blank"&gt;TechNight: programming in Babel&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;img style="margin:0px 20px 20px 0px;" src="http://www.ajlopez.com/images/articles/boo.png" align="left" alt="" /&gt;&amp;nbsp;&lt;a href="http://boo.codehaus.org/" target="_blank"&gt;Boo&lt;/a&gt; lenguaje de programación creado por Rodrigo Barreto de Oliveira. Pueden leer el Boo Manifesto para conocer más sobre la historia del lenguaje. Rodrigo necesitaba un lenguaje que se adaptara a lo que necesitaba programar, y como no encontraba ninguno que diera la talla, se lanzó a crear su propio lenguaje. El estaba entusiasmado con &lt;a href="http://www.python.org/" target="_blank"&gt;Python&lt;/a&gt;, pero en esos momentos no lo podía usar en el proyecto que tenía que desarrollar. Boo tiene una sintaxis inspirada en Python, declaración automática de variables, inferencia automática de tipos, casteo de tipos automático, funciones como objetos y ciudadanos de primera clase en el lenguaje, &lt;a href="http://en.wikipedia.org/wiki/Duck_typing" target="_blank"&gt;duck typing&lt;/a&gt; (la gente de Smalltalk reconocerá el concepto, y se asombrará de que exista como tal, para ellos es parte de la naturaleza misma). Rodolfo nos fue mostrando todos estos conceptos, pueden ver más detalles en la presentación que dejó disponible.&lt;/p&gt; &lt;p&gt;&lt;img style="margin:0px 20px 20px 0px;" src="http://www.ajlopez.com/images/articles/cat.jpg" align="left" alt="" /&gt;Otro&amp;nbsp;lenguaje que mostró fue&amp;nbsp; &lt;a href="http://www.cat-language.com/" target="_blank"&gt;Cat Programming Language&lt;/a&gt;. Conocí este lenguaje gracias al bueno de Rodolfo, que me dejó un comentario en este blog (eso es cumplir con &lt;a href="http://msmvps.com/blogs/lopez/archive/2008/01/15/don-t-be-a-canuto.aspx" target="_blank"&gt;Don&amp;#39;t be a Canuto&lt;/a&gt;, bravo!). Es un lenguaje funcional, orientado a pila, que nació de otro trabajo en Java, el &lt;a href="http://www.latrobe.edu.au/philosophy/phimvt/" target="_blank"&gt;Joy Programming Language&lt;/a&gt;. La primera vez que lo ví, me recordó a mi querido &lt;a href="http://en.wikipedia.org/wiki/Forth_%28programming_language%29" target="_blank"&gt;Forth&lt;/a&gt; (aún debo tener en algún cubil mío, la Dr. Dobb&amp;#39;s dedicada a ese lenguaje). Lo que me comentó Rodolfo el viernes, es lo simple que es la solución de código: podemos recorrerla y entenderla. Es un caso de estudio abordable de generación de código compilado en .NET, con instrucciones de Intermediate Language. Vean también cómo un lenguaje definido se puede reimplementar en otros. Lo tienen en JavaScript &lt;a title="Online Cat interpreter" href="http://www.cat-language.com/interpreter.html"&gt;Online Cat interpreter&lt;/a&gt;&amp;nbsp;, en &lt;a title="Cat in Scheme" href="http://code.google.com/p/scheme-cat"&gt;Cat in Scheme&lt;/a&gt;, &lt;a title="Cat in Python" href="http://www.triv.org.uk/~nelis/"&gt;Cat in Python&lt;/a&gt;, &lt;a title="Cat in Haskell" href="http://groups.google.com/group/catlanguage/browse_thread/thread/1cd20cee5a087509"&gt;Cat in Haskell&lt;/a&gt;, &lt;a title="Cat in Haskell using monads" href="http://pied.mine.nu/index.php?page=Lambda&amp;amp;id=22"&gt;Cat in Haskell using monads&lt;/a&gt;, y en &lt;a title="Cat in Omega" href="http://svn.berlios.de/viewcvs/al4nin/trunk/purgatory/Thrist.omg?rev=351"&gt;Cat in Omega&lt;/a&gt;. ¿Tendré que pasarlo a &lt;a href="http://code.google.com/p/ajlisp" target="_blank"&gt;ajlisp&lt;/a&gt; o &lt;a href="http://code.google.com/p/ajbasic"&gt;ajbasic&lt;/a&gt;? ;-)&lt;/p&gt; &lt;p&gt;En su turno, Martín Salías siguió comentando sobre implementaciones de lenguajes en Dynamic Language Runtime, en especial la historia de &lt;a href="http://en.wikipedia.org/wiki/IronPython" target="_blank"&gt;IronPython&lt;/a&gt;, creado por &lt;a href="http://blogs.msdn.com/hugunin/" target="_blank"&gt;Jim Hugunin&lt;/a&gt;. Jim es el creador de Jython, la implementación de Python sobre Java, y quería demostrar que la máquina virtual de .NET no era adecuada para implementar un lenguaje dinámico como Python. Y se lleva la sorpresa de poder hacerlo mejor que en Java. Así va naciendo lo que ahora conocemos como Dynamic Language Runtime, un nuevo namespace de código abierto, que crea Jim dentro de la implementación de IronPython, y que podemos usar para implementar otros lenguajes. Nos da clases de soporte para armar un árbol de expresiones en memoria, y luego generar código para .NET. No hay un lugar separado para bajarse esas clases, pero pueden obtenerlas desde:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/IronPython" href="http://www.codeplex.com/IronPython"&gt;http://www.codeplex.com/IronPython&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Es interesantísimo ver la implementación en detalle, en especial los conceptos aplicados sobre DynamicSite, basta como botón de muestra&lt;/p&gt; &lt;p&gt;&lt;a title="Martin Maly - Building a DLR Language - Dynamic Behaviors 2" href="http://blogs.msdn.com/mmaly/archive/2008/01/19/building-a-dlr-language-dynamic-behaviors-2.aspx"&gt;Martin Maly - Building a DLR Language - Dynamic Behaviors 2&lt;/a&gt;&lt;/p&gt; &lt;p&gt;y visitar el blog de &lt;a href="http://blogs.msdn.com/hugunin/" target="_blank"&gt;Hugunin en MSDN&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Puede ver lo que se está gestando para &lt;a href="http://www.ironruby.net/" target="_blank"&gt;IronRuby&lt;/a&gt; también.&lt;/p&gt; &lt;p&gt;Y comentó sobre todo lo que se está haciendo en JavaScript. Lean su post:&lt;/p&gt; &lt;p&gt;&lt;a title="Javascript - La programaci&amp;oacute;n del futuro" href="http://blog.salias.com.ar/2008/09/javascript-la-programacin-del-futuro.html"&gt;Javascript - La programación del futuro&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Mencionó el trabajo del&amp;nbsp;&amp;quot;monstro&amp;quot; de JavaScript,&amp;nbsp;John Ressig:&lt;/p&gt; &lt;p&gt;&lt;img style="margin:0px 20px 20px 0px;" src="http://ejohn.org/files/jeresig-wordpress-sm.jpg" align="left" alt="" /&gt;&amp;nbsp;&lt;a title="http://ejohn.org/" href="http://ejohn.org/"&gt;http://ejohn.org/&lt;/a&gt;&amp;nbsp;en Twitter &lt;a href="http://twitter.com/jeresig" target="_blank"&gt;@jeresig&lt;/a&gt;&lt;/p&gt; &lt;p&gt;sobre JavaScript, principal creador del &lt;a href="http://jquery.com/" target="_blank"&gt;JQuery&lt;/a&gt;&amp;nbsp;(agregaría que en estos días, Microsoft ha decidido agregar JQuery a &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx" target="_blank"&gt;su implementación de ASP.NET Ajax&lt;/a&gt;). Martín dejó encantada a la audiencia, mostrando lo que hizo Resig: implementar en JavaScript un &lt;a href="http://ejohn.org/blog/overview-of-processing/" target="_blank"&gt;lenguaje gráfico Processing&lt;/a&gt;&amp;nbsp;pasen, lean y vean:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ejohn.org/blog/processingjs/" target="_blank"&gt;Processing.js&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://ejohn.org/files/molten2.png" alt="" /&gt;&lt;/p&gt; &lt;p&gt;(imagen tomada de ese post)&amp;nbsp;&lt;/p&gt; &lt;p&gt;Martín comentó que JavaScript corre en el cliente, con lo que se puede poner trabajo no trivial en esa máquina, haciendo más liviano el trabajo del servidor, que tal vez se encargue de darnos datos sin embellecer, el proceso de agrupación, mostrado, gráfico, puede ser derivado al cliente. Igualmente, hay JavaScript en el servidor, leer:&lt;/p&gt; &lt;p&gt;&lt;a title="Permanent link to Bringing the Browser to the Server" href="http://ejohn.org/blog/bringing-the-browser-to-the-server/"&gt;Permanent link to Bringing the Browser to the Server&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Ahora que en los browsers está el elemento Canvas, podemos usarlo desde JavaScript, leer&lt;/p&gt; &lt;p&gt;&lt;a title="Permanent link to Javascript Sparklines Library" href="http://ejohn.org/projects/jspark/"&gt;Permanent link to Javascript Sparklines Library&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pero vean hasta donde puede llegar JavaScript, viendo el proyecto del bueno de Dan Ingalls:&lt;/p&gt; &lt;p&gt;&lt;a title="Sun Labs Lively Kernel" href="http://research.sun.com/projects/lively/"&gt;Sun Labs Lively Kernel&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Más enlaces&lt;/h3&gt; &lt;p&gt;Para todos los que les gusta explorar los lenguajes de programación, sus paradigmas, ideas y futuro, algunos enalces recolectados en estos días:&lt;/p&gt; &lt;p&gt;&lt;a title="JAOO 2007- Gilad Bracha - Computational Theology, Functional versus Imperative, Language History" href="http://channel9.msdn.com/posts/Charles/JAOO-2007-Gilad-Bracha-Computational-Theology-Functional-versus-Imperative-Language-History-and/"&gt;JAOO 2007- Gilad Bracha - Computational Theology, Functional versus Imperative, Language History&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Ted Neward- On Java and .NET, Software Academics versus Practioners, General Purpose Programming" href="http://channel9.msdn.com/posts/Charles/Ted-Neward-On-Java-and-NET-Software-Academics-versus-Practioners-General-Purpose-Programming-Lan/"&gt;Ted Neward- On Java and .NET, Software Academics versus Practioners, General Purpose Programming&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Prolog just blew my mind!" href="http://metacircular.wordpress.com/2008/09/23/prolog-just-blew-my-mind/"&gt;Prolog just blew my mind!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Dynamic programming futures InfoWorld Analysis 2008-10-13 By Peter Wayner" href="http://www.infoworld.com/article/08/10/13/42TC-dynamic-futures_1.html"&gt;Dynamic programming futures InfoWorld Analysis 2008-10-13 By Peter Wayner&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Erik Meijer, Gilad Bracha, Mads Torgersen- Perspectives on Programming Language Design and Evolu" href="http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Gilad-Bracha-Mads-Torgersen-Perspectives-on-Programming-Language-Design-and-Evolution/"&gt;Erik Meijer, Gilad Bracha, Mads Torgersen- Perspectives on Programming Language Design and Evolu&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Dynamic Languages vs Static Verification - Greg Young [MVP]" href="http://codebetter.com/blogs/gregyoung/archive/2008/05/23/dynamic-languages-vs-static-verification.aspx"&gt;Dynamic Languages vs Static Verification - Greg Young [MVP]&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Joe Gregorio BitWorking JavaScript is the new Smalltalk" href="http://bitworking.org/news/290/JavaScript-is-the-new-Smalltalk"&gt;Joe Gregorio BitWorking JavaScript is the new Smalltalk&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="ST2JS - Smalltalk to Javascript translator" href="http://map.squeak.org/package/11637941-682d-4ce3-bd4c-ba67afef47b5"&gt;ST2JS - Smalltalk to Javascript translator&lt;/a&gt;&amp;nbsp;(el trabajo de nuestro argentino Diego Gomez Deck)&lt;/p&gt; &lt;p&gt;&lt;a href="http://astares.blogspot.com/2008/09/google-chrome-javascript-and-smalltalk.html" target="_blank"&gt;Google Chrome, JavaScript and Smalltalk&lt;/a&gt;&lt;/p&gt; &lt;p&gt;La preparación de esta charla, me movió a escribir y actualizar algo de código de mini intérpretes que estoy armando. Pueden ver el estado actual en:&lt;/p&gt; &lt;p&gt;&lt;a href="http://code.google.com/p/ajbasic"&gt;http://code.google.com/p/ajbasic&lt;/a&gt; Intérprete, con sintaxis AjBasic y ahora también AjSharp&lt;br /&gt;&lt;a href="http://code.google.com/p/ajlisp"&gt;http://code.google.com/p/ajlisp&lt;/a&gt;&amp;nbsp;Intérprete Lisp, bastante terminado&lt;br /&gt;&lt;a href="http://code.google.com/p/ajtalk"&gt;http://code.google.com/p/ajtalk&lt;/a&gt;&amp;nbsp;Intérprete bytecodes a la Smalltalk, más adelante podría compilarse&lt;br /&gt;&lt;a href="http://code.google.com/p/ajfunc"&gt;http://code.google.com/p/ajfunc&lt;/a&gt;&amp;nbsp;Idem, pero orientado a la F#&lt;br /&gt;&lt;a href="http://code.googe.com/p/ajlogo"&gt;http://code.googe.com/p/ajlogo&lt;/a&gt; &amp;nbsp;El lenguaje Logo siempre es interesante de investigar&lt;/p&gt; &lt;p&gt;Bueno, como siempre, los enlaces de estos temas, que colecciono, desde:&lt;/p&gt; &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/dlr"&gt;http://delicious.com/ajlopez/dlr&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/javascript"&gt;http://delicious.com/ajlopez/javascript&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/programminglanguages"&gt;http://delicious.com/ajlopez/programminglanguages&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/functionalprogramming"&gt;http://delicious.com/ajlopez/functionalprogramming&lt;/a&gt;&lt;br /&gt;&lt;a title="http://delicious.com/ajlopez/ruby" href="http://delicious.com/ajlopez/ruby"&gt;http://delicious.com/ajlopez/ruby&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/prolog"&gt;http://delicious.com/ajlopez/prolog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/lisp"&gt;http://delicious.com/ajlopez/lisp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/smalltalk"&gt;http://delicious.com/ajlopez/smalltalk&lt;/a&gt;&lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/logo"&gt;http://delicious.com/ajlopez/logo&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Nos leemos!&lt;/p&gt; &lt;p&gt;Angel &amp;quot;Java&amp;quot; Lopez&lt;br /&gt;&lt;a href="http://www.ajlopez.com/"&gt;http://www.ajlopez.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650994" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Desarrollo+de+Software/default.aspx">Desarrollo de Software</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Lenguajes+de+Programaci_26002300_243_3B00_n/default.aspx">Lenguajes de Programaci&amp;#243;n</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Programaci_26002300_243_3B00_n+Funcional/default.aspx">Programaci&amp;#243;n Funcional</category></item></channel></rss>