¿Cuál es el futuro de la programación, FP u OOP, que es mejor para la inteligencia artificial y el aprendizaje automático?

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:

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.

OOP es mucho mejor para tu futura programación.

La programación orientada a objetos no es tan diferente del procedimiento normal
programar como lo hacen sus defensores y no es tan difícil de
entender como su proselitismo implica. Es útil para hacer grandes
programas modulares pero tales programas deberían haberse estructurado de manera muy similar a
una estructura OOP de todos modos. Puede ser más complicado de lo que vale para abreviar
y programas rápidos. El entusiasmo por C ++ en particular se debe principalmente a que
agrega algunas características básicas importantes que faltaban en C. Estas son algunas características básicas famosas y comunes de OOP,

  1. Objeto
  2. Clase
  3. Ocultación de datos y encapsulación
  4. Enlace Dinámico
  5. Paso de mensajes
  6. Herencia
  7. Polimorfismo

OMI, análisis funcional y diseño implementando un entorno dinámico de llamadas a funciones usando OOP. Esto tiene la ventaja de probar el teorema junto con la gestión estática de la complejidad OO.