4

C++ コードをグラフィカルに開発できるアプリケーションを設計する可能性を考えています。Scratch を発見したときは驚きました (サイトチュートリアル ビデオを参照してください)。

プリプロセッサ命令とおそらく関数ポインタを除いて、ほとんどの C++ はグラフィカルに表現できると思います。

グラフィカルな項目で表現できる (または表現できない) C++ 機能は何だと思いますか? このようなアプリケーションの長所と短所は何ですか? 「プレーンな」C++ よりもどれだけ簡単になるでしょうか?

要約と詳細:

長所:

  • 直感的
  • 小さなアプリケーションではシンプル
  • タイプミスを避けるのに役立ちます

短所:

  • 大規模(中規模?)のアプリケーションでは判読不能になる可能性があります-サイズのアプリケーション
  • 経験豊富なプログラマーにとっては、手動コーディングの方が高速です
  • C++ は、そのようなアプローチには複雑すぎる言語です。

私の仕事では、すでにかなりの数の既存の C++ コードがあることを考えると、まったく新しいプログラミング方法を探しているわけではありません。レガシ コードと完全に互換性のある別のプログラミング方法を検討しています。人々が新しいコードに使用するある種の「バイラル言語」であり、うまくいけば、最終的には既存のコードを置き換えるためにも使用されます (有用な場合)。

このバイラルなアプローチについてどう思いますか?

手動プログラミングとグラフィカルプログラミングに関しては、私はあなたの答えに同意する傾向があります. これが、理想的には、ユーザーがタイピングとグラフィカル プログラミングのどちらかを常に選択できるようにする方法を見つける理由です。行ごとのパーサー (+部分インタープリター) は、型付きコードをグラフィック デザインに変換できる場合があります。可能です。指を交差させましょう。

タイピング機能とグラフィカル プログラミング機能の両方を提供する際に、慎重に検討および分析する必要がある注意事項はありますか?

私はすでにテンプレート クラス (およびより一般的には型レベルの C++) とそのグラフィカル表現に取り組んできました。テンプレート クラスのグラフィカルな表現の例については、そこを参照してください。ボックスは、クラスまたはクラス テンプレートを表します。最初の最上位ノードはクラス自体であり、次のもの (存在する場合) はクラス内の typedef 命令です。下部ノードはテンプレート引数です。もちろん、エッジはインスタンス化のためにクラスをテンプレート引数に接続します。このような型レベルのダイアグラムに取り組むためのプロトタイプはすでに持っています。

このテンプレート クラスの表現方法が明らかに間違っていると思われる場合は、遠慮なくその理由をおっしゃってください。

4

11 に答える 11

9

私は Scratch が好きですが、経験豊富なプログラマーがテキスト エディターを使用してコードを記述する方が、ブロックをドラッグするよりもはるかに高速です。これは、多くのグラフィカル プログラミング環境で何度も証明されています。

于 2009-03-18T17:01:46.847 に答える
6

コードを書くことは、開発者にとって最も簡単な作業です。これ以上の支援は必要ないと思います。読む、理解する、維持する、比較する、注釈を付ける、文書化する、検証することは、膨大な量のツールやフレームワークにもかかわらず、まだ欠けているところです。


あなたの長所を分析するには:

小さなアプリケーションでは直感的でシンプルです- それを「誤解を招く」ものに置き換えてください。シンプルに見えますが、そうではありません。シンプルである限り、VB.NET はよりシンプルです。複雑になると、ビジュアルデザインが邪魔になります。

タイプミスを避けるのに役立ちます。それが、優れたスタイル、一貫性、そして最後に重要なインテリセンスの目的です。物事がもはや単純ではないときにとにかく必要なもの。


間違ったレベル

あなたは間違ったレベルで考えています: C++ ステートメントは再利用可能で堅牢なコンポーネントではなく、正しく組み立てる必要がある歯車の大きな袋のようなものです。その複雑さと例外 (ルール) を備えた C++ は、特に適していません。

物事を簡単にしたい場合は、より高いレベルで再利用可能なコンポーネントが必要です。これらがあったとしても、それらを接続するのは簡単ではありません。何年にもわたる闘争と多くの環境での多くの試みにもかかわらず、これはうまくいくこともあれば失敗することもよくあります。


バイラル- あなたはその要件について正しい IMO です: 漸進的な採用を許可します。これは、ソース コードと視覚的表現の間のスムーズな切り替えと密接に関係しており、おそらく、変更されたソース コードから視覚的表現を生成できる必要があることを意味します。


IDE のサポート- ほとんどの言語中心のアプローチが迷うところです。最新の IDE は、単なるテキスト エディターやコンパイラではありません。ブレークポイント、データ検査などを使用して、グラフをデバッグするのはどうですか? プロファイラー、リーク検出器などはグラフ内のノードを強調表示しますか? ソース管理では、昨日のグラフと今日のグラフの視覚的な差異を確認できますか?


私のすべての「いいえ」にもかかわらず、おそらくあなたは何かに取り組んでいます: コードを視覚化するより良い方法、コードにさまざまなフィルターを適用して、必要なものだけを表示する方法.

于 2009-03-19T11:04:40.817 に答える
5

C++ の初期のバージョンは、もともと C にコンパイルされるように記述されていましたが、その後、C は通常どおりコンパイルされました。

あなたが説明しているように聞こえるのは、C ++にコンパイルされた後、通常どおりコンパイルされるグラフィカル言語です。

したがって、実際にはグラフィカルな C++ を作成しているのではなく、たまたまグラフィカルな新しい言語を作成しているのです。それは何も悪いことではありませんが、最終的にはグラフィカル言語をマシンコードに直接コンパイルしたり、 CILJava ByteCode、またはあなたの空想をくすぐる何かにさえコンパイルしたいかもしれないので、C++ にあなたの行動を制限させないでください。

あなたがチェックアウトしたい他のグラフィカル言語はLabVIEWであり、より一般的にはビジュアルプログラミング言語のカテゴリです.

がんばってください。

于 2009-03-18T17:09:54.020 に答える
2

通常、重要なプログラムの複雑さは、情報量が少ないグラフィック シンボルで表すには高すぎます。あなたのアプローチが何らかの点で著しく異なる場合を除き、これが過去の取り組みに基づいて価値があるかどうかは懐疑的です.

したがって、実際には、彼は教育目的と非常に単純なプログラムにのみ役立ちます。しかし、それはこのような製品の優れたターゲット市場であることには変わりありません. 基本を理解するのに苦労する人もいますが、視覚的なモデルは物事をうまく進めるのに役立つかもしれません。

于 2009-03-18T17:08:17.987 に答える
1

私は、エンドユーザープログラミングをサポートするABSE(http://www.abse.info)という名前の新しいモデル駆動型ソフトウェア開発パラダイムに取り組んできました。これは、変換コードで補完できるテンプレートベースのシステムです。また、現在プレアルファ段階にあるABSEを実装するIDE(AtomWeaverという名前)もあります。

エキスパート/アーキテクトとしてのAtomWeaverを使用すると、ナレッジテンプレートを作成し、開発者(または、メタモデルを単純化する場合はエンドユーザー)は、ブロックを構築し、テンプレートパラメーターをフォームに入力することでシステムを「組み立て」ることができます。スタイルのエディター。

最後に、「生成」ボタンを押すと、建築家/専門家によって指定された最終的なシステムが作成されます。

于 2010-03-29T23:32:55.473 に答える
1

興味深いアイデアです。私はそれを使うとは思わない。私は、IDE でさえも、フラットなテキスト エディターでコーディングすることを好む傾向があり、困難な問題については、紙のパッドを好みます。私が知っている本当に経験豊富なプログラマーのほとんどは、このように働いています。おそらく、私たちが異なる環境で育ったからかもしれませんが、プログラミングについての考え方のせいでもあると思います。経験を積むにつれて、頭の中でコードがより明確に見えるようになり、GUI ツールで表示されるよりも明確になります。

あなたの質問に関しては、うまく表現しようとするのが難しい/より興味深い種類のものの1つとしてテンプレートを指名します。それらはどこにでもあり、ツールを設計しているときにアクセスできない情報を運びます。それを有用な方法でユーザーに提供することは、興味深い課題となるはずです。

于 2009-03-18T17:15:12.043 に答える
1

グラフィカルなメニューやボタンよりもホットキーの方が好きです。
グラフィカルな開発ツールでも同じことが起こると思います。多くの人々は手動コーディングを好みます。

しかし、ソース コード ビジュアライザー - いいことのはずです。

于 2009-03-18T17:06:47.303 に答える
0

関数ポインターが特に問題になるとあなたが考えていることに驚いています。ポインターに関係することはどうですか?

プログラミング言語はノードの階層で表すことができます - それはまさにコンパイラがそれを変換するものです. プログラムを編集するための UI がまだ解析される一連の文字であることは非常に奇妙です。エディターの自由度は、使用可能な選択肢のセットよりもはるかに大きいためです。しかし、Intellisense はこの問題を大幅に軽減するのに役立ちます。

C++ は、そのようなシステムのベースとしては奇妙な選択です。

于 2009-03-18T17:07:45.633 に答える