ドラッグアンドドロッププログラミング-飛びますか?[閉まっている]


12

私が知っているすべてのプログラミング言語は書かれています-つまり、何らかの方法でテキストの長さとして入力されます。しかし、プログラム全体をドラッグアンドドロップするだけのプログラミング言語はあるのでしょうか。ループを取得するには、ここでこのボックスを選択し、「コード」のそのセクションにドラッグします。そして、このようなものがなければ、それが発明されたら飛ぶでしょうか?

個人的に私はそれがそんなに良い考えだとは思わないが、あなたの考えを聞きたい。


決して言ってはいけない(あなたは言った:「私はそれがそんなに良い考えだとは思わない」)-最も奇妙な考えがうまくいく奇妙な状況があり得る。
ern0

6
「飛ぶだろうか?」正直なところ、私が行っていた飛行機の飛行制御システムがドラッグアンドドロッププログラミングを行っている誰かによってプログラムされたと思った場合、私はその飛行機に乗れないかもしれません。; D
グレナトロン

本当にこの質問が好きですが、答えのいくつかがより長く、より深いことを願っています。
ニコール

1
アイアンマンはそれを使用し、飛びます!しかし、彼は現実の世界には存在しません!
マノジR

@glenatron-電車での移動...フライトコントロールシステムは、グラフィカルに構築される有限状態オートマトンと、基本ブロックから構築されGUIインターフェイスで組み立てられるエンジニアリングシステムの一部です。残りはUMLです。
mouviciel

回答:


23

多くの服装がドラッグアンドドロッププログラミングシステムを行ってきました。

ナショナルインスツルメンツの「Labview」は、おそらく最もよく知られた最高のものです。

彼らが遭遇する根本的な問題は、Flying Code Monkeyを専門のプログラマーおよびエンジニアに変換する方法が知られていないことです。1つの例として、O(N ^ 2)またはO(N ^ 3)プロセスとO(N log N)プロセスの間でFlying Code Monkeyに違いはありません。つまり、 O(N log N)アルゴリズム。これは、作成するQuickieグラフィッククラッジにカスタム適合できます。

彼らが遭遇する2番目の問題は、最初の問題に必要な専用ブロックを提供すると、ブロック間でデータを移動することによって生じるオーバーヘッドが高くなり始めることです。私はRippenと呼ばれる非常に素晴らしいシステムの1つを使用しました。HIGH!が必要なパフォーマンスのセンサー処理アプリケーションでどこを傷つけているかを調べるためにプロファイルを作成したとき、CPU時間の約20%がデータ移動に費やされているのを見るとかなり不安になりました。(私はLADAR画像処理を行っていたため、入力画像のすべてのピクセルでかなりの数の浮動小数点処理を行っていたため、CPUの20%はデータ移動オーバーヘッドの多くでした。)

おそらく、コンパイラベースのシステムに移動することでパート2を回避できます。画像をフィードすると、非常に最適化された実行可能プログラムにコンパイルされますが、実際に問題が解決するかどうかはわかりません。ツールのインタラクティブな性質。


理論的には、デバッグモードとリリース(最適化)モードを使用できます。
ジョブ

15

簡単な答えはノーです。

プログラミングに関して言えば、指定された情報に関して、テキスト入力は視覚的なカウンター部分をはるかに超えています。


さらに高いレベルに進むにつれて、問題をグラフィカルに明確にする機会がますます増えています。データフロープログラミングはそのようなアプローチです(この質問に対する私の答えを参照)。コンポーネントはブラックボックスであり、「プログラマー」(より正確には「アプリデザイナー」)のタスクは、単にそれらをネットに編成することです。
ern0

12

LabVIEWはかなりグラフィカルです。

LabVIEW Webサイトから:

LabVIEW


ほら、きれいに見える。あなたはそれでどれくらいできますか?それは物理学のようなたった1種類の「プログラミング」に特化していますか、それとも何かに使用できますか?
ギャブリン

2
はい、LabVIEWの専門家がありますlavag.org。ディスカッションフォーラム:forums.ni.com。Erlangの比較:bit.ly/2yC0Tn。コンパイラの説明:bit.ly/c6quPK。一般的なプログラミング例:bit.ly/cSnt5D。LHCで使用します:bit.ly/9Yp4ooni.com/solutionsのようないたるところで使われているニッチ言語です。それは地獄のように高価であり、抽象化を左右に漏れさせ、説明のつかないサービスを大量にインストールし、多くの素人に苦しんでいます。クロスプラットフォームで、並列化が簡単で、他の言語と同じくらい簡単/難しいです。
ジョーZ

2
LEGOロボットを実行します。ni.com/academic/mindstorms
rwong

1
@Zeke:VI(LabVIEWのプログラムまたは関数に相当)で複数の方向にスクロールする必要がある場合、正しく記述されていません。
-oosterwal

1
@oosterwal:そのとおりです、それは一般的です。さらに、この言語は、習得しやすいように科学者やエンジニアに意図的に販売されています。小さなプログラムを守って、これは本当です。プログラムはより高度なものを必要とするため、コードはかなり制御不能になりがちです。(編集:そのような言語によるものではなく、意図的なユーザーによるものです。完全な開示:私はいつか科学者です:)
ジョーZ

6

Yahoo! パイプは、おそらくあなたが記述しているタイプのグラフィカル言語の完璧な例です。プリミティブ(ユーザーが操作するデータソースからループや条件へのすべて)をドラッグアンドドロップして、システム全体の情報の流れを生成します。

これは非常にドメイン固有ですが、それが主なポイントです。パイプはデータ中心であり、視覚化(式ではなく)が最重要です。同様に、ScratchSprogなどのチュートリアル環境学習支援として取り組んでいるものの視覚化を強調します。データ入力の効率性は、そのドメインでははるかに低い優先度です。


より多くのアマチュアWebアプリ開発者がPipesを知っていれば、世界はより良い場所になるでしょう。+1
スパー

3

時々誰かがドラッグアンドドロッププログラミング言語または設計ツールを思いつき、それを「私たちが知っているようにプログラミングに終止符を打ち」、それを使うすべての人をプログラマーにしようとしています。

それらのどれも実際として仕事をしてはまだありませんし、私たちの仕事のすべてのアウトを入れている理由は、実際には、作成したどのくらいのドラッグアンドドロップ機能に関係なく、あなたがそれを作る方法をユーザーフレンドリーに関係なく、単純な事実はそれであるということであるプログラミングは難しい。

プログラミングの本当の分野は、問題を解決する方法を知ること、プロセスをモデル化し、使用できるようにデータを整理する方法を理解することです。コンピュータで何ができるかを理解することさえ。

一部の人々はこのように考えるように教えられないことを示唆する証拠があります(議論の余地がある場合)。そもそも、このように考えられないなら、たくさんのプログラマーがいるので、もしアイデアがあれば、それを支払う価値があると思うなら、いつでも誰かを雇ってアイデアを実装することができます。プログラミングロジックで十分に作業できる場合は、比較的単純なドラッグアンドドロップ環境をいじるのではなく、実際の言語を学習することもできます。

ここで一般的なプログラミングを考えています。同じことは、ドラッグアンドドロップがITスペシャリストではなく、そのドメイン内のスペシャリストである本当に有用なプロセスユーザーである可能性のある、より限定されたDSLタイプのシナリオには必ずしも当てはまりません。


プログラミングは複雑で、難しく、長いプロセスであり、多くのエンジニアの作業が必要です。そのため、業界ではプログラマー以外の人にもアプリ開発を提供しようとしています。開発コストを削減し、人的資源の使用を最適化します。また、プログラマーとして、私は、非プログラマーが行うべきタスクがたくさんあると言うことができますが、彼らはそのタスクのためのツールを持っていないので、それはプログラマーによって行われなければなりません。その種のタスク2.費用がかかる3.それを行うのに最適な人ではない。したがって、そのような方法を指しているアイデア、たとえばビジュアルプログラミングなどを歓迎します。
ern0

1
業界がそれをやろうとしている理由を知っています。しかし、私のポイントは、あなたがプログラミングできればプログラマーであり、プログラミングできない人はそれ以上のことはできないということです。そうしないとコードを書かなければならなかったのと同じ仕事をする視覚的なツールがあるからですにとって。ツールは問題ではありません、あなたがそれらでしなければならないことは問題です。
グレナトロン

より自由なプログラミングを意味します。ウォッシングマシンに5分間の洗浄、10分間の乾燥を実行するように指示すると、プログラミングも行われます。プログラミングの「レイヤー」ごとに異なる名前を付ける必要があります。データフロープログラミングはプログラミングですか?スプレッドシートの作成(マクロなし)ですか?はい、そうですが、いわゆるプログラマーが行う種類とは異なります。とにかく、プログラマーが行うこと、つまりプラグインVSアセンブリコーディングを使用したSuperIDE12 ++のモジュールをドラッグアンドドロップすることとは、明確な違いがあります。また、プラットフォームにGCがある場合、それは大きな違いです。または:スクリプトVSコンパイラ。「プログラミング」はあまりにも一般的な用語です。
ern0

3

私が見た中で最高のドラッグアンドドロッププログラミングシステムは、Lego Mindstorms NXTロボット用です。

これにより、いくつかの非常に複雑な機能を制御して、いくつかの非常に素晴らしいことを行うことができます。

ただし、ある時点で機能しなくなるため、別のシステムに戻す必要があります。
この記事を参照してください:http : //www.wired.com/geekdad/2007/11/the-best-progra/

ただし、これが改善され、さまざまなシナリオが提供された場合、この必要性はますます少なくなる可能性があります。


マインドストーム(レゴダクタから進化したもの)は、15年前に学校で勉強しました。プログラマーが子供を獲得するための素晴らしいプレゼントです。
10

1
NXTは、実際にはLabVIEWです。さて、少しトリミングされたLV:ni.com/academic/mindstorms
Joe Z

知らなかった、ありがとう!私はとても感銘を受けました。
Bravax

2

データフロープログラミング(別名フローベースのプログラミング)は、一種の可能性があります。ただし、データフロープログラミングはチューリング完全ではありません。

データフロープログラミングは、シーンにコンポーネントインスタンスを配置してポートを接続するときにアプリケーションを作成し、メッセージ処理ネットワークを形成する方法です。コンポーネントはライブラリから選択できます。コンポーネントにはコンシューマ(入力)ポートとプロデューサ(出力)ポートがあり、他のコンポーネントのポートと接続する準備ができています。

マウスでもシンセアプリの作成に使用したのではなく、素手と小さな立方体を使用した素敵な例を次に示します。http//www.youtube.com/watch? v = 0h-RhyopUmc

Wikipediaの記事は良い出発点です:http : //en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming

サウンド生成は、データフロープログラミングの典型的な領域です。いくつかのオープンソースシンセシステムがあります: http: //www.synthedit.com/ http://alsamodular.sourceforge.net/

Macをお持ちの場合、工場出荷時のQuartz Composerがプリインストールされている場合があります:http : //developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

私は私の友人とDFシステムを作成しましたが、ビジュアルエディターはまだありません。スクリプトビジュアライザーのみです。


3
データフロープログラミングがチューリング完全でないと考えるのはなぜですか?
-oosterwal

ボックス接続を使用して実行することは、チューリング完全ではありません。コンポーネントの作成はチューリング完全です(通常、制限はなく、DFフレームワークのみで、他のコンポーネントとの通信に使用する必要があります)。
ern0

1
CPUの基礎となるハードウェアは基本的にデータフローです。この非チューリング完全構築がチューリング完全システムにどのようにつながるのでしょうか?
mouviciel

@mouviciel最初の反応は「いいえ、CPUはデータフローではありません」でしたが、そうです。とにかく、これはデータフローシステムの悪い例です。悪いデザイン。CPUコンポーネントをトリガーして次の命令を処理するソースコンポーネント(外部/内部クロック)は1つだけです。他の部品、例えばオーディオ、ビデオカード、DMAシステムなどをコンポーネントとして数えたとしても、それはまだ悪い設計です。コンポーネントは大きすぎ、特化されすぎています。しかし、アイデアは良いです、おそらくそれはパフォーマンス/汎用性を高め、より小さなユニットでコンピューターを構築し、データフローコンポーネントのような部品を接続する方法でしょうか?特許のような匂い:)
ern0

2

MITのScratchプログラミングシステムは、ほぼ完全にドラッグアンドドロップです。

GoogleのApp Inventorも似ているようです(そして、Scratchを信用しています)。

私も自分で大きなものをコーディングしたくありませんが、「プログラマー思考」を教えるために、スクラッチは素晴らしいです。それは本物のプログラミングですが、即座に視覚的に満足し、スナップを一緒にブロックすることで、新人を先送りにする「構文エラー」のフラストレーションの多くを回避できます(この記事で見たビュー)。pythonコマンドラインで若い子供たちを熱狂させようとしても、最近はそれが減りません。


1

あなたが考えている形ではないかもしれませんが、これはすでに存在しています。2つの例は、SimulinkとAliceです。

Simulinkは、動的システムシミュレーションを組み立てるグラフィカルな手段です。コンストラクトのほとんどは、通常プログラミングと考えるよりも複雑ですが、forやifステートメントなどは、グラフィカルに構築できます。政府および多くの大企業がSimulinkで初期設計を行い、その後、Simulinkの「コード」に何らかのタイプの定理証明器を適用するため、Simulinkは航空宇宙アプリケーションではかなり重要です。

アリスは、子供向けのドラッグアンドドロップのプログラミングトレーニングツールです。子どもたちは、ある種のプログラミングストーリーボードにアクションやオブジェクトをドラッグアンドドロップすることで、ストーリーを楽しく構築できます。


1

Prographは、すべてドラッグアンドドロップのクールな言語でした。また、ウィキペディアには視覚言語の適切なサイズのリストを含む記事があります


これらの各リソースの内容を少し拡大して、質問に対する回答としてこれらを推奨する理由を教えてください。「リンクのみの答えは」かなりスタック所で歓迎されていません
ブヨ

0

視覚的なプログラミング言語はかなりあります。私が大規模なコールセンター用に管理した電話システムは、ドラッグアンドドロップモジュールを使用してプログラムされました。私の叔父は、製造ラインを設計するためのジャストインタイムシステムを開発しました。これは完全にドラッグアンドドロップで、20年前のことです。

ドラッグアンドドロッププログラミング言語を使用したPS1でロボット戦闘ゲームをプレイしました。


Carnage Heartは素晴らしいゲームでした。
猿人

それが1つです。名前を思い出せませんでした。私はそのゲームが大好きでした。非常に巧妙なデザイン。

-1

テキストプログラミングは50年に渡って順調に進んでいますが、ソフトウェアエンジニアリングは、次のレベルの複雑さに対処するためにグラフィカル領域に移行する必要があります。たとえば、メニーコアプロセッサの登場と並列プログラミングの課題により、スレッドモデルが限界に追い込まれています。率直に言って、ソフトウェアコミュニティは、プログラミングには根本的に異なる特別な何かがあり、他のすべてのドメインのように視覚化を受け入れられないというthinking慢な考えだと思います。電話オペレーターや他の多くの職業と同様に、適切な自動化テクノロジーにより、ドメインの専門家はすぐに知識ベースのシステムの豊富なシミュレーション空間で協力できるようになります。ソフトウェア業界は、パラダイムシフトが長い間待ち望まれています。


2
ここで私は強く反対します:多くの現実のプログラムの複雑さは、完全にグラフィカルに表現するにはあまりにも高すぎます。(1)プログラミングの方法を知っていて、(2)大規模プロジェクトでLabViewを使用したことがある私が知っているすべての人は、大規模プロジェクトで生産的に作業するにはグラフィック表示が本質的に重すぎることを発見しました。もちろん、LabViewは、プログラムが1つの画面に収まる場合に非常に便利です。しかし、プログラムが1画面の制限を超えて成長し始めると、LabViewを効率的に使用するのが難しくなります(単純なテキスト検索、ブロックの再配置は苦痛です...)。
エリックOレビゴット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.