Desde una perspectiva de Ciencia e Ingeniería Computacional, la pérdida de generalidad es una preocupación importante.
Puedo escribir un código de elementos finitos increíblemente rápido en Matlab (en paridad con buenos códigos C ++) que hace el trabajo en quizás una docena de líneas, pero solo funciona en volúmenes rectangulares, y tengo que ingresar manualmente todas las condiciones de carga. Eso funciona para una gran cantidad de problemas con los que tengo que trabajar, pero a cambio sacrifica toda generalidad. Es posible que no tenga problemas con ese enfoque actualmente, pero tan pronto como intente volver a aplicar este código, será un problema importante.
Dentro de la comunidad de la ciencia computacional, hay decenas de diferentes métodos y aproximaciones para resolver el mismo conjunto de problemas. A veces, se puede preferir un método menos eficiente si es más general, porque puede volver a aplicar rápidamente su código a futuros problemas de interés.
- ¿Qué factores debo considerar más importantes al comprar una PC para usar en fotografía (es decir, potencia de procesamiento, tarjeta gráfica)?
- ¿Qué es un archivo de imagen de disco y cómo es útil?
- ¿Cuál es la mejor distribución de Linux con la mayoría de las herramientas de desarrollo preinstaladas?
- ¿Que deberia comprar? Asus, Lenovo o Vaio? Da tus razones.
- Al comprar una computadora portátil, ¿es mejor comprarla con Mac OS / Linux OS o Windows 8/7?
Una consideración adicional cuando se trabaja en programas científicos y de ingeniería es la precisión y la estabilidad de un método numérico.
Uno de los aspectos más críticos de este campo de programación es el error de discretización. Al resolver problemas matemáticamente continuos en un sistema que representa las cosas discretamente, siempre introduce algún tipo de error. Según el método que utilice para resolver estos problemas, sus errores pueden acumularse en el transcurso de la solución, y su respuesta final puede ser inexacta. Para soluciones que se repiten muchas veces, esto puede hacer que su inexactitud sea teóricamente infinita; A esto le llamamos divergencia de comportamiento.
Algunos métodos son más costosos, pero garantizan que tendrá una solución precisa al final. Otros métodos no son necesariamente más costosos o más precisos, pero tienen un procedimiento adicional de minimización de errores para garantizar la convergencia.
Para problemas que se han caracterizado como sensibles a estos problemas, puede ser necesario un método más lento para obtener una solución confiable.
Al final, mirar un fragmento de código como una consideración de arriba / abajo más rápido o más lento se desmorona cuando comienzas a trabajar en problemas de ciencias computacionales. Hay muchos caminos hacia una solución, y son más o menos precisos, más o menos estables y más o menos generales.
Deben tomarse decisiones sobre cuánto rendimiento sacrifica para generar un programa confiable y robusto.
Espero que mi opinión sobre esta pregunta tenga sentido y que le sea útil.