Programación en F Sharp/Prefacio

De Wikilibros, la colección de libros de texto de contenido libre.

F#: Prefacio de como llego a existir este libro[editar]

Escrito por Awesome Princess:

Normalmente los autores eligen escribir un prefacio sobre el mismo libro. Pero por mi egocentrismo quiero escribir sobre mi. No porque sea una persona especialmente interesante, sino porque mis experiencias con la programación funcional son relevantes para la creación de este libro.

En 2006, me estaba aburriendo de mi trabajo, el único tipo de software que siempre habia creado había sido colocar una interfaz gráfica en frente de una base de datos y me estaba cansando de eso. Quería encontrar un trabajo interesante.

Por diversión empecé a buscar ofertas de empleo en compañías de alto nivel (Google, eBay, Microsoft, Amazon, etc.). Me di cuenta que todos los trabajos aburridos (aplicaciones CRUD, desarrollos web simples, etc) requieren programadores con experiencia en Java, C# o C++. Por otro lado los trabajos interesantes (Programación de compiladores, verificación de circuitos digitales, computación paralela masiva, biométrica, etc) requerían de programadores con experiencia en lenguajes poco familiares. En particular:

  • Lei en un articulo de Paul Graham "Beating the average" que la primera version de Yahoo! Store fue escrita mayormente en Lisp
  • Me encontre con ofertas de empleo para Google buscando programadores con experiencia en Haskell o Python ademas de C++
  • Lei en un FAQ de Erlang que el lenguaje de programación Erlang es la herramienta elegida por  proveedores de servicios de telecomunicación como T-Mobile
  • Durante años escuche que Lisp era el lenguaje principal durante la era dorada de las investigaciones de inteligencia artificial
  • Me encontre con ofertas de trabajo en Microsoft en el área de verificación de controladores buscando programadores OCaml.

Las mas notables aplicaciones en el mundo no estan escritas en Java, están escritas en estos oscuros y extraños lenguajes, un paradigma de programación totalmente ajeno desde mi punto de vista enfocado en C#. Decidi suplementar mis conocimientos aprendiendo uno de estos oscuros lenguajes de programación funcional.

No fue muy dificil de hacer elección entre un lenguaje u otro, si voy a aprender un nuevo lenguaje necesita satisfacer algunas condiciones: Debe ser práctico para uso personal. Haskell me daba algo de miedo en ese momento y no iba a poder explotar las capacidades de concurrencia en Erlang con el alcance de las aplicaciones que escrinitria para mi. La eleccion se redujo a Lisp o OCaml, basado en esta comparacion de diferentes lenguajes, me decidi por los tipos estáticos, la velocidad de código, el tamaño de los binarios y el nicho en mercados financiero de OCaml.

Aprendi OCaml y cambio totalmente mi manera de pensar. Despues de usar el lenguaje y mantener contacto con grupos de noticias en OCaml, pude aprender el lenguaje bastante rapido

En agosto de 2007 me tome un tiempo para familiarizarme con el lenguaje F#. Mientras que la mayor parte se me hizo facil, una cosa que note sobre el lenguaje, para algunas personas era inaccesible  tratar de aprender el lenguaje. La escasez de material didáctico disponible de F# hacía casi imposible para los novatos aprender F# como primer lenguaje. Incluso hoy Noviembre de 2008 solo existen pocas publicaciones, incluso para una persona con varios años de experiencia en programación como yo, me costo comprender el lenguaje

Durante mucho tiempo quise escribir algo de utilidad para neófitos en F#, algo que contuviera la información necesaria sobre el lenguaje en un solo recurso. Este Libro fue originalmente iniciado por un compañero Wikipedista en 2006, pero nadie había escrito contenido sustancial durante casi 2 años. Encontré este libro y decidí (por el bien de las personas con ganas de aprender F#) compilar todo lo que sabía sobre el lenguaje en un formato aceptable para un aprendiz del lenguaje.

Me complace la forma en la que el libro ha ido progresando, al final me gustaría que la gente enlazara este libro como el tutorial de preferencia del lenguaje F# en internet