日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2010年6月6日日曜日

入門用プログラミング言語

このブログで最初期の頃には、「TTSneo」という日本語プログラミング言語を勉強した頃がある。
チュートリアルをやっただけだが、そのおかげでプログラミング言語への苦手意識が多少だが少なくなった。


実際、Melスクリプトでも、おそらく他の言語でもそうだが、全くの初心者は、そのプログラミング言語を使う上での「文法」や「語彙(コマンド)」の使い方がわからずに、ロジカル・シンキングに集中することができないのが一つの壁になっていると思う。

通常のプログラミング学習では、プログラムをとにかく数多く書き続けることで、克服することを強いられる。

そのため、興味がわく部分を見つけられる人はよいが、そうでない人、私のような頭の堅い人間には、これは苦痛でしかない。
それでも努力を続ければ、なんとか、ある程度のものは作れるようになるのだが、根本の部分で混乱が残っていたりして、いつしか遠ざかることもある。

全くのプログラミング言語初心者は、まずプログラミング言語というものをつかって「何か楽しいことができる」というのが感情的に理解できていない限り、それを継続する気力は減少してしまうのではないかと思う。

実際の所それらを克服するのは人それぞれ自分に合った方法をさがすしかないのだが、Melスクリプトにおいてはどんなものがあるのか考えてみた。
1)GUIからはできない動きやモデリングをMelスクリプトで実行してみる。
2)エクスプレッションで、簡単なアニメーション(パーティクル含む)をデフォルトのものから変えてみる。
3)TTSneoのような入門用の言語で、プログラミング作業のたのしさに触れてみる
4)とにかく自分に勉強継続を強いる
5)やさしい先輩をみつけて、手取り足取り教えてもらう。


思いつく方法をとりあえず書き出してみたが、要約すると以下のステップを踏むことだと思う。
A)学習対象の言語の可能性を知る
B)プログラミング作成を楽しむ
C)目的のプログラミング言語の世界へなじむ。(強引でも、徐々にでも)



今回、この話題をぶり返すのは実は目的があって、上記「B」と「C」の間にある隔たりだ。
「C」を達成するには「B」のプログラミングの作成が楽しいという状態を維持したまま、プログラミング言語の世界へなじんでいく必要がある。

おそらく人間は、強いられてやることは、長続きしない。
そして、その能力が完全に伸びることはない。
特に、その分野で秀でた存在となりたいと思うなら、すべて自らの興味に根ざして、自らの意志で、やっていくことが非常に重要になる。

しかしながら成人になっていままで触ったこともないプログラミング言語に、触れるきっかけは特にCGの分野においては
● いつもと違うことができそうで興味をもった
● 必要性にかられた
の二つがある。

必要性にかられてというのは、私のように「このままでは仕事がなくなる」とか、このブログを読んでくださる多くの人がそうであるように「海外でTDになりたい」とか、他のケースであれば「上司に要求されて」とか、場合によっては「後輩にまけてはいられない」というような個人的な理由まで様々だろう。
実は、この「必要性にかられて」というのは、結構くせ者である。
なぜなら、これは「外部」要因であり継続に必要な、興味という「内面的」要因ではないからだ。
幸いにもその両者が微妙に重なり合う場合は何とかなることもある。
また、生死に関わるとか人生に大きく影響する場合は、何とかなることもある。

しかし、趣味程度に初めていつでも好きなときにやめてもたいした影響はないか、習得しなくてもなんとか生きられる場合は、いつしかやめてしまう。

ただ、私のように基本的にPC嫌いで、飽きやすく、他のことに興味が移りやすい人間は要注意は、ある程度強いられる環境も必要なのかもしれないので、まるっきり「外部」環境が悪い要因だけとも言い難い。

ただそれらの相互バランスを考えたときに「内面的」要因を自分なりに維持していく必要がある。



私の場合、TTSneoのようなプログラミング入門言語は、たまに使ってみるとこのプログラミング言語に対する「内面的」な興味を保ってくれるのに役に立った。

これはいつの段階でやっても良い。
個人的には、プログラミング学習で、「英語と記号」にくたびれてきたときなどには気分転換にもなり、効果的なように感じる。

簡単にあげてみると、以下のような効果があった。
●使い慣れた日本語によるプログラミングは、その言葉にとらわれることもなく、アルゴリズムの構築に集中できる。
●また、どんなプログラミング言語にも「最低限必要(最重要な)コマンドが何か」を認識できる。
●英語にいかに煩わされていたかを認識できる。
●プログラムをみるとすべてが一様にみえてしまう状態から、情報の重要性にしたがって整理してみることができるようにもなる。
●自分が十分に理解していかなった基本的コマンドなどを再認識する。

こうやって、プログラミング学習への興味をひきおこせば、また本来の学習対象であるプログラミング言語にもどった時に、やる気が復活していることがある。


自分の場合はTTSneoしか試したことがないが、最近は、入門言語がたくさんある。
そこで、TTSneo以外にどのようなものがあるのか、調べてみたのでその一部をメモしておきたい。
ここにあげたもの以外にも数多くの入門言語や日本語プログラミング言語が存在しているので、自分でも調べてみることをおすすめする。


-------------
Logo
-------------

さて、ベーシック時代からコンピュータに親しんだ人は「Logo」という言語を耳にしたことがある人は多いと思う。
1967年に公開されたもので、その歴史は古い。
線画を描くことを得意としてタートル(亀)と呼ぶカーソルを、プログラミングで操る画面は有名だ。


恥ずかしながら、当時はこの程度の絵が描けてもしょうがないとおもっていたのだが、目的をはき違えていた。
この言語の目的は作品を作ることではなく、プログラミングという作業に親しむために作られていることを正確に理解したのは、今日であるw
元々、数学者であり発達心理学者でもあるシーモア・パパート氏により作られたという言語とうだけあり、前回述べたような「具体」についても十分配慮されている言語の可能性が高い。

現時点では、私は試していないが余計な抽象性に振り回されるのが嫌な人にはもしかしたら向いているかもしれない。

Logoは後にレゴのマインドストームでも利用されることになるのだが、ITproの「こうしろうのMindStorms日記(第40話 LOGOからLEGOへ )」にもそれを期待させる記述がある。(注:現在のレゴ・マインドストームでは別のソフトになっているようです)

MindStormsのマニュアル本に記されているセイモア・パパート博士の言葉の日本語訳(『知識は理解の一部でしかありません。真の理解は実際に経験することなしには、ありえないのです。』)
これは、前回述べた「具体」と「抽象」に関係している。「体験」とはまさしく「具体」である。


Logoについては、以下のホームページが詳しく説明している。
忘れさられた言語LOGO
レゴロゴ」 

上記のサイトでも触れているが、レゴの「マインドストーム」はこのLogoの制作者であるセイモア・パパート氏の著作からとられている。


Logoには、多くの種類があり、日本語版のLogoも存在する。
現時点で有名なのは「ドリトル
ソフトをインストールしなくても試せるオンライン版も存在する。
オンライン版ドリトル


Logoの紹介ページではたいていタートルを操作する線画で終わっているので、それだけの機能しかないと思われがちだが、
関数定義・条件式・ループ・数値計算・文字や値の入出力、動作の繰り返し、プロシージャなども利用できる。
また、オブジェクト指向もタートルが起源らしいし、ある程度は本格的なものも作れるかもしれない。

参照:
Logo (Wikipedia)
第3回 年の功より、カメのロゴ「LOGO」(前編)
第4回 年の功より,カメのロゴ「LOGO」(後編)



-------------
「Scratch」
-------------

スクラッチは、コマンドがブロックのようになっていて、それを組み合わせてプログラムを作成する。
窓の杜ではコマンド一覧も画像付きで紹介されている。

@ITでも、「非プログラマのためのプログラミング講座」という連載があり、子供だけでなく大人の入門者にむ向いていることがわかる。

もともとは子供用に作られたものだが、LogoやTTSneoのようなソフトでもまだだめという方は、こちらのほうが、GUI操作の面が多くて、もしかしたら助けになるかもしれない。
日本語版スクラッチのページ


現時点では簡単なゲームを作ったり、アニメーションを作ることが主流のようだが、基盤を通してハードの制御もできる。
実際にレゴのマインドストームとの連携もできるらしい。


参照:子どもたちがOSS活動、プログラミング言語「Scratch」が開く未来




-------------
Vuscuit (ビスケット)
-------------

ビスケットはスクラッチよりもさらにビジュアル面が進んでおり、すべてGUIによるグラフィックス操作でおこなう。
http://www.viscuit.com/

基本的には「めがね」とよばれるインターフェイスでイベントが発生した時の動作をきめていくだけで、
アニメ-ションや簡単なゲームをつくることができる。


しかし、開発者は、「プログラミングは粘土だ」という考えを持っている方で、思考を妨げないインタフェースにより,純粋に「つくること」に集中できるツールとして開発している。

■Viscuit(ビスケット)とは…
コンピュータの真の魅力,プログラミング.プログラムを書ける人は,
コンピュータを粘土のように自由自在に操っています.しかし,それには
数学と英語と難しいロジックという壁を超える必要がありました.
ビスケット(Viscuit)は,絵だけでプログラムを作り,絵を自由に動かす,
まったく新しいプログラミング言語です.絵を並べることで,アニメー
ション,ゲーム,動く絵本など,子どもから大人まで,誰もが簡単に
つくることができます.ビスケットは思考を妨げないインタフェースにより,
それを使う人の創造力が刺激され,純粋に「つくること」に集中できるツールです.



もしビスケットを触ることで「プログラミングは粘土だ」ということが少しでもわかり、作ることに集中できるというのはどういうことかを体験したいなら、つかってみるのも良いかもしれない。

ただフローとしてのプログラミングではなく、イベントに的を絞っているので、「イベントによる制御」を体験することが目的であることを前提にしておく必要がある。



-------------
Alice
-------------

3Dムービーとゲームが作れるプログラミング学習用ソフトである。
これまでに紹介したものと比べると複雑である。

Alice.org

デモ映像はこちらから

スクラッチをもっと高度かつ複雑にしたような感じ。
デモを見る限り、ブロック状のコマンドを並べていく方法などはスクラッチを連想させる。
これはビジュアル・プログラミングという手法。

現在は3.0が開発中である。
歴史としてはスクラッチよりAliceのほうが古い。


参照:
Youtube動画
Alice:3Dアニメーションを作成しながらOOPを学ぶ
IT media:子ども向けのオープンソース・プログラミング言語 (2/2)



-------------
Processing
-------------

http://www.processing.org/
現時点では日本語版もなく、英語オンリーで、今まで紹介したものに比べたら本格的な言語で、子供向けではない。
ここに入れるべきかどうか迷ったがメモとして残しておきたい。


基本的にビジュアルデザインのために生まれたJavaベースの言語で、グラフィックス面が優れているとされる。

実際に上記Processing公式サイトからExhibitionをみるとすばらしい作例が多い。

参照
言語ゲーム (山宮隆の日記) 「Processing」
プログラミング言語「Processing」 - CtrlShift.net
Processing 1.0
東京工科大学 メディア学部 「2009年度 CG制作技法の基礎 (Processing入門編) 」




-------------
最後にわかりやすいC言語の解説があったので貼り付けておきます

0 件のコメント:

コメントを投稿