¿Sigue siendo relevante el modelado de objetos, o se ha reemplazado hoy solo con datos y algoritmos?

¿Qué significa “datos y algoritmos” en términos de modelar una solución de programación?

La solución a cualquier problema de programación debe modelarse de alguna manera . En el nivel más simple y básico, puede modelarlo como una serie muy larga de funciones y variables globales. Extremadamente desordenado por decir lo menos.

Cuando su aplicación crece a un tamaño considerable, ¿cómo va a modelar la solución? ¿Cómo vas a controlar la complejidad de la aplicación?

Una forma es ver la solución como datos que fluyen a través de una serie de funciones. Otra forma es ver la solución como entidades cooperantes que encapsulan datos y comportamiento. Puede haber otras formas, pero no son populares.

Así que no estoy seguro de qué alternativas al modelado de objetos está proponiendo.

Ver Pharo.

Ver en TRON y Steve Jobs y el software de Internet.

Ver ¿La programación funcional está superando a la industria de TI?

Me pregunto cómo se relacionan los objetos que no sean datos (miembros privados contenidos en instancias de clase) y algoritmos (el código en los métodos de las clases y la forma / orden en que los métodos llaman a los métodos de otras instancias de clase).

Para mí, la orientación de objetos (o el modelado de objetos, como lo llaman) es solo una forma de organizar conceptualmente sus datos y sus algoritmos.

Si tiene sentido para su dominio y es compatible con sus herramientas de desarrollo y ofrece la funcionalidad que necesita dentro de las necesidades de rendimiento que tiene, entonces utilícela por todos los medios. Entonces es relevante.

Si alguno de estos no es el caso, organice sus datos y algoritmos de manera diferente para satisfacer sus necesidades. En ese caso específico, la orientación a objetos podría no ser relevante.

La pregunta parece implicar que se trata de una elección universal y que, por cualquier razón “ahora”, ha habido un cambio en la utilidad universal de la vista de modelado de objetos para organizar datos y códigos, de modo que usted debería estar feliz de no volver a usarlos nunca más. .

No creo que este sea el caso, o nunca lo será.

Siempre tendremos datos y manipulación de datos con los que lidiar en el software, y siempre habrá diferentes formas de agrupar conceptualmente estas cosas, cada una con ventajas y desventajas. Nuevas formas pueden entrar en la mezcla, pero las viejas realmente no desaparecerán.

Sigue pensando y usa lo que creas que es mejor para tu situación actual. Siempre.

Comenzamos con datos y algoritmos. El modelado de dominios se volvió esencial ya que se requería computación digital para escalar a problemas más grandes y no solo matemáticos. OOP trajo un aumento masivo de la productividad.

El modelado de dominios nunca dejará de ser una necesidad. Pueden surgir mejores formas de hacerlo que OOP (eso espero) pero eso aún no ha sucedido.

El modelado de objetos ayuda a construir el diseño general de su aplicación. Las aplicaciones complejas cuando se manejan solo datos y algoritmos serán difíciles de mantener y solucionar problemas, y también muy difíciles de extender.

Por lo tanto, el uso de principios OO como principios SOLID, patrones de diseño (cuando corresponda) y algunos consejos de gurús como Martin Fowler, Tío Bob Martin, Kent Beck y otros lo ayudarán a crear aplicaciones que no son una pesadilla para mantener en el futuro. línea.

Volviendo a los datos y algoritmos: estas son partes de su diseño OO. Su diseño OO encapsulará datos que se convertirían en el estado de sus objetos y encapsularán algoritmos que se convertirán en el comportamiento de sus objetos. Entonces ambos van de la mano.

More Interesting

Además de la programación competitiva, ¿cómo aprender algoritmos?

¿Hay algún algoritmo fijo para resolver el cubo de Rubik? Si es así, ¿qué es?

¿Dónde se puede encontrar una foto y detalles biográficos de Burton Howard Bloom, inventor del filtro Bloom?

Cómo aprender a escribir buenos algoritmos

¿Qué son las estructuras autorreferenciales?

¿Cuáles son las ventajas y desventajas de la búsqueda A * y el algoritmo de Dijkstra? ¿Cuándo se debe usar cada uno?

¿Qué imprime el siguiente programa: #include int sum, count; vacío principal (vacío) { para (cuenta = 5; suma + = 'cuenta;) printf (% d, suma);}?

¿Qué es el algoritmo de transformación de Burrows-Wheeler y cómo se usa en aplicaciones del mundo real?

Cuando se ejecuta el ordenamiento rápido aleatorio, ¿cuántas llamadas se realizan al generador de números aleatorios en el peor de los casos? ¿Y también para el mejor caso?

¿Qué temas de algoritmos deberían cubrirse para convertirse en un buen programador?

¿Cuál es la diferencia principal entre algoritmo y pseudocódigo?

¿Cuál es la mejor estructura de datos para un solucionador de ahorcado?

¿Existe un límite superior para la capacidad de comprensión de un individuo? Si es así, ¿qué se debe hacer para mejorarlo?

¿Cuál es el beneficio de sobrecargar una función recursiva?

¿Cuáles son algunos algoritmos importantes que aún no están cubiertos en Mahout? ¿Qué algoritmos de ML le gustaría agregar a la caja de herramientas?