lunes, 6 de diciembre de 2010

Videos: Crockford habla sobre JavaScript

JavaScript: The Good Parts

Javascript sigue creciendo en relevancia. Hace bastante tiempo, hablaba sobre este tema en otro blog, aunque todavía este lenguaje no se había afianzado tanto del lado del servidor, cosa que está sucediendo ahora gracias a Node.js.

Así que siempre vale la pena conocer más sobre Javascript, incluyendo detalles acerca de su historia. Y quien mejor para esto que Douglas Crockford, actual Javascript Architect de Yahoo!, autor del excelente libro "Javascript: The good parts", y las herramientas indispensables JSLint (un verificador de prácticas) y JSMin (un minificador de código).

A principios de este año y a lo largo de varia semanas, Crockford dio una serie de seis charlas sobre Javascript que quedaron registradas en video (en inglés). El temario completo es:

  • Volume One: The Early Years
  • Chapter 2: And Then There Was JavaScript
  • Act III: Function the Ultimate
  • Episode IV: The Metamorphosis of Ajax
  • Part 5: The End of All Things
  • Scene 6: Loopage

Reproduzco aquí la primera de las charlas, que además de reveladora es muy divertida.

La serie completa está disponible en un sitio completo dedicado a las charlas, que incluye versiones de los videos para descarga en diferentes resoluciones, o la posibilidad de verlos online, y las transcripciones completas de las charlas para quienes les cuesta más escuchar el inglés que leerlo.

Finalmente, para quienes prefieren material estrictamente en castellano, les dejo enlaces a algunos de los trabajos de Corckford traducidos por distintas personas de la comunidad:

 

viernes, 3 de diciembre de 2010

Rust: un nuevo lenguaje experimental desde los labs de Mozilla

Mozilla Labs

La gente de Mozilla Labs publicó recientemente en GitHub su proyecto Rust, un lenguaje experimental.

Según la wiki con preguntas frecuentes, estos son los puntos importantes del lenguaje:

Seguridad

  • Manejo de memoria seguro. Sin punteros nulos o huérfanos, y con administración automática.
  • Control de mutabilidad. Inmutable por omisión. No hay estado mutable compartido entre tareas.
  • Seguridad en ejecución dinámica. Permite atrapar, loguear y procesar fallas en general.
  • Sistema de estado de tipos. Permite definir invariantes complejas sobre estructuras de datos.

Concurrencia y Eficiencia

  • Control de memoria explícito, sobre alocación y disposición.
  • Tareas (corutinas) livianas, de muy bajo costo al dispararlas de a miles o millones.
  • Iteradores de pila (bloques lambda sin alocación en el heap)
  • Compilación estática y nativa.
  • Interfaz simple y directa con código C

Pragmatismo

  • Multiparadigma: puramente funcional, concurrencia/actores, procedural/imperativo, orientado a objetos.
  • Multiplataforma: Windows, Linux, OS X.
  • Strings UTF8 y tipos a nivel de máquina
  • Permite romper reglas declarándolo explícitamente

Como explican en la Wiki, el proyecto, aunque tiene algunos leves puntos de contacto, se inició mucho antes que Google publicara su lenguaje Go, y aunque su sintaxis (por ahora, ya que no es el foco del proyecto todavía) también huele a C (usando llaves, punto y coma, etc).

Para variar, desde este blog no dejamos de celebrar novedades en el ambiente de lenguajes e programación, que aún cuando no llegan a popularizarse siempre aportan conceptos e ideas interesantes que se aprovechan tarde o temprano en otro lado.

 

      jueves, 2 de diciembre de 2010

      ¿Python más rápido que C?

      Entre los videos de las 6tas jornadas de Software Libre que mencioné en el último post, encontré este que me resultó muy interesante y divertido, a cargo de Facundo Batista (uno de los sospechosos de siempre en la comunidad Python local) en el que cuenta una serie de ejercicios desarrollados junto a Lucio Torre para comparar en contextos y situaciones diferentes los tiempos de ejecución de ambos lenguajes.

      Sobre el inicio Facundo aclara que el código C fue escrito en todos los casos por Lucio y el código Python por él mismo, y ambos tienen aproximadamente el mismo nivel de experiencia y familiaridad con cada lenguaje. Cualquiera en la comunidad iría más allá y diría que ambos son reconocidos expertos en el suyo.

      Obviamente hay mucho material para discutir (aún cuando no hay intento alguno de mostrar Python realmente más rápido que C en crudo), pero el objetivo de la charla es reflexionar sobre el proceso, y se habla bastante de la forma en que aplicamos diferentes niveles de optimización. De fondo, incluso, utilizar un lenguaje de bajo o alto nivel, uno estático o dinámico, suelen ser decisiones que optimizan tiempo de desarrollo/mantenimiento, o de ejecución.

      La sesión es corta y divertida, así que la reproduzco aquí debajo, pero antes quiero replicar una frase que Facundo destaca en uno de los slides, y que coincide con algo en lo que insisto hace años, pero nunca había escuchado con esas palabras:

      "Es más fácil optimizar código correcto que corregir código optimizado"

      Disfruten el video:

      Videos de las 6tas Jornadas de Software Libre - Junín 2010

      Sextas Jornadas de Software Libre

      El 5 y 6 de noviembre pasados se realizaron en la localidad de Junín, Buenos Aires, Argentina, las 6tas Jornadas de Software Libre.

      Hubo charlas de Python, Debian, Ubuntu, Linux en general, programación y administración, como pueden ver en el Cronograma completo.

      Durante el evento se pudieron grabar las charlas y ahora ya están disponibles para quienes no pudieron asistir.

      Pueden ver muchos de los videos en esta página:

      http://unnoba.blip.tv/posts?view=archive&nsfw=dc

      Y les dejo a mano este del amigo Juan Gabardini charlando sobre la relación entre Software Libre y Métodos Ágiles. Espero que la disfruten.

      Miguel de Icaza: Más sobre Mono para OS X y iOS

      Mac OS X

      Miguel lanzó un nuevo blog personal especializado en el sistema operativo de Mac y el de iPhone/iPod/iPad, visto por supuesto, desde la perspectiva de Mono.

      Como explica en el post inicial, las razones principales para tener un blog separado del suyo personal de siempre, exclusivamente dedicado a este tema, son dos:

      • Mientras que su blog está dedicado más que nada a novedades generales del proyecto Mono, éste está orientado a documentar sus experiencias específicas con estos ambientes de Apple, en un nivel de detalle más granular, que puede molestar a quien no tiene interés específico en el tema.
      • Estos sistemas operativos son propietarios y están bastante alejados de los ambientes abiertos usuales para gran parte del público anterior.

      En cualquier caso, es muy interesante tener un buen recurso técnico con detalles sobre MonoTouch, la implementación de Mono y herramientas de desarrollo para programar aplicaciones para iOS en lenguajes .NET, que es un producto comercial (sobre todo por temas de licenciamientos varios), y MonoMac, que si es un producto abierto y gratuito para hacer lo mismo sobre Mac OS X (que sí es un sistema propietario).

      Lo que ambos proyectos brindan, fundamentalmente, es la posibilidad de programar en C# y utilizar las librerías de la BCL, pero con bindings agregados para interactuar con el entorno de Apple en Objective-C y la interfaz de usuario Cocoa, lo que es una buena alternativa para quienes están interesados en desarrollar para estos dispositivos pero no tanto en aprender todos los detalles y lenguajes específicos.