¿Debo invertir tiempo aprendiendo el nuevo lenguaje F # de Microsoft? Soy principalmente un desarrollador de C# .NET y me pregunto si aprender F # será de ayuda en el desarrollo de las aplicaciones típicas de hoy.¿Debo aprender F # o los lenguajes de programación funcionales en general?
Respuesta
F # es un lugar perfecto para comenzar a aprender idiomas funcionales. Si le preocupa que el conocimiento F # no se aplique a otros lenguajes funcionales, no debería hacerlo. F # es miembro de la familia de idiomas ML. Microsoft simplemente lo modificó un poco para que funcione bien con .NET.
Luca Bolognese dio un amazing presentation en F # en PDC 2008. Recomiendo encarecidamente que lo mire y decida por usted mismo si F # merece la pena aprender.
Gran presentación. Me muestra la necesidad de aprender F #. –
Vale la pena echar un vistazo a los lenguajes de programación que te hacen pensar diferente, y si eres un desarrollador de C#, F # es probablemente el lenguaje de programación funcional que encontrarías más accesible.
Incluso si decide que no desea desarrollar aplicaciones en F #, la experiencia de usar F # podría cambiar la forma en que escribe C#.
Usted dijo: "¿Debería aprender lenguajes de programación funcionales en general?"
Si quiere entender la programación en un nivel más profundo, le digo que debería hacerlo. Aprender LISP fue una aventura reveladora para mí. Fue muy difícil al principio. Y luego, un día como por arte de magia, fue natural para mí. Eso solo puede ser mejor para su capacidad de ver los problemas de diferentes maneras.
Echa un vistazo a las respuestas en What would be a good second lanuguage to learn for a C# programmer. La conclusión es: los lenguajes funcionales ofrecen un nuevo paradigma completo y serán de valor para usted ya que mejorarán sus habilidades de programación.
Aprendí Prolog hace mucho tiempo y sigue siendo mi idioma favorito en muchos aspectos. Ahora Prolog no es solo un lenguaje funcional sino también un lenguaje AI, sin embargo, hace algún tiempo aprendí Erlang, que está basado en Prolog. Puedo recomendarle que aprenda estos dos idiomas a medida que aprende mucho que beneficia su desarrollo cotidiano en, por ejemplo, C#.
Si hoy aprendiera un nuevo lenguaje funcional, probablemente sería F #, ya que será un ciudadano de primera clase de la plataforma .Net. Creo que F # es el lenguaje funcional (bien multi paradigma) en el que tendrás mayores posibilidades de ser productivo.
¿Será útil en el desarrollo de aplicaciones 'comunes'? No particularmente, no más ni menos que c o C# es de todos modos. No es RAD, por lo que no hay atajos disponibles en F # que te acerquen más al lanzamiento de una aplicación 'común' más rápido que cualquier otro lenguaje que no sea RAD.
Por otro lado, para programas que son más de computación que presentación, F # puede estar más cerca del dominio de la aplicación que otro idioma. Los lenguajes funcionales hacen que el manejo de ciertos dominios problemáticos sea mucho más intuitivo.
Personalmente, creo que vale la pena aprender, no porque va a resolver todos sus problemas, sino porque cada programador que merezca la pena tener en cuenta al menos un lenguaje funcional. Una gran cantidad de conceptos programáticos aparentemente barrocos se hacen más transparentes cuando el concepto de programación funcional está flotando en tu cabeza.
Otra preferencia personal mía; Me gustan los lenguajes de programación con un sistema de tipo sólido y diverso. No me gustan las estructuras de cuerdas de zapatos en tipos que no tienen una coincidencia conceptual muy fuerte.Los sistemas de tipo ML, en mi opinión, le permiten construir tipos con una granularidad mucho más fina que los sistemas de tipo convencional. Como resultado, creo que puedo escribir código que interactúa con estas estructuras de una manera más natural con lenguajes de estilo ML como F #.
Si bien esto no ayuda mucho con conceptos comunes, que tienen conjuntos de características para admitirlos en más idiomas convencionales, para cualquier cosa que sea remotamente poco común, preferiría F # a la mayoría de los demás idiomas.
- 1. F # - ¿Debo aprender con o sin # luz?
- 2. Diagramación en los lenguajes funcionales
- 3. Cómo aprender programación de GUI en F #
- 4. Los lenguajes funcionales dirigidos a la LLVM
- 5. Descomposición (modularidad) en los lenguajes funcionales
- 6. ¿Los lenguajes de programación funcionales son adecuados para la programación de gráficos?
- 7. ¿Qué lenguajes de programación funcionales tienen bibliotecas de bioinformática?
- 8. ¿Cómo podría implementar el diseño por contrato en Clojure específicamente o en los lenguajes funcionales en general?
- 9. ¿Qué algoritmos son difíciles de implementar en los lenguajes funcionales?
- 10. ¿Cuáles son los populares lenguajes de programación funcionales 'listos para la web'?
- 11. Tipos de datos algebraicos fuera de los lenguajes funcionales?
- 12. Aprendiendo cómo funcionan los lenguajes de programación
- 13. ¿Cómo/por qué los lenguajes funcionales (específicamente Erlang) escalan bien?
- 14. Compilación de lenguajes funcionales a C
- 15. Ordenando en lenguajes de programación funcional
- 16. resolver ecuaciones funcionales mediante programación
- 17. Lenguajes funcionales: ejemplos de la vida real
- 18. ¿Debo aprender ASP.NET AJAX, jQuery o ambos?
- 19. Uso de 'uso' o 'uso' en lenguajes de programación
- 20. Referencias para aprender la teoría detrás de lenguajes funcionales puros como Haskell?
- 21. ¿Qué es la palabra clave "let" en lenguajes funcionales como F # y OCaml for?
- 22. ¿Existen esquemas o Lisps puramente funcionales?
- 23. Complejidad de los lenguajes de programación
- 24. ¿Los programas en lenguajes funcionales tienen más probabilidades de tener desbordamientos de pila?
- 25. ¿Debo aprender Swing antes de aprender JavaFx?
- 26. ¿Los lenguajes funcionales son inherentemente más paralelos que sus OO o primos imperativos?
- 27. Lenguajes de programación SIMD
- 28. ¿Qué debo aprender después de PHP?
- 29. Automóvil Lenguajes de programación
- 30. Endianness en lenguajes de programación
Esta pregunta sería más relevante en http://programmers.stackexchange.com. –