パスワードを忘れた? アカウント作成
2075800 story
プログラミング

未来の開発環境? インタラクティブなプログラミング環境のデモが話題に 30

ストーリー by hylom
未来のVisual-Studio? 部門より
taraiok 曰く、

本家/.で「A Better Way To Program」と言うサイトの中にある「Inventing on Principle」と書かれた動画が話題だ。この1時間ほどの長い動画では、現在のプログラム言語の抱える問題を指摘している。動画では現在のプログラマが抱える縛りを解き放つには「interactive」、つまり双方向性を有したプログラム環境が必要だという。

プログラマーはコードを書き、それをコンパイルし、コンパイルが終わったら実行してデバッグを行うのが一般的だ。しかし、この動画中のプログラミング環境では、コードを書いて選択するとそのコードの行の上にスライダー(時間経過などを指定できる)などが現れる。スライダーを動かすとその場で書いたコードをリアルタイムに実行できるというものだ。このように、動画内の環境では直感的なインタフェースを使い、無駄な時間であるコンパイル無しで素早く動作確認ができる様子が見て取れる。

本家/.のコメントではこの環境は素晴らしいという意見もあれば、この開発ソフトのような仮想環境とコンパイルして実際のPC上で試すのとでは大きな違いがあるので実用性に課題があるといった意見などがある模様。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 対話的? (スコア:3, おもしろおかしい)

    by sindobook (35700) on 2012年03月14日 11時02分 (#2117149)
    そろそろプログラマのツッコミ音声にボケ音声で返すぐらいはして欲しいものだ。
    • by TarZ (28055) on 2012年03月14日 11時30分 (#2117179) 日記

          string fileName;                         ____
          int fileNameLength = fileName.Length;  { ガッ! )
                                                    ̄ ̄ ̄ ̄

      親コメント
  • by sumeshi0206 (12305) on 2012年03月14日 9時55分 (#2117112) 日記

    > プログラマーはコードを書き、それをコンパイルし、コンパイルが終わったら実行してデバッグを行うのが一般的だ。

    最近の言語や環境だといちいちコンパイル意識しないよね。

    #Visual Studioはコンパイル意識させられるところがイマイチ

    • by Anonymous Coward

      最近の言語って?

      • by Anonymous Coward

        きっと、とっても、みじかくて、早いんだよ。
        わかってくださいよ

        #ああ、デバッグ情報ONにすると最適化レベル下がってしまって遅くなってうまく動かなくなる
        #ような仕事とは皆無なんですよきっと。

        • by Anonymous Coward

          確かに遅くなっただけでうまく動かなくなるようなコードを書くやっつけ仕事はしないな。

          • by Anonymous Coward on 2012年03月14日 20時57分 (#2117658)

            組み込みやっていると、CPU止めるとコイルが焼けたりしてたなあ。
            なのでまずはバックグラウンドで動くモニタを作ったらICEはほぼ出番なし。
            今はDSPが手軽に使えるんでメインCPUでサーボの制御なんてやらなくていいけど、バックグラウンドで動くモニタでのdebugが楽なので、実速度で動かしながらメモリやportをcheckするとか常用しますね。動的にオブジェクトを差し替えるなんてことはできないですけど。

            親コメント
            • by Anonymous Coward

              ICEなら当然のようにユーザプログラム実行中のメモリの読み書きができると思いますが。
              本当に実時間で。

              #バックグラウンドで動くモニタといっても結局割り込みで動いているだけだから、その分実時間動作より遅くなってるはずだし。

              • by Anonymous Coward

                ICEでうっかりブレークしたら焼けるでしょ。
                実時間と云っても定周期が重要で、フルスピードという意味ではない。
                定周期内に処理が終われば、速度(=クロック)は遅くても良い。

                CPUから観た実世界=人間ではなく、機械なのが組込み。
                人間はイラつくくらいだけど、機械は焼けたり、ノイズになったり、空から落ちたりする。

                #スラドでは組込みはITに含まれないってほんとだな。

      • by Anonymous Coward

        フィボナッチ数列がとてもエレガントに書ける言語の事でしょう。

        ただし、みんな、フィボナッチ数列をエレガントに書けたことに満足し
        それ以上の実用的なソフトウェアを作りたがらない・・・

  • by Limbodot (42869) on 2012年03月14日 13時20分 (#2117292) 日記

    動画つまみ見ですが、オブジェクトが目に見えるような存在なら十分に可能ですが、
    そうでない抽象的なプログラミングにどう対応するんだろう。
    全てを可視化し関係を図示するための手法を組み込んでいるというなら凄いですが。
    #それってUML

  • 昭和の頃から、工業用のプロセスコントローラには、図形エディタでシンボル間に線を渡したりディスプレー上のダイアルでパラメータを変更したりするとリアルタイムに稼働中のプラントの制御に反映されるシステムがありました。
    ハード的にはディスクリートで組んだマイクロシーケンサの集合体だったようです。

  • かつての、PCにバンドルされてたようなBASICインタプリタの場合、似たようなことができましたよね。
    もっと泥臭いやり方だったけど。
  • by Anonymous Coward on 2012年03月14日 9時42分 (#2117105)

    少なくとも動画の最初、変更1回ごとの結果とかレイヤみたいなものは画像処理ソフトにある。
    変更するとその行までの処理を再計算して表示してくれるし、レイヤみたいに表示もできる。
    動画を見ると開発するときにパラメータ変更画面とかもプログラミングで作っていたのを
    開発環境の中でできるようにしてくれってことでしょう。
    パラメータ数が多い画像処理関数はいちいちコンパイルしてたら時間ばっかかかるし
    こういうことが出来るようになるのは必然だったけど。

  • by fareast (45345) on 2012年03月14日 23時23分 (#2117718) 日記
    ちゃんと全部視聴してないですが、動画は JavaScript で WebGL を呼んで描画しているみたいですね。Web ブラウザ上で実装したものかな。

    ゲーム開発するときはこういうパラメータ調整をすることが頻繁にあるので、たいていはゲーム自体に調整するインターフェイスを実装して、テストプレイ時に適宜呼び出しながら調節するのが一般的かもしれませんね。その場合わざわざそうした実装をするのが手間ですが、IDE で提供してくれるのはとても便利ですね。動画後半の、キャラクターの一連の動きを表示して狭い隙間に入る微妙な調整をするデモも面白かったです。これもどこかのゲームエンジンが実装してくれないかな。ただしかなり高レベルなインターフェイスを強要することになるので、嫌がる開発者もいるかもしれませんけど。たぶんこれらは一般のソフトウェア開発に即座に応用できるものではないでしょうが、ゲームや映像製作では便利でしょうね。

    この「開発環境のインターフェイスの改良」と、タレコミのいう「再コンパイルが面倒」という問題は別の概念ですね。Eclipse の Hotswap Bug Fixing でもリテラルや式を変更する位なら再起動しなくても反映してくれますから、とくに新しい概念でもありません。自分は強い型付けの言語のほうが好きですが、スクリプト言語に比べるとコンパイルが遅い(というかリンクがとにかく遅い)のがうんざりするので、最近は JavaScript も結構好きです。
    • 例えばGAみたいに、ブン回す→1日後にグラフでトレンドを見てまたパラメータ調整→ブン回す→・・・というような話になると、
      スライダの調節でトレンドを見ながらパラメータ調整できたら非常に有り難い話ですが、
      スライダをちょいと右に動かすと、その結果を表示するのに数時間かかるみたいな。
      こういうのって、CPUのパワーだけはどうにもならんですよね。

      親コメント
  • by Anonymous Coward on 2012年03月14日 7時47分 (#2117048)

    LISPとかSmalltalkとかFORTHとか‥‥‥‥

    • by epgrec (43527) on 2012年03月14日 11時15分 (#2117166)

      当該ビデオもJavaScriptだったし似たようなものですか。
      JavaScriptはSmallTalkの流れらしいし。

      C/C++を始めとするコンパイルが必要な処理系でやるならC/C++インタープリタを
      IDEに実装するということになるのかな。
      C/C++で記述する処理は多岐に渡るので、こううまくいかないものも多そうだけど。
      Break、ステップ実行で十分な気も。

      とはいえ、CPUパワーはいくらでもある状況だから開発環境に贅沢するのも悪くはないか。
      いまのIDEもずいぶん便利になりましたけど。

      親コメント
  • by Anonymous Coward on 2012年03月14日 7時57分 (#2117049)

    動画を見てないので的外れかもしれませんが、タレこみを読む限りは、GUIで操作可能な単体テストツールなのかな、と。
    いまどきのIDEって単体テストの機能もあると思いますが、それらと比べてどれぐらい有用なのでしょうか。

    • by Anonymous Coward

      それはIDEの仕事じゃない。Frameworkの仕事だ。
      パラメータを変更しながら行った内容を記録してテストコードに落としてくれるとかなら、これはIDEの仕事だ。

    • by Anonymous Coward

      動画には、プログラミングだけでなく、電子回路の挙動の確認や、フラッシュ的なアニメーションの作成などの、例が挙げられています。

      思うに、彼が伝えたかったのは、単に新しいデバッガのを作ったということではなく、いかにコンピューターとの間を直感的にインタラクティブにするかに関する「コンセプト」の方だと思います。そして、そのコンセプトは、デバッグ作業を含むいろいろな局面で使えるっということだと理解しました。

      • by Anonymous Coward

        彼は最初から「Concept」という言葉を強調して、最期もその言葉で締めくくってますからね。

        • by Anonymous Coward

          失礼、彼が強調してたのは「Principle」(原理)という語でした。彼の提案している考え方が、非常に強力で、とても汎用性があるという、彼の主張がにじみ出ていますね。

  • by Anonymous Coward on 2012年03月14日 11時11分 (#2117160)

    マジックナンバー推奨?

  • by Anonymous Coward on 2012年03月14日 11時12分 (#2117163)

    十分インタラクティブだと思う、

    好きな所で止められるし、好きな所まで進められるって普通のデバッガじゃないか、、

    • by Anonymous Coward

      好きなところでプログラムの書き換えはできないですけどね。

      • by Anonymous Coward
        エディットコンティニューで充分ではないかな
      • by Anonymous Coward

        SwingをEclipseの上で動かしてると、小さな修正は実行中のものに適用される。
        ほんとに小さなものだけだけど。

  • by Anonymous Coward on 2012年03月14日 20時41分 (#2117651)

    スライダーを動かした時の動作と、
    実際にコンパイルした時の動作が違って頭抱えるわけですね、わかりますん。

  • by Anonymous Coward on 2012年03月14日 22時14分 (#2117690)

    プログラマーはコードを設計し、それをカードにパンチし、パンチが終わったら投入してデバッグを行うのが一般的だ。

    しかし、この動画中のプログラミング環境では、コードを書くとそのコードに対応したバイナリデータ(最適化レベルなどを指定できる)を生成できる。バイナリデータをメモリに読み込むだけで書いたコードをリアルタイムに実行できるというものだ。

    このように、動画内の環境では直感的なインタフェースを使い、無駄な時間であるカードパンチ無しで素早く動作確認ができる様子が見て取れる。

typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...