Usas algun lenguaje funcional? te interesan?

Ver resultados de encuesta: Te interesaría aprender un lenguaje funcional

Votantes
3. No puedes votar en esta encuesta
  • Si

    1 33.33%
  • No

    1 33.33%
  • No se

    1 33.33%
Resultados 1 al 4 de 4

Tema: Usas algun lenguaje funcional? te interesan?

  1. #1
    Usuario
    Mensajes
    2
    Gracias
    0
    Agradecido 0 veces en 0 posts

    Usas algun lenguaje funcional? te interesan?

    Para muchos son lenguajes para cientificos sin capacidad de aplicacion practica, para otros es el futuro de la programación, si bien lisp es uno de los lenguajes (o familia de lenguajes) mas viejitos que hay y haskell no es precisamente joven, hoy se ve la enorme ventaja que ofrecen los lenguajes funcionales: paralelizar y usar todos los cpus coordinadamente es algo sencillo y practicamente natural, mientras que en lenguajes "empiricos" como java, ruby, python, c++ resulta un dolor de cabeza; por lo que crear aplicaciones escalables es menos problematico; si a eso le añadimos las listas, tenemos lenguajes que pueden manejar grandisimas cantidades de datos, de manera asincronica y eficiente. Si bien requieren un esfuerzo inicial, luego de aprendidos resultan mucho mas sencillos a la hora de aplicar algun algoritmo, que el resto de los lenguajes (recuerdo haber leido que en las competencias de codigo que hace google, mas del 80% de los que usaban haskell lograban terminar el codigo, mientras que en los otros lenguajes no superaban ni el 40%), además resultan mucho mas expresivos y claros que sus contrapartes empiricas (punto que de seguro generara discusion).

    En lo personal considero que el presente de la web (y el futuro cercano) va de la mano a nodejs y javascript, sencillo, eficiente y rapido (aunque no tan escalable) resulta mejor opcion hoy en dia que Rails, Django, ASP o php, en buena parte porque las aplicaciones de hoy en dia son aplicaciones en tiempo real y eso lo hace muy bien nodejs; pero en el futuro cercano se necesitan lenguajes sencillos (no de aprender pero si de aplicar) eficientes y que permitan concurrencia y en eso los lenguajes funcionales brillan; si ademas añadimos que sean hibridos (no 100% puros como haskell) como lo son clojure, f# o scala tenemos lenguajes eficientes, escalable y en muchas menos lineas de codigo; el problema: a muchos les da temor aprender un lenguaje desde 0 sobre todo cuando son tan diferentes a lo que "nos tienen acostumbrados"...como es java, c++, python, etc...

    Ustedes que opinan?...usan algun lenguaje funcional (algun lisp, haskell, erlang, f#, scala, clojure), tienen pensado comenzar a utilizar alguno?...que les gusta?..que no les gusta?...

    Nota:
    Si bien javascript, python, lua y ruby tienen caracteristicas funcionales, no son lenguajes funcionales, asi que no tienen ni las ventajas ni las desventajas de estos...

    Abro este post tanto para saber sus opiniones como para tratar de resolver algunas dudas o ideas que puedan tener de los lenguajes funcionales.....
    Última edición por cocoScript; 25/02/2012 a las 01:17

  2. #2
    Usuario
    Ubicación
    Barcelona - Catalunya
    Mensajes
    44
    Gracias
    6
    Agradecido 23 veces en 16 posts
    Yo en lo personal diría que no he tocado nunca un lenguaje funcional, conozco muy bien C/C++ y los utilizo bastante para crear aplicaciones de escritorio en windows, en cuanto a la web domino bastante bien php, javascript con y sin jquery, y mysql, que para mis necesidades la verdad es que me sobra.

    He votado que "No lo se.." porque sin haber tocado un lenguaje funcional no soy capaz de ver sus ventajas y desventajas frente a los lenguajes "empiricos". También hay que destacar que llevo muchos años programando en C/C++ y que quizás la adaptación a uno de esos lenguajes funcionales podría resultar-me algo dura.

    En cuanto a lo de paralelizar procesos en windows (que es el sistema operativo en el que mas trabajo...) no se yo que ventajas puede tener frente a un hilo de C++ y el tema de coordinar cpus, por mucho que se programe bien al final la tarea recae en el sistema operativo, y si este no cumple su cometido a la perfección pueden haber problemas en todos los lenguajes (o al menos eso creo).

    Por otro lado no me convencen los lenguajes tipo framework .net que en principio te facilitan la vida, y que en teoría requieren menos lineas de código, en especial porque me gusta saber lo que se esta haciendo en cada momento, y no crear un objeto de terceros que vete a saber tu que hace internamente para realizar su función. Con esto lo que quiero decir es que no me da miedo tener que escribir mucho más código para tareas que deberían ser relativamente sencillas utilizando un código de terceros.

    Me considero una persona de mente abierta, pero no puedo darte una mejor respuesta sin haber experimentado las ventajas e inconvenientes de estos lenguajes "funcionales".

    Saludos.
    Última edición por devildrey33; 25/02/2012 a las 02:26

  3. #3
    Usuario
    Mensajes
    2
    Gracias
    0
    Agradecido 0 veces en 0 posts
    Hola..gracias por tu comentario, bueno hay varios puntos interesantes, la ventaja de los lenguajes funcionales son:
    - Mucho mas expresivos que su contraparte empirica, en el caso de java y scala o c# y f#, el mismo codigo escrito de forma funcional tienen 1/4 menos de lineas de codigo, ademas son muchos mas legibles porque se basan en conceptos matematicos.
    - Vienen con librerias para manejar los valores de listas (o arrays), si has usado .NET conocerás LINQ, si has usado ruby sería algo como el modulo enumerables, asi que normalmente no se usa el for o el foreach, un ejemplo sería:

    - map (+3) [1..10]
    [4,5,6,7,8 ....]

    la ventaja es que al ser un lenguaje funcional puedes componer funciones dentro de funciones)

    map (replicate 3) [3..6]
    [[3,3,3],[4,4,4],[5,5,5],[6,6,6]]

    usando el primer ejemplo como una composicion de funciones
    map (replicate 3) (map (+3) [1..10])

    le sumaria 3 a cada numero del 1 al 10 y luego lo replicaría 3 veces
    [[4,4,4],[5,5,5]....

    obviamente estos son ejemplos muy sencillos, pero la verdad es que en cualquier programa donde tengas que manupular listas de datos resultan una gran ayuda


    además se hace mucho uso de recursiones y de pattern matching, es algo como esto
    teniendo un array [1,2,3,4]
    este array es igual a decir 1:2:3:4:[]

    asi que puedes declarar unas "variables" (aunque en realidad son constantes) donde se trate de coincidir ese patron
    let primero:segundo:resto = [1,2,3,4] declaras primero, segundo y resto y vez donde coincide con el patron
    primero es 1 segundo es 2 resto es 3,4


    usando estos patrones y recursiones puedes escribir el algoritmo de quiksort en 4 lineas


    quicksort (x:xs) =
    let smallerSorted = quicksort [a | a <- xs, a <= x]
    biggerSorted = quicksort [a | a <- xs, a > x]
    in smallerSorted ++ [x] ++ biggerSorted

    obviamente si nunca has usado la sintaxis parece complicado, pero la verdad es que despues de conocerla es lo mas legible que hay (te lo dice alguien que ha usado ruby y pithon por bastante tiempo)
    una explicacion la puedes conseguir en:
    aprendehaskell.es/content/Recursion.html#quicksort

    de por si ese es un enlace recomendable, en poco mas de una hora ya puedes estar viendo que diferente son los lenguajes empiricos a los funcionales
    aprendehaskell.es/main.html


    ---------------------------------

    lo de paralizar tienes razon en parte, la mayoría de los lenguajes te permiten hacer threads o hilos, el problema es sincronizar esos hilos y que funcionen bien juntos
    hay casos donde es sencillo usar threads, normalmente cuando es un solo proceso (una gui que hace algo complicado y demandante de cpu, separas ese algo en un thread y asi la ventana te sigue respondiendo y no se guinda)
    pero hay casos donde es mas complicado, como cuando muchos threads tienen que manipular la misma data, caso de juegos, de servidores distribuidos, etc, aqui puedes tener un deadlock en lenguajes empiricos si no tienes mucho cuidado, porque los lenguajes empiricos tienen variables

    en lenguajes funcionales la cosa es diferente, en teoría no usan variables, solo funciones, llamas funciones, pasas funciones a otras funciones que te retornan en muchos casos otras funciones, al no haber variables se pueden hacer threads sin peligro

    en realidad no es por un framework que se escribe menos lineas, es por el lenguaje en si


    la verdad es que es dificil "vender" un lenguaje funcional porque son mucho mas dificiles de aprender, pero una vez que los conoces no vas a tener tantas complicaciones a la hora de escribir cualquier codigo o algoritmo complicado
    algo que lei en un blog:

    Eric Raymond ha escrito un ensayo titulado "Cómo Convertirse en Hacker", y en este, entre otras cosas, le dice a los aspirantes a hackers [a] qué lenguajes deben aprender. Sugiere comenzar con Python y Java, ya que son fáciles de aprender. El hacker serio también querrá aprender C, con el fin de hackear Unix y Perl para administración de sistemas y scripts cgi. Por último, el hacker realmente serio debe considerar aprender Lisp:

    Vale la pena aprender Lisp por la profunda experiencia de iluminación que obtendrás cuando finalmente lo comprendas, esa experiencia te hará un mejor programador por el resto de tus días, incluso si nunca utilizas Lisp mucho.
    Este es el mismo argumento que tiendes a escuchar para aprender Latín. No te va a conseguir un trabajo, excepto tal vez como profesor de clásicos, pero mejorara tu mente y te hará un mejor escritor en idiomas que desees utilizar, como el Inglés.

    ahora, la ventaja de clojure, scala o f# es que no solo te sirven en el mundo teorico y para aprender a pensar, sino tambien son lenguajes practicos y alternativas a java o .NET, asi que aprendes a pensar de otra manera mientras escribes codigo real 2x1 pues

  4. #4
    Usuario
    Ubicación
    Barcelona - Catalunya
    Mensajes
    44
    Gracias
    6
    Agradecido 23 veces en 16 posts
    Parece interesante, a ver si un día de estos tengo un rato largo y me miro con mas calma los ejemplos que has comentado.

Temas similares

  1. Alguien ha logrado comercializar, algun proyecto electronico?
    Por eduardo echeverry rodas en el foro Electrónica
    Respuestas: 28
    Último mensaje: 01/03/2013, 19:11
  2. lenguaje de programacion KOP
    Por jose-luis en el foro Programación
    Respuestas: 4
    Último mensaje: 23/07/2012, 21:18
  3. Programación en Symbian ¿algún tutorial?
    Por HJ.0X00 en el foro Dispositivos Móviles
    Respuestas: 9
    Último mensaje: 21/03/2012, 02:14
  4. hay algun circuito para decodificar direcTV ?
    Por nachonach en el foro Radio
    Respuestas: 4
    Último mensaje: 10/11/2011, 02:59
  5. El Soft como algun dia lo quisiste...
    Por ogeid1988 en el foro Software
    Respuestas: 4
    Último mensaje: 03/09/2010, 02:05

Los visitantes encuentran esta página buscando por:

cual es el futuro de los lenguajes funcionales

3 lenguajes funcionales

desventajas lenguaje funcional

lenguaje de programacion algon ventajas y desventajas

python

que es un lenguaje funcional

c es un lenguaje funcional

que es lenguajefuncional

programacion funcional php

cuales son lenguajes funcionales

futuro lenguaje f#

3 lenguajes funcionales

futuro de la programacion funcional

lenguaje funcional

mejor lenguaje de programacion funcional

ventajas de hackear en lenguaje c

futuro de lenguaje funcional

algun tema de lenguaje

ventajas y desventajas de lenguaje imperativo

lenguajes funcionales el futurocual el futuro de los lenguajes funcionaleslineas de codigo funcionalesuna buena respuesta de lenguaje funcionalcuales son los lenguajes funcionalesque aplicaciones se hacen con los lenguajes funcionales

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37