Basic の勧め

 現在,コンピュータを中心としたネットワーク社会の発展により,私たちとコンピュータとの関わりはますます深く なってきています。しかし一方,外側の関わりとは反対に,その中身との関わりはますます遠くなって来てもいます。 これは,使いやすさの追求に伴うもので,自然なことかもしれません。しかし,次第にその中身が分からなくなってきているのも確かです。(=ブラックボックス化です。)。勿論,すべての人がコンピュータと言うブラックボックスの中身に敢えて触れる必要もありませんし,むしろブラックボックスの中身を知らないことを奨励される こともあるでしょう。

コンピュータの進歩

中身のブラックボックス化


 しかし,他方ブラックボックスの中身が壮大になればなるほど,その全体的評価が重要になります。そしてそのこと無しではそのシステムの安全性を保つことは出来ません。ですから ,これから コンピュータやネットワークに関連する技術的職業につく人にとって,ある程度その中身を知ることはますます重要になってきます。

技術系の職業につく人にとって,

コンピュータの中身を知ることは必須。

 

コンピュータの中身を知ろう

 技術進歩の急激な現在,これらコンピュータやその周辺システムの中身について知ることは,大変なことと思うかもしれません。

 一面それは確かにその通りです。現在進展しつつある個々の技術的内容に精通し,実際に活用していこうとすれば,かなりの努力と時間が必要であり,実際に業務として行う人や ,かなりの趣味とパワーを持った人でない限り不可能かもしれません。

 しかし,他方その概要や方向性に関する感覚を身につけ,一応の対応を可能にすることはそれほど難しいことではありません。

 それは,コンピュータ関連技術の根本・基本が急激に変化している訳ではないからです。実際,現在使われている殆どのコンピュータはノイマン型のコンピュータですが,フォン・ノイマンがこのコンピュータを提唱したのが 1945 年で,その基本的原理は現在でも変わっていません。また,現在,インターネットにおける最も重要な基本技術である TCP/IP が開発されたのは 1970年代です。

 このように,急激な技術革新が行われている一方,その基本原理・基本概念は大きく変わっている訳ではありません。ですから,このような基本原理・基本概念を身につけ,現在の最新技術事情にある程度精通すれば,コンピュータやその周辺システムの中身についての概要が判断できるようにな ります。

概要や方向性への感性を身につけるのは,
比較的簡単!

基本原理・基本概念を知り,

現在の最新技術事情にある程度精通すればよい。

 

コンピュータに関する基本原理・基本概念を学ぶのはどうしたら良いか

 それでは,コンピュータに関する基本原理・基本概念を学ぶのはどうしたら良いでしょうか?

 一般的には,種々の書籍等で,学ぶというが第一でしょうが,個人レベルでの実践的に学ぶ方法として,次の2つがあると思います。

  • ハードの理解(自作・メンテナンス)

  • プログラミング

 

ハードの理解


 コンピュータには,ハードの側面とソフトの側面があります。これらは密接に関係しているもので,片方だけが独立してあるわけではありません。現実的な進歩はこれら両面が揃ったとき起こります。ですから, ソフトウエアについて知る場合でも,コンピュータのハードの理解はある程度必要になります。

 最近は,コンピュータを自作する人もいます。また自宅でそれを使って,インターネットへの常時接続を行っている人も少なくありません。 自宅で何台かのコンピュータで無線ネットワークを構成し,運用することも可能です。また,自作パソコンに Linux などの OS をインストールすることもできます。

 また,購入したパソコンに色々な拡張用のボードを追加したり,メモリー増設をしたりすることも出来ます。

 実際にそのようなことを行っている人も多いでしょう。これはよほどの特別な人でないと不可能と思われるかも知れません。しかし, 特別大きな費用がかかるわけではありませんし,実際は根気とある程度の時間さえあれば可能です。

 このようにコンピュータのハードに実際に自分の手で持って関わると,その機械的仕組みだけでなく,現在のコンピュータ・ネットワーク社会のある部分の本質がかなり見えてきます。またこれを行うことで,一晩にしてパワーユーザーの仲間入りをしたような感覚さえ持つことができます。

ハードの自作,

拡張ボード・メモリ等のコンピュータの周辺機器等増設,

ブロードバンドで家庭内(無線)LAN の構成

なども良い経験。



 この部分は大変興味あるものですが,このページの趣旨と少しずれますので,これ以上触れないことにします。

 

プログラミング


 プログラミングはコンピュータのソフトを担うものです。基本的ソフトである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 も大きな位置を占めるでしょう。

 

Windows 上では,これからは,.NETの

C#,続いて,Visual Basic

が主要言語となる?

 

 こうしてみると,現在最初に学ぶべき言語の筆頭は C または C++,或いは C# であると言えるかもしれません。

 しかし,コンピュータ言語の勉強の容易さは環境に大きく依存します。身近に,良い先生や先輩・友人が多くいる環境での勉強が理想です。そのような環境下では C のような言語でもスムーズに学ぶことが出来るでしょう。しかし,そのような環境に無い場合,かなりの困難が伴うのも事実です。

 実際,Cは元々専門家のために,ハードウエアに近いシステム記述が容易な汎用高級言語として開発されました。初学者にとっての学びやすさより,専門家にとって使いやすさを優先して設計されたものです。

 つまり,

C の仲間の勉強は一般に難しい

となります。

 そこで,独習,あるいは第一歩としてのプログラミング言語に適するものを考えると BASIC が候補になります。Basic の開発理念は Cとは全く対照的に,初学者にとって分かりやすいということでした。

  CとBasic の開発理念は全く対照的ですが,実は,C も Basic も共に,Fortran, Algol を祖先とする兄弟筋に当たる言語です 。ですから,C と Basic は多くの共通点を持っています。そして,Basic を学んだ後に,必要になり C を学ぶ場合,Basic の知識は決して無駄にはなりません。

 そしてそれが私としての結論です。

入門用言語としては BASIC が良い

 Basic は初心者用の言語で,本格的にプログラミング言語を学ぼうとする人にとって学ぶ必要の無い,むしろ避けるべき言語であるという主張を見たり聞いたりすることがあります。Basic が初心者用の言語であることは確かですが,必要がないとか,避けるべきとかいう主張は当を得たものではありません。現在の Basic 言語は十分に構造化され,アルゴリズム記述能力も相当なものです。


 実際,Visual Basic は Basic の仲間ですが,コンピュータの専門家が主に使う言語です。そして現在の Windows 上での業務用応用プログラムの開発で大きな部分を占めています。勿論, Visual Basic は大変高機能な言語で,初心者向けの言語では全くありません。ですから,この Visual Basic を入門用・独習用に勧めるわけではありません。


 一般に Visual 系の言語は画面設計と言うアルゴリズム記述とは別な壁があり,初心者向けの言語としては難しい面があります。Visual 系の言語は,1+1 の結果を計算するだけでも前段階として,その結果をどのような画面に出すかといった画面設計が必要で,見栄えは良いですが,大掛かりになります。

 

Visual Basic は Basic,

でも,Visual の部分はやはり初めは難しい

 

高校でのコンピュータ言語教育

 現在,高校の数学の教科書にはコンピュータを学ぶ項目があります。そこでは BASIC 言語についての記述があり,それによって計算を行っています。ここで使われている言語はごく最近まで,DOS レベルの旧型の Microsoft 系BASIC言語(恐らく N88-BASICが念頭に置かれていると思われます。)です。(最近では,別の言語が使用する教科書もいくつか見られます。)

 この言語は現在となってはいかにも旧式で,今のコンピュータ環境に相応しいものではありません。

 しかし,そのアルゴリズム記述能力が高校の教科書として不適切で貧弱だと言うわけでもありません。内容的に見れば,数値計算についてのかなり高度な記述もあり,外観はともかく,かなり高度な内容になっています。このカリキュラムが現実にどの程度実施されたかは別にして,この旧型の Microsoft 系 BASIC の選択はこのカリキュラムが作られた時点としては適切なものであったと思われます。

高校の数学にあるプログラミング言語の
多くは,とても旧式な,

それでもある程度のことができる

Visual Basic の遠い祖先の Basic

 平成15年度からは高校で「情報」必修科目となり,その中でも情報Bでコンピュータ言語の教育が行われようとしています。現在,指導要領では「適切なものを選択する」と書かれているだけで,実際にどのような言語がどのようなレベルで教育されるかは不明です。 また教科書を見る限り,あまり明確でありませんし,本格的にプログラミングを行うようには見えません。しかし,もしここでプログラミングを行うとすれば,全体の傾向からすれば,高校数学にあるものよりも,もう少し構造化されたBasic が望まれるでしょう。そこでは Visual Basic が多くの割合を占めるかもしれません。 また,実行環境が無料で入手できる JAVAかも知れません。 いずれにしても,

 

パソコンでの Basic の主流は

Microsoft 系の Basic

と言えます。

 

N88-BASIC と Visual Basic の中間に位置する Windows 上の非Visual 系 Basic

 このような現状から,初めて,また独習で学ぶBASIC言語としては,Microsoft 系 Basic あるいは,その系列上にある,N88-BASIC と Visual Basic の中間的に位置する Windows 上の非Visual 系 Basic が適当と思われます。言語の歴史から見ると, Visual Basic の前にあった Microsoft Quick BASIC 的なものともいえます。

 

N88-BASIC と Visual Basic の中間に位置する

Windows 上の非Visual 系 Basicが

初めて学ぶ言語として良い。

 

 このような条件を満たす言語は,実は商用製品としてはもう殆ど見られなくなってしまいました。皮肉なことですが,競争の結果,商用として主に出回っているものは,かなり高機能なものになりました。そのため当然ですが,その分使い方も難しくなり,初心者用としては適さなくなってしまいました。

  このような状況の中で,Tiny Basic for Windows はこれを補間するものをフリーで提供する目的で開発し,改良を続けています。すなわち

 

Tiny Basic for Windows は

N88-BASIC と Visual Basic の中間に位置する

Windows 上の非Visual 系 Basic

 

 です。非Visual 系と言ってもグラフィック機能は勿論あります。高解像度画面を一杯に使ってグラフを描くことも出来ます。

 

  フリーソフトのBasic としては,他に,(仮称)十進BASICN88互換BASICActive Basic等優れたものが既にあります。

 (仮称)十進BASICは Full Basic 規格に準拠したものです。また,N88互換BASICは DOS 上の N88-BASIC の資産を Windowsでも生かすことに主眼を置いたものです。そして Active Basic はVisual 系の Basic で実行プログラムを作成するのを目的としています。 これらはいずれも優れたBASIC のフリーソフトです。

 

Tiny Basic for Windows の目指すもの

 Tiny Basic for Windows はあくまで目標ですが,次を目指しています。

 

  • 入門用のプログラミングとして,使いやすく,覚えやすいものであること。
     

  • 最低限必要なアルゴリズム記述能力を持つこと。
     

  • 標準的なプログラミング技法が使えること。
     

  • フリーで使用できるものであること。
     

  • BASIC としての過去の資産も大切にすること。
     

  • 個人のツールとしては十分な機能を持つこと。
     

  • 更に進んだ言語へ移行する際,学んだことが無駄にならないこと。

 元々,この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 入門」,そして「プログラムの背景」など,付属文書,またはホームページでの文書の充実に心がけていきます。

 

私とBasicの関わり

 なぜ Tiny Basic for Windows を作りつづけているかと聞かれることもあります。好きだと言うのが第一ですが,もう一つ理由があります。それは私自身のプログラミング能力を向上させるためです。この Tiny Basic for Windows を作成する過程でコンピュータに関する実に多くのことを学びました。

 皆さんもプログラムを作ることで多くのことを学ぶことが出来ると思います。

 プログラミングは奥の深いものです。

そして Basic はそのほんの入り口ですが,

それでも多くのことを学ぶことが出来ます。

 

Tiny Basic for Windows が

Windows パソコンを使いこなすための

ほんの一寸した基礎・始まり
(Tiny Basic)

としてお役に立てれば良いのですが