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.

      martes, 30 de noviembre de 2010

      RHoK: escribiendo código por los demás

      Random Hacks od Kindness

      La iniciativa RHoK (Random Hacks of Kindness), según describen sus organizadores, es "acerca de utilizar la tecnología para hacer del mundo un lugar mejor construyendo una comunidad de innovación. RHoK reúne a ingenieros de software con expertos en administración de riesgos de desastre para identificar desafíos globales y desarrollar software para responder a ellos. Los eventos RHoK Hackaton agrupan a los mejores hackers de todo el mundo, que voluntariamente aportan su tiempo para resolver problemas de la vida real."

      Detrás de esta singular campaña trabajan en común organizaciones tradicionalmente antagónicas o disímiles como Google, Microsoft, Yahoo!, la NASA y el Banco Mundial.

      Este fin de semana, sábado 4 y domingo 5 de diciembre, se realizará la segunda RHok Hackaton a nivel mundial, incluyendo los siguientes puntos de América Latina:

      Comparto con ustedes este interesante video hecho con post-its para promocionar el programa: