Action Script に手を出してから半年。この言語を使い込んでいけばいくほど、その素晴らしい点がよく分かってきた。
これからはプログラミングを義務教育に追加するべきだ。
言語は C と ActionScript で。
プログラミング言語の良し悪しを測る指標は以下の3つに集約されると思う。
1:実行環境の柔軟さと簡易さ
せっかく頑張って良い物を作っても、起動するのに少しでも面倒な手間があるとそもそも見てもらえない危険性がある。あと、実行環境が限られるのもダメ。いつどこでもすぐに起動できるようでないと初めて触ってくれる人が遠のいてしまい普及しなくなる。
2:構造的な言語仕様
言語の目的によって言語仕様が違うのは仕方ないが、ただ一貫した思想で構造的かつ素直に組めるようなオブジェクト指向でないとイヤだ。これは自由と制限のバランスの問題だけど、スクリプト言語によくある「型を明示しない」とかアトリビュートとか、あと多重継承とかはその自由度のせいでバグを誘発する地雷になっていると思う。
Cのポインタも自由すぎるがゆえにバグの温床として悪名高いが、これだけは教育的に良い要素がたくさんあるので教材として未来に残すべきだと思う。ポインタを使ってメモリに直接ビシバシとアクセスすることでアドレスの概念を体で覚え、そしてセグメントエラーに何度も遭遇しながらデバッグスキルを身に付け、その後で Java の Vector とか ActionScript の Array とかの便利さと時代の進化に涙を流すのがプログラマとしての通り道だ。
話が飛んでしまった。
3:優秀な開発環境
メモ帳でコーディングし、DOS窓からコンパイル・実行する。そんな原始的なことをやっていた時期が私にもありました。メモ帳とDOS窓だけでルービックキューブを解くCプログラムを書いたことがある。1000行ちょっとだったけど、メモ帳で開発なんて今じゃもう考えられない。でもむしろ、それでバグの匂いを嗅ぎ取る嗅覚がすごく鍛えられた。バグ自体も、単なるタイプミスから、整合性のミス、論理間違い、処理の書き忘れ、ヌル参照、仕様自体のバグ、その他いろんなパターンがあるから、エラーログやソース、プログラムの挙動や変数の中身などあらゆる手がかりを統合してカンを働かせる必要がある。バグに対する嗅覚はコーディングをこなした量に比例して鍛えられるので、これからはやはり義務教育としてメモ帳でのコーディングを課すべきである。ちなみに、IDEの補助なしにデバッグを行うことを「ブラインドデバッギング」と言う(今考えた)。
というようなムダな苦労をした上で、高機能な統合開発環境に触ってみるとそのあまりの便利さに涙が出る。たぶん、IDEを使う一番のメリットはコードの補完機能。あと、書いたそばからの文法・整合性チェック、とコードの彩色。これがあるだけでタイプミスがほぼ絶滅されてタイプ量も劇的に減る。優秀なIDEだと、楽にコーディングが進むあまり特に用事がないときでもついIDEを立ち上げて何かしらのソースをカタカタと書いてしまう。だから、言語の発展は常にIDEと共にあると言っても過言ではない。
話が飛びすぎてしまった。
以上の3つの指標に照らし合わせた場合、Action Script はいずれも普及するに値する性質を持っていると思う。
1:実行環境の柔軟さと簡易さ
言うまでもなく、Flash は OS や ブラウザ の垣根を飛び越えて普及率ほぼ 100% である。しかも、ブラウザのプラグインとして web ページから実行できる。これだけ恵まれた実行環境を他に知らない。ネットワークを介してどこからでも実行可能でしかもメンテナンスが楽。しかもスタンドアロンアプリとちがってOSの違いを意識しなくて良い。これでは Java アプレットが淘汰されたのも納得してしまう。
2:構造的な言語仕様
ActionScript はプログラミング言語開発の長い歴史と蓄積の上に設計されているので、言語仕様が洗練されていてすごく合理的。その美しさゆえに、ごく一握りの天才プログラマが書く芸術的なソースコードはその文字が輝いて見えるという。あとライブラリも、GUIコンポーネント、物理エンジン、3DCGエンジン、tweener、など、文句なしに充実している。
3:優秀な開発環境
FlashDevelop という素晴らしいフリーの IDE が存在する。コードの補完機能が Eclipse よりも数段上。必要な import を勝手にやってくれるわ、ありとあらゆるワードを補完してくれるわ、なんとタイプミスしても正しく補完してくれるわで、これを使い始めるともう戻れない。あと、補完機能が強烈だと言語のリファレンスさえもいらなくなる。あるオブジェクトにどんな要素があるか調べたかったら、ドットを入力して補完されたリストを見ればその名前と簡単な説明だけで大体察しがついてしまう。予め用意されているであろうなんかの関数を使いたいときも、適当にそれっぽい名前を想像して入力すると、それっぽい名前の関数が補完されて出てくるので、ほとんどの場合それで用が済んでしまう。これで実装スピードが相当速くなる。
インターン中の飲み会で、職場の先輩方が学生のときの開発に関する話を聴く機会があった。windowsとかよりもずっと昔からの話。パンチ穴が空いた紙には境目にマジックで線を書くだとか、プログラムサイズ2kでデカイと言っていたとか、フロッピーが8インチだとか、アセンブラでコーディングしてデバッグでは機械語を直接いじくるとか、凄まじいことが行われていたらしい。
現代の環境のことを「正しい時代」と表現していた。
それに比べたらメモ帳でCのコードを書くなんてぜんぜんカワイイもんだなぁと思った。
これからはプログラミングを義務教育に追加するべきだ。
言語は C と ActionScript で。
プログラミング言語の良し悪しを測る指標は以下の3つに集約されると思う。
1:実行環境の柔軟さと簡易さ
せっかく頑張って良い物を作っても、起動するのに少しでも面倒な手間があるとそもそも見てもらえない危険性がある。あと、実行環境が限られるのもダメ。いつどこでもすぐに起動できるようでないと初めて触ってくれる人が遠のいてしまい普及しなくなる。
2:構造的な言語仕様
言語の目的によって言語仕様が違うのは仕方ないが、ただ一貫した思想で構造的かつ素直に組めるようなオブジェクト指向でないとイヤだ。これは自由と制限のバランスの問題だけど、スクリプト言語によくある「型を明示しない」とかアトリビュートとか、あと多重継承とかはその自由度のせいでバグを誘発する地雷になっていると思う。
Cのポインタも自由すぎるがゆえにバグの温床として悪名高いが、これだけは教育的に良い要素がたくさんあるので教材として未来に残すべきだと思う。ポインタを使ってメモリに直接ビシバシとアクセスすることでアドレスの概念を体で覚え、そしてセグメントエラーに何度も遭遇しながらデバッグスキルを身に付け、その後で Java の Vector とか ActionScript の Array とかの便利さと時代の進化に涙を流すのがプログラマとしての通り道だ。
話が飛んでしまった。
3:優秀な開発環境
メモ帳でコーディングし、DOS窓からコンパイル・実行する。そんな原始的なことをやっていた時期が私にもありました。メモ帳とDOS窓だけでルービックキューブを解くCプログラムを書いたことがある。1000行ちょっとだったけど、メモ帳で開発なんて今じゃもう考えられない。でもむしろ、それでバグの匂いを嗅ぎ取る嗅覚がすごく鍛えられた。バグ自体も、単なるタイプミスから、整合性のミス、論理間違い、処理の書き忘れ、ヌル参照、仕様自体のバグ、その他いろんなパターンがあるから、エラーログやソース、プログラムの挙動や変数の中身などあらゆる手がかりを統合してカンを働かせる必要がある。バグに対する嗅覚はコーディングをこなした量に比例して鍛えられるので、これからはやはり義務教育としてメモ帳でのコーディングを課すべきである。ちなみに、IDEの補助なしにデバッグを行うことを「ブラインドデバッギング」と言う(今考えた)。
というようなムダな苦労をした上で、高機能な統合開発環境に触ってみるとそのあまりの便利さに涙が出る。たぶん、IDEを使う一番のメリットはコードの補完機能。あと、書いたそばからの文法・整合性チェック、とコードの彩色。これがあるだけでタイプミスがほぼ絶滅されてタイプ量も劇的に減る。優秀なIDEだと、楽にコーディングが進むあまり特に用事がないときでもついIDEを立ち上げて何かしらのソースをカタカタと書いてしまう。だから、言語の発展は常にIDEと共にあると言っても過言ではない。
話が飛びすぎてしまった。
以上の3つの指標に照らし合わせた場合、Action Script はいずれも普及するに値する性質を持っていると思う。
1:実行環境の柔軟さと簡易さ
言うまでもなく、Flash は OS や ブラウザ の垣根を飛び越えて普及率ほぼ 100% である。しかも、ブラウザのプラグインとして web ページから実行できる。これだけ恵まれた実行環境を他に知らない。ネットワークを介してどこからでも実行可能でしかもメンテナンスが楽。しかもスタンドアロンアプリとちがってOSの違いを意識しなくて良い。これでは Java アプレットが淘汰されたのも納得してしまう。
2:構造的な言語仕様
ActionScript はプログラミング言語開発の長い歴史と蓄積の上に設計されているので、言語仕様が洗練されていてすごく合理的。その美しさゆえに、ごく一握りの天才プログラマが書く芸術的なソースコードはその文字が輝いて見えるという。あとライブラリも、GUIコンポーネント、物理エンジン、3DCGエンジン、tweener、など、文句なしに充実している。
3:優秀な開発環境
FlashDevelop という素晴らしいフリーの IDE が存在する。コードの補完機能が Eclipse よりも数段上。必要な import を勝手にやってくれるわ、ありとあらゆるワードを補完してくれるわ、なんとタイプミスしても正しく補完してくれるわで、これを使い始めるともう戻れない。あと、補完機能が強烈だと言語のリファレンスさえもいらなくなる。あるオブジェクトにどんな要素があるか調べたかったら、ドットを入力して補完されたリストを見ればその名前と簡単な説明だけで大体察しがついてしまう。予め用意されているであろうなんかの関数を使いたいときも、適当にそれっぽい名前を想像して入力すると、それっぽい名前の関数が補完されて出てくるので、ほとんどの場合それで用が済んでしまう。これで実装スピードが相当速くなる。
インターン中の飲み会で、職場の先輩方が学生のときの開発に関する話を聴く機会があった。windowsとかよりもずっと昔からの話。パンチ穴が空いた紙には境目にマジックで線を書くだとか、プログラムサイズ2kでデカイと言っていたとか、フロッピーが8インチだとか、アセンブラでコーディングしてデバッグでは機械語を直接いじくるとか、凄まじいことが行われていたらしい。
現代の環境のことを「正しい時代」と表現していた。
それに比べたらメモ帳でCのコードを書くなんてぜんぜんカワイイもんだなぁと思った。