Cuando eres nuevo en el desarrollo de PHP o JavaScript, no necesitas ni quieres pensar demasiado sobre los paradigmas de programación. Solo quieres hacer que las cosas funcionen. Y eso tiene mucho sentido. Pero al final, a medida que avanza, comienzas a preguntar. ¿Qué es este “oop” con el que la gente parece obsesionada? ¿Hago esto? ¿Yo debería ser? En principio, este artículo es para personas en un lugar como este. Nuestro objetivo hoy es aclarar cuáles son estos tres paradigmas principales en el desarrollo del software, cómo unirse mutuamente y cuáles querrán usar cuando. Contrariamente a la creencia popular, nunca hay una respuesta “correcta” o “incorrecta”.
¿Cuáles son los paradigmas y por qué importa antes de comenzar a desglosar todos los paradigmas de programación que cubriremos? Es lógico ser más claro sobre lo que queremos decir con “paradigmas”. Para citar una definición que es relevante, el Diccionario del Patrimonio Americano dice que un paradigma es: un conjunto de hipótesis, conceptos, valores y prácticas que constituyen una forma de ver la realidad de la comunidad que los comparte, especialmente en una disciplina intelectual. Esto es perfecto para nosotros. Lo que diferencia estos tres principales paradigmas de programación que importan para los desarrolladores de WordPress es que son un conjunto de suposiciones y lentes que pueden entenderse y construir un programa que hace que una computadora haga algo útil.
Algo útil que puede hacer una computadora es crear páginas web, como lo hace WordPress. E internamente, WordPress usa fuertemente dos de los tres paradigmas de los que hablaremos para crear lo que hace. . Hay un tribalismo muy real, que hace que los programadores se orienten en objetos y programadores funcionales que se burlan entre sí en ciertos círculos y circunstancias. Esencialmente, la buena comprensión de estos paradigmas le permite sentirse más cómodo para escribir el código. Paradigma que no discutiremos: Declarativo
El primer álbum de la banda de rock brasileño CSS. (Nunca escuché.)

Un paradigma interesante que importa para WordPress es la programación declarativa. En la programación declarativa, defina las cosas que deberían suceder o ser, pero no escriba ningún flujo de control. Eso significa: no dices cómo, pero qué. Aunque la clasificación de estas cosas se vuelve bastante poco clara y las personas discuten sobre los términos, tanto HTML como CSS son ejemplos de programación declarativa. Cree un “programa” que esté destinado a mostrar cómo debería ser el mundo, pero nada sobre cómo debería ser el mundo que definió. En principio, esa parte es el lugar donde la programación realizada por los creadores de un navegador web toma el control.
Entonces, la programación declarativa es importante para WordPress y la web en su conjunto. Pero también carece del flujo de control lógico que realiza en idiomas como PHP y JavaScript. (Esto no significa que CSS no sea complicado, a menudo es difícil para mí). Pero el hecho de que este paradigma sea tan diferente es por qué no diremos más sobre la programación declarativa. ¿Qué es la programación de procedimientos? Una de las formas más comunes en que se usa la función en PHP es, de hecho, como un procedimiento almacenado que restaura el mismo procedimiento mecánico cada vez que se llama. Esto no es “programación funcional”, que trataremos la última. El primer paradigma de programación que un nuevo desarrollador podría aprender es procedimiento o imperativo. Si eres un agotador, los dos son diferentes. Para mí estoy lo suficientemente cerca como para que no importa. Fundamentalmente, el código de procedimiento o imperativo es algo que instruye directamente a una computadora cómo completar una tarea que desea hacer en pasos lógicos. En lugar de declarar el estado del mundo (como mencioné cosas declarativas como CSS), definirías que harás estas cosas revisándolo, agregándolo y poniendo el resultado aquí. La mayor parte de WordPress es fundamentalmente procedimiento, ya que (los archivos de plantilla de tema, por ejemplo) son un conjunto directo de funciones PHP y WordPress muy literales que, juntas, realizan una página web. Este estilo de procedimiento tiene una gran ventaja de que está menos confundido que muchas alternativas y hay menos enrutamiento a través de muchos conceptos diferentes y complicados para la mayoría de los desarrolladores más nuevos.
Una cosa común (y comprensible) que confunde a las personas (incluido yo) es que el uso de funciones s no significa que no realice una programación de procedimientos. Una de las formas más comunes en que se usa la función en PHP es, de hecho, como un procedimiento almacenado que restaura el mismo procedimiento mecánico cada vez que se llama. Esto no es “programación funcional”, que trataremos la última. Las cosas negativas que la gente dice sobre la programación procesal El mayor impacto contra la programación procesal es que se encuentran entre los modos de programación más antiguos. Como resultado, se ridica como anticuado y, en general, no es muy genial. Pero estas son quejas bastante suaves. Quejas más concretas que considero bien: a menudo es difícil pensar claramente sobre el programa principal. Designar procedimientos con funciones puede ayudar a simplificar el tipo de naturaleza del automóvil del código de procedimiento, pero esencialmente cómo las personas y las computadoras piensan que no son tan similares, por lo que el código que está demasiado cerca de lo que los automóviles a menudo confunden a las personas.
No hay abstracciones. Buenos programas abstraen cosas simples de realidades subyacentes más complejas. Favorecen la comprensión humana en detrimento de la eficiencia del automóvil. Hay momentos en los que no puede tener esto por razones de rendimiento y, en esos casos, el código de procedimiento puede ser más rápido y, por lo tanto, mejor.
Cosas buenas sobre la programación procesal que se dicen, algunas cosas muy buenas surgen de la programación de procedimientos. El primero y lo más importante es que no es una mayor abastección, lo que puede ser una verdadera ayuda para los recién llegados. Comprender los objetos parece parecer generalmente más complicado para los recién llegados que algunas llamadas de funciones. Los programas de procedimiento también pueden ser más rápidos que la mayoría de las alternativas. Esto es especialmente cierto desde un punto de vista histórico. Obtenga fácilmente el máximo rendimiento en los procedimientos, porque usted es “empático” a lo que es la forma de automóvil más eficiente para realizar una tarea. Si puede hacerlo en una sola llamada en lugar de 500, cuando escribe un código de procedimiento, generalmente lo hace y lo hace. Lo que es la programación orientada a nuevos objetos, como personas, estamos acostumbrados a pensar en objetos. Fundamentalmente, la diferencia entre los programas de procedimiento y orientados a objetos es que el código orientado al objeto (OO) tendrá entidades. Algo así como un “mensaje” en un sistema que puede ser “secreto”, “marcado como lectura”, “eliminado”, “enviado”, “esbozado”, etc.
En un paradigma de procedimiento, se ve obligado a pasar una variable de mensaje entre diferentes funciones, como creating_draft_message ($ mensaje) o delete_message ($ id) etc. Todos estos son funcionales, pero a medida que trabaja más con él, comience a olvidar si un cierto procedimiento necesitaba el mensaje en sí. Una identificación numérica. algo más. Por lo tanto, debe investigar continuamente sus procedimientos.
En un programa orientado a objetos, tiene un objeto $ mensaje $, que generalmente es una instancia de la clase de mensaje. Este objeto tiene propiedades de que las personas pueden leerse públicamente, como $ mensaje-> was_read y las acciones que realizan, como mensajes-> destruir (). Estos son útiles, porque nosotros, como personas, estamos acostumbrados a pensar en objetos. Entendemos la idea de que las cosas nombradas salen del caos del mundo y nos hace más fácil entender ese mundo. Después de todo, esta es una “silla”. Lo que es malo en los sistemas orientados a objetos es una mentira. La queja más fuerte sobre OOP es que los objetos son una mentira. Fundamentalmente, el automóvil no entiende o no piensa en términos de objetos, por lo que algunas cosas que las personas hacen con los objetos que tienen un significado conceptual perfecto tienen un rendimiento terriblemente débil. Esto se debe a que, bajo el capó, una acción en el objeto puede hacer cualquier cosa desde la consulta de cero a 4000 en la base de datos. Pero debido a la encapsulación (no explica el mundo cómo funciona) de un objeto, el recurrente puede no conocer el costo del rendimiento y puede enfrentar una fuerte penalización por su ignorancia.
La otra cosa sobre el OOP que a veces me siento frustrado es que a menudo se hace mal.OOP ha sido el paradigma dominante en la programación durante más de 20 años y significa que aparecen modelos extremadamente divergentes y todos pertenecen al mismo campamento.Esto no es un problema con OOP en el concepto, pero se hace difícil en la práctica que se realicen muchos programas malos en un paradigma orientado a objetos.Lo que es bueno en los sistemas orientados a objetos, lo mejor de los programas orientados a objetos es que nosotros, las personas, estamos muy acostumbrados a pensar en los objetos.Nos hemos acostumbrado tanto que un buen sistema orientado a objetos se siente fácil de entender de una manera que ni siquiera el mejor código de procedimiento puede.$ mensaje->
SendTo ($ user) es mucho más simple que cualquier alternativa de procedimiento. Debido a esto, pueden ser muy geniales para leer. Esto también es ayudado por el hecho de que en un buen sistema orientado a objetos, los componentes están aislados y encapsulan todo su comportamiento importante y pospone su comportamiento no esencial para los colaboradores. En la práctica, acabamos de presentar muchos requisitos preliminares que la mayoría del código OO en realidad no cumple. Pero cuando sucede, es muy bueno. En un gran sistema OO, sabe que cuando un mensaje no se envía correctamente, debe comenzar mirando la clase de mensaje. No el archivo db.php, sino la clase de mensaje. Eso es fuerte. (Aunque al final puede encontrar el defecto en otra capa, es cierto …) La programación orientada a objetos es esencial para algunas API importantes de WordPress, quizás la WP_Query más importante. Si desea una introducción detallada de los elementos fundamentales de la programación orientada a objetos y una presentación de cómo estos elementos fundamentales se aplican en la práctica a WP_QUEY, consulte nuestro curso sobre este tema:
Trabajar con WP_Query qué es programación funcional Este paradigma se requiere para funciones matemáticas que mencioné en la sección “procedimiento” anterior que simplemente tener funciones no es lo que hace que un programa sea “programación funcional”. Esto se debe a que este paradigma lleva el nombre de las funciones matemáticas. Una función matemática, si recuerdas el álgebra, es simplemente una declaración de verdad sobre el mundo que es autónoma y puede usarse y manipularse con otras funciones. Es por eso que necesita un programa para ser “funcional”. Muy poco código PHP es “funcional” de esta manera. Pero algunos de ellos pueden serlo. Y el lugar más sensible que podría ver en WordPress es cuando desea filtrar o enumerar una larga serie de publicaciones. Con este fin, escribí un artículo más largo sobre este tema: Introducción suave al PHP funcional para desarrolladores de WordPress:

Usando el filtro y el mapa en las publicaciones en esencia, PHP tiene algunas funciones como Array_Map y Array_Filter, donde pasa una función y todos los elementos de una matriz se transforman. A veces también puede ir a add_action y add_filter, en WordPress, en cuyo caso puede pensar en lo que hace como una programación funcional. Pero lo más importante que hace que WordPress no sea verdaderamente funcional es sobre la condición. En la mayoría de las acciones de WordPress (y en menor medida llega al mundo fuera de su función para cambiar algo: verifique el valor de una base de datos, agregue una excursión en la página, etc. – Porque estás específicamente conectado a cambiar las cosas. No se puede decir que su función es apatride (o no tiene efectos fuera de sus entradas). Como tal, realmente no realiza una programación funcional en la comprensión más pura. ¿Qué es malo en la programación funcional?
Todas las operaciones complejas que a menudo realizan los programadores funcionales son bastante abstractas para mí y pueden sentirse abrumadas. Lo más importante que creo que es hacer la mala programación funcional es que se enfrentará rápidamente al hecho de que no tiene un doctorado en matemáticas o ciencias de la computación o cualquier disciplina lógica pesada. Tengo una comprensión bastante buena de la programación funcional (FP) para un programador no funcional. Pero hay palabras de moda bastante importantes que no pude entender de qué personas hablan mucho cuando hablan de programación funcional. “Funcional”, “monoide”, etc. son mucho más difíciles de envolver la cabeza que los objetos. La otra desventaja asociada es que realiza muchas funciones en las funciones. Y como no soy una computadora, no soy un experto en matemáticas. Por lo tanto, todas las operaciones complejas que a menudo realizan los programadores funcionales son bastante abstractas para mí y pueden sentirse abrumadas. Sé que esto ha sido válido para otros paradigmas para mí y es una curva de aprendizaje más grande, pero ciertamente no es nada de encogimiento de hombros rápidamente. ¿Qué es positivo en la programación funcional? Las funciones puras y matemáticas son más fáciles de entender que la magia. El gran beneficio de la programación funcional es que si es disciplinado en términos de condición, se sentirá mucho mejor. Debido a que los cambios en el mundo exterior se empujan cada vez más, cuando se usa el paradigma, puede pasar muy poco tiempo con un rasguño de cabeza (tan común en WordPress) “¿Cómo llegó esto a esa condición?

“Las funciones puras y matemáticas son más fáciles de entender que la magia. Esta es la gran ventaja: ser disciplinado sobre el estado hace que el estado sea mucho más fácil de pensar y entender. Tiene otra ventaja: la paralelización masiva es posible. Lo que significa que, a medida que las computadoras están obteniendo más y más núcleos, en lugar de procesadores más rápidos, su programa puede aprovecharlos. Pocos programas aprovechan esta función hoy, pero es un gran beneficio para el paradigma. ¿Por qué estos tres paradigmas son importantes?
Los tres paradigmas tienen fortalezas y debilidades
Los tres paradigmas se pueden usar al escribir PHP y JavaScript para WordPress
No hay un paradigma de programación perfecto. Y es fácil, ordinario y comprensible que los nuevos programadores de WordPress se sientan avergonzados escribir un código de procedimiento cuando todos parecen hablar objetos. Pero tomaré un complemento de procedimiento bien construido hacia una prisa, hecho sin tener en cuenta los beneficios de pensar en buenos objetos. La mercancía OOP es peor que un buen código de procedimiento cada vez. En principio, la mejor manera de mejorar al escribir el código es probar las cosas. Escriba un complemento de dos maneras y descubra que le gusta más. Las opiniones son baratas, y la comprensión de los compromisos de las alternativas está infravalorada. Espero haberte ayudado a hacer lo último dando algunos de los primeros. ¡Aquiando feliz! Imagen de crédito: tiagonicastro, bfionline
Los tres paradigmas de desarrollo: procedimiento, orientado a objetos y funcionales
Tags Los tres paradigmas de desarrollo: procedimiento orientado a objetos y funcionales
homefinance blog