Formación en MQL5 - página 19

 
papaklass:
Déjame hacerte una pregunta. ¿Cuál es la diferencia fundamental entre la programación procedimental y la POO? Unas pocas palabras, es decir, la esencia de la diferencia.

Para empezar, incluso el enfoque procedimental implica estructuras, porque sin ellas es difícil. Esto es, al menos, una especie de organización de los datos.

La programación orientada a objetos (OOP) hace que sea bastante cómodo identificar las entidades abstractas y las relaciones entre ellas en la fase de diseño. Y entonces puedes simplemente codificarlos, incluso individualmente, sin preocuparte especialmente de las peculiaridades de la implementación.

Y todo parece más lógico y legible. Y a menudo funciona más rápido. Y lo principal es que se aplique más rápidamente. A pesar de que podemos tener más código.

 
papaklass:

Quería que expresaras tu comprensión del tema, no que me dieras una formulación de libro. No significa que no. Te hablaré de mí.

Bueno, no te he "dado una formulación de libro" :) No he formulado nada en absoluto - con una explicación. Simplemente asumí que la pregunta era de examen, cuya respuesta ya conoces gracias a la píldora. Y así resultó :) No me negué a responder sobre la experiencia personal.

A veces basta con "sentir" el fenómeno y, sin hacer preguntas filosóficas como "cómo puede ser" y "cuál es su significado más profundo", simplemente entender con el ejemplo cómo funciona. La referencia al tetris en el manual de referencia fue suficiente para mí y este ejemplo fue suficiente para el comienzo:

Dependiendodel objeto de clase que se cree, se llama a una función virtual de una u otra clase derivada.

void CTetrisField::NewShape()
  {
//--- случайным образом создаём одну из 7 возможных фигур
   int nshape=rand()%7;
   switch(nshape)
     {
      case 0: m_shape=new CTetrisShape1; break;
      case 1: m_shape=new CTetrisShape2; break;
      case 2: m_shape=new CTetrisShape3; break;
      case 3: m_shape=new CTetrisShape4; break;
      case 4: m_shape=new CTetrisShape5; break;
      case 5: m_shape=new CTetrisShape6; break;
      case 6: m_shape=new CTetrisShape7; break;
     }
//--- отрисовываем
   m_shape.Draw();
//---
  }

La creación intuitiva de objetos cuyo comportamiento difiere en función de los datos iniciales era suficiente para ver. A continuación - solicité el archivo completo de tetris del foro, más los materiales de la Referencia, bibliotecas, etc. Y entonces se puso en marcha. Hay muchas preguntas en el foro sobre el tema.

papaklass:

Después de leer un montón de información en el sitio web, todavía no entiendo lo que es OOP.

Simplemente tenemos un enfoque cardinalmente diferente. No me he preguntado especialmente "qué es la OOP" desde el punto de vista científico. - Para no perder la esencia tras una fachada de términos nuevos e incomprensibles.

Fui a estudiar los ejemplos disponibles.

papaklass:

Después de leer mucha información en la página web, seguía sin entender qué es la OOP.

The MQL5 Reference / Fundamentos / Programación Orientada a Objetos. Sólo hay que leer la página. Aparentemente, esto fue suficiente para mí, sin necesidad de buscar otras definiciones en materiales de terceros.

 
papaklass:

La respuesta a mi pregunta:

La programación de productos se centra en las acciones (verbos), mientras que la programación orientada a objetos se centraen los objetos o entidades (sustantivos). Esta es la principal diferencia.


En teoría y en la práctica lo es:

La programación procedimental responde a la pregunta de qué hacer (verbos) ,
Los verbos de la programación orientada a objetos y los adjetivos describen el objeto.

Es decir, la POO es una superestructura generalizadora del código en frases con sentido con muchas partes del discurso.


El que habla sólo con verbos puede vivir en procedimientos.

Quien quiera narrar su código, que lo escriba con OOP.


PS.

Qué cansados estamos de todos estos teóricos de la programación, joder.

Pronto mataré sin piedad el tema "OOP vs Procedimientos".
 
sergeev:

PS.

Estoy harto de todos estos teóricos de la programación, maldita sea.

Pronto estaré matando sin piedad los temas "OOP vs Procedimientos".
¿Por qué hay que "matarlos" de una vez? La mayoría de los principiantes en MQL5 están familiarizados con la "programación procedimental". Y si tienen preguntas sobre la necesidad y el significado de la OOP, hay que explicarles/comprenderles pacientemente. Como un profesor en la escuela: lo mismo año tras año. Explicar con paciencia, - no mandarlos a la mierda sólo porque el profesor está cansado de repetir este tema.
 
sergeev:

PS.

Qué harto estamos de todos estos teóricos de la programación, joder.

Pronto los temas "OOP vs Procedimientos" serán asesinados sin piedad.

"En lugar de arreglar la puntuación a su antojo, escriba un glosario y no habrá nadie a quien "matar sin piedad".

Pero si lees "practicantes" de la POO - es como una "casta" de expertos muy reflexivos en POO.

MQL5 es un lenguaje para todos los niveles de comprensión y capacidades, no sólo para los náufragos - los ejemplos estándar de indicadores y Asesores Expertos lo demuestran.

Un lenguaje de programación no es el objetivo, sino el medio. Si el PP es suficiente para lograr el objetivo, que sea así. Si a alguien le resulta más fácil y claro utilizar la POO, que lo haga. Y para lograr el objetivo - no hay ninguna diferencia fundamental - especialmente en el 90% de los indicadores microfuncionales de bajo código y Asesores Expertos, que se escriben principalmente.

 

papaklass:

Cuando uno se encuentra con una frase como ésta al principio de un curso, queda inmediatamente claro de qué trata todo el libro. Y de alguna manera, todo encaja en su sitio. Entiendes que los atributos son propiedades de los objetos, que las implementaciones y los métodos son la misma cosa (funciones) y, finalmente, que las clases están formadas por objetos. Los objetos no sólo tienen atributos (propiedades) y métodos (funciones), sino que también pueden interactuar entre sí. Al mismo tiempo, ellos (los objetos) no necesitan conocer los atributos y métodos de otros objetos. Así es como se crean las clases a partir de estos bloques de construcción, que también interactúan entre sí.

Lo has puesto todo en tal montón que ni siquiera puedes hacer gachas con ello)) No puede ser que esté escrito en un libro.
 
abolk:

Un lenguaje de programación no es un fin, sino un medio. Si el PP es suficiente para lograr el objetivo, que así sea. Si la POO es más clara y sencilla para alguien, que así sea.

Sabio. A juzgar por mi propia experiencia: los indicadores de moneda única se escriben en PP. Y el Asesor Experto multidivisa está escrito usando OOP (porque sin OOP - en mi caso no habría aparecido en absoluto).
 

Как уже надоели все эти программистские теоретики, блин. 

Pronto los hilos de "OOP vs Procedimientos" serán asesinados sin piedad.

Esto se debe a que la gente no entiende las ventajas, los inconvenientes, los lugares y las formas de utilizar ambos. Un artículo con ejemplos tan sencillos: PP dará ventajas para esta tarea_1 tal y desventajas tal, OOP dará ventajas para esta tarea_1 tal y desventajas tal; PP dará ventajas para esta tarea_2 tal y desventajas tal, OOP dará ventajas para esta tarea_2 tal y desventajas tal... Creo que es crucial prestar más atención a la comparación de clases e interfaces, si estas últimas aparecen en cinco, ya que las sutilezas y diferencias pueden ser complicadas para los que son nuevos en la POO. Y todo con un sesgo hacia la resolución de problemas sencillos, y esta es la dificultad: la explicación y los ejemplos tienen que ser lo más sencillos y breves posible, pero utilizando los principios de PP y OOP.

Entonces sería posible colapsar un hilo enviándolo a un lugar donde todo está ordenado en estanterías con ejemplos sencillos de aplicación, sistematizados según algunos temas.

Yedelkin:
Sabio. A juzgar por mi propia experiencia: los indicadores de una sola moneda se escriben en PP. Y el Asesor Experto multidivisa está escrito usando OOP (sin OOP no habría aparecido en absoluto).
¡Querido Yedelkin! Puedo enviarte el núcleo multidivisa diseñado procedimentalmente si te interesa (funciona por barra libre). El código está escrito para 4, pero también funcionará en 5 - puedes comparar el rendimiento de ambas variantes en él.
 
-Alexey-:¡Querido Yedelkin! Puedo enviarte un núcleo multidivisa diseñado procedimentalmente si te interesa (funciona en barra libre). El código está escrito para 4.
Estoy a favor de que todos vivan en paz y entendimiento, si es posible. En cuanto a mis mensajes, sólo estaba describiendo mi comprensión de la POO. Puede que (la comprensión) sea tres veces errónea, pero es "mi" comprensión. No excluyo en absoluto que una parte de los problemas que he podido resolver con la ayuda de la POO, puedan también resolverse en el marco de la PP. Lo acertado de la afirmación de Abolk es precisamente que"si el PP es suficiente para lograr el objetivo, que así sea".Si a alguien le resulta más claro y sencillo utilizar la POO, que así sea". He añadido un añadido a mi post.
 
Yedelkin:
Estoy a favor de que todos convivan de la forma más amistosa posible y con entendimiento mutuo. En cuanto a mis mensajes, he descrito mi comprensión de la POO exclusivamente. Puede que (la comprensión) sea tres veces errónea - pero es "mi" comprensión. No excluyo en absoluto que una parte de los problemas que he podido resolver con la ayuda de la POO, puedan también resolverse en el marco de la PP. El acierto de la afirmación de Abolk es precisamente que"si el PP es suficiente para lograr el objetivo, que así sea".Si a alguien le resulta más fácil y claro utilizar la POO, que lo haga".
Estoy de acuerdo. Y para luchar por una u otra preferencia, lo mejor es hacer una competición entre los usuarios del foro. Existe una tarea de este tipo...: ¿qué enfoque ganará exactamente en términos de rendimiento, consumo de memoria, tamaño del código, portabilidad...?
Razón de la queja: