He trabajado en grandes bases de código escritas en lenguajes desde C ++ y C # a OCaml y F #. C ++ y C # se consideran OOP, mientras que OCaml y F # se consideran funcionales, pero, en mi opinión, estos agujeros de paloma ocultan las diferencias importantes.
El mayor problema con C ++ es que no es seguro para la memoria y, en consecuencia, se desperdicia una gran parte del esfuerzo de desarrollo tratando de localizar errores de memoria que a menudo son probabilísticos y difíciles de rastrear. La orientación a objetos ofrecida por C ++ es tan débil que es casi inútil en comparación con un lenguaje OOP genuino como Smalltalk. Entonces la orientación a objetos es realmente irrelevante.
La mayor ventaja de F # es el sistema de tipo ML (tuplas, registros y uniones) y la coincidencia de patrones. En realidad, esto no tiene nada que ver con la programación funcional además del hecho de que estas características del lenguaje solo aparecen en lenguajes funcionales. Las funciones de primera clase son una ventaja sustancial, pero también están disponibles en C #, que generalmente no se considera un lenguaje funcional.
- ¿Qué herramientas usa la programación de computadoras?
- En la escena de inicio, ¿hay muchas personas como Erlich Bachman del programa de televisión Silicon Valley, es decir, un 'hombre de ideas' sin ninguna otra habilidad?
- ¿Es posible cambiar de ingeniería de software a ingeniería biomédica?
- ¿Por qué los ingenieros continúan adoptando idiomas que no están estrictamente escritos?
- ¿Cuál es el mejor IDE Java ligero?
Dicho esto, considero que OCaml y F # son mucho más productivos que C ++ y C #. Iba a decir que los programadores funcionales, especialmente los junior, tienen la costumbre de tratar de incorporar características oscuras porque tienen una fuerte tendencia a molestar en lugar de mantener el código de producción simple. Sin embargo, ahora que lo pienso, vi mucho más de eso con las plantillas de C ++ que alguna vez hice con OCaml o F #.