現在,コンピュータを中心としたネットワーク社会の発展により,私たちとコンピュータとの関わりはますます深く なってきています。しかし一方,外側の関わりとは反対に,その中身との関わりはますます遠くなって来てもいます。 これは,使いやすさの追求に伴うもので,自然なことかもしれません。しかし,次第にその中身が分からなくなってきているのも確かです。(=ブラックボックス化です。)。勿論,すべての人がコンピュータと言うブラックボックスの中身に敢えて触れる必要もありませんし,むしろブラックボックスの中身を知らないことを奨励される こともあるでしょう。
技術進歩の急激な現在,これらコンピュータやその周辺システムの中身について知ることは,大変なことと思うかもしれません。 一面それは確かにその通りです。現在進展しつつある個々の技術的内容に精通し,実際に活用していこうとすれば,かなりの努力と時間が必要であり,実際に業務として行う人や ,かなりの趣味とパワーを持った人でない限り不可能かもしれません。 しかし,他方その概要や方向性に関する感覚を身につけ,一応の対応を可能にすることはそれほど難しいことではありません。 それは,コンピュータ関連技術の根本・基本が急激に変化している訳ではないからです。実際,現在使われている殆どのコンピュータはノイマン型のコンピュータですが,フォン・ノイマンがこのコンピュータを提唱したのが 1945 年で,その基本的原理は現在でも変わっていません。また,現在,インターネットにおける最も重要な基本技術である TCP/IP が開発されたのは 1970年代です。 このように,急激な技術革新が行われている一方,その基本原理・基本概念は大きく変わっている訳ではありません。ですから,このような基本原理・基本概念を身につけ,現在の最新技術事情にある程度精通すれば,コンピュータやその周辺システムの中身についての概要が判断できるようにな ります。
それでは,コンピュータに関する基本原理・基本概念を学ぶのはどうしたら良いでしょうか? 一般的には,種々の書籍等で,学ぶというが第一でしょうが,個人レベルでの実践的に学ぶ方法として,次の2つがあると思います。
最近は,コンピュータを自作する人もいます。また自宅でそれを使って,インターネットへの常時接続を行っている人も少なくありません。 自宅で何台かのコンピュータで無線ネットワークを構成し,運用することも可能です。また,自作パソコンに Linux などの OS をインストールすることもできます。 また,購入したパソコンに色々な拡張用のボードを追加したり,メモリー増設をしたりすることも出来ます。 実際にそのようなことを行っている人も多いでしょう。これはよほどの特別な人でないと不可能と思われるかも知れません。しかし, 特別大きな費用がかかるわけではありませんし,実際は根気とある程度の時間さえあれば可能です。 このようにコンピュータのハードに実際に自分の手で持って関わると,その機械的仕組みだけでなく,現在のコンピュータ・ネットワーク社会のある部分の本質がかなり見えてきます。またこれを行うことで,一晩にしてパワーユーザーの仲間入りをしたような感覚さえ持つことができます。
プログラミングを行うことでの実用的な効用について説明します。 プログラミングはコンピュータのパワーユーザーとしての基本要件です。コンピュータを少し効率的に利用しようとする場合,プログラミング能力は大きな力を発揮します。
大掛かりなプログラミングを個人的に行うのは現実的でありませんが,小規模なプログラミングは可能ですし,比較的身近にもあります。Excel
などのマクロを書くともプログラミングの一種ですし,ホームページでの
html
文書も一種のプログラミングです。また,バッチファイル等の一寸したスクリプトプログラムを書くことで色々なことが出来るようにもなります。 しかし,プログラミングを行うことによって,少しですがその部分に迫ることができるようになります。つまり多少なりとも作る側の視点に身を置けるようになります。 つまり,
それでは,どんなプログラミング言語を学べば良いのでしょう。 現在,専門的にコンピュータ言語を使用する仕事をしている人は,恐らく,ひとつの言語でなく,数多くの言語を体験したり,実際に幾種類もの言語によるプログラミングを行っていることでしょう。多くの機能を持つ言語はありますが,それでもその言語の得意分野や特徴といったものがあります。 コンピュータ活用の基本原理として,多くのツールを目的にあわせて,適切に使いこなすということがあります。このことは,ツールだけでなく,プログラミング言語にも当てはまります。専門的なプログラミングを行う人にとって は,どれを学ぶのが良いというより,必要なとき必要な言語を使えるような能力を身につけることが大切と言えます。
ですから,専門的なプログラミングを行おうとする人にとっては,どのような言語から入っても余り大きな違いは無いかもしれません。 それでは,必ずしも,専門的にプログラミングしない人にとってどのような言語を学べばよいのでしょうか。それは次の原則から選ぶべきでしょう。 どのような高い大きな目標を持っていても,最初に高い困難が待ち受けているものは,良くありません。ですから,
となるでしょう。このことは専門家を目指す人でも同じです。 最初に学んだ言語だけで満足できれば,それでよいのですが,更に進んだ別の言語を使ってみたくなる人も多いと思います。その場合,すでに学んだ言語での知識が生かされる のが望ましい状況です。ですから,そのためには特殊な使い方や考えが必要な言語は避けるべきで す。従って,
となります。 私たちが話す言葉でも,絶対的に良いとか,優れたとかという言葉はありません。それと同じように,コンピュータ言語でも絶対的にどれが良い・優れた言語であるということは出来ません。しかし,私たちが外国語を学ぼうとするとき,普通に選択するとすれば,世界中で広く使われている言葉の中から選ぶでしょう。 それと同じように,プログラミング言語を選ぶときにも,現在広く使われている言語,もしくはそれに近いものを学ぶのが最も自然です。
現在,最も本格的に使用されているコンピュータ言語は恐らく C およびその進化形である C++ でしょう。そして,C# といった言語もこれから使用されることの多くなる言語でしょう。Java やJava script, Perl なども 同じ仲間の言語と見ることが出来ます。 それらの内,Windows 上では現在では, Visual C++ そして最近はC#が 代表格です。 他に歴史的に著名なものを見ると Fortran, Cobol や Lisp, Prolog といったものもあり,現在でも使用されています。しかし,Windows の世界で見ると C の次に来るのは Visual Basic や VBA でしょう。 また将来的には,Microsoft.Net 系の言語である, C#が主流になるかもしれません。同じく .NET のVisual Basic も大きな位置を占めるでしょう。
こうしてみると,現在最初に学ぶべき言語の筆頭は C または C++,或いは C# であると言えるかもしれません。 しかし,コンピュータ言語の勉強の容易さは環境に大きく依存します。身近に,良い先生や先輩・友人が多くいる環境での勉強が理想です。そのような環境下では C のような言語でもスムーズに学ぶことが出来るでしょう。しかし,そのような環境に無い場合,かなりの困難が伴うのも事実です。 実際,Cは元々専門家のために,ハードウエアに近いシステム記述が容易な汎用高級言語として開発されました。初学者にとっての学びやすさより,専門家にとって使いやすさを優先して設計されたものです。 つまり,
となります。 そこで,独習,あるいは第一歩としてのプログラミング言語に適するものを考えると BASIC が候補になります。Basic の開発理念は Cとは全く対照的に,初学者にとって分かりやすいということでした。 CとBasic の開発理念は全く対照的ですが,実は,C も Basic も共に,Fortran, Algol を祖先とする兄弟筋に当たる言語です 。ですから,C と Basic は多くの共通点を持っています。そして,Basic を学んだ後に,必要になり C を学ぶ場合,Basic の知識は決して無駄にはなりません。 そしてそれが私としての結論です。
Basic は初心者用の言語で,本格的にプログラミング言語を学ぼうとする人にとって学ぶ必要の無い,むしろ避けるべき言語であるという主張を見たり聞いたりすることがあります。Basic が初心者用の言語であることは確かですが,必要がないとか,避けるべきとかいう主張は当を得たものではありません。現在の Basic 言語は十分に構造化され,アルゴリズム記述能力も相当なものです。
現在,高校の数学の教科書にはコンピュータを学ぶ項目があります。そこでは BASIC 言語についての記述があり,それによって計算を行っています。ここで使われている言語はごく最近まで,DOS レベルの旧型の Microsoft 系BASIC言語(恐らく N88-BASICが念頭に置かれていると思われます。)です。(最近では,別の言語が使用する教科書もいくつか見られます。) この言語は現在となってはいかにも旧式で,今のコンピュータ環境に相応しいものではありません。 しかし,そのアルゴリズム記述能力が高校の教科書として不適切で貧弱だと言うわけでもありません。内容的に見れば,数値計算についてのかなり高度な記述もあり,外観はともかく,かなり高度な内容になっています。このカリキュラムが現実にどの程度実施されたかは別にして,この旧型の Microsoft 系 BASIC の選択はこのカリキュラムが作られた時点としては適切なものであったと思われます。
平成15年度からは高校で「情報」必修科目となり,その中でも情報Bでコンピュータ言語の教育が行われようとしています。現在,指導要領では「適切なものを選択する」と書かれているだけで,実際にどのような言語がどのようなレベルで教育されるかは不明です。 また教科書を見る限り,あまり明確でありませんし,本格的にプログラミングを行うようには見えません。しかし,もしここでプログラミングを行うとすれば,全体の傾向からすれば,高校数学にあるものよりも,もう少し構造化されたBasic が望まれるでしょう。そこでは Visual Basic が多くの割合を占めるかもしれません。 また,実行環境が無料で入手できる JAVAかも知れません。 いずれにしても,
と言えます。
このような現状から,初めて,また独習で学ぶBASIC言語としては,Microsoft 系 Basic あるいは,その系列上にある,N88-BASIC と Visual Basic の中間的に位置する Windows 上の非Visual 系 Basic が適当と思われます。言語の歴史から見ると, Visual Basic の前にあった Microsoft Quick BASIC 的なものともいえます。
このような条件を満たす言語は,実は商用製品としてはもう殆ど見られなくなってしまいました。皮肉なことですが,競争の結果,商用として主に出回っているものは,かなり高機能なものになりました。そのため当然ですが,その分使い方も難しくなり,初心者用としては適さなくなってしまいました。 このような状況の中で,Tiny Basic for Windows はこれを補間するものをフリーで提供する目的で開発し,改良を続けています。すなわち
です。非Visual 系と言ってもグラフィック機能は勿論あります。高解像度画面を一杯に使ってグラフを描くことも出来ます。
フリーソフトのBasic としては,他に,(仮称)十進BASIC
やN88互換BASIC,Active Basic等優れたものが既にあります。
Tiny Basic for Windows はあくまで目標ですが,次を目指しています。
元々,このTiny Basic for Windows の原型はPC9801のMS-DOS上で動く, Basic Tutor という N88-BASIC の自習用ソフトとしてスタートしました。そのBasic Tutor システムの中で,例プログラムの実行をシュミレートするために,独自のインタプリタを内蔵させたのが始まりです。このインタプリタの部分を独立させ, N88-Basicのサブセットインタプリタとして1994年学生にフリーに提供を開始しました。このPC9801のMS-DOS上のインタプリタは1996年Ver.1.01で開発を終了しました。 コンピュータ環境が Windows に移項するに伴い,1998年 Dos 版のWindows 版への移植を始め,1999年4月に Ver. 0.8b として授業に使用すると同時に,Tiny Basic for Windowsとして学生に公開を始めました。2000年4月 Ver. 0.90bとなり,2001年8月 Ver.1.00 として,一つの区切りとしました。 その後順次改良をして,2008年4月現在,Ver. 1.171 になりました。
どのような優れたものであっても,学ぶ環境が整えられなければ,広く使われることはありません。ですから,言語の改良とともに,それに伴う文書も重要なものと考えています。この 「Basic 入門」,そして「プログラムの背景」など,付属文書,またはホームページでの文書の充実に心がけていきます。
なぜ Tiny Basic for Windows を作りつづけているかと聞かれることもあります。好きだと言うのが第一ですが,もう一つ理由があります。それは私自身のプログラミング能力を向上させるためです。この Tiny Basic for Windows を作成する過程でコンピュータに関する実に多くのことを学びました。 皆さんもプログラムを作ることで多くのことを学ぶことが出来ると思います。 プログラミングは奥の深いものです。 そして Basic はそのほんの入り口ですが, それでも多くのことを学ぶことが出来ます。
|