web-dev-qa-db-ja.com

非常に多くの「文書化されていない」コードをサポートするMatlabまたはMathworksに固有の何かがありますか?

私は最近、社内のアルゴリズムエンジニアの作業とインターフェイスして、彼のアプリケーションスイート以外のテストベンチで使用できるようにモジュール化するために、多くのMatlabを掘り下げています。これに接続するいくつかの異なる領域と概念からいくつかのリンクに出くわしました ドキュメント化されていないMATLAB Webサイト

文書化されていない動作に依存しないように常に教えられてきたため、私はそこで提案された解決策に飛び込むのをためらっていました。ただし、MATLABで開発される種類のソフトウェアの場合、このような実装の変更によって、家の崩壊が大きくなりすぎて改修できないとは思われませんが、Mathworksが開発する方法に、それらが何とか許可されていることに興味があります。文書化されていないアーキテクチャとフレームワークに非常に多くのフックがありますか?彼らがこれらのものを形式化するのを妨げているものは何か。

プログラムによるGUI作成のためのUIレイアウト手法を調査しているときの具体的な例と同様に、それらの articles はこのuiflowcontainerについて言及しました。

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

一般に、そのような開発ツールが文書化されていない内部にそのようなフォロワーを作成したことは非常に興味深く、面白いと思います。その現実について何か考えはありますか?それはばか、狡猾、またはその中間の何かですか?

7
jxramos

TL; DR

  1. ソースコード形式で出荷されているMATLAB ".m"ファイルによる実装の詳細の漏洩。
  2. ソフトウェア要件、機能、および実装の詳細の頻繁な変更。
  3. 多くの異なる基礎となる依存関係による複雑さ。これらはすべて、ここにリストされている現象に悩まされています。

すべての複雑なソフトウェアシステム(複数のアーキテクチャ、レイヤー、言語で構成され、何十年にもわたって多くの世代が進化している)には、多くの実装の詳細があります。

ドキュメントに記載されていないMATLABの機能が見つかる理由は次のとおりです。

まず、Mathworksが独自のMATLAB言語で実装することを選択したものはすべて、MATLABアプリケーションとともにソースコード形式で出荷されます。これにより、ライセンシーはその実装の詳細を確認できます。逆に、MathworksがJavaおよびC(MEX)で実装することを選択したものはすべて、コンパイルされた形式で出荷されます。

ただし、これは、文書化されたAPIに依存する必要があるという一般的なエンジニアリングアドバイスを無効にするものではなく、バージョン間で変更される可能性のある実装の詳細には影響しません。何かが可能である(あなたに見える)からといって、それが(それを使用すること)が良いアイデアであるとは限りません。

次に、MATLABは顧客の要求を満たすことを誇りにしています。時々そのようなリクエストは振る舞いの変更を必要とします。その結果、MATLABは多くの動作の変更を受けました。

時々、他の一部の顧客は以前の振る舞いを要求するでしょう。このため、すべてのお客様を満足させるためのスイッチが用意されています。

3番目に、MATLABはJava GUIなどの多くの既存のテクノロジを使用します。バージョンごとに、Java GUIの動作も変更されます。スイッチも必要です。 Java GUI内の動作変更との互換性を確保するため。

3
rwong

馬鹿でも狡猾でもありません。MATLABソフトウェアは、非常に深刻な工学、科学、金融、その他多くの分野で使用されています。そのため、MathWorks(Matlabを開発している会社)は、将来のMatlabバージョンでも100%確実ではないことを公に文書化しないように細心の注意を払っています。このような関数と機能/機能の例は数多くあり、uiflowcontainerはその1つにすぎません。ほとんどの場合、これらの文書化されていない機能/機能は、何年もの間、10〜15年以上変更されていません。場合によっては(R2008aでuitableやR2014bでuitabなど)、最終的に完全に文書化/サポートされるようになることもあれば、文書化されないままになることもあります。まれに、ある時点で大幅に変更される場合があります。

結論として、このような機能を使用すると、既存のMatlabコードを大幅に改善でき、おそらく近い将来、大幅なやり直しが不要になります。ただし、不利な点は、文書化されていない動作を変更する新しいMatlabリリースにアップグレードする場合、将来的には実際に手直しが必要になる可能性があることです。それはリスクに見合う価値があるのでしょうか?これに対する答えは、特定の機能と作業におけるその使用法によって異なります。つまり、今日提供される利点と、明日コードを再コーディングする必要があるリスクの両方です。

pS –私と私のウェブサイト( http://UndocumentedMatlab.com )は完全に独立しており、MathWorksとは一切関係がありません。私が自分のウェブサイトや本で公開している文書化されていないものはすべて、すべて自作の発見によるものであり、MathWorksから提供されたものではありません。実際、MathWorksは文書化されていないものを私に漏らさないように細心の注意を払っています。彼らは私の文書化されていない仕事をいかなる方法でもサポートまたは促進しません。

11
Yair Altman