Cada uno de los paradigmas de programación tiene su propio uso. Aunque no soy un gran fanático de la programación orientada a objetos. La programación funcional es muy útil cuando se desea lograr un alto nivel de abstracción. Esto ayuda a segregar la implementación de la especificación. Pero el problema con la programación funcional es la ineficiencia. La ineficiencia se debe principalmente a la falta de control sobre la implementación. Esto se puede superar con el tiempo a medida que se construyen intérpretes inteligentes. La programación iterativa en el otro puede dar ese control al programador de inmediato. A veces también es más fácil construir programas imperativos ya que con el tiempo los programadores se han acostumbrado a codificar en este paradigma.
A diferencia de estos dos tipos de programación (FP y Programas Imperativos), OOP no ofrece mucha ventaja. Lo único nuevo que trae a la mesa es la capacidad de mantener el estado como parte de los objetos. Pero eso se puede lograr a través de otros medios.
OOP ha visto su tiempo. Fue muy bueno cuando el pensamiento estructurado para el desarrollo de aplicaciones era importante. Pero a medida que avanzamos hacia arquitecturas poco acopladas, OOP no será tan útil. Un estilo de programación declarativo se irá haciendo cada vez más popular. De hecho, gran parte del desarrollo front-end ya se ha movido a un estilo declarativo (piense en arquitecturas Model-View en front-end como AngularJS o ReactJS). Los programas de back-end o del lado del servidor todavía usan un estilo imperativo y OOP en gran medida. Habrá más tiempo antes de que esto cambie, pero eventualmente también podría cambiar. Si piensa lógicamente, después de años de automatización y RnD en software, ¿por qué un desarrollador aún debe pensar en términos de detalles de implementación (como qué función debería ser privada, cuál debería ser pública, etc.)? Cuál podría ser el marco adecuado para esto sigue siendo una pregunta sin respuesta. La programación funcional definitivamente puede llenar este vacío, pero no estoy 100% seguro. Sin embargo, soy un gran admirador de FP y dentro de nuestra organización nos estamos acercando al estilo FP en la parte de atrás. Aquí hay algunos artículos que hemos escrito sobre esta área:
- ¿La inteligencia artificial está experimentando un renacimiento y, de ser así, qué la está impulsando?
- ¿Cuál será la tendencia futura del mercado de inteligencia artificial y aprendizaje automático avanzado a nivel mundial?
- ¿Por qué Bill Gates, Stephen Hawking y otras grandes mentes temen la próxima inteligencia artificial?
- ¿Existe alguna relación entre la neurociencia y el aprendizaje automático?
- ¿Qué es lo más probable que suceda si la IA desarrolla instintos de supervivencia: cada máquina piensa por sí misma o la IA considera todas las máquinas como parte de ella?
Integrando programación funcional y RESTful
Aumento funcional al paradigma RESTful
Transferencia de estado funcional aumentada
Eso es lo que concierne a la primera parte de su pregunta. En cuanto a la segunda parte (FP en AI y ML), creemos que FP tiene mucho que ver con la IA simbólica. La mayor parte del aprendizaje humano ocurre a través de símbolos. No recordamos los datos de manera cuantitativa. Incluso cuando recordamos números (como, por ejemplo, el número de teléfono o el valor de Pi) lo almacenamos como una serie de símbolos en lugar de como valores flotantes / in. Nuestros cálculos aritméticos también se basan en símbolos. Esta representación simbólica nos da el poder de la abstracción. Si queremos que las máquinas emulen a los humanos, las máquinas también deben entender los símbolos. Para algunos existentes, esto ya sucede cuando una variable tiene un nombre dado y se la denomina con ese nombre en el código posterior. Pero en este caso, la máquina no está aprendiendo ese símbolo, sino que el programador está de alguna manera codificando el símbolo. Si una máquina realmente puede aprender símbolos, sus asociaciones para combinar símbolos para formar símbolos complejos y formar abstracciones, estará más cerca de los humanos en la capacidad de aprendizaje. En cierto modo, las máquinas digitales usan 0 y 1 como símbolos en el nivel básico y crean abstracciones a su alrededor.
La necesidad de realizar operaciones en símbolos ha llevado al desarrollo del cálculo Lambda y el grupo de lenguaje de Lisp. Este fue el primer gran paso en la IA. Aunque esto sucedió hace más de 50 años, este enfoque hacia la IA no ha recibido tanta importancia. El mundo computacional se perdió en otros aspectos como el procesamiento de datos, el ajuste del modelo de caja negra (incluido ANN). Debe haber un renacimiento de la manipulación simbólica y el cálculo lambda para que la IA realmente progrese más allá de la adaptación de funciones.