Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

December 2007 - Posts

Cambio de hora en Argentina y el Tressa de Ponicke

El gobierno de mi pais ha decidido cambiar el uso horario por unos meses, a partir del 30 de diciembre que viene.

Yo, que me dedico al desarrollo de software, no me veré muy afectado. Pero la gente de infraestructura tendrá que cambiar las fechas de los equipos, servidores y demás intríngulis que esta sufrida gente debe enfrentar cada día (la vida de IT no es fácil).

El bueno de Alejandro Ponicke (una especie de guerrero vikingo, que podría aparecer de extra en alguna película de Conan el bárbaro.... un abrazo desde acá Alejandro... ;-) nos da una serie de consejos en su blog:

El cambio de hora en Argentina, demuestra que nada cambia (parte 1)

El cambio de hora en Argentina, demuestra que nada cambia (parte 2)

El cambio de hora en Argentina, demuestra que nada cambia (parte 3)

El cambio de hora en Argentina, demuestra que nada cambia (parte 4)

Un fragmento de su estilo:

La manera correcta de trabajar en una red corporativa es basar la hora de los sistemas en horario GMT0 (Ese donde cada uno que va pone un pie de cada lado canchereando con estar en un mismo instante en ambas mitades del globo).

Los sistemas informaticos utilizan UTC o Tiempo Universal Coordinado que viene siendo el reemplazo del GMT (Greenwich Mean Time) y sirve para, como su nombre lo dice, coordinar los tiempos de todos los sistemas del mundo.

Ahora, como según el meridiano donde nosotros estemos parados "la hora" es distinta, se usan los Time Zones que lo que hacen es sumar  o restar n cantidad de horas a UTC y mostrar en nuestras PCs ese resultado.

En el caso de Argentina, la zona horaria es UTC-3

Por lo tanto, seria incorrecto (en principio) decir que nuestra PC tiene la hora 0:00 sino que en realidad tiene 3:00 UTC-3 que como resultado es 0:00.

¿Era mas fácil antes cuando solo teníamos el Tressa en la muñeca? sí, pero mas aburrido tambien!

...

Ese es Ponicke, que puede aparecer disfrazado de enfermera en medio de una presentación.

La gente de

http://www.supportacademy.com/

tiene para hoy viernes 28

 

Upcoming Daylight Saving Time implementation for Argentina in 2007-2008 - Preparing for the changes

The government of Argentina has announced the implementation of daylight saving time (DST) in Argentina. The following are the start and end dates for the daylight saving time defined:  
- Daylight saving time begins:  Sunday, December 30th, 2007 at 00:00 A.M local standard time.
- Daylight saving time ends:  Sunday, March 16th, 2008 at 00:00 A.M local daylight saving time.            
Currently, Windows operating systems in Argentina use the “(GMT-03:00) Buenos Aires, Georgetown” time zone setting. However, the default values for the “(GMT-03:00) Buenos Aires, Georgetown” time zone setting in Microsoft Windows do not reflect the daylight saving time start and end dates defined by the government.  
On this webcast, we will present possible actions for customers in Argentina to address the implementation of daylight saving time and ways to mitigate its impacts in Windows Servers and Desktops, Microsoft Outlook and Exchange Servers.
Daniel Seveso, Andre Teixeira and Viviane Lopes Support Escalation Engineers with the Microsoft Commercial Technical Support Latin America team are our special presenters of this session.
We look forward to your attendance!

Date: 12/28/2007
Time:
11:00AM Central Time (Dallas, Texas)

02:00PM Buenos Aires time

Click here to add this meeting to your calendar.

Nos leemos!

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

Posted Friday, December 28, 2007 9:42 AM by lopez | 2 comment(s)

Genesis Studio: una IDE para AjGenesis

 Gracias al excelente trabajo de Jonathan Cisneros, ahora tenemos una IDE para usar con AjGenesis. Desarollada usando C Sharp 2, edita proyectos, archivos de modelos, plantillas, y hasta usa sintaxis de color!!.

Es una aplicación bien terminada, lista para usar. Está en fase beta, pero es perfectamente usable. Jonathan tiene varias ideas para ir completando y extendiendo este programa.

Pueden bajarlo desde la página del grupo de Generación de Código:

Code Generation Google Groups

o pueden probar este enlace. En ese grupo hay varios archivos para bajar, con nuevas plantillas, modelos y ejemplos. Genesis Studio está en:

Viene con código fuente. Su compilación es fácil, viene con todas las librerías requeridas:

Con esta aplicación podemos editar un proyecto, desde su directorio, sus entidades, modelo, tecnologías. AjGenesis tiene un modelo libre, que podemos definir como querramos. Genesis Studio puede también leer y editar plantillas y tareas.

Algunas opciones:

Cuando elegimos un directorio de proyecto, aparece un explorador del proyecto, mostrando sus carpetas y contenidos:

Los archivos XML, de plantillas y tareas tienen soporte de sintaxis de color:

 

Desde acá, mil gracias a Jonathan Cisneros, por esta aplicación tan útil.

La generación de código es una técnica que tiene múltiples usos. En un ambiente de tecnologías cambientes, con aplicaciones complejas, es importante delegar las tareas repetitivas y mecánicas al propio software.

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

Posted Monday, December 24, 2007 9:02 AM by lopez | 9 comment(s)

The making of LitwareHR

El año pasado participé del desarrollo de LitwareHR, una aplicación Software as a Service de referencia de Microsoft. Trabajé en un equipo de Southworks, en un proceso tipo SCRUM. Al final del proyecto se filmó un video para mostrar algunas ideas del proyecto.

Pueden ver el video en

MSN Video - The making of LitwareHR

Las estrellas son Gianpaolo Carraro y Fred Chong, de Microsoft. En la captura de arriba a la derecha, podemos ver algunos de los miembros del team:

Ezequiel Morito
Ezequiel Bella
Matías Woloski
Ariel Schapiro
Alejandro Jack (el que está vestido de muñequito de torta....;-). Hace unas semanas, el bueno de Alejandro se aprobó el examen de Arquitecto certificado en Microsoft. Es el tercer arquitecto de Latinoamérica, y el número 99 en el mundo.

En el video, tengo una mínima intervención, pero ya saben: no hay papeles chicos para un actor grande ... ;-)

Nos leemos!

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

Posted Sunday, December 23, 2007 3:20 PM by lopez | with no comments

Microsoft carga las pilas: Live Volta

El bueno de Johnny Halife me avisa del proyecto

Microsoft Live Volta

Permite tomar escribir una aplicación .NET en capas, donde una es el propio browser, que mediante Javascript generado, se comunica con la siguiente capa remota.

Leemos:

The Volta technology preview is a developer toolset that enables you to build multi-tier web applications by applying familiar techniques and patterns. First, design and build your application as a .NET client application, then assign the portions of the application to run on the server and the client tiers late in the development process. The compiler creates cross-browser JavaScript for the client tier, web services for the server tier, and communication, serialization, synchronization, security, and other boilerplate code to tie the tiers together.

No lo he visto en detalle, pero parece similar a iniciativas como las de Yahoo y Google, para escribir en Java, y luego pasar una porción al cliente browser usando el "viejo truco" :-) de generar javascript.

Es un recompilador, que parte del MSIL (el lenguaje intermedio, el compilado básico de .NET), y examina ese código, y parte lo puede transformar a otro destino, por ejemplo a Javascript. Tiene tres pasos:

- Refactoring: donde transforma, con anotaciones, atributos en el código, una aplicación de simple capa, en distribuida y concurrente.

- Retargeting: donde convierte MSIL a otra máquina virtual (ya me imagino Java, o esos raros lenguajes nuevos.... ;-)

- Remodulating: una nueva palabrota, para hacer que una porción de código pueda ejecutarse en distintos browsers.

Tienen varios ejemplos en línea:

http://labs.live.com/volta/samples.aspx


Se necesita Visual Studio 2008 (cada vez más, me temo, se va a necesitar este entorno, vayan pensando en actualizarse).

Notable el lenguaje Javascript, cómo ha logrado posicionarse en este nuevo mundo de aplicaciones donde quieras.

Nos leemos!

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

Posted Wednesday, December 19, 2007 11:09 AM by lopez | with no comments

Strategic Architect Forum en Microsoft

El bueno de Arvindra Sehmi nos avisa del material publicado del último Strategic Architect Forum de Microsoft:

SAF 2007

Transcribo acá:

Day 1

Changing the World with Software and Services

Dr. Donald Ferguson (Microsoft)

[Video] . [Slides] . [Transcript]

Project Astoria: Data Services for the Web

Pablo Castro (Microsoft)

[Video] . [Slides] . [Transcript]

Anatomy of An S+S Application

Eugenio Pace (Microsoft)

[Video] . [Slides] . [Transcript]

Unified Communications: Breaking VoIP Barriers

Gurdeep Pall (Microsoft)

[Video] . [Slides] . [Transcript]

Composite Application Architectures Using the 2007 Office System

Scott Jamison (Microsoft)

[Video] . [Slides] . [Transcript]

A Data-driven Approach To Distributed, Concurrent Software

George Chrysanthakopoulos (Microsoft)

[Video] . [Slides] . [Transcript]

 

Day 2

A Look Into Microsoft Research

Behrooz Chitsaz (Microsoft)

[Video] . [Slides] . [Transcript]

Claims-Based Identity Layer For The "New Internet"

Slava Kavsan (Microsoft)

[Video] . [Slides] . [Transcript]

The Reality Of The Cloud And The Future Of The Datacenter

Debra Chrapaty (Microsoft)

[Video] . [Slides] . [Transcript]

Mining Lightning For The Cloud

John Dwyer (Microsoft)

[Video] . [Slides] . [Transcript]

User Experience for Architects

Simon Guest (Microsoft)

[Video] . [Slides] . [Transcript]

Windows Live Platform: Making Better End User Experiences

David Dumler (Microsoft)
Angus Logan (Microsoft)

[Video] . [Slides] . [Transcript]

Duet: An Enterprise S+S Offering From Microsoft And SAP

Chris Keyser (Microsoft)
Burra Gopal (Microsoft)
Adi Kavaler (SAP)

[Video] . [Slides] . [Transcript]

Dynamic IT

Neil Leslie (Microsoft)
Barry Briggs (Microsoft)

[Video] . [Slides] . [Transcript]

Amazon.com's Simple Storage Service, Elastic Compute Cloud, and Simple Queue Service

Charlie Bell (Amazon)

[Video] . [Slides] . [Transcript]

 

Day 3

Lessons Learned from the Web's Edge: MySpace

Aber Whitcomb (MySpace)
Jim Benedetto (MySpace)

[Video] . [Slides] . [Transcript]

Leading Geeks: How to Manage and Lead People Who Deliver Technology

Paul Glen (C2 Consulting)

[Video] . [Slides] . [Transcript]

 

Para lo que estoy estudiando y escribiendo, de Grid Computing, son para recomandar la presentación de Amazon, y la del bueno de George Chrysanthakopoulus, el creador del Concurrency and Coordination Runtime.

Vean la presencia de dos argentinos, Eugenio Pace, y Pablo Castro. Eugenio, ahora, luego de Patterns and Practices abocado a Software + Service. Pablo, luego de ADO.NET, ahora metido de lleno en el proyecto Astoria.

Tengo que leer sobre Microsoft Reseach, y otras transcripciones, todos temas interesantes. Muy bueno que tengan los videos y transcripciones disponibles.

Nos leemos!

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

Posted Tuesday, December 18, 2007 10:07 AM by lopez | with no comments

Lo que se necesita para el éxito según Bill Gates

El bueno de Johnny Halife (una de las cualidades para merecer lo de "el bueno de" es no ser un canuto, no guardarse información y conocimiento, sino compartirlo), me avisa de un artículo de William H. Gates III:

Bill Gates: The skills you need to succeed

Es un interesante artículo, comentemos acá algunos puntos:

Gates afirma, con razón, que el software ha influido en cada actividad humana. Desde el arte hasta la ciencia, el software, y en los últimos años, Internet (como gran combinación de software y hardware) ha cambiado, según mi punto de vista, la historia humana. Hoy una parte de la humanidad (sólo una parte, no olvidarse) se beneficia de lo que ha sido la revolución del software de las últimas décadas. Cuando yo era infante, hace tiempo, en el siglo pasado, se pensaba en la era espacial como el futuro, lo que iba a cambiar nuestras vidas. Resultó que fue el software. Si la era espacial hubiera avanzado tanto como avanzó el software, hoy estaría escribiendo esto desde algun cráter lunar.

Me gusta la frase de Gates

I don't think you can overemphasise the importance of having a good background in maths and science.

Exacto. El conocimiento de ciencias duras como matemáticas, y ciencia en general, es importante en un desarrollador de software. Un espíritu inquieto, pensamiento crítico, ganas de conocer y experimentar, son también otras cualidades.

Veamos estos párrafos:

Communication skills and the ability to work well with different types of people are very important too.

A lot of people assume that creating software is purely a solitary activity where you sit in an office with the door closed all day and write lots of code.

This isn't true at all.

Gates menciona que ya no estamos solos, escribiendo software. La capacidad de comunicarse con otros es esencial. Hoy la creación de software ya no es una actividad solitaria. Para cualquier cosa no trivial, necesitamos saber transmitir nuestras ideas, motivar a gente, trabajar con otros, integrar y liderar grupos, expresar lo que pensamos y diseñamos y conocemos y opinamos.

Si Ud., como desarrollador, es un lobo solitario y huraño, no conseguirá los mismos logros que otros que saben comunicarse, aunque sus capacidades técnicas sean superiores.

Sigamos:

I also place a high value on having a passion for ongoing learning. When I was pretty young, I picked up the habit of reading lots of books.

Gates es un tipo inteligente. Afirma que se necesita educación continua. Desde que era joven, lee montones de libros. Gates lee desde historia hasta ciencia hasta todo lo que le interesa. En su tiempo, reservaba dos veces por año una semana para explorar un tema nuevo, como irse a una isla, con los libros de Richard Feynman para entender algun tema de física.

Hoy, el software está en todas partes. Y para crearlo, el conocimiento abarcativo de otras ramas del conocimiento es en algún momento necesario. Conocer de otros temas, aunque sea a nivel básico, nos permite tener una mayor visión de cualquier cosa que encaremos. Si quiere ser desarrollador, diseñador, arquitecto de software, una amplitud de intereses le dará una capacidad de abstracción, reconocimiento de patrones, creatividad, relación de temas diferentes, que le ayudará en su tarea. Hasta puedo exagerar un poco: un desarrollador de software es un ser humano renacentista, interesado por todo. Hoy, Leonardo Da Vinci, sería software developer... ;-)

Volviendo a los libros: por algo llevo a todos lados la bolsa llena de mi librería preferida Cúspide.... :-)

Y ahora, Ud., ¿qué comunicó últimamente? ¿qué escribió en su blog? ¿qué conocimiento compartió? ¿qué ha leído y aprendido este año?

Nos leemos!

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

Posted Sunday, December 16, 2007 3:17 PM by lopez | 4 comment(s)

Estructura e Interpretación de Programas

Me encuentro en la web con estos videos de un curso que dictaron Hal Abelson y Gerald Ray Sussman, allá por el 86, en una sede de Hewlett-Packard. La empresa, para capturar el conocimiento, preparó un curso en video de la clase. Ahora la podemos ver y bajar desde

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

Si bien tienen sus años, es bueno ver estos temas, por ejemplo, desde el punto de vista de Lisp. Desde esos tiempos, me he dedicado a hacer mínimas implementaciones de intérpretes Lisp, Prolog y máquina Smalltalk, y como estoy interesado en reimplementar algunas de esas ideas en .NET y Java, estoy volviendo a estudiar esos temas. Creo que el conocer cómo hacer un intérprete, o un compilador, nos da una vista de primera mano de muchos de los problemas de la "ciencia" de la computación. Es un excelente ejercicio para la neurona.

Vean cómo ahora, con LINQ y F#, y otros, "reaparencen" conceptos como cálculo lambda. Esos conceptos todos tuvieron su primera aplicación en esos "viejos" lenguajes como Lisp.

El que no escriba un lambda en su vida, se pierde algo.... :-)

Nos leemos!

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

Posted Thursday, December 13, 2007 10:37 AM by lopez | 1 comment(s)

Misión Geminis 48hs

El bueno de Miguel Angel Saez (ahora en Microsoft de Argentina) nos avisa en su post

1 concurso - 48 hs

del concurso:

Misión Geminis 48 hs

Para participar de la Misión Géminis 48 hs., sólo tienes que ser un desarrollador que te gusten los desafíos. La idea es que compitas con tus pares para demostrar en 2 etapas qué tanto sabes acerca de .Net y PHP. Durante la primera etapa deberás responder una serie de preguntas de selección múltiple sobre estos lenguajes de programación. Los participantes que contesten correctamente todo el cuestionario, con la posibilidad de múltiples intentos, podrán pasar a la segunda etapa – La Misión. Allí deberás estar preparado para el reto de desarrollar una aplicación web funcional, un sistema de Control Epidemiológico basado en PHP, y migrarla a ASP.NET. Tendrás sólo 48 horas para hacerlo, y los primeros 48 que lo hagan estarán participando por increíbles premios. Los 3 ganadores designados por especialistas calificados recibirán U$D 1.000, U$D 800 y U$D 400, respectivamente. Muchos éxitos para tu misión…

Hay interesantes premios. Si conoces PHP, puede ser una interesante forma de aprender ASP.NET. Más información sobre esta tecnología en:

http://www.aprenderasp.net/

http://www.asp.net/

No es que el concurso comienza ahora. Hay tiempo para aprender (revisar en el sitio, creo que quedan 2 meses para comenzar el concurso).

Nos leemos!

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

Posted Wednesday, December 12, 2007 10:09 AM by lopez | 1 comment(s)

Filed under: , ,

Recursos de F#

Quisiera comentar hoy algunos recursos en la web sobre el lenguaje F#, implementación de programación funcional de Microsoft, y sobre programación funcional en general.

F# es un lenguaje nacido en Microsoft Research, de la mano de Don Syme. Pero no es un lenguaje funcional, sino multiparadigma: permite también manejar objetos y todo el framework de .NET. Esto es lo que creo que hará que F# despegue como lenguaje: de hecho ya está siendo usado en muchas partes, donde se necesitan sus capacidades funcionales, pero también se necesitan integrar con tecnologías existentes. (la imagen de este "post" es de un ejemplo animado incluido con F#, usando DirectX).

Enlaces

El sitio padre de F# es el de Research de Microsoft:

Microsoft Research's website for F#

F# Manual

hubFS: The place for F# - F# news, forums and blogs

Don Syme's web log, a key source of information on F#

F# Wiki

FSharp Community

Robert Pickering’s Strange Blog

Hay un proyecto en CodePlex, donde hay ejemplos adicionales a los que vienen con la propia instalación de F#:

F# Samples - Home

Gran parte de estos enlaces aparecen desde la página madre (el primer enlace) de F#, pero también estan en la informativa página de Wikipedia:

http://en.wikipedia.org/wiki/F_Sharp_programming_language

Hay un artículo de S. Somasegar (VP de la Developer Division de Microsoft) dando un espaldarazo al proyecto, para integrarlo completamente a las herramientas de desarrollo:

F# - A functional Programming Language

En una charla que di hoy en Microsoft de Argentina, me "inspiré" en una presentación de Tomáš Petříček (http://www.tomasp.net), la pueden bajar de:

FSharp Files: Public Presentations

Es el autor de una introducción a F#:

My F# Notes : F# Overview - Introduction to the F# language

Como curiosidad, como leyeron en recientes post, estoy estudiando sobre Grid Computing y ejecución en paralelo. Vean lo que trae F#:

Introducing F# Asynchronous Workflows

Finalmente, sigo coleccionando enlace en:

http://del.icio.us/ajlopez/f%23

Programación funcional

Sobre programación funcional me pareció muy interesante como introducción:

Functional Programming for the Rest of Us

Hay un "paper" clásico de John Hughes:

Why Functional Programming Matters

Y luego, el clásico del bueno de Backus:

backus.pdf

Mis enlaces adicionales en:

http://del.icio.us/ajlopez/fp

Libros de F#

Hay dos libros publicados de Apress:

Foundations of F# del bueno de Robert Pickering

Expert F# del "Padrino de F#", Don "Corleone" Syme, Adam Granicz y Antonio Cisternino

Nos leemos!

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

Posted Friday, December 07, 2007 2:43 PM by lopez | 1 comment(s)

Primeros pasos en F#

Veremos en este post la instalación de F#, el lenguaje funcional de Microsoft, y los primeros comandos que podemos ejecutar. Dejaremos para más adelante el tratamiento de programación funcional en general, el uso de F# desde el Visual Studio, y el compilador que contiene.

El lenguaje F# se viene desarrollando desde hace años, de la mano de su creador Don Syme y sus colaboradores. Pueden ver el sitio de F# en:

http://research.microsoft.com/fsharp/fsharp.aspx

Ahí leemos:

Combining the efficiency, scripting, strong typing and productivity of ML with the stability, libraries, cross-language working and tools of .NET.

F# is a programming language that provides the much sought-after combination of type safety, performance and scripting, with all the advantages of running on a high-quality, well-supported modern runtime system.

No he visto que en esa página actualmente tengan publicado la última distribución, usaré en esta prueba la versión que se publicó hace unos días:

F# 1.9.3.4 download

El enlace me lo pasó el bueno de Paulo Arancibia.

Instalando F#

Los programas de soporte se instalan desde un .msi. Algunas pantallas de instalación:

 

 

El último paso puede tardar varios minutos. Vean que instala soporte de F# en el propio Visual Studio. Yo estoy usando el VS 2005 Professional. F# tiene soporte de VS 2003. Igualmente, veremos que podemos usar un compilador y un intérprete desde la línea de comando, si no tenemos Visual Studio. También puede instalarse sobre Mono.

Al terminar la instalación, nos queda un directorio c:\Program Files\FSharp-1.9.3.4:

Vean que hasta queda un .sh para instalar en Mono.

En el menú de programas aparece:

El intérprete fsi

Tenemos a nuestra disposición un programa interactivo, desde el menú que nos queda, o disponible desde bin\fsi.exe:

C:\Program Files\FSharp-1.9.3.4\bin>fsi MSR F# Interactive, (c) Microsoft Corporation, All Rights Reserved F# Version 1.9.3.4, compiling for .NET Framework Version v2.0.50727 NOTE: NOTE: See 'fsi --help' for flags NOTE: NOTE: Commands: #r <string>;; reference (dynamically load) the given DLL. NOTE: #I <string>;; add the given search path for referenced DLLs. NOTE: #use <string>;; accept input from the given file. NOTE: #load <string> ...<string>;; NOTE: load the given file(s) as a compilation unit. NOTE: #time;; toggle timing on/off. NOTE: #types;; toggle display of types on/off. NOTE: #quit;; exit. NOTE: NOTE: Visit the F# website at http://research.microsoft.com/fsharp. NOTE: Bug reports to fsbugs@microsoft.com. Enjoy!

Usando let

Si ingresamos

> let x = 10;;

obtenemos:

val x : int

El ;; indica al programa que tiene que compilar y ejecutar lo ingresado. Notemos que de esta forma, x es un identificador, que contiene un valor de tipo entero. F# es un lenguaje tipado, y el tipo lo infiere a medida que vamos definiendo las expresiones.

Si ahora pedimos

> x;;

(el > no lo ingresamos, es parte del "prompt" que nos muestra el programa fsi) obtenemos

val it : int = 10

La conducta de fsi es imprimir al expresión y su tipo. Vean que aparece it: es la variable que usa cuando no especificamos que una expresión se asigna a un identificador (vamos a ver que variable no es variable en F#... :-)

Definiendo funciones

Usando el mismo let, podemos definir funciones:

>  let dup x = x * 2;;
val dup : int -> int

La segunda línea indica que dup es un valor de tipo función que recibe un entero y devuelve un entero. Esto es fundamental en F#: las funciones son valores, como cualquier otro. El identificador dup ahora referencia a esa función.

Si lo aplicamos:

> dup 10;;
val it : int = 20

Para ver que una función es un valor como cualquier otro, veamos de pasar una función como parámetro:

> let apply f x = f (f x);;
val apply : ('a -> 'a) -> 'a -> 'a

El resultado es algo más críptico. El 'a se refiere a un tipo aún no definido. Don Syme, el creador de F#, estuvo antes involucrado en la definición e implementación de Generics en .NET 2.0. Acá aparece algo de esa influencia.

Si pedimos

> apply dup 2;;

obtenemos

val it : int = 8

que es es lo mismo que haber pedido

> dup (dup 2);;

Conclusión

Para quien no esté familiarizado a la programación funcional, el concepto de función como valor de primera clase, ciudadano del lenguaje con los mismos derechos y deberes que los otros valores, es algo extraño. Para el que haya visto alguna de las primeras implementaciones de Lisp, y el cálculo lambda de Church, será una especie de deja vu.

Lo interesante de F# es que no sólo soporta este tipo de programación, sino, que abandonando la pretension de ser un lenguaje funcional puro, también soporta programación procedural, de objetos, y notablemente, el uso de todo el framework de .NET. Todo esto es lo que ha hecho que haya sido adoptado en varios ámbitos. Desde un proyecto de "research" de Microsoft, ha ido creciendo hasta hoy. Veremos qué lugar ocupa en el futuro, dentro de la panoplia de lenguajes que tenemos disponibles.

Nos leemos!

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

Posted Monday, December 03, 2007 10:03 AM by lopez | 1 comment(s)

Filed under:

Creando Virtual Machines para VMWare

El programa VMWare Player es gratuito, pero no permite la creación de nuevas máquinas virtuales. Hay disponible una herramienta en la gran Internet, para crear una, y bajarla del sitio:

http://www.easyvmx.com/

EasyVMX! is the simple and failsafe way to create complete virtual machines for VMware Player on the web.

You can install any Windows, Linux, BSD or Solaris, and test LiveCDs in a safe environment.

 

 

The original Virtual Machine Creator
Four required configuration fields
500MB to 100GB pre-built disk images
Lots of configuration options
Download Virtual Machine as zip

 

To run your virtual machine, you have to install the free VMware Player.
You will also need the installation media for the operating system you want to install.

Gracias a Gabriel Szlechtman por el aviso.

Nos leemos!

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

Posted Monday, December 03, 2007 9:40 AM by lopez | with no comments