MQL5のデータベースには、なぜエキスパートが少ないのですか? - ページ 9

 
simpleton:

'MyStruct' - 前方宣言はサポートされていません。

これでよしとする。アーキテクチャにおける循環的な依存関係を取り除くにはどうすればよいのでしょうか?

まさか、普通のアーキテクチャでは存在できないとか言わないよね。唯一の(松葉杖)方法は、不要なベースクラスを大量に追加してアーキテクチャを再設計することです。これは、多重継承ができないため、本当に面倒なことに変わります。私の理解では、わざわざロゼンジのような依存関係を実装する必要はないと拒否しましたね。

でも、宣言だけ実装しても良かったのでは...。

イェデルキン

さて、「プロのシステムプログラマー」に対して、「偏見のない初心者ユーザー」がMQL5で「本当に基本的なこと」を書けるかどうか、見てみましょう。

できないなんて、どこに書いてあるんだ、君?そうですね、でも粗悪で重たいものになるでしょうね。

 
TheXpert:

これでよしとする。アーキテクチャにおける循環的な依存関係を取り除くには?

複雑なユースケースでのセキュリティシステムのため、まだ前方記載は許可していません。

私たちは、ビルド時と実行時の両方で非常に厳しい制御を行う言語を使用しています。制御が緩いために、潜在的にリークするコードを得ることは許されないのです。要は、これらの記述は全く別のライブラリにある可能性があり、そのような場合の使用方法を厳密に管理する方法はまだないのです。大雑把に言えば、左利きクラスを他の方法で挟み撃ちにして攻撃を行うことは可能でしょう(今はできませんが)。

外部依存・循環依存の前方宣言の問題については、すでに解決策がありますが、64ビット端末(コンパイラ、ターミナル、エディタ、テスター)を立ち上げた後に実装することにしています。すでに本日、32/64ビット版の公開ビルドを準備しました。今週中に公開する予定です。


端末・実行環境のセキュリティを直接的に重視したマネージドコードコンパイラを自分で書き始めるまでは(C#/Javaは環境のセキュリティが確保されていないので関係ない)、開発者の行動の理由を理解することは困難です。

 

イェデルキン

さて、「プロのシステムプログラマー」を差し置いて、「偏見のない初心者ユーザー」がMQL5で「本当に基本的なこと」を書けるかどうか、見てみましょう。

TheXpert です。

できないなんて、どこに書いてあるんだ、君?ええ、できますよ。でも、何か粗雑で硬いものになるでしょうね。

了解しました。偏った重い何か」という概念は、価値判断の分野を指すので、この問題では客観性を忘れてもよいでしょう。この話題は私の中ではクローズドです。
 
TheXpert:

これでよしとする。アーキテクチャにおける循環的な依存関係を取り除くにはどうすればよいのでしょうか?

まさか、普通のアーキテクチャでは存在できないとか言わないよね。唯一の(松葉杖)方法は、不要なベースクラスを大量に追加してアーキテクチャを再設計することです。これは、多重継承ができないため、本当に面倒なことに変わります。私の理解では、わざわざロゼンジのような依存関係を実装する必要はないと拒否しましたね。

でも、宣言だけ実装しても良かったのでは...。

どこにそんなこと書いてあるんだ、君?たしかにできるけど、面倒くさくて重いものになりそう。

失礼ながら、第5回フォーラムから判断して、一番不平・不満が多いのは専門家であることを申し添えておきます。普通のアマチュアが遠吠えをしたり、創作活動をしたりする中で...。あなたは専門家だから、あなたのレベルを行う、知識人は機会を探し、無知な人は理由を探しています...どちらかというと、すみません。
 
joo:
失礼ながら、フォーラム5から判断すると、一番不平・不満を言っているのは専門家である、と言わせてください。普通のアマチュアが遠吠えをしたり、創作活動をしたりする中で...。専門家なんだから、自分のレベルに見合った生き方をしろ。どちらかというと、すみません。

それは、すべてが相対的なものだからです。

右ハンドルの日本車のハンドルを握ったことがない人には、左手で変速できることが理解できないだろう。

そして、初心者は気にせず、右にも左にもずらすことを知らないのです。

 
Urain:

それは、すべてが相対的なものだからです。

右ハンドルの日本車のハンドルを握ったことがない人には、左手で変速できることが理解できないだろう。

と初心者は気にせず、右手でも左手でもずらすことができる。

ほら、全部台無しにしちゃった。:)

オートマの外車に乗り慣れた人が、ギアボックスがめちゃくちゃなシャカシャカで動けない。しかし、「クラシック」に乗っていた人が「日本語」で走れば、「日本語」のプロに差をつけることができる。哲学的というか、ご機嫌というか......。初心者」ではなく、「アマチュア」と言ったことに注意してください。

 
joo:

ほら、全部台無しにしちゃった。:)

オートマの外車に乗り慣れてる奴はギアボックスがめちゃくちゃなシャカでは動けないよ。しかし、「クラシック」車に乗る彼が「日本」車に乗れば、「日本」車に乗るどんなプロにも頭一つ抜け出ることができるだろう。哲学的というか、ご機嫌というか......。初心者」ではなく、「アマチュア」と言ったことに注意してください。

私もトラックの運転手です。10年運転していますが、ハンドルとギアレバーがどちら側かは重要ではありません。多くの車を運転してきましたが、それぞれにパーニダルデバイスがあります。だから、新しい車に慣れるには、数キロ運転すれば、ずっと運転しているように大丈夫です。私は何を言っていたのでしょうか。
 
Renat:

外部依存・循環依存の前方宣言の問題については、すでに解決策がありますが、64ビット端末(コンパイラ、端末、エディタ、テスター)の立ち上げ後に実装する予定です。すでに本日、32/64ビット版の公開ビルドを準備しました。今週中に公開する予定です。

そして、1カ月以上前にそう宣言したリリースでは、そんな重要な解決策は出てこなかった......。
レナート

ターミナル/実行環境のセキュリティに直接重点を置いて、マネージドコードコンパイラを自分で書き始めるまでは(C#/Javaは環境の安全性とは無関係なので)、開発者のある行動の理由を理解するのは難しい。

オブジェクトコンストラクタの解決策も紹介します-。使い物にならないようにする理由は不明です。

パラメータを取らない今、グローバル変数を使ってパラメータをエミュレートすべきなのでしょうか?

サブオブジェクトの作成(初期化)中に回復不能なエラーが発生し、オブジェクトが作成されなかったことを報告する仕組みはない。サブオブジェクトで使用されるすべてのクラスに初期化関数を追加し、オブジェクト自身の対応するクラス関数からサブオブジェクトの初期化関数を呼び出すことで、エラーコードを返すことができるようになります。しかし、第一に、このような関数は、オブジェクトが生成された直後と、その「下」コンストラクタが実行された後に明示的に呼び出す必要があります(デストラクタでオブジェクトを破壊する前の初期化関数も同様)。また、メインクラスを修正する際、例えば、何らかのサブオブジェクトを追加した場合、メインクラスの初期化関数から追加したサブオブジェクトの初期化関数(初期化関数も同様)を含めることを忘れがちですし、その場所も適切なシーケンスで提供しなければなりません(デインティライゼーション関数についても同じ)。結局、ゼロから一度に全部書く人は、実質的にいないんです。その結果、半手書きで安全でないコードができてしまうのです。

 
simpleton:
そして、1カ月以上前にそう宣言したリリースには、そんな重要な解決策は含まれていなかった......。
言葉の責任を負うのは私たちであり、この能力を「出すか出さないか」の最終判断を下すのも私たちです。だから、このタイミングを私たちのせいにしないでください。

サブオブジェクトの作成(初期化)中に回復不能なエラーが発生したため、オブジェクトが作成されなかったことを報告する仕組みはない。サブオブジェクトで使用される全てのクラスに初期化関数を追加し、オブジェクト自身のクラスの対応する関数からサブオブジェクトの初期化関数を呼び出すことで、エラーコードを返すことができるようになります。しかし、第一に、オブジェクトが生成された直後やコンストラクタが実行された後に、明示的にこの関数を呼び出す必要があります(デストラクタでオブジェクトを破壊する前の初期化関数も同様)。また、メインクラスを修正する際、例えば、何らかのサブオブジェクトを追加する際に、メインクラスの初期化関数から追加したサブオブジェクトの初期化関数(初期化関数も同様)を含めることやその場所、順序を適切に提供することが容易に忘れられます。結局、ゼロから一度に全部書く人は、実質的にいないんです。その結果、半手書きで安全でないコードができてしまうのです。

混同して自分のためでもない問題を作り出して気持ち悪さをあおっている。そんなに書くのが怖いなら、あきらめろよ。

ダンスが下手な人の妨げになるのは

 
joo:

お言葉ですが、第5回フォーラムから判断して、一番不平・不満を言っているのは専門家です。

だから、不満はたくさんあるんです。最初のパブリックベータ版のリリース後、すぐにトレーディングシステムを書き始めました。ほとんどすぐに普通のコンストラクタが恋しくなり、そして、new演算子で 明示的に作成しないとポインタを取得できないので、まったくあきらめてしまったのです。そのときも、プログラムの複雑化とその構造(ヘッダーとライブラリまたはオブジェクトファイル、あるものは必要な宣言のみ、あるものは実装)を考慮して、論理的な追加として、クラスのインポートの可能性を示唆しました。

インポートクラスとフォワード宣言は、コード配置の問題を完全に解決します。

コピーコンストラクタは、コンストラクタの問題を単純化します。

やめる原因となった問題が解決された。GetPointer(this)構文が追加されました。それ以外のことは、(今のところ)その言語の中で解決可能なのですが、私の人生を台無しにしています。

専門家なんだから、自分のレベルに合わせて、知識ある人はチャンスを探し、無知な人は理由を探すんだ...。どちらかというと、すみません。

だから、私は書き続ける。ここで話しても、コードを書くのに支障はない。謝る必要はないですよ、やりすぎました。

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5