「Microsoft Small Basic」1.0リリース 99
ストーリー by headless
GoTo 部門より
GoTo 部門より
hylom 曰く、
米Microsoftは7月13日、初心者向けプログラミング環境「Microsoft Small Basic 1.0」をリリースした (Small Basic Webサイト、 Small Basicブログの記事)。
Small Basicはプログラミング言語および開発環境、ライブラリーのセットで、「初心者でもプログラミングを始めやすく、簡単なものにする」ことを目指して開発された。昔のBASIC言語をイメージしつつも、.NET Frameworkベースで「シンプルかつリッチな」プログラミング環境となっている。10~16歳を対象にテストを行ってきたとのことだが、大人にとってもプログラミング学習の最初のステップに適しているという。
Small Basicは必要最低限の機能のみ備えており、スコープや型、オブジェクト指向など初心者には難しい概念を理解しなくても学習を進めることができる。かつて我々がBASICからプログラミングを学んだように、Small Basicでプログラミングを始めてほしい、という意図のようだ。
ちなみに、Small Basicで作成したプログラムは直接実行するほか、Webへの発行やVB2010プロジェクトへのエクスポートも可能だ。なお、Webへの発行時には確認画面などが表示されることなく、いきなり「smallbasic.com」にアップロードされてしまうので要注意。
初学者に最適 (スコア:5, 興味深い)
0.6ぐらいからちまちま弄ったりして注目してきていましたが、Small Basicは本当に初学者に向けて作られていて、すごくいいです。
言語の機能とかもそうなんですが、とにかくGUIがいい。かわいいんですよ。
チュートリアルも良くできていて、早い段階から絵が描けたり亀ちゃんが歩いてくれて、ぼくのような既習者でもほっこり楽しめました。
Webを介してハッシュコードだけでソースコードの共有ができるのも、教育者・学習者の助けになると思います。
誤解を恐れずに言えば、Small Basicは「これで何か作る」のではなく、「(手続き型の)プログラミングの考え方を学ぶ」ことに特化した言語です。
私見ですが、初学者にとってもっとも困難なのはこの「プログラミングの考え方」を身に着けることではないでしょうか。
特に企業のような「手っ取り早くそこそこプログラミングができる人材」が求められる場において、Small Basicは有効に機能すると思います。
ぼくは「踏み台」としてのSmall Basickに、何がなんだか解らないままプログラムを書いているようなプログラマーを減らせる可能性を見ました。
プログラミングを学ぼうとする初学者に多少なりとも触れる機会のある方は、一度は触れておいて損はない言語だと思います。
と、無職が妄想を垂れ流してみました。;D
Re:初学者に最適 (スコア:1, 参考になる)
プログラミング未経験者のとっかかりとしては、おもしろい教材だと思います。
教えることもある立場から見ると、使う人のセンスを量るのに使えそうです。
課題を与えて勝手に使わせて、応用が利きそうか別の道を選んだ方がよさげかはっきりしますから。
Re:初学者に最適 (スコア:1)
そこまで言うなら COBOL やればいいだけじゃないかと。
SET x TO y とか ADD 1 TO x とか、分かりやすい事この上ないかと。
# COMPUTE 文は使わない方向で。
PRINT "Hello World!" じゃないんだ (スコア:2)
BASIC といえば、
> PRINT "Hello World!"
Hello World!
> 100 PRINT "Hello World!"
> RUN
Hello World!
と、思っていたが、そういうものは既に過去の遺物となっているようですね。
以前、高校の「情報」でプログラミング言語はどうしてるのかちょっと調べてみたら、Excel の Visual Basic を使わせるのと、Javascript を使わせるとがありましたね。
Visual Basic は、マクロ警告がうざかったり、Javascript はエラーメッセージも無かったりで、こりゃ教えらんないわと思った。
#Python のインタラクティブ環境が昔の BASIC っぽくて好きな、進歩の無いじぃさんでした。
Re:PRINT "Hello World!" じゃないんだ (スコア:4, 参考になる)
>> BASIC といえば、
>> > PRINT "Hello World!"
>> Hello World!
>> > 100 PRINT "Hello World!"
>> > RUN
>> Hello World!
>> と、思っていたが、そういうものは既に過去の遺物となっているようですね。
過去の遺物どころか、
大学入試センター試験の選択問題では未だにそういうタイプのBASICを使ってるので、
BASICと言われてその形式を連想する人は未だに多いと思います。
やってることは単純な四則演算の繰り返しだったりするので、
文法と命令さえ覚えてしまえば楽に20点ゲットできる有りがたい試験問題ではないかと。
素晴らしい (スコア:1, 興味深い)
最近のプログラミング環境はやたら準備することが多い(MSXなどに比べて)です。
準備の一切を省いて、即遊べる環境をいつか誰かが作るべきだとずっと思ってました。
Re: (スコア:0)
Re:素晴らしい (スコア:1)
バッチ...
# パズルがきつすぎるか
対話型javascript環境 (スコア:1, 興味深い)
私もBASICには世話になったし、昨今のプログラミングの敷居の高さは問題だと思っていたのですが
今ならBASICよりjavascriptの方が馴染みやすいんじゃないかと思っています
※でも私はjavascriptを書けません:-p
Re:対話型javascript環境 (スコア:2)
javascriptを動かすには、HTMLの知識も必要と思いますし、javascriptとHTML、CSSの書き方がかなり違うので初心者は混乱するんじゃないかと思います。
ただ、javascriptは画面変化で遊べるのが良いですね。インタプリタ言語単独で画像で遊べるのが少ないのは残念。
Re:対話型javascript環境 (スコア:1)
それは、JavaScript実行環境がWebブラウザにしかない、と思い込むからですよ。
WSHのようなJavaScript(JScript)単独の実行環境もあるのだから、きちんと区別するようにすればよいと思いますが。
Re:対話型javascript環境 (スコア:1)
自分が最初に触れたプログラミング言語はLOGO [wikipedia.org]でした。
インタプリタ言語単独で画像で遊べます。当時小学2年ぐらいでしたが、みんな色々遊んでいました。
とっかかりは良かったと思います。
#そういえば、あれはハードはなんだったんだろう。少なくとも青と白が出力可能で、ディスプレイと別な
#奴だった。
#ちなみに教室には、6色カラー?なディスプレイ一体型マックが置いてあった。先生の私物だったぽ。
たいていのブラウザではアドレスバーに打ち込めば実行できるが対話型と言っていいのかどうか (スコア:2)
T/O
Re:対話型javascript環境 (スコア:1)
Rhino shellとか? 使ったこと無いけど。
1を聞いて0を知れ!
Re:対話型javascript環境 (スコア:1)
// 終了はCtrl+Zで
while(!WScript.StdIn.AtEndOfStream)WScript.Echo(eval(WScript.StdIn.ReadLine()));
Re:対話型javascript環境 (スコア:1)
「対戦型javascript環境」に空目した。
Re: (スコア:0)
Re: (スコア:0)
一方、Javascriptをはじめとする現代の各言語は、大文字小文字を厳密に区別する。のみならず、変数名でいえば綴りの何処を大文字にするとかの決まりまである。なんと面倒になったことか。可読性の向上はいいとしても、手入力の面倒さでお話にならない。
初心者は、本質的でないこういう点でも投げ出すってことで。
Re:対話型javascript環境 (スコア:1, 興味深い)
>何かタイプすれば大文字がデフォで
PC-8001は小文字入力がデフォでキーボードにCAPS LOCKすらなかったので、それまでの大文字オンリーな環境を大きく変えたと思います。
勿論、listコマンドの結果は大文字になっていますし、変数も大文字ベースなのはそれまでの環境と変わりありませんが。
# スクリーンエディタで編集するさい、新たに入力したり書き直したりした所が区別できるのがありがたかった
Re:対話型javascript環境 (スコア:1, 興味深い)
今、初心者に混ざってプログラミングの講習を受けているんですが、
初心者の方々は、まず大文字と小文字の区別ができませんね。
英単語と同じような感覚でとらえている。
あと、スコープというかブロックの概念もあやふやです。
ですから、インデントがまともにできない。
Python みたにな言語を使わせると大変なことになりそうです。
Re:対話型javascript環境 (スコア:2)
> 英単語と同じような感覚でとらえている。
おそらく極めつけであろう、私が会った人。
printf("hoge hoge$n");
「通貨記号なんだからいっしょでしょ?」ってコトでした。
某情報処理系の専門学校でお手伝いをしていた時の、ネタでもなんでもない実話。
ちなみにその人が作る「課題を格納するフォルダ名」は、祐子・知美・美香みたいな女性の名前ばっかりだった。
Tak.Miyoshi
Re:対話型javascript環境 (スコア:1)
概念を教えるのは大変だけど、大文字と小文字に関しては区別されると断言すりゃいいだけじゃないかと。
それよりも、全角で書くな、と教えることの方が難しい。「そもそも全角ってなに?」って人がいるから。
> Python みたにな言語を使わせると大変なことになりそうです。
Pythonを初心者にすすめる理由のひとつが、インデントをちゃんとしないと動かないから、
初心者のうちからインデントをきっちりする習慣がつくことだったりする。
1を聞いて0を知れ!
Re:対話型javascript環境 (スコア:2, 参考になる)
あまい、あまいですよ。初心者をなめてます(^^;
あるいは、比較的物わかりの良い初心者ばかり相手にしてきたんじゃないかと。
Java でやってる講習なんですが、大文字と小文字の区別を間違えるたびに
大文字と小文字は区別しないとダメですよと教えるわけですが、それでもやっぱり間違えます。
Java には大文字で始まる識別子はクラスを表し、小文字で始まる識別子は変数あるいはメソッドを表す
みたいな暗黙の了解みたいなものがありますよね。うちで使ってる教材もそんなコードなんですが、
例えば Context クラスの context 変数を使うとか書いてあるわけです。Java の悪い習慣ですね。
書いたベテランは言語仕様をうまく使った抜群の書き分けをやったつもりなんでしょうけど、
初心者にとってはこれは悪夢以外の何者でもありません。
初心者には今自分の写している部分がクラスなのか変数なのかの区別も曖昧なんですよね。
初心者にそんなコードを写させるなよというご批判はもっともですが、
Java を使ってAndroid を動かそうという講習なもので...
>Pythonを初心者にすすめる理由のひとつが、インデントをちゃんとしないと動かないから、
>初心者のうちからインデントをきっちりする習慣がつくことだったりする。
それはどこかで読んだことがあります。
そのハードルを乗り越えられればいいんですが、
そのまま諦めちゃう人とか居そうですよね。
Re:対話型javascript環境 (スコア:2)
>もっと難しいこといくらでもあるだろうに。
わかる。
数字の大文字と小文字のどちらを入力しますかと聞かれた時に目眩を覚えたものです。
世の中には自分が預かることのない概念がある事を知りました。
李 露星
うちの学校では (スコア:1, 参考になる)
とっつきやすくなるのはいいですね (スコア:1)
ただそれでも人間側の前提知識(変数とか仕組みとかの基本)がまだまだ必要なので
そのための教材とか充実したら普通のVBでも十分だと思う。
Small Basic の可能性 (スコア:1, 参考になる)
ただの初心者用言語じゃないところを説明するよ。
実行すると自動的に実行ファイルができるよ。ランタイム SmallBasicLibrary.dll をいっしょに配布すれば、どこでも実行可能だよ。(ただし、.Net Framework は入れてね)
サイズはランタイムが200KBくらい。実行ファイルは数KB~十数KB。FDで持ち運べるね。
ライブラリを作って簡単に機能追加できる。IntelliSense だって効いちゃう。組み込み関数を上書きすることだってできちゃう。
手順も簡単 [miscnotes.com]。dllを作るときに、参照設定を追加して専用の Primitive 型を使うだけ。VBだろうがC#だろうがおんなじ。
お手軽に使ってもらうには、実行ファイルをダウンロードさせるのはめんどくさいよね。Webに埋め込んでSilverliteで見てもらおう。
Flashほどメジャーじゃないのが難点だけどね。
どんなのができるかは SOkoCUTE [smallbasic.com] とか見てみて。
仕事のプログラムに疲れたときは、ちょこっと立ち上げて短いゲームでも作ってみる。
それだけでワクワクがまた取り戻せるよ。
Re:Small Basic の可能性 (スコア:1)
>FDで持ち運べるね。
えっ
Re:Small Basic の可能性 (スコア:1)
この辺で。
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%84%E3%83%80%E3%83%BBRX-7#... [wikipedia.org]
もしくはフラッシュドライブあたりでなんとか。
20年ぶりには難しいです(T_T) (スコア:1)
仕事で行列計算をやろうとして、ちょうど記事を発見。BASICだから
10 dim Vec(6)
20 dim Ten(6,6)
とかして、サブルーチンで逆行列や演算をさせるようにすればいいじゃんとウキウキ
ダウンロードして、インストール。サンプル見たら初頭に
GraphicsWindow.FontBold = "False"
とか、これBASIC扱いなのかぁ
一気に意気消沈......(´・ω・`)
簡単にし過ぎてない? (スコア:0)
Re:簡単にし過ぎてない? (スコア:3, 参考になる)
コンパクトなプログラムを書くだけならそういった仕組みは不要ですね。"Hello World" と表示するだけのプログラムにとっては、#include とか main() とかはおまじないでしかありません。実際に入門書でも最初はおまじない扱いです。これらの仕組みは、プログラマーの自由度を縛ることにより品質や生産性を高める仕組みです。つまり、プログラマーにとっては、その必要性が理解できない限りは「余計なお世話」でしかありません。逆に言うと、一度そういったものが必要な状況に陥って苦労することでこれらの仕組みの必要性を肌で理解できるようになるでしょう。したがって、入門者には、そういったおまじないを取り払った環境で、プログラムが動くという楽しさを味わってもらい、いろいろやっているうちにプログラムが肥大化していくでしょうから、そのタイミングでこれらの仕組みを提示出来れば良いのではないかと思われます。
プログラマの技量に合わせてこれらの機能が有効にしていけるような仕組があればよいですね。最初は型すら定義出来ていなかったのが、習熟にともなって機能の封印を解除していくと、オブジェクト指向が導入されたり、ポインタが導入されたり、最終的にはガベージコレクタが無効にできたりすると、いつのまにやらC++プログラマーですね。
Re:簡単にし過ぎてない? (スコア:1, すばらしい洞察)
プログラミングとは何か?を教えるための最初の一時間ならばそれらは不要かも
簡単にしすぎくらいじゃないと何をしているのかを分離して覚える事は難しいと思う
Re:簡単にし過ぎてない? (スコア:1, 参考になる)
昔のMSX BASICから入りましたが、別に混乱はなかったですよ。
あれは、型がなかった訳じゃなくて文字列型と数値型は命名則で区別できましたから。
ちょっと覚えると、変数を整数型にすることを覚えたりしますし
アセンブラを使うようになると、そもそも型なんて無い事にも気付きますし。
そしてスコープに至っては、サポートがなくて苦労しましたので
C言語でスコープの概念が出てきたときは凄く便利だ、と思った記憶があります。
習う順番はともかくいくつかの概念を知ることでそれらの差異に気付けますから
あまり気にしなくていいのかな、と思います。
Re:簡単にし過ぎてない? (スコア:1, 興味深い)
スコープや型は、初級者がステップアップしていく上で、素直に習得していける概念ではないかなと思います。
変数という概念を知る。べんり!
→汎用型では自由度が高すぎるという不便にぶつかる。
→型で束縛する事の有効性を知る。
すべてグローバル変数で作る。かんたん!
→プログラムが大きくなってくると困る事が多くなる。
→スコープで縛ると管理しやすくなる。
というような。
むしろ、最初からスコープや型の管理を要求されるとその必要性が理解できないかも。
「学習用」の使い捨て言語と割り切れば、アリかなと思います。
Re:簡単にし過ぎてない? (スコア:1)
一挙に教えようというのも、誤りではないかい?
小学校1年の算数に、論理演算はともかく、引き算/かけ算/割り算を省いて教えても後で混乱するだけじゃないか?というのと、同じことで、まずは数字って?数って?足せるんだよ、これが計算の最初だよ..と教えないと無理だろうね。
あとで教えるべきは後で教えたらいいわけで、初学で教えるツールが満干全席であっても、どれから箸を付けたらよいか?初学のあとで他のツールに切り替えるのだから、それは意味がないよね、それより確実に足し算までを教える理解できる様にするツールって位置づけもあってよいし、そういう割り切りをしていない、中途半端に「あれもこれも」で初期教育以外も盛り込んで教えようとするのは、誤っていると思うけどね。
Re:簡単にし過ぎてない? (スコア:1)
後で混乱というよりも。
スコープないけど、サブルーチンはあるというのなら、ループ変数どうすりゃいいんだ……
# 慣習的に変数名が決まっていないものについては、スコープが広ければ、
# 名前衝突防止のために長い名前つける習慣がついていいかと思うけど。
1を聞いて0を知れ!
Re:簡単にし過ぎてない? (スコア:1)
懐かしきSTOPキー。
Re:簡単にし過ぎてない? (スコア:1)
ばかもやすみやすみいえ!
BAKA............BAKA............BAKA............BAKA............BAKA............BAKA............BAKA............BAKA
>おまじないやコンパイル等の手順が無いのは重要ですよね
シェルスクリプトやDOSのバッチファイルでよいかもしれない。
ところでpeek pokeで自己書き換えはできるのかな?
Re:簡単にし過ぎてない? (スコア:1)
>ところでpeek pokeで自己書き換えはできるのかな?
そして怒涛の機械語ダンプのData文ですかw
そんなプログラムがBASICプログラムとして紹介されていた今は亡きマイコンベーシックマガジン。
#「BASICなんてただのローダーです。偉い人にはそれがわからんのです。」
Re:簡単にし過ぎてない? (スコア:1)
>そして怒涛の機械語ダンプのData文ですかw
うん、Basicの特徴的な機能だと思っていたりする。
出来ないとしたら、Basicの半端者という印象もある。
>「BASICなんてただのローダーです。偉い人にはそれがわからんのです。」
そういう使い方も出来るという面で、ある種の拡張性を
備えていたと思う訳です。非常に野蛮で粗野な方法ですが...
Processing.orgじゃダメ? (スコア:0)
へー (スコア:0)
こんなものを作るより (スコア:0)
Visual Basic 6.0をNET Frameworkへ対応させて無料で公開した方がいい気がする。
(.NET系のVBになってからがっつりとオブジェクト指向になったけど6.0までならそれほどオブジェクト指向を意識しないでもプログラミングできたので)
Visual Basic 5.0はControl Creation Editionという機能が限定されていたけど無料版がありましたね。
Re:こんなものを作るより (スコア:2, すばらしい洞察)
Re:こんなものを作るより (スコア:1)
.NET Framework に対応させる場合、基本的に .NET Framework の機能を持っていないと他の言語のプログラムと繋いでもまともな事が出来なくなるしできることが変化するため、無理に VB6 などを移植するよりも、そこらじゅうにある .NET Framework が入っている環境に標準で含まれる VB.NET コンパイラでいいと思いますが。
がっつりとオブジェクト指向になったとは言っても、自身が各コードについては全コード Main に突っ込むこともできますし、COM モジュールやらサードパーティーの .ocx とか使ってたりするなら、VB6 でも .NET でも記法に大差ないですから。
# 下手に無償版 VB6 なんて公開されたら、今年から開始したサービスなのに VB6 でのアプリ作成をやるようなトコを勢いづかせて世の中の迷惑だと思う。
Re: (スコア:0)
> Visual Basic 6.0をNET Frameworkへ対応させて無料で公開した方がいい気がする。
いまさら VB6 ?
しがらみがないなら、VB6 なんていうわけないだろうし、既存の VB6 プロジェクトを扱えること期待するなら、むしろ開発ライセンスと実行ライセンスそれぞれ年間10万ぐらい払っても買うところはあるんじゃね?
書籍 (スコア:0)
Re:書籍 (スコア:1)
なれるかなぁ・・・
Re:LOGOでええやん (スコア:1)
Microsoftが作るなら BASICでしょ、うまくゆけば、この BASIC をかじった子が
Visual Basic へ、さらに Visual Studio の他の言語へと進んで、将来の Microsoft
の顧客やプログラマになってくれるかも知れません。
(それに、Microsoftのドル箱である Microsoft Office のマクロも一応 BASIC ですし)
Visual Basic や VBA と、この BASIC が、かなり異なるものであっても、LOGOで始め
させるより、この BASICを使わせる方が、そういった可能性は、高いでしょう。