OOPの専門家に質問です。 - ページ 16 1...91011121314151617181920212223...55 新しいコメント Реter Konow 2019.08.30 16:35 #151 Georgiy Merts: そうなんです、この機能の詳細です。1つの巨大なスイッチで、十数種類の機能の中から必要なものを選択するのです。このようなスイッチでは、誤ってどちらかのブランチに関連するコードを間違った場所に書いてしまうというミスが起こりやすいのです。 オーバーロードでは、物事はもっとシンプルになります。10種類の子孫があり、毎回ONEクラスで作業し、ONEオーバーロード可能な関数を持っています。そのために全く別のファイルを開かなければならないので、誤って別のクラスに書き込むことはできないのです。 さらに - この非常に巨大なスイッチにおけるパースそのものは、必要な1つのクラスを開いて、1つの関数だけをパースするよりも、ずっとストレスがかかると私は考えています。 実は、アセンブラコードでは、このポインタによって、とにかくこのスイッチの処理はすべて同じスイッチに集約されるのです。しかし、OOPの場合、これらはすべてプログラマーから隠されており、プログラマーの仕事を邪魔することはありません。OOPがなければ-対処する必要があります。 大雑把に言うと、歩くと--結局、筋肉に一定の順序で信号を送って動かしているわけです。しかし、意識のレベルでは、どの動きをすればいいかを覚えているだけなのです。ここで、OOPとはまさにそのような「どのような動きをするかという記憶」のことです。 あなたは「筋肉がたくさんあって、そこに神経が配線されているのに、なぜ動きを記憶する必要があるのか理解できない」のですが、さて......。何度も言いますが、暗記力のある人は、どの筋肉をどの順番で緊張させればいいかを覚えていれば十分なんです。ムーブメントを全部覚えても意味がない。それほど記憶できない他の人にとっては、動作全体を記憶し、筋肉に何が起こっているのか、どの順番でどの程度緊張しているのか--それを頭から隠してしまう方がよほど合理的なのです。 はい、ジョージ、あなたの主張は合理的で論理的です。確かに、私のアプローチでは、プログラムのすべてを記憶し、知る必要があります。これは良いことでもあり、悪いことでもあります。 良い点は、知ることでコードとソリューションの迅速な開発、少ないシンタックスと多くの機能を保証できること、悪い点は、すべてのブロックがグローバルに相互接続されているため、コードの一部を他のプログラムに移植するための規定がないことである。 私たちの話し言葉も、結局のところグローバルメモリーを使っているのです。私たちは、今話題になっている単語だけでなく、すべての単語を知り、覚えています。すべてが頭の中でごちゃごちゃになっているのです。それがマインドの働きであり、私のやり方なのです。機能ブロックの最も重要な結果は、すべて普遍的に利用可能です。そして、その中には、ほとんど人間の用語が含まれているわけです。私は普通の言語のように暗号で話します。とても便利です。でも、忘れてはいけないことがたくさんあります。本当なんです。 ZS.ちなみに、巨大スイッチは、ファイルに分解して中身を隠すことができます。全体を見渡せるので便利なんです。 Реter Konow 2019.08.30 16:40 #152 Vict: すずちゃん、従来のやり方をちゃんと勉強しないで、自転車作りみたいなことをしてるんだね。Peterさん、良い本を探してください、おそらくStroustrupさんでしょう、何かの本で彼はテキストエディタを書いていました、実際の問題から何かを学ぶでしょう、内容は覚えていませんが、悪いことを教えることはまずないでしょう。 もちろん、ありがとうございます。しかし、この6年間で無数の課題を解決してきたのだから、特定の課題によって何かが開眼することはないだろう。まさに無数。だから、私にはわかるんです。 Vladimir Simakov 2019.08.30 16:55 #153 次は効率化です。Switchって結局なんなの?パラメータと定数を逐次比較するものです。アテンション・ピーター、シーケンシャルつまり、求められた定数が100500であれば、プロセッサ上でのこれらの比較はすべて行われることになる。オーバーロードされた関数/メソッドとは - これらはコンパイル後の機械語では全く別のコードブロックであり、独自のエントリポイントを持つ。では、どちらが効率的なのでしょうか? 削除済み 2019.08.30 16:57 #154 Реter Konow: もちろん、ありがとうございます。しかし、具体的なタスクは、この6年間で無数に解決してきたため、何も開眼することはないだろう。まさに無数。だから、私にはわかるんです。 タスクがたくさんあって、オーバーロードの有用性がまだ理解できていないのですね。テンプレート関数の引数がint型、double型、user型であるとして、abs()で絶対値を 求めるとしたら、オーバーロードせずにどうすればいいでしょうか。 車のホイール→4台のバギーを積んだ車→100台の車が走る道路をシミュレートする、というプロジェクトが大きくなったら、このアレイを中心に皆さんの松葉杖を拝見したいです。 Ihor Herasko 2019.08.30 17:00 #155 Vladimir Simakov: そして、次は効率化です。 Switchは結局何なのか?パラメータと定数を逐次比較するものです。アテンション・ピーター、シーケンシャル いや、スイッチの仕組みが違うんです。これは、スイッチが目的の定数に直接向かう表です。ここがifブロックとの本質的な違いです。 Реter Konow 2019.08.30 17:05 #156 Vladimir Simakov: そして、次は効率化です。Switchは結局何なのか?パラメータと定数を逐次比較するものです。アテンション・ピーター、シーケンシャルつまり、求められた定数が100500であれば、プロセッサ上でのこれらの比較はすべて行われることになる。オーバーロードされた関数/メソッドとは - これらはコンパイル後の機械語では全く別のコードブロックであり、独自のエントリポイントを持つ。では、どちらが効率的なのでしょうか? 残念なことに、やりすぎは避けられない。これで私は負け、もうひとつで私は勝ちです。 例えば、巨大なスイッチを持つ機能では、アイテム内のオブジェクトやウィンドウ内のアイテムの位置決めを行うことができます。そのサイズを計算するのです。一度呼び出すと、すべての要素とすべてのオブジェクトが、アンカーポイントに応じた位置に配置されるんだ。 各要素のサイズと相対的な位置を計算し、どの要素を隠すか、必要なキャンバスの大きさなどを決定します...電話一本が大仕事です。同じブロックが、何千もあるウィンドウ要素の中から1つのウィンドウ要素のサイズや位置を計算することができます。1ブロックです。呼び出しはObject()です。 このような数のタスクを解決するために、OOPでどれだけのクラスや関数を書かなければならないのだろうか?想像するのが怖いです。 Vladimir Simakov 2019.08.30 17:09 #157 Реter Konow: 残念なことに、やりすぎは避けられない。これで私は負け、もうひとつで私は勝ちです。 例:巨大なスイッチを持つ同じ機能で、エレメント内のオブジェクトとウィンドウ内のエレメントの位置決めを行うことができます。一度呼び出すと、すべての要素とすべてのオブジェクトが、バインディングに従ってそれぞれの位置に配置されるんだ。そのサイズと位置が計算されます。 どの要素を隠すか、必要なカンヴァスサイズは何か、などを決定します。電話一本が大仕事です。同じブロックが、何千ものウィンドウ要素の中から1つのウィンドウ要素のサイズや位置を計算することができます。1ブロックです。 このような数のタスクを解決するために、OOPでどれだけのクラスや関数を書かなければならないのでしょうか?想像するのが怖いです。 ざっと見積もって5~10人くらい。完全に分かりやすいインターフェイスで。 Vladimir Simakov 2019.08.30 17:10 #158 授業数のことです。それぞれ200行の長さです。 Alexey Navoykov 2019.08.30 17:10 #159 Ihor Herasko: いや、スイッチの仕組みが違うんです。スイッチが目的の定数に直接向かう表です。ここがifブロックとの本質的な違いです。 ですから、スピードという点では、明らかにMQLの中で最速の選択肢と 言えます。しかし、マネージド環境でのクラスオブジェクトへの アクセスは間接的なものです。 Alexey Navoykov 2019.08.30 17:17 #160 Реter Konow: パラメータを持たない関数を作り、その中にすべてのオーバーロードされた関数の計算を書き、変数をグローバルにし、他のどの関数からの結果にもアクセスできるようにするのです。いやぁ、美しいですねぇ。 ええ、ちょうどいいんです・・・「ユーモア」ブランチに入れましょう。) 1...91011121314151617181920212223...55 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そうなんです、この機能の詳細です。1つの巨大なスイッチで、十数種類の機能の中から必要なものを選択するのです。このようなスイッチでは、誤ってどちらかのブランチに関連するコードを間違った場所に書いてしまうというミスが起こりやすいのです。
オーバーロードでは、物事はもっとシンプルになります。10種類の子孫があり、毎回ONEクラスで作業し、ONEオーバーロード可能な関数を持っています。そのために全く別のファイルを開かなければならないので、誤って別のクラスに書き込むことはできないのです。
さらに - この非常に巨大なスイッチにおけるパースそのものは、必要な1つのクラスを開いて、1つの関数だけをパースするよりも、ずっとストレスがかかると私は考えています。
実は、アセンブラコードでは、このポインタによって、とにかくこのスイッチの処理はすべて同じスイッチに集約されるのです。しかし、OOPの場合、これらはすべてプログラマーから隠されており、プログラマーの仕事を邪魔することはありません。OOPがなければ-対処する必要があります。
大雑把に言うと、歩くと--結局、筋肉に一定の順序で信号を送って動かしているわけです。しかし、意識のレベルでは、どの動きをすればいいかを覚えているだけなのです。ここで、OOPとはまさにそのような「どのような動きをするかという記憶」のことです。 あなたは「筋肉がたくさんあって、そこに神経が配線されているのに、なぜ動きを記憶する必要があるのか理解できない」のですが、さて......。何度も言いますが、暗記力のある人は、どの筋肉をどの順番で緊張させればいいかを覚えていれば十分なんです。ムーブメントを全部覚えても意味がない。それほど記憶できない他の人にとっては、動作全体を記憶し、筋肉に何が起こっているのか、どの順番でどの程度緊張しているのか--それを頭から隠してしまう方がよほど合理的なのです。
はい、ジョージ、あなたの主張は合理的で論理的です。確かに、私のアプローチでは、プログラムのすべてを記憶し、知る必要があります。これは良いことでもあり、悪いことでもあります。 良い点は、知ることでコードとソリューションの迅速な開発、少ないシンタックスと多くの機能を保証できること、悪い点は、すべてのブロックがグローバルに相互接続されているため、コードの一部を他のプログラムに移植するための規定がないことである。
私たちの話し言葉も、結局のところグローバルメモリーを使っているのです。私たちは、今話題になっている単語だけでなく、すべての単語を知り、覚えています。すべてが頭の中でごちゃごちゃになっているのです。それがマインドの働きであり、私のやり方なのです。機能ブロックの最も重要な結果は、すべて普遍的に利用可能です。そして、その中には、ほとんど人間の用語が含まれているわけです。私は普通の言語のように暗号で話します。とても便利です。でも、忘れてはいけないことがたくさんあります。本当なんです。
ZS.ちなみに、巨大スイッチは、ファイルに分解して中身を隠すことができます。全体を見渡せるので便利なんです。
すずちゃん、従来のやり方をちゃんと勉強しないで、自転車作りみたいなことをしてるんだね。Peterさん、良い本を探してください、おそらくStroustrupさんでしょう、何かの本で彼はテキストエディタを書いていました、実際の問題から何かを学ぶでしょう、内容は覚えていませんが、悪いことを教えることはまずないでしょう。
もちろん、ありがとうございます。しかし、具体的なタスクは、この6年間で無数に解決してきたため、何も開眼することはないだろう。まさに無数。だから、私にはわかるんです。
タスクがたくさんあって、オーバーロードの有用性がまだ理解できていないのですね。テンプレート関数の引数がint型、double型、user型であるとして、abs()で絶対値を 求めるとしたら、オーバーロードせずにどうすればいいでしょうか。
車のホイール→4台のバギーを積んだ車→100台の車が走る道路をシミュレートする、というプロジェクトが大きくなったら、このアレイを中心に皆さんの松葉杖を拝見したいです。
そして、次は効率化です。 Switchは結局何なのか?パラメータと定数を逐次比較するものです。アテンション・ピーター、シーケンシャル
いや、スイッチの仕組みが違うんです。これは、スイッチが目的の定数に直接向かう表です。ここがifブロックとの本質的な違いです。
そして、次は効率化です。Switchは結局何なのか?パラメータと定数を逐次比較するものです。アテンション・ピーター、シーケンシャルつまり、求められた定数が100500であれば、プロセッサ上でのこれらの比較はすべて行われることになる。オーバーロードされた関数/メソッドとは - これらはコンパイル後の機械語では全く別のコードブロックであり、独自のエントリポイントを持つ。では、どちらが効率的なのでしょうか?
残念なことに、やりすぎは避けられない。これで私は負け、もうひとつで私は勝ちです。
例えば、巨大なスイッチを持つ機能では、アイテム内のオブジェクトやウィンドウ内のアイテムの位置決めを行うことができます。そのサイズを計算するのです。一度呼び出すと、すべての要素とすべてのオブジェクトが、アンカーポイントに応じた位置に配置されるんだ。 各要素のサイズと相対的な位置を計算し、どの要素を隠すか、必要なキャンバスの大きさなどを決定します...電話一本が大仕事です。同じブロックが、何千もあるウィンドウ要素の中から1つのウィンドウ要素のサイズや位置を計算することができます。1ブロックです。呼び出しはObject()です。
このような数のタスクを解決するために、OOPでどれだけのクラスや関数を書かなければならないのだろうか?想像するのが怖いです。
残念なことに、やりすぎは避けられない。これで私は負け、もうひとつで私は勝ちです。
例:巨大なスイッチを持つ同じ機能で、エレメント内のオブジェクトとウィンドウ内のエレメントの位置決めを行うことができます。一度呼び出すと、すべての要素とすべてのオブジェクトが、バインディングに従ってそれぞれの位置に配置されるんだ。そのサイズと位置が計算されます。 どの要素を隠すか、必要なカンヴァスサイズは何か、などを決定します。電話一本が大仕事です。同じブロックが、何千ものウィンドウ要素の中から1つのウィンドウ要素のサイズや位置を計算することができます。1ブロックです。
このような数のタスクを解決するために、OOPでどれだけのクラスや関数を書かなければならないのでしょうか?想像するのが怖いです。
いや、スイッチの仕組みが違うんです。スイッチが目的の定数に直接向かう表です。ここがifブロックとの本質的な違いです。
パラメータを持たない関数を作り、その中にすべてのオーバーロードされた関数の計算を書き、変数をグローバルにし、他のどの関数からの結果にもアクセスできるようにするのです。いやぁ、美しいですねぇ。