¿Hay algo especial en Matlab o Mathworks que admita tanto el código "indocumentado"?

7

Recientemente he estado explorando un montón de Matlab intentando interactuar con el trabajo de un ingeniero de algoritmos interno para modularlo para usarlo en un banco de pruebas fuera de su suite de aplicaciones. He encontrado varios enlaces de diferentes áreas y conceptos que se conectan a este sitio web de MATLAB no documentado .

He dudado en sumergirme en las soluciones que se proponen allí, ya que siempre me han enseñado a no confiar en el comportamiento indocumentado, ya que puede estar en desuso y generalmente está sujeto a cambios. Sin embargo, supongo que para el tipo de software que se desarrollaría en MATLAB, tales cambios de implementación no harían que una casa se derrumbara demasiado para ser restaurada, pero tenía curiosidad de que Mathworks se desarrollara algo que logran permitir. ¿Cuántos enganches en sus arquitecturas y marcos no documentados? ¿Qué podría impedirles que formalicen estas cosas?

Solo como un ejemplo concreto mientras investigamos las técnicas de diseño de la interfaz de usuario para la creación de GUI programática uno de sus artículos hizo una mención de este uiflowcontainer , que si obtienes la documentación, encontrarás que está sin documentar.

>> help uiflowcontainer
  This function is undocumented and will change in a future release

En general, me parece muy curioso y divertido que una herramienta de desarrollo de este tipo haya creado un seguimiento de este tipo en sus elementos internos no documentados. ¿Alguna idea sobre esa realidad? ¿Es tonto, astuto o algo intermedio?

    
pregunta jxramos 17.06.2015 - 01:23

2 respuestas

3

TL;DR

  1. Fuga de detalles de implementación debido a que los archivos MATLAB ".m" se envían en forma de código fuente.
  2. Cambios frecuentes de requisitos de software, características y detalles de implementación.
  3. La complejidad se debe a muchas dependencias subyacentes diferentes, todas las cuales sufren los fenómenos enumerados aquí.

Cada sistema de software complejo (que consta de múltiples arquitecturas, capas, idiomas y muchas generaciones durante muchas décadas) tendrá muchos detalles de implementación.

La razón por la que la funcionalidad no documentada en MATLAB es detectable es porque:

Primero, todo lo que Mathworks elija implementar en su propio lenguaje MATLAB se enviará con la aplicación MATLAB en forma de código fuente. Esto hace posible que los licenciatarios vean su detalle de implementación. Por el contrario, todo lo que Mathworks elija implementar en Java y C (MEX) se enviará en forma compilada.

Sin embargo, esto no invalida el consejo general de ingeniería de que uno debería depender de la API documentada, no de los detalles de implementación que podrían cambiar de una versión a otra. El hecho de que algo sea posible (visible para usted) no significa que sea una buena idea (para usarlo).

En segundo lugar, MATLAB se enorgullece de satisfacer las solicitudes de los clientes. A veces tales solicitudes requieren cambios de comportamiento. Como resultado, MATLAB ha sufrido muchos cambios de comportamiento.

Algunas veces, otros clientes le pedirán que devuelva el comportamiento anterior. Por este motivo, se proporcionan interruptores para hacer felices a todos los clientes.

Tercero, MATLAB usa muchas tecnologías existentes, como la GUI de Java. De versiones a versiones, el comportamiento de Java GUI también cambia. Se necesitan conmutadores para garantizar la compatibilidad con los cambios de comportamiento dentro de la GUI de Java.

    
respondido por el rwong 17.06.2015 - 11:40
11

No creo que sea estúpido ni astuto: el software MATLAB se usa para ingeniería, ciencia, finanzas y muchos otros campos muy serios. Siendo este el caso, MathWorks (la compañía que desarrolla Matlab) tiene mucho cuidado de no documentar públicamente las cosas que no están 100% seguros de que seguirán siendo las versiones futuras de Matlab. Hay numerosos ejemplos de tales funciones y características / funcionalidad, y uiflowcontainer es solo una de ellas. En la gran mayoría de los casos, estas características / funciones no documentadas se han mantenido sin cambios durante muchos años, de 10 a 15 años o más. En algunos casos (por ejemplo, los adecuados en R2008a o uitab en R2014b) eventualmente se documentan / apoyan completamente, y en otros casos permanecen sin documentar. En casos raros, se modifican significativamente en algún momento.

La conclusión es que el uso de tales funciones / funciones puede mejorar significativamente su código Matlab existente y probablemente no requerirá ningún trabajo importante en un futuro próximo. Sin embargo, el inconveniente es que una nueva tarea podría ser necesaria en algún momento futuro si actualiza a una nueva versión de Matlab que cambia el comportamiento no documentado. Entonces, ¿vale la pena el riesgo? La respuesta a esto depende de la función específica y su uso en su trabajo: el beneficio que le brinda hoy frente al riesgo de tener que recodificarlo mañana.

p.s. - Yo y mi sitio web ( enlace ) somos completamente independientes y no estamos afiliados a MathWorks de ninguna manera. Todas las cosas indocumentadas que publico en mi sitio web y en mis libros se deben enteramente a descubrimientos hechos por sí mismos, y MathWorks no me los proporcionó. De hecho, MathWorks tiene mucho cuidado de no divulgarme ningún documento indocumentado. No apoyan ni promueven mi trabajo indocumentado de ninguna manera.

    
respondido por el Yair Altman 17.06.2015 - 02:03

Lea otras preguntas en las etiquetas