Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sí, estas unidades tienen ambas cosas. Pero créanme: están comprimidos al máximo y son versátiles, porque resuelven una amplia gama de problemas.
Si no hay muchas opciones, puedes arreglártelas con los "si" y los "golpes".
¿Por qué nadie se ha decidido a discutir sobre "la programación procedimental con punteros de función frente a la programación procedimental sin punteros de función"?
Si no hay muchas opciones, puedes arreglártelas con los "si" y los "golpes".
Реter Konow:
1. Дело в работе которую нужно провести чтобы сжать в коде решения огромного количества задач.
2. Se trata de universalizar el código, en el que cualquier técnica de sintaxis adicional y las conchas son simplemente destructivas. Es un trabajo duro, pero se deshace de todo lo superfluo y te permite evolucionar todo el tiempo alcanzando nuevas cotas.
1. ¿Por qué hacer el trabajo cuando puedes hacerlo fácil y sencillo? ¿Por qué hacerlo difícil cuando puedes hacerlo fácil?
2. Si se utiliza la POO, la universalización no es destructiva, sino que se convierte en una posibilidad natural que no carga nada.
1. ¿Por qué hacer el trabajo cuando se puede hacer de forma fácil y sencilla? ¿Por qué hacer algo que se puede hacer fácilmente cuando es difícil?
2. Si se utiliza la POO, la universalización no es ruinosa, sino que se convierte en una posibilidad natural que no carga nada.
Podemos seguir con este argumento durante mucho tiempo. Utilizando el ejemplo de una tarea de 100 trazos, mostré mi actitud ante este método de solución. Creo que las tareas estúpidas no deben resolverse, sino arreglarse. Si la POO ayuda a los que son más débiles a la hora de plantear y resolver tareas correctamente, que les ayude. Pero para las personas que optimizan las tareas antes de empezar a resolverlas, la POO puede no ser necesaria.
Podríamos seguir y seguir con este argumento. Utilizando el ejemplo de una tarea de 100 trazos, mostré mi actitud ante este método de solución. Creo que las tareas estúpidas no deben resolverse, sino arreglarse. Si la POO ayuda a quienes son más débiles a la hora de plantear las tareas correctamente y resolverlas con eficacia, que siga ayudándoles. Pero para las personas que optimizan las tareas antes de empezar a resolverlas, la POO puede no ser necesaria.
No has codificado mucho (probablemente), OOP es como un soplo de aire.
La mayoría de la gente no codifica por interés o por desarrollo personal, es su trabajo, y lo que cuenta es el resultado.
No es ni mucho menos tan cómodo, pero en términos de capacidad de velocidad, puedes arreglártelas sólo con los punteros.
Y la comodidad es un concepto relativo.
Dmitry, por supuesto que el uso de la POO reduce un poco el rendimiento. Pero son fracciones de un porcentaje.
¡Pero cómo la POO aumenta el rendimiento de un programador!
Aquí hay un pequeño ejemplo de uno de mis proyectos, está recortado para la percepción, pero en realidad hay muchas otras cosas que se tienen en cuenta.
Por ejemplo, tomemos .NET, ya que todas las API consisten en clases.
Me gusta mucho el paradigma de .NET. Por cierto, hay un gran terminal cAlgo, se puede escribir directamente en Visual Studio en C#
Dimitri, por supuesto que el uso de la POO reduce un poco el rendimiento. Pero son fracciones de un porcentaje.
Si el número de variantes es pequeño, lo ralentizará, pero si hay demasiadas variantes, será una ventaja.
Lo más importante es que el número de variantes en OOP no afecta al rendimiento. Y en la programación procedimental, hay un techo sobre tu cabeza.
Bueno, te has hecho un lío...
Está claro que cualquier tarea puede ser resuelta tanto al estilo OOP, con la asignación de interfaces, la construcción de la jerarquía de la herencia, la declaración de funciones virtuales, como al estilo procedimental puro - incluso se puede meter todo en una enorme función.
La cuestión está en la comodidad y la eficacia del apoyo.
En MT - el lugar más apropiado para la OOP es el sistema de pedidos. Personalmente, tengo interfaces virtuales para "posición" y "componentes de posición". "Posición" es un conjunto de órdenes en MT4 o un conjunto de posiciones en MT5. "Componente de la posición" es una orden individual o una posición individual de MT5 (cobertura o compensación).
Aquí está el archivo de la interfaz real(Retag Konow, se puede apreciar el número de comentarios en comparación con la cantidad de código, y periódicamente los agrego allí cuando encuentro algunas sutilezas que no recuerdo. Por ejemplo, suelo olvidar qué objetos reales constituyen un "componente de posición". Simplemente no necesito recordarlo - el Asesor Experto trabaja con componentes según la interfaz, y lo que hay detrás de esa interfaz en realidad no importa. Pero, tengo que volver a él durante la modificación - es por eso que necesito el primer comentario en este archivo muy a menudo):
El archivo de la interfaz del componente comercial es el siguiente (ya lo he dado más arriba, pero lo repetiré:
De acuerdo con estas interfaces - tengo implementado tanto el sistema de órdenes de MT4 como el de MT5 para órdenes reales e históricas.
El Asesor Experto que solicita una posición recibe esta interfaz y no tiene que tener en cuenta la diferencia entre las órdenes de MT4 y MT5. Y si se añade un nuevo tipo de orden o se cambia el orden de trabajo con ellos - nada cambiará para el Asesor Experto, sólo se añadirá la nueva clase de tipo de orden, y también soportará esta interfaz.
El sistema tuvo mucho sentido cuando se introdujeron las cuentas cubiertas. Los expertos no han cambiado en absoluto.
Reg Konow, ¿cómo se maneja la diferencia de tipos de órdenes en MT4 y MT5?
Si se introduce un nuevo tipo de cuenta (además de la cobertura y la compensación), ¿qué cambios habrá que hacer, y en el mismo lugar?
Mi opinión es que si recuerdas todo tu código al pie de la letra, y puedes decir fácilmente por qué tal o cual línea de tu código fue escrita hace un año - entonces es cierto, todos estos OOP-enhancers son sólo gestos innecesarios.
La POO es necesaria precisamente cuando no se recuerda todo al modificar el código - la POO permite aislar los bloques entre sí, limitar el conjunto de entidades disponibles en un momento dado a un lugar determinado del programa.
Bueno, te has hecho un lío...
1. Está claro que cualquier tarea puede ser resuelta tanto al estilo OOP, con asignación de interfaces, construcción de jerarquía de herencia, declaración de funciones virtuales, como al estilo procedimental puro - incluso podemos poner todo en una enorme función.
La cuestión está en la comodidad y la eficacia del apoyo.
2. En MT - el lugar más apropiado para la OOP es el sistema de pedidos. Personalmente, tengo interfaces virtuales "posiciones" y "componentes de posición". "Posición" es un conjunto de órdenes en MT4 o un conjunto de posiciones en MT5. "Componente de la posición" es una orden individual o una posición individual de MT5 (cubierta o neta).
3. Aquí está el archivo de la interfaz real(Retag Konow, se puede apreciar el número de comentarios en comparación con la cantidad de código, y periódicamente los agrego allí cuando me encuentro que no recuerdo algunas sutilezas. Por ejemplo, suelo olvidar qué objetos reales constituyen un "componente de posición". Simplemente no necesito recordarlo - el Asesor Experto trabaja con componentes según la interfaz, y lo que hay detrás de esa interfaz en realidad no importa. Pero, tengo que volver a él durante la modificación - es por eso que necesito el primer comentario en este archivo muy a menudo):
El archivo de la interfaz del componente comercial es el siguiente (ya lo he dado más arriba, pero lo repetiré:
De acuerdo con estas interfaces - tengo implementado tanto el sistema de órdenes de MT4 como el de MT5 para órdenes reales e históricas.
El Asesor Experto que solicita una posición recibe esta interfaz y no tiene que tener en cuenta la diferencia entre las órdenes de MT4 y MT5. Y si se añade un nuevo tipo de orden o se cambia el orden de trabajo con ellas - no cambiará nada para el Asesor Experto, sólo se añadirá un nuevo tipo de orden, y también soportará esta interfaz.
El sistema resultó ser muy razonable, cuando se introdujeron las cuentas de cobertura. Los expertos no han cambiado en absoluto desde entonces.
4. Reg Konow, ¿cómo se maneja la diferencia de tipos de órdenes en MT4 y MT5?
Si se introduce un nuevo tipo de cuenta (además de la cobertura y la compensación), ¿qué cambios habrá que hacer, y en el mismo lugar?
Creo que si recuerdas todo tu código al pie de la letra, y puedes decir fácilmente por qué se escribió tal o cual línea hace un año - entonces todos estos potenciadores de la POO son sólo gestos innecesarios.
La POO es necesaria precisamente cuando no se recuerda todo al modificar el código: la POO permite aislar los bloques entre sí para limitar el conjunto de entidades disponibles en un momento dado a un lugar concreto del programa.
1. 1. Estoy totalmente de acuerdo. La única diferencia está en la eficacia para resolver las tareas de una manera u otra.
2. No he trabajado realmente con el sistema de pedidos y no veo ningún problema técnico en su construcción. Tal vez los haya, pero necesitamos una tarea concreta y entonces se verá la eficacia con la que puedo resolverla sin la POO.
3. Desde mi punto de vista, el ejemplo de código dado es simplemente horrible desde el punto de vista de la legibilidad. No es de extrañar que se requieran tantos comentarios y que se olvide su contenido. Lo siento, pero esa es mi primera impresión subjetiva. Es simplemente espeluznante.
Aquí hay un ejemplo de legibilidad de mi código - la función que define el color de un elemento de control:
Como puede ver, los comentarios son casi innecesarios aquí. Todo mi código está escrito en este estilo. Así que lo conozco perfectamente y lo recuerdo sin importar el tamaño.
En mi opinión, hay algún defecto en su sistema de resolución de problemas. El problema en sí debe ser muy claro y preciso, y por lo tanto su solución también. Si la solución es turbia y se define con las palabras "El sistema resultó ser muy razonable" (¡¿cómo puede ser razonable en 270 Kb de código?!), significa que el autor tiene una comprensión aproximada de cómo funciona su sistema. Y son terribles los artificios sintácticos y las entidades superfluas en la solución que le impiden entenderla hasta el final.
Para que una solución sea eficaz, hay que cortar las entidades innecesarias y ver el problema con total claridad.