Pregunta

¿Cuál es el valor agregado de aprender F# cuando ya estás familiarizado con LISP?

¿Fue útil?

Solución

Muchos de estos son desarrollos relativamente recientes en el mundo de los lenguajes de programación.Esto es algo que verá en F# y que no verá en Lisp, especialmente en Common Lisp, porque el estándar F# aún está en desarrollo.Como resultado, descubrirá que hay mucho que aprender.Por supuesto, cosas como ADT, coincidencia de patrones, mónadas y curry se pueden crear como una biblioteca en Lisp, pero es mejor aprender a usarlos en un lenguaje en el que estén convenientemente integrados.

La mayor ventaja de aprender F# para uso en el mundo real es su integración con .NET.

Otros consejos

Comparar Lisp directamente con F# no es realmente justo, porque al final del día, con suficiente tiempo podrías escribir la misma aplicación en cualquier idioma.

Sin embargo, Deberías aprender F# por las mismas razones que debería aprenderlo un desarrollador de C# o Java: porque permite la programación funcional en la plataforma .NET..No estoy 100% familiarizado con Lisp, pero supongo que tiene algunos de los mismos problemas que OCaml en el sentido de que no hay soporte de biblioteca estelar.¿Cómo se accede a la base de datos en Lisp?¿Qué pasa con los gráficos de alto rendimiento?

Si desea obtener más información sobre 'Por qué .NET', consulte esto Entonces pregunta.

Si conociera F# y Lisp, le resultaría una pregunta bastante extraña.

Como otros han señalado, Lisp es escrito dinámicamente.Más importante aún, la característica única de Lisp es que es homoicónico: El código Lisp es un tipo de datos Lisp fundamental (una lista).El sistema de macros aprovecha eso permitiéndole escribir código que se ejecuta en tiempo de compilación y modifica otro código.

F# no tiene nada como esto: es un lenguaje escrito estáticamente que toma prestadas muchas ideas de ML y Haskell y lo ejecuta en .NET.

Lo que estás preguntando es similar a "¿Por qué necesito aprender a usar una cuchara si sé usar un tenedor?"

Dado que LISP se escribe dinámicamente y F# se escribe estáticamente, estas comparaciones me parecen extrañas.

Si cambiara de Lisp a F#, sería únicamente porque tenía una tarea entre manos que se beneficiaba enormemente de alguna biblioteca exclusiva de .NET.

Pero no lo hago, así que no lo soy.

Dinero.El código F# ya es más valioso que el código Lisp y esta brecha se ampliará muy rápidamente a medida que F# vea una adopción generalizada.

En otras palabras, tiene muchas más posibilidades de obtener ingresos estables usando F# que usando Lisp.

Saludos, Jon Harrop.

F# es un lenguaje muy diferente en comparación con la mayoría de los dialectos Lisp.Entonces, F# te ofrece un ángulo de programación muy diferente, un ángulo que no aprenderás de Lisp.La mayoría de los dialectos Lisp se utilizan mejor para el desarrollo interactivo e incremental de software simbólico.Al mismo tiempo, la mayoría de los dialectos Lisp no son lenguajes de programación funcional, sino más bien lenguajes de múltiples paradigmas, con diferentes dialectos que otorgan diferente peso al soporte de características FPL (libre de efectos secundarios, estructuras de datos inmutables, tipos de datos algebraicos, ...).Por lo tanto, la mayoría de los dialectos Lisp carecen de escritura estática o no le ponen mucho énfasis.

Entonces, si conoces algún dialecto Lisp, entonces aprender F# puede tener mucho sentido.Simplemente no crea que gran parte de su conocimiento de Lisp se aplica a F#, ya que F# es un lenguaje muy diferente.Así como una programación imperativa acostumbrada a C o Java necesita desaprender algunas ideas cuando aprende Lisp, también es necesario desaprender hábitos de Lisp (sin tipos, efectos secundarios, macros, ...) cuando usa F#.F# también está impulsado por Microsoft y aprovecha el marco .net.

F# tiene la ventaja de que el desarrollo .NET (en general) se adopta ampliamente, está fácilmente disponible y es más popular en el mercado.

Si desea codificar F#, puede obtener Visual Studio, que muchos desarrolladores ya tendrán... en lugar de tener el entorno LISP en funcionamiento.

Además, es mucho más probable que los desarrolladores de .NET existentes busquen F# que LISP, si eso significa algo para usted.

(Esto proviene de un desarrollador de .NET que codificó y amaba LISP mientras estaba en la universidad).

¿No estoy seguro si lo harías?Si encuentra F# interesante, esa sería una razón.Si tu trabajo lo requiere, sería un motivo.Si cree que le haría más productivo o le aportaría un valor añadido a sus conocimientos actuales, esa sería una razón.

Pero si F# no le resulta interesante, su trabajo no lo requiere y no cree que le haga más productivo ni le aporte valor añadido, entonces ¿por qué lo haría?

Si, por otro lado, la pregunta es qué proporciona F# que no cecea, entonces se debe considerar la inferencia de tipos, la coincidencia de patrones y la integración con el resto del marco .NET.

Sé que este hilo es viejo pero desde que me topé con este solo quería comentar mis razones.Estoy aprendiendo F# simplemente por oportunidades profesionales, ya que .NET tiene mucho peso en una categoría de empresas que dominan mi campo.El paradigma funcional ha ido creciendo en uso entre empresas más orientadas a datos y cuantitativas y me gustaría ser uno de los primeros en incorporarse a esta tendencia.Actualmente no existe un lenguaje funcional sólido que se integre de forma completa y segura con la biblioteca .NET.De hecho, intenté portar algo de .NET desde el código Lisp y es realmente una molestia porque FFI solo admite primitivas de C y la interoperabilidad de .NET requiere una construcción de 'interfaz' y, aunque sé cómo hacer esto en C, es realmente una tarea enorme. dolor.Sería realmente bueno si Lisp hiciera un esfuerzo adicional en su próximo estándar y requiriera una clase c++ (incluidas funciones virtuales con vtables) y un tipo de interfaz estilo C# en su FFI.Tal vez incluso agregue un tipo de estilo de interfaz Java también.Esto permitiría una interoperabilidad completa con la biblioteca .NET y convertiría a Lisp en un fuerte competidor como lenguaje a gran escala.Sin embargo, dicho esto, tener experiencia en Lisp hizo que aprender F# fuera bastante fácil.Y me gusta cómo F# ha hecho un esfuerzo adicional para proporcionar tipos que normalmente verían como trabajos de tipo cuantitativo.Creo que F# se creó teniendo en cuenta el trabajo matemático y eso en sí mismo tiene valor sobre Lisp.

Una forma de ver esto (la pregunta original) es hacer coincidir el lenguaje (y las herramientas y plataformas asociadas) con la tarea inmediata.Si la tarea requiere un porcentaje abrumador de código .NET, y requeriría menos esfuerzo en un lenguaje que en otro para cumplir la tarea de frente, entonces tome el camino de menor resistencia (F#).Si no necesita capacidades .NET y se siente cómodo trabajando con LISP y no tiene que doblar el brazo para alejarse de él, siga usándolo.

En realidad no es muy diferente de comparar un martillo con una llave inglesa.Elija la herramienta que se adapte más eficazmente al trabajo.Tratar de elegir una herramienta que sea objetivamente "mejor" es una tontería.Y en cualquier caso, dentro de 20 años, todos los lenguajes actualmente "populares" podrían quedar obsoletos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top