Archive for the '16845' Category

AjErl Implementando Erlang en C# (1) El proyecto

Tuesday, June 24th, 2014

Siguiente Post

Hace ya un tiempo, para practicar C# y TDD y explorar ideas de Erlang, inicié:

https://github.com/ajlopez/AjErl

La estructura de la solución:

Tiene el proyecto núcleo de librería de clases, el proyecto de tests, y estoy armando un REPL (Read Eval Print Loop) como programa de consola. Lo interesante de Erlang es que internamente tiene procesos livianos, implementados en la propia máquina virtual, que pueden comunicarse entre sí enviando y recibiendo mensajes inmutables. No pretendo implementar una máquina virtual de ese tipo, sino tener procesos en threads. Nunca van a llegar a ser tan rápidos como los de Erlang, pero es un primer “baby step” a explorar, antes de tratar de mejorar la implementación.

Los mensajes se pueden enviar a una cola por proceso (thread en este caso), y ya tengo implementado la aceptación de los mensajes, su rechazo y vuelta a procesar, como en Erlang nativo.

Pero hoy quería comentar brevemente la implementación de cómo transforma texto de entrada en expresiones y formas Erlang:

Hay un Lexer que devuelve tokens, y estos tokens tienen un valor y un tipo. Ya puedo reconocer un átomo (un nombre que comienza en letra minúscula), una variable, delimitadores, operadores, números enteros y reales, strings. El Lexer es consumido por un Parser, que tiene dos grandes métodos públicos: uno que parsea expresiones, usado desde el REPL, y otro que parsea lo que en Erlang se llama un form, sería como una definición de función en un módulo de Erlang. También hay formas que declaran el nombre del módulo, o que otras formas se exportan con nombre y cantidad de argumentos. En dichos módulos no se aceptan expresiones, sino solamente ese tipo de declaraciones form.

Si ven la historia de los commits, verán que no todo se desarrolló de antemano, sino que fue creciendo de a poco, a medida que me planteaba pequeños casos de uso a implementar.

Próximos temas: comentar la implementación de expresiones, forms, procesos como threads con mailbox para mensajes, y el REPL. Tengo que seguir trabajando en la implementación de mensajes y procesos distribuidos.

Nos leemos!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

Resoluciones del Nuevo Mes: Febrero 2014

Saturday, February 8th, 2014

Revisión de mis Resoluciones de Enero:

– Comenzar a implementar un modelo de actores a la Akka en C# [completo] ver repo
– Comenzar a implementar un intérprete Scala en JavaScript [completo] ver repo
– Trabajar en AjErl, Erlang en C# [completo] ver repo
– Trabajar en Mass (tengo varias ideas para implementar más module pattern y scope de variables) [pendiente]
– Trabajar en DylanSharp [completo] ver repo
– Comenzar una implementacion de ML (JavaScript? C#?) [pendiente]

También trabajé en:

– Mejorar intérprete Scala en C# [completo] ver repo
– Agregar notación dot en mi intérprete Lisp en C# [completo] ver repo
– Mejorar el intérprete Ruby en JavaScript [completo] ver repo
– Mejorar el intérprete Clojure en C# [completo] ver repo
– Primeros templates y tasks generando código Sinatra desde AjGenesis para Node [completo] ver repo

Mis resoluciones para este nuevo mes:

– Completar mensajería distribuida en AjErl
– Completar notación dot en AjLisp para acceder a tipos y objetos nativos
– Mejorar ClojSharp
– Trabajar en ScaScript
– Trabajar en ScalaSharp
– Agregar alcance de variables a Mass
– Completar primera versión de model de actores Aktores en C#
– Más tareas de generación de código, plantillas, modelos en AjGenesis para Node, generando código para Express, Meteor, Sinatra

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Esos Raros Lenguajes Nuevos (1) VANs en ALT.NET Hispano

Monday, April 9th, 2012

En Marzo dí una charla presencial en el Microsoft User Group de Argentina, en Buenos Aires, ver:

Esos Raros Lenguajes Nuevos: Javascript/Node, Scala, Erlang, Clojure, Ruby, Python

Ahora, el sábado que viene (14 de Abril) y el siguiente sábado (21 de Abril) la gente de ALT.NET Hispano ha organizado dos VAN (reuniones virtuales) para que pueda comentar sobre esos lenguajes, que no son tan raros ni tan nuevos, pero que en general pueden parecerlo dentro de la comunidad .NET:

– Javascript en NodeJs
– Scala
– Erlang
– Clojure
– Python
– Ruby

Este es el anuncio de la primera reunión:

La comunidad ALT.NET Hispano (http://altnethispano.org) realizará una VAN sobre Esos raros lenguajes nuevos NodeJs, Scala, Clojure, Erlang, Python, Ruby Parte 1, con Angel Java Lopez.

Fecha: Sábado 14 de Abril del 2012 a las 18:00 hrs. Hora Internacional (GMT/UTC), con una duración aproximada de 2 horas.

Pueden plantear sus comentarios e inquietudes sobre el tema de la reunión en: https://groups.google.com/d/topic/altnet-hispano/mRQRHvoAvKc/discussion

Para mayor información sobre cómo atender la reunión consulten: http://tinyurl.com/van-hispano

Mi idea es mostrar a qué problemas se orientan estos lenguajes. Por ejemplo, cómo tratan de resolver temas de escalabilidad y computación distribuida en los cuatro primeros (Javascript en NodeJs, Scala, Erlang, Clojure). Y cómo se ha ido formando comunidades, y ecosistemas de paquetes y desarrollo web, especialmente en los dos últimos (Python y Ruby). Mi plan es dar los tres primeros (Javascript/NodeJs, Scala, Erlang) este sábado que viene, y los otros (Clojure, Python, Ruby) en la siguiente sesión.

Este es el primer post de la serie, donde voy a ir escribiendo, comentando sobre recursos y enlaces que fui descubriendo, además de los ya presentados en el post que mencioné al principio.

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Erlang en Buenos Aires (1) Erlounge Marzo 2012

Monday, March 19th, 2012

La semana pasada, el jueves 15 de Marzo, tuve el gusto de asistir a la (primera, creo) reunión del grupo Erlang Argentina, en las oficinas de Inaka Networks en Buenos Aires. El anfitrión principal fue el fundador de la empresa, el bueno de Chad Depue. Ver:

http://www.erlang-factory.com/conference/SFBay2010/speakers/ChadDePue (integrando Lua con Erlang)

Ahí encuentro Datos de 2010:

Chad DePue

Entrepreneur and creator of ErlangInside.com

Ruby Rescue

 

Chad DePue is a software developer and entrepreneur focusing on Ruby on Rails and Erlang through his consulting company Ruby Rescue. He is a former VP of Engineering at Visto Corporation (now Good Technologies) and started his career at Microsoft in the Developer Tools Division. In 2008 Chad moved his family to Buenos Aires, Argentina to, among other things, learn Spanish, a language which he finds much more difficult than Erlang.
Chad recently built a high-performance mobile payment and microlending platform in Erlang and Ruby on Rails, the combination of which he believes provides the rapid development time of Rails with the scalability, fault-tolerance, and easy-redundancy of the Erlang/OTP platform.

http://www.linkedin.com/in/depue

https://twitter.com/#!/chaddepue

@chaddepue

Developer from Seattle, Living in Buenos Aires, Argentina. I have a new consultancy called Inaka Networks focused on Ruby, iPhone, iPad, and Erlang applications

Buenos Aires, Argentina · http://inakanetworks.com

La empresa que fundó es Inaka, donde tienen desarrollos en Erlang, Ruby on Rails, Objective-C (para la programación cliente). Vean sus trabajos:

http://inakanetworks.com/projects/

donde en muchos usan Erlang para procesar concurrentemente mensajes de esas aplicaciones, con alto nivel de escalabilidad.

El lugar de encuentro fue en sus oficinas, calle Darwin al 1100, cerca de Av. Córdoba y J.B.Justo. Es un interesante edificio, que ocupa gran parte de la cuadra, y hasta tiene calles interiores. Antiguamente fue una fábrica de ropa de marca, y luego fue convertida en “loft” repartidos en varios cuerpos. Inaka ocupa uno de esos loft desde Enero de este año, son sus nuevas oficinas. Chad trabajó en Microsoft, Developer Tools, en Seattle, y habla bien español, con ocasionales consultas por algún vocablo. Así que no tuve que apelar a mi Anglish (Angel’s English) para hacerle preguntas. De curioso, conseguí esta información:

– Trabajó en Microsoft Developer Tools, con Visual Basic clásico, y llegó a trabajar también en Visual Basic.NET

– Su trabajo también tocaba Visual Interdev (los noventa… éramos tan pobres 🙂

– Se mudó en 2008, a Argentina. Fue una decisión que tomó, junto con su familia (esposa, ahora 3 hijos), considerando: huso horario, idioma distinto del inglés, seguridad. Pensaban estar tres años, pero al fin se afincó con su nueva empresa acá.

– La empresa comienza a tener forma en 2010

Fui uno de los primeros en llegar a la reunión, donde fuimos recibidos por Chad, Fernando Benavides, Martina Freers (ver http://inakanetworks.com/people/). Sorpresa! Nos tenían preparadas cerveza, “snacks”, papa fritas… gnam! 🙂 Bueno, también había gaseosa, adivinen qué elegí para tomar.. 🙂

Para este Erlounge (esta reunión) estaba previstas dos charlas. Una de Chad, sobre implementar un Redis en Erlang, vean:

https://github.com/inaka/edis (el tema me interesa, estoy implementando algo en C# https://github.com/ajlopez/AjKeyvs lo interesante para mí es cliente/servidor, implementación de las estructuras de datos, y espero llegar a sharding)

y otra de Fernando Benavides

sobre escalar Erlang, basado en el caso del proyecto:

https://github.com/inaka/match_stream

Son dos charlas que van a presentar ahora a fines de Marzo en Erlang Factory 2012. Pueden ver los slides de la charla de Fernando en https://github.com/inaka/erlang_factory

Los asistentes fuimos alrededor de veinte (no conté, a ojo de buen cubero), y fue interesante encontrar a gente en Argentina interesada en Erlang, y aún mejor, trabajando, con gran experiencia.

Le pregunté a Fernando sobre su historia con Erlang. Mi resultado de entrevista informal:

– Estudió en la Universidad de Buenos Aires, Ciencias Exactas (uy, recuerdo qué linda bibliote, que visitaba en los ochentas… #soytanviejo 🙂

– Ahí vió que lo que le gustaba era la programación funcional

– Encontró un mensaje (en lista? en tablero de la facultad?) de una empresa, para trabajar en programación funcional

– En la universidad, vió Haskell, en la empresa se encontró con Erlang, y viene programando desde entonces (no tengo el año de inicio de su trabajo en esa empresa, Novamens)

– La empresa desaparece. Se va de vacaciones a Polonia, y ahí aprovecha y aplica para la certificación en Erlang.

– En septiembre de 2010 aparece un mensaje en la lista de Erlang Argentina, pidiendo programadores (era Chad Depue).

– Desde entonces trabaja en Inaka

Bueno, por hoy bastante. Próximos posts: comentarios de la charla de Fernando, y algunos de la charla de Chad (me tuve que ir a las 21hs, ya saben, lo mío es la sopita de pollo a la noche 🙂 y dormirme temprano).

Mientras, pueden ir leyendo:

http://inakanetworks.com/blog/2011/10/07/scale-test-plan-simple-erlang-application/
http://inakanetworks.com/blog/archives/

y ir viendo el código de GitHub https://github.com/inaka

Veremos cuándo se hace el próximo Erlounge. Quisiera dar una charla tipo “Erlang for dummies (like me!)”.  Mis posts en Anglish sobre Erlang:

http://ajlopez.wordpress.com/category/erlang/

Mi pet project, pichón pichón de intérprete Erlang en C# https://github.com/ajlopez/ajerl (a ver si lo pongo como “commitment” para Abril).

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Esos Raros Lenguajes Nuevos: Javascript/Node, Scala, Erlang, Clojure, Ruby, Python

Saturday, March 3rd, 2012

El jueves pasado tuve el gusto de dar una charla sobre lenguajes, en el Microsoft User Group de Argentina, en su sede de Buenos Aires. Mi idea era presentar lenguajes de programación, alguno nuevo, otros ya con más de 15 años de existencia, que la comunidad de programadores .NET o de tecnologías Microsoft no ve frecuentemente.

Para mí, es un tema interesante: ver que a lo largo del tiempo, en la historia de la computación, hay lenguajes de programación que aparecen, tiene éxito u olvido. Pasan los años, y seguimos teniendo nuevos lenguajes. Vean que en el ambiente de las computadoras personales, no ha pasado lo mismo con los sistemas operativos: prácticamente se estabilizó en dos opciones con variantes: Windows y Linux (y otros Unix no derivados de Linux directamente). Podría poner Mac OS como aparte también. En cambio, en el ámbito de los lenguajes de programación, sigue habiendo actividad de creación, y viejos lenguajes aún sobreviven (desde Fortran hasta COBOL, y Smalltalk, por poner ejemplos diversos). Y aparecen lenguajes nuevos cada año, como en el 2011 que vió nacer a Dart, de la mano de Google (que también se animó antes a crear el lenguaje Go).

Los lenguajes que presenté fueron:
– Javascript (en NodeJs)
– Scala
– Erlang
– Clojure
– Ruby
– Python (no alcanzó el tiempo, pero lo incluyo en este post)

Un punto que destaqué es que los primeros cuatro (Javascript/NodeJs, Scala, Clojure, Erlang) tratan, entre otros objetivos, de encarar el problema de paralelismo, y multithreading. Ante la desaceleración de la ley de Moore, se trata de aprovechar el hardware de computadoras multicore. Eso lleva a que los lenguajes tengan que soportar múltiples threads (tema que casi todos hoy soportan, de una u otra forma, aunque algunos sólo recientemente: Smalltak, Ruby tuvieron mucho tiempo implementados “green threads”, hilos simulados por el lenguaje, sin aprovechar los threads del sistema operativo, que explotan los múltiples recursos del hardware). Pero también lleva a la complicación: tenemos que escribir programas contenplando múltitples hilos de ejecución, concurrencia, condiciones de carrera, lockeos, etc. Veremos que Erlang (y Scala con Akka) lleva a un paso más: ejecutar en varias máquinas. Ese camino es muy interesante para mí, porque libera la restricción de tener que explotar solamente una máquina: para procesos pesados (desde web crawling, big data, etc…) podemos repartir el trabajo en varias máquinas “normales”. De hecho, vean cómo el mercado de las supercomputadoras ha ido decayendo, porque desde fines del siglo pasado se han encontrado soluciones basadas en clusters, grillas, etc… con varias computadoras atacando un problema.

También quería mostrar que estos lenguajes se pueden probar en Windows, sin grandes problemas de instalación. Muchos de estos lenguajes “nuevos y raros” nacen en ambientes Unix/Linux y no siempre su instalación en Windows fue fácil. Pero en estos tiempos, ya tenemos un buen soporte de Windows para los lenguajes que presenté.

De cada lenguaje mostré algún ejemplo simple, y otro ejemplo más complejo (aunque corto) que mostrara alguna característica destacada.  Espero poder volcar todos los enlaces y comentarios hechos en este post. Comencemos.

Javascript/NodeJs

Sitio: http://nodejs.org/
Descripción, Historia: http://en.wikipedia.org/wiki/Nodejs http://en.wikipedia.org/wiki/JavaScript
Download que usé: el de Windows v0.6.7 pero pueden usar cualquiera de Windows 6.x. La actual es http://nodejs.org/dist/v0.6.12/node-v0.6.12.msi
Listas de Correo: http://groups.google.com/group/nodejs http://groups.google.com/group/nodejs-dev
Ejemplos que usé: https://github.com/ajlopez/NodeSamples
Mostré un servidor HTTP simplícimo, hello world asincrónico, y dibujar en canvas multiusuario, usando el módulo socket.io
Mis enlaces: http://delicious.com/ajlopez/nodejs
Mis posts: http://ajlopez.wordpress.com/category/nodejs/ http://msmvps.com/blogs/lopez/archive/tags/NodeJs/default.aspx
En especial:
Programando Juegos Sociales en Línea (Parte 8) Agregando Node.js
http://msmvps.com/blogs/lopez/archive/2012/01/12/social_2D00_games_2D00_programming_2D00_part_2D00_8_2D00_adding_2D00_node_2D00_js.aspx
AjFabriq en NodeJs (Parte 3) Una aplicación Distribuida Simple
http://msmvps.com/blogs/lopez/archive/2011/09/15/ajfabriq_2D00_on_2D00_nodejs_2D00_part_2D00_3_2D00_a_2D00_distributed_2D00_simple_2D00_application.aspx

Javascript aparece como lenguaje en el lanzamiento del Netscape Navigator de 1995 (éramos tan pobres :-). Fue desarrollado por Brendan Eich http://en.wikipedia.org/wiki/Brendan_Eich de Netscape, con el nombre Mocha (un gusto de café como también lo es la palabra “java”) y luego LiveScript.
Node.js es creado por Ryah Dahl de Joyent http://joyent.com/ Pueden ver un video de introducción en http://ajlopez.wordpress.com/2011/10/15/code-snippets-are-for-sissies/

Comentarios:

Node.js tiene un REPL (Read Eval Print Loop)
Corre sobre el motor de Javascript Google V8. Un motor muy rápido, pero orientado a tener un solo thread a nivel de Javascript (en las librerías internas de C usa threads). Node.js entonces implementa servidores (y código general, si uno quiere) que ejecutan un solo thread de Javascript. Con eso evita el problema de programar en múltiples threads. Pero entonces ¿qué ganamos? Todo Node.js (sus funciones de base, los módulos adicionales) se orienta a ejecución asincrónica. Por ejemplo, el thread principal puede pedir una consulta a una base de datos (usando un driver/módulo de Node.Js adecuado) SIN QUEDARSE esperando la respuesta. El thread principal sigue ejecutando. Cuando la consulta de base de datos tiene algún resultado, lo anuncia (en un sistema interno de eventos). El thread principal de Javascript está atendiendo esos eventos. La escalabilidad se logra aprovechando que la entrada/salida (a disco, red, etc.) se puede derivar asincrónicamente, sin ocupar el thread principal. Internamente, usa características de los sistemas operativos (como el soporte de select() en Linux, o los Completion I/O ports de Windows).
En el ejemplo de dibujo sobre canvas usando socket.io, usamos npm para instalar el módulo:

npm install socket.io

desde el directorio Server

Scala

Sitio: http://www.scala-lang.org/
Descripción e Historia: http://en.wikipedia.org/wiki/Scala_(programming_language)
Download: http://www.scala-lang.org/downloads yo usé http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.zip lo expandi y agregué el directorio bin al PATH
Ejemplos: https://github.com/ajlopez/ProgrammingLanguagesSamples/tree/master/Scala Ver los ejemplos de http://www.scala-lang.org/node/219
Hola mundo en: http://www.scala-lang.org/node/166
Ejemplos avanzados: http://www.scala-lang.org/node/44
Actores: http://www.scala-lang.org/node/242
El ejemplo ping pong: http://www.scala-lang.org/node/54

Lo ejecutamos con

scalac pingpong.scala
scala -cp . examples.actors.pingpong

Ejemplo de mensajes entre actores: http://www.scala-lang.org/node/50
Mis enlaces: http://www.delicious.com/ajlopez/scala
Mis posts: http://ajlopez.wordpress.com/category/scala/

Comentarios:

Es multiparadigma (soporta objetos/clases y programación funcional). Lenguaje de autor, creado principalmente por Martin Odersky http://en.wikipedia.org/wiki/Martin_Odersky Compila a Java y permite reducir la ceremonia (por ejemplo, soporte de declarar directamente un objeto único, sin necesidad de declarar clase). Soporta actores, ejemplo que mostré en la charla. Con actores, Scala evita que el programador tenga que encargarse de los lockeos y manejo de múltiples threads.
Sobre actores ver: http://delicious.com/ajlopez/actormodel http://en.wikipedia.org/wiki/Actor_model
y también message passing: http://en.wikipedia.org/wiki/Message_passing
Ver el proyecto Akka, que extiende Scala a actores distribuidos: http://akka.io/

Clojure

Sitio: http://clojure.org/
Descripción e Historia: http://en.wikipedia.org/wiki/Clojure
Download: Ver http://clojure.org/downloads Yo usé http://repo1.maven.org/maven2/org/clojure/clojure/1.3.0/clojure-1.3.0.zip y también la versión 1.2.0
Listas de Correo: http://groups.google.com/group/clojure

Comentarios:

Vimos cómo Clojure es un dialecto de Lisp, y tiene homoniconicity http://en.wikipedia.org/wiki/Homoiconicity . Compila internamente a Java, y hay una versión para CLR (Common Language Runtime de .NET). Mostré en el ejemplo de Game of Life http://www.youtube.com/watch?v=CFCYVfApPUc http://github.com/sfraser/MultithreadedGameOfLife el uso de Software Transactional Memory, ver http://en.wikipedia.org/wiki/Software_transactional_memory que es una de las formas que tiene Clojure de “atacar” el problema de la concurrencia.
Para probar Clojure en línea ver http://tryclj.com/
Ver http://java.ociweb.com/mark/stm/article.html sobre STM

Erlang

Sitio: http://www.erlang.org/
Descripción e Historia: http://en.wikipedia.org/wiki/Erlang_(programming_language)
Download: http://www.erlang.org/download.html Yo usé http://www.erlang.org/download/otp_win32_R15B.exe
Ejemplos: http://pragprog.com/titles/jaerlang/source_code del libro de Joe Armstrong Programming Erlang http://pragprog.com/book/jaerlang/programming-erlang Ejemplos más sencillos: https://github.com/ajlopez/ProgrammingLanguagesSamples/tree/master/Erlang a ir actualizando.
Primeros pasos: http://www.erlang.org/static/getting_started_quickly.html

Comunidad en Argentina: http://erlang.org.ar/
Lista de Correo de Argentina: http://erlang.org.ar/ListaDeCorreo

Comentarios:

Vimos que Erlang es un lenguaje funcional: no hay variables, una vez ligada una “variable” a un valor, no se puede modificar. Todas son funciones. Tenemos varios procesos. Vimos el ejemplo key value store (kvs.erl) del libro de Joe Armsgrong.

Ejecutamos en el REPL erl:

c(kvs).
kvs:start().
kvs:store(apple, 10).
kvs:lookup(apple).

Luego vimos de lanzar DOS cajas de DOS. En una:

erl -sname galdalf
c(kvs).
kvs:start().

en la otra ejecutamos:

erl -sname bilbo
rpc:call(gandalf@localhost, kvs, store, [apple, 10]).
rpc:call(gandalf@localhost, kvs, lookup, [apple]).

Caso de éxito http://couchdb.apache.org/  NoSQL reescrito en Erlang.

Post http://ajlopez.wordpress.com/2011/08/24/erlang-links-news-and-resources-1/
Mis enlaces: http://delicious.com/ajlopez/erlang

http://lambda-the-ultimate.org/node/4453 Long rant on Erlang-style Actors: Lost Dimension

Vean el lenguaje E:
http://erights.org/index.html
http://wiki.erights.org/wiki/Walnut
http://erights.org/talks/thesis/index.html

Ruby

Sitio: http://www.ruby-lang.org/en/
Descripción e Historia: http://en.wikipedia.org/wiki/Ruby_(programming_language)
Download: http://www.ruby-lang.org/en/downloads/ Yo usé http://rubyinstaller.org/downloads/ Revisar mis posts sobre detalles de instalación importantes, como el DevKit. Y tambien http://delicious.com/ajlopez/ruby+install

Mis posts: http://ajlopez.wordpress.com/category/ruby http://msmvps.com/blogs/lopez/archive/tags/ruby/default.aspx donde explico paso a paso instalación de Ruby, Rails, y un primer sitio Rails. Y también mi experiencia en el último Ruby Meetup de Buenos Aires.
Mis enlaces: http://delicious.com/ajlopez/ruby

Comunidad en Argentina: http://ruby.com.ar/
Conferencia 2011: http://rubyconfargentina.org/en
Lista de Correo Argentina, Latinoamérica: http://groups.google.com/group/rubysur
Sitio: http://rubysur.org/

Python

Sitio: http://python.org/
Descripción e Historia: http://en.wikipedia.org/wiki/Python_(programming_language)
Download: Hay dos versiones, usé http://python.org/ftp/python/2.7.2/python-2.7.2.msi y también tenía instalado http://python.org/ftp/python/3.2.2/python-3.2.2.msi Pero sólo la última instalación está ligada a ejecutar automáticamente los archivos .py, ver http://stackoverflow.com/questions/3809314/how-to-install-both-python-2-x-and-python-3-x-in-windows-7

Ejemplos simples: https://github.com/ajlopez/ProgrammingLanguagesSamples/tree/master/Python
Comunidad en Argentina: http://python.org.ar/pyar/
Lista de Correo en Argentina: http://listas.python.org.ar/listinfo/pyar
Vean el video anunciando la próxima PyCon http://animoto.com/play/zVp1IGeGaLVKco0FDlwcmA
Mostré Django
https://www.djangoproject.com/
https://docs.djangoproject.com/en/1.3/topics/install/#installing-official-release
C:\Software\Django-1.3.1
https://docs.djangoproject.com/en/1.3/intro/tutorial01/

Ver también
IronPython (Python running on .NET)
Jython (Python running on the Java Virtual Machine)
PyPy (A fast python implementation with a JIT compiler)
Stackless Python (Branch of CPython supporting microthreads)

Ver la implementación web: http://webpython.codepoint.net/wsgi_tutorial madre de otras implementaciones como Rack en Ruby, y OWIN en .NET

Mis enlaces: http://delicious.com/ajlopez/python
Mis posts: http://ajlopez.wordpress.com/category/python/

Patrones encontrados

Existencia de REPL: todos
Compilación a otro lenguaje: Scala, Clojure, usando la máquina virtual y librerías de clases existentes
Pasaje de Mensajes: Erlang
Módulos: todos
Actores: Scala, algo también en Clojure y Erlang
Software Transactional Memory: Clojure

Bueno, espero que les haya dado un panorama de que hay vida más allá de C# y Java 😉

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez