C'è qualcosa di peculiare in Matlab o Mathworks che supporta così tanto codice "non documentato"?

7

Recentemente ho studiato molto Matlab cercando di interfacciarmi con il lavoro di un ingegnere dell'algoritmo interno per modularizzarlo per l'uso in un banco di prova al di fuori della sua suite di applicazioni. Ho trovato molti collegamenti da diverse aree e concetti che si collegano a questo sito web MATLAB non documentato .

Sono stato titubante a immergermi in qualsiasi soluzione proposta da quando mi è sempre stato insegnato a non fare affidamento su comportamenti non documentati, poiché potrebbe essere deprecato ed è generalmente soggetto a modifiche. Suppongo tuttavia che per il tipo di software che verrebbe sviluppato in MATLAB tali scansioni di implementazione non porterebbero a una casa troppo grande fatiscente per essere rinnovata, ma ero curioso che ci fosse qualcosa nel modo in cui Mathworks sviluppa che riescono a permettere così tanti ganci nelle loro architetture e strutture prive di documenti? Cosa potrebbe impedirgli di formalizzare queste cose.

Proprio come esempio concreto mentre si ricercano le tecniche di layout dell'interfaccia utente per la creazione di una GUI programmatica, uno dei loro articoli ha fatto menzione di questo uiflowcontainer , che se ottieni la documentazione su di esso trovi che non è documentato.

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

In generale trovo molto curioso e divertente che un simile strumento di sviluppo abbia costruito un simile seguito nei suoi interni privi di documenti. Qualche idea su quella realtà? È sciocco, furbo o qualcosa di intermedio?

    
posta jxramos 17.06.2015 - 01:23
fonte

2 risposte

3

TL; DR

  1. Perdita dei dettagli di implementazione dovuti ai file ".m" MATLAB spediti in forma di codice sorgente.
  2. Frequenti modifiche ai requisiti software, alle funzionalità e ai dettagli di implementazione.
  3. Complessità dovuta a molte diverse dipendenze sottostanti, che soffrono tutti dei fenomeni elencati qui.

Ogni sistema software complesso (costituito da più architetture, livelli, lingue e evoluzione di molte generazioni nel corso di molti decenni) avrà molti dettagli di implementazione.

Il motivo per cui la funzionalità non documentata in MATLAB è rilevabile è perché:

In primo luogo, tutto ciò che Mathworks sceglie di implementare nel proprio linguaggio MATLAB verrà spedito con l'applicazione MATLAB in formato codice sorgente. Ciò consente ai licenziatari di vedere i dettagli dell'implementazione. Al contrario, tutto ciò che Mathworks sceglie di implementare in Java e C (MEX) verrà spedito in forma compilata.

Tuttavia, ciò non invalida il consiglio tecnico generale secondo cui si dovrebbe dipendere dall'API documentata, non dai dettagli di implementazione che potrebbero cambiare da versioni a versioni. Solo perché qualcosa è possibile (visibile a te) non significa che sia una buona idea (usarlo).

In secondo luogo, MATLAB è orgogliosa di soddisfare le richieste dei clienti. A volte tali richieste richiedono cambiamenti di comportamento. Di conseguenza, MATLAB ha subito molti cambiamenti di comportamento.

A volte, altri clienti chiedono il vecchio comportamento. Per questo motivo, gli switch sono forniti per rendere felici tutti i clienti.

In terzo luogo, MATLAB utilizza molte tecnologie esistenti, come la GUI Java. Dalle versioni alle versioni, cambia anche il comportamento della GUI Java. Gli switch sono necessari per garantire la compatibilità con le modifiche del comportamento all'interno della GUI Java.

    
risposta data 17.06.2015 - 11:40
fonte
11

Non credo né sciocco né furbo credo: il software MATLAB è usato per ingegneria, scienza, finanza e molti altri campi molto seri. Stando così le cose, MathWorks (la società che sviluppa Matlab) sta molto attento a non documentare pubblicamente cose che non sono certe al 100% che rimarranno tali nelle future versioni di Matlab. Esistono numerosi esempi di tali funzioni e funzionalità / funzionalità e uiflowcontainer è solo uno di questi. Nella stragrande maggioranza dei casi, queste caratteristiche / funzioni non documentate sono rimaste invariate per molti anni, 10-15 anni o più. In alcuni casi (ad esempio, uitable in R2008a o uitab in R2014b) alla fine diventano pienamente documentati / supportati, e in altri casi rimangono non documentati. In rari casi vengono modificati in modo significativo ad un certo punto nel tempo.

La linea di fondo è che l'utilizzo di tali funzioni / funzioni può migliorare in modo significativo il codice Matlab esistente e probabilmente non richiederà alcuna rielaborazione principale nel prossimo futuro. Tuttavia, il lato negativo è che una rilavorazione potrebbe essere effettivamente necessaria in qualche momento futuro se si esegue l'aggiornamento a una nuova release di Matlab che modifica il comportamento non documentato. Quindi vale la pena rischiare? La risposta a questo dipende dalla caratteristica specifica e dal suo utilizzo nel tuo lavoro: il vantaggio che ti offre oggi rispetto al rischio di doverlo ricodificare domani.

P.S. - I e il mio sito web ( link ) sono completamente indipendenti e non affiliati a MathWorks in alcun modo. Tutte le cose non documentate che pubblico nel mio sito web e nei miei libri sono interamente dovute a scoperte fatte da me e non sono state fornite da MathWorks. In effetti, MathWorks sta estremamente attenta a non divulgare a me alcuna cosa priva di documenti. Non supportano o promuovono il mio lavoro non documentato in alcun modo.

    
risposta data 17.06.2015 - 02:03
fonte

Leggi altre domande sui tag