Preguntas sobre POO en MQL5

 

Ayer me surgió una duda, así que decidí consultar con mis hermanos)

El sábado 21.05.2016 estaba explicando los fundamentos de la POO a un hombre, utilizando una biblioteca estándar como ejemplo. Solía programar en MQL4, luego tuvo un descanso de 5 años y decidió volver. He empezado a introducirlo en la cobertura de MT5, ya que yo mismo rehago todo allí.

Por extraño que parezca, esta persona (Maxim, me refiero a ti, si estás leyendo este artículo :)) ha entendido los fundamentos de la POO e incluso hemos conseguido repasar las partes más importantes utilizando el ejemplo de una biblioteca estándar bajo el depurador.

Pero!!! prometí una grabación, y por razones técnicas todo voló a miau((

He prometido que voy a hacer video cheat sheets exactamente en OOP, creo, 10 minutos cada uno

Pregunta:

Proponga un tema sobre OOP en MQL5 durante 10 minutos. Lo publicaré en YouTube, será útil para todos

------------------

Escriba todo lo que le interese, yo lo resolveré, intentaré satisfacer sus peticiones dentro de mi tiempo libre

Buena suerte ))

 
Alexey Volchanskiy:

Ayer me surgió una duda, así que decidí consultar con mis hermanos)

El sábado 21.05.2016 estaba explicando los fundamentos de la POO a un hombre, utilizando una biblioteca estándar como ejemplo. Solía programar en MQL4, luego tuvo un descanso de 5 años y decidió volver. He empezado a introducirlo en la cobertura de MT5, ya que yo mismo rehago todo allí.

Por extraño que parezca, el hombre (Maxim, me refiero a ti, si estás leyendo este artículo :)) ha entendido los fundamentos de la POO e incluso hemos conseguido repasar las partes más importantes utilizando el ejemplo de una biblioteca estándar bajo el depurador.

Pero!!! prometí una grabación, y por razones técnicas todo voló a miau((

He prometido que voy a hacer video cheat sheets exactamente en OOP, creo, 10 minutos cada uno

Pregunta:

Proponga un tema sobre OOP en MQL5 durante 10 minutos. Lo publicaré en YouTube, será útil para todos

------------------

Escriba todo lo que le interese, yo lo resolveré, intentaré satisfacer sus peticiones dentro de mi tiempo libre

Buena suerte ))

Alexey, haz ejemplos sobre los lugares menos cubiertos en la ayuda - punteros, punteros de funciones, trabajo con clases de plantillas, etc. Aunque, sinceramente, en mi opinión, un vídeo de este tipo sobre C++ en abundancia y no va a aumentar los conocimientos, para aumentar los conocimientos se necesita literatura, seminarios web y diligencia.
 
coderex:
Alexey, haz ejemplos en los lugares menos cubiertos de la ayuda - punteros, punteros de funciones, trabajo con clases de plantillas, etc. Aunque, francamente, en mi opinión, un vídeo de este tipo sobre C++ sobra y no va a aumentar los conocimientos de ninguna manera, se necesita literatura, seminarios web y diligencia para mejorarlos.
No hay punteros en MQL, hay descriptores) Los punteros (condicionales) a las funciones se introdujeron recientemente, una especie de muleta para encajar el concepto general de "todos los comerciantes de algo son suicidas, no les des punteros".
 
Alexey Volchanskiy:
No hay punteros en MQL, hay asas)) Los punteros (condicionales) a las funciones fueron introducidos recientemente, es una especie de muleta para encajar el concepto general de "todos los comerciantes de algo son suicidas, no deben usar punteros".

Alexei, no te aferres a las palabras :) Si hubiera escrito "descriptores", por alguna razón estoy seguro de que no me entenderías inmediatamente. En cuanto a lo que se introdujo recientemente y lo que se introdujo hace mucho tiempo, no cambia la esencia, estas preguntas sobre la ayuda están colgando en el aire, no hay una palabra o un poco de ellos. Y estos nombres, por más que se comporten de manera diferente con respecto a C++ y MQL, todos tienen el mismo aspecto, al menos, los desarrolladores intentan hacerlo así. Incluso he visto que ya han introducido la comparación de punteros :) Aunque sinceramente, para MT no me imagino dónde utilizarlo.

Pero de todos modos, creo que si cubres estas cuestiones, muchos codificadores novatos te lo agradecerán. He visto tu vídeo el otro día; sabes explicar las cosas tan claras :)

 
coderex:

Alexei, no te aferres a las palabras :) Si hubiera escrito "descriptores", por alguna razón estoy seguro de que no me entenderías inmediatamente. En cuanto a lo que se introdujo recientemente y lo que se introdujo hace mucho tiempo, no cambia la esencia, estas preguntas sobre la ayuda están colgando en el aire, no hay una palabra o un poco de ellos. Y estos nombres, por más que se comporten de manera diferente con respecto a C++ y MQL, todos tienen el mismo aspecto, al menos, los desarrolladores tratan de hacerlo así. Incluso he visto que ya han introducido la comparación de punteros :) Aunque sinceramente, para MT no me imagino dónde utilizarlo.

Pero de todos modos, creo que si cubres estas cuestiones, muchos codificadores novatos te lo agradecerán. Una vez vi tu video, sabes como explicar a la gente claramente :)

Imho, en ningún caso se debe hacer un video educativo una versión extendida de ayuda. El objetivo es educar, no iluminar los detalles indignos.
 
Alexey Volchanskiy:

Pregunta:

Sugiere un tema sobre OOP en MQL5 durante 10 minutos, lo pondré en YouTube, es decir, será útil para todos

La POO debe explicarse sin código y sin toda esa nomenclatura abstrusa como clases, objetos, punteros, etc. etc.

¿Cómo funciona un curso de programación clásico? Al principio, el estudiante intenta agonizar para pasar del pensamiento humano a los fundamentos de la programación (bucles, funciones, variables y otras cosas como ese "bagaje de conocimientos" necesario). Luego, cuando el desorden de funciones, variables y si forma alguna estructura más o menos ordenada, se le dice al alumno: "Mira: existe la POO. Olvida lo que te han enseñado antes y empieza a pensar de nuevo como un ser humano". Lo que sigue es una ruptura de plantillas, el "bagaje de conocimientos" recién adquirido se tira a la basura y la persona se encuentra en algún lugar entre el cielo y la tierra. Naturalmente, esta "OLP" se recuerda entonces durante varios años como un mal sueño con escalofríos y dolor en las partes restantes del cerebro (las otras han sido abrasadas por el nuevo conocimiento).

No, afirmo categóricamente que no hay que aprender a programar. Por el contrario, es perjudicial y peligroso. En cambio, es necesario enseñar a pensar. Y con ello se produce un completo fracaso del método clásico de aprendizaje.

 
Vasiliy Sokolov:
En mi opinión, no se puede hacer una versión ampliada de la ayuda de un vídeo de formación. La tarea es educar, no iluminar los detalles indignos.

Alexei pidió la opinión de los usuarios del foro, yo le escribí mi opinión, y lo que habrá, sólo lo sabe Alexei :)

Por cierto, ¿cómo se puede aprender si no hay información al respecto en ningún sitio? Yo lo sé, ya que estoy escribiendo en C++, y los que sólo están aprendiendo MQL5, no sabrán de estos detalles, porque la referencia no dice ni una palabra al respecto :)

 
¿Quiere aprender OOP de forma competente? - Aprender UML
 

Vasiliy Sokolov:

Entonces, cuando el desorden de funciones, variables y si en su cabeza forma alguna estructura más o menos ordenada, se le dice al estudiante: "Mira: existe la POO. Olvida lo que te han enseñado antes y empieza a pensar de nuevo como un ser humano". Entonces llega la ruptura de plantillas, el "bagaje de conocimientos" recién obtenido con tanto esfuerzo se tira a la basura y la persona se encuentra en algún lugar entre la tierra y el cielo.

Bueno, eres demasiado. Un hombre se ha dedicado inicialmente sólo a la OOP. Al menos, simplemente preparando una taza de café. ¿De dónde vienen los patrones? En mi opinión, la tontería de los profesores poco inteligentes, trasladando sus problemas a los alumnos.
 

No asustes a la gente con la OOP.

No es necesario saber OOP para crear buenos EAs u otras cosas en MQL5. Ni siquiera es necesario conocer la palabra clase o puntero.

La POO se utiliza sobre todo para crear grandes tareas y complejos, especialmente cuando se trabaja en equipo.

Y en MQL5 se puede prescindir de la OOP.

Debo añadir que desde hace más de 10 años me dedico a formar a aquellos programadores, que quieren trabajar en empresas extranjeras, donde el principal requisito es el conocimiento de la POO.

Esto lo digo para que no pienses que soy un opositor a la OOP. Sólo hay que utilizarlo como es debido y no complicarse la vida.

 

La comprensión de la POO llega por sí sola cuando los programas se vuelven más complejos. El programador comienza a dividir la hoja de código en varias funciones, existe la necesidad de transferir los resultados de varias funciones entre sí, pronto comienza a sospechar que transferir todo a través de los argumentos de las funciones no es la mejor solución, lo más probable es que comience a crear variables globales, una persona está casi madura para la POO, lo único que queda es aislar las funciones lógicamente relacionadas y sus datos privados. Mi experiencia: ya en mcl4 empecé a crear algo así:

// file_1.mqh
int name1_counter = 0;
int name1_data = 0;
double name1_value = 0;
void name1_action() {name1_counter++; name1_data = ;}
int name1_get() {return }

// file_2.mqh
int name2_counter = 0;
int name2_data = 0;
double name2_value = 0;
void name2_action() {}
int name2_get() {}


Ni siquiera sabía de la existencia de la OOP, pero ya estaba casi lista (sí, sólo una instancia, pero el esqueleto estaba listo). Yo guiaría a los aprendices a través de estos pasos. Empieza con una hoja de int's y if's y poco a poco ve estructurando el código. Al final una persona llegará casi por sí misma a la OOP y lo principal es que entenderá cómo ha llegado hasta allí.

Recuerdo haber leído un libro sobre esta "magia" OOP hace tiempo. El clímax del libro era una demostración de funciones virtuales diciendo que este es el poder de la POO. Debería arrancar las manos de tales autores. Hasta ahora no he encontrado ningún libro decente.