BASIC とは?ページ内リンク ↓ウィキペディア(Wikipedia)記事 ↓Yahoo!知恵袋BASIC(ベーシック)は手続き型言語の一つ。 出典: 『ウィキペディア(Wikipedia)』 BASIC 出典: 『はてなダイアリー』 関連商品
クリスティーナ・アギレラ /
最安値(新品): ¥ 3,311
最安値(中古): ¥ 3,200
|
目次 |
FORTRANの文法が基になっており、初心者向けのコンピュータ言語として、1970年代以降のコンピュータ(特にパソコン)で広く使われた。パソコンがCUI環境からGUI環境となった現在でも、Windowsアプリケーションの主力開発言語であるVisual Basicの文法に影を残している。
歴史的な経緯からFORTRAN、C言語と比較されることが多い。
GOTOに依存する。現在でも互換性のために両者を残している処理系もあるAND、OR、XOR、NOTである。括弧は演算の優先順位も、関数の引数も、配列もすべて「()」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。=」が使える。代入構文(LET文およびその省略形)で用いられた場合に代入演算子と解釈される。C言語では代入演算子と区別するため等価演算子に「==」が使われるため,誤って「=」とされるミスが発生するが,BASICではそのような問題は起こらない。:)を実装した処理系も多いMAINを持つ処理系もある)LET文を用いることで「LET A=2」(Let A equal 2:「Aを2と同じにしなさい」)と読め,意味がつかみやすくなる。LETは省略可能であり,初心者の理解のためにのみ存在する命令であるPRINT文は既定で改行され,改行せずに続けたいときには「;」をつける。これは多くの言語に見られる改行文字 (\n) による改行に比べ処理系の実装に手間がかかるが,人間には優しい後述の方言のため、処理系によっては存在しないか名前が違うものもある。
IF 〜 THEN 〜 ELSE - 条件分岐
ELSEに対応しない処理系もあるFOR 〜 NEXT - ループ構文END - プログラム終了READ 〜 DATA - データを変数に代入
DATAの位置を指定するにはRESTORE命令を使うDIM - 配列変数の宣言REM - Remark(コメント行)LET - 変数代入(省略可能な処理系が多い)MAT - 行列処理PRINT - 文字列表示LPRINT - プリンタ印字PRINT ~ USING - 書式付き文字列表示
;」(改行なし)や「,」(タブ区切り)を付ける。INPUT - 対話型入力POKE - メモリ領域の直接操作CHR$ - アスキーコードから文字に変換VAL - 文字列を数値に変換MID$ - 文字列操作関数RND - ランダム関数INPUT$ - 1文字入力PEEK - メモリ領域の直接参照+ - 加算- - 減算* - 乗算/ - 除算(実数)¥ - 除算(整数)※一部の処理系のみMOD - 剰余 ※Full BASICではMOD$関数を使用^ - べき乗OR - 論理和AND - 論理積XOR - 排他的論理和> , < - 大小比較= - 等号・または(LETでの)変数代入<> - 不等号=> , >= - 以上<= , =< - 以下主に旧世代のパソコンのBASICで実装されていた。処理系によっては、互換性のために残している。
GOSUB (GO SUB) 〜 RETURN - サブルーチン分岐、復帰GOTO (GO TO) - 強制分岐ON 〜 GOSUB - 条件つきサブルーチン分岐ON 〜 GOTO - 条件つき強制分岐主に旧世代のパソコンのBASICで実装されていた。
AUTO - 行番号自動入力支援RENUM - Renumber 行番号の一括付け直しRUN - プログラム実行NEW - プログラム全消去TRON - Trace On (実行中の行番号を表示)TROFF - Trace Off (TRON解除)LOAD - ディスクからプログラムファイルの読み込みCLOAD - テープからプログラムファイルの読み込みSAVE - ディスクへプログラムファイルを保存CSAVE - テープへプログラムファイルを保存FILES - ディスクファイルの一覧
1964年、米国ダートマス大学にて、数学者ジョン・ケメニー(1926-1992)とトーマス・カーツ(1928-)により、コンピュータ教育用の言語として開発された。これは同時期にともに開発された、タイムシェアリングシステム DTSS 上のラインエディタで利用されるよう設計されていた。
BASICは、GEとの提携を経て、学外にも普及した。ダートマス大学のオリジナルはコンパイラだったが、パソコンなどの商用版では基本機能を最小限にしたうえでインタプリタとして実装されることが多く、独自の発展を遂げた。
1970年代末から1980年代初頭にかけて、8ビットCPUを使った自作コンピュータでTiny BASICを動かし、その上でゲームを実行させる(スタートレックゲーム等)のがホビーストの目標となった。
同時に、メーカー製のターンキーシステムにBASICインタプリタがROMの形で搭載されはじめ、一気に当時のマイコンにおける標準言語の立場を獲得した。この時に搭載されたBASICインタプリタはほとんどがマイクロソフト製で、同社躍進のきっかけとなった。また、マイクロソフト社製BASICは、中間コードを使用する構造になっており、また汎用機を再現した極めてエミュレータに近いランタイム形式の実行環境であったため、当時の互換性が皆無なコンピュータ事情の中でも、スクリプト自体は容易な移植が可能であった。
その後、(MS-DOS発表以前の)パソコンに、操作を提供するのにも使われ、しばしばROM-BASICとしてハードウェアに組み込まれた。
BASICは、FORTRANやCOBOLと同様、ANSI、ISO、JIS (JIS X2002) などで言語仕様が規格化された。この規格BASICは後年、「Minimal BASIC」と呼ばれた。当時のコンピュータの能力を考慮して、規定された文法などの事項はごく最小限だったが、1970年代から1980年代にかけてのパソコンの発展はめざましく、Minimal BASIC規格が陳腐化するのも早かった。実際に規格にそった言語仕様を持った実装系は汎用コンピュータ用のオマケ程度のものは存在したが、パソコン用としてはほとんどなかった。
各メーカーのパソコンに標準搭載されたBASICは、機種ごとに画面操作やI/O直接操作などの独自拡張が行われた。マイクロソフト製(MS-BASIC、BASICA、G-BASIC、GW-BASICの移植版)のみならず、F-BASIC、S-BASIC、Hu-BASICなど各社が独自にBASICを開発し、いわゆる「方言」が生まれた。この結果、たとえBASICのメーカーが同じでも「あるパソコンで作ったBASICプログラムは、他のパソコンではそのままでは動かすことができない」ことの方がずっと多かった。
LOCATE文は、別の処理系ではCURSOR文PLAY文、MUSIC文とそれらに記述されるMMLCONSOLE文WHILE~WENDGOTO, GOSUB文の飛び先を指定するラベルCALL, CMD, SETなどで始まる命令文また、初期のTiny BASICはともかくとしても、BASIC実装処理系のメイン・メモリの制限により言語仕様が極めて制限された実装があったほか、処理プログラムの大きさや速度の制限を回避するためにソースの読みやすさを犠牲にするようなテクニックが横行した。
DEFINT A-Z)PRINT→?、LET A=B→A=B、REM→' など)PRINTも?も1バイトの同じ中間コードになるので、結果は変わらない。また、REMを'と書くのはかえってサイズが増える。NEXTの変数名を省略する(可能な処理系のみ)GOTO/GOSUB命令のオペランドを内部で行番号からメモリアドレスに書き換える処理系ではあまり効果がない。もっとも当時は群雄割拠の時代でもあり、特に市販ソフトが満足に出なくなったパソコンにおいては、BASICは重要な役割を果たした。
コンパイラとしてのBASICはパソコン向けにはあまり存在しなかったが、マイクロソフト製の BASIC-80(CP/M用インタプリタ)にはBASCOMというコンパイラが製品として存在していた。また、日本電気製のMS-DOS用N88-BASICコンパイラという製品も存在していた。MSX-BASICにはべーしっ君という(実行形式でのオブジェクトは生成しない)コンパイラがアスキーより発売されていた。またシャープのX68000に付属していたX-BASICは専用コンバーターでC言語に変換してコンパイルする事が可能だった。
もっとも、コンパイラが存在しないインタプリタの方が多かった。その上、パソコンに内蔵または標準添付されていたインタプリタと違い、コンパイラは別売で高価で、実行にはランタイムを必要とした。
このことから、BASICインタプリタでパソコンの操作を覚えたユーザーは、より高速で柔軟なプログラムを求めて、機械語(アセンブリ言語)や、C言語などに流れていった。
パソコンの普及により急速に広まったBASICだったが、Pascal、C言語の流行による構造化プログラミングの波が押し寄せると、行番号を残し、マルチステートメントやGOTO文などを多用するパソコンのBASICは、構造化を支持する識者からは酷評されるようになった。
やがてそれは、BASICの原作者であるジョン・ケメニーとトーマス・カーツの知るところともなった。ダートマス大学でのバージョンは商用のBASICとは異なって既に1970年代後半から構造化などが進んでおり、ANSIでは新しい規格の策定も進んでいたが、これをパソコン向けにアレンジした実行時コンパイル型のTrue BASICが、1984年に開発された(日本ではクレオから発売)。このBASICは学術的(特に数学的)な意見を色濃くしたものだった。そしてTrue BASICとほぼ同一の構造化BASICであるFull BASICがANSI、ISO、遅れてJIS(JIS X 3003:1993)で規格化された。
DO~LOOP、DO WHILE〜LOOP WHILEなど)
GOTOを使用しなくて済むようになったIF文が多行に渡るブロックIF(IF〜THEN〜ELSE〜ENDIF)も可能となったLETを省略できないようにした(True BASICではOPTION NOLETまたはNOLETを実行すると省略可能)OPTION BASE命令で0から始まるようにすることも可能)GOTOなども規格としては残っているマイクロソフト社はFull BASIC規格の策定には参加しなかったが、1985年にFull BASICに類した構造化や特徴を追加した独自規格のQuickBASICを発売した。これは自社のMS-DOS用のGW-BASICの上位互換で、コンパイラ並に動作を高速にした上にコンパイルも出来るようにしたもので、Version4.5まで発売した後に1991年のVisual Basicへと繋がっていった。
QuickBASIC との互換性を考慮したフリーなBASICとしてFreeBASICがある。
構造化ということを意識していなかったパソコン用のROM/Disk-Basic環境で、構造化プログラムを記述するために作られたプリプロセッサである。アスキーの書籍の形(アスキー書籍編集部編著「構造化BASIC RATBASのすすめ」 (ISBN 978-4-87148-152-6) )で、1985年に公開された。
これは、独自の構造化文法で記述されたソースプログラムを処理し、行番号やGOTO文を使うROM/Disk-Basicに変換するプログラムで、すべてBasicで記述されていた。構造化言語をFortran言語に変換するRatforに準じて、RATBASという名前が付けられた。
RATBASは、スタンドアローンのBasicプログラムと、μ-UXの外部コマンドとして作成されたサブセット版がある。μ-UXとは、年刊Ah!Skiの1984年号に掲載された、Disk-Basicで記述されたUnix風のオペレーティング環境であるUni+を拡張したものである。
日本の会社のその他のBASICは、マイクロソフトと同様に独自に構造化したか、または構造化されないまま製品ラインナップからは外されてしまった(日本のパソコンの16ビット化が進んだ1980年代の後半からFull BASICがJISで制定された頃にかけて、パソコンの主力開発環境はC言語がBASICに取って代わりつつあった)。このこともあり、Full BASIC規格準拠の処理系は教育用として使用されることはあるものの、市場にはあまり普及していない。
近年ではマイクロソフトの独自拡張によるRAD環境Visual Basic (VB) や、MS Officeなどで動作するそのサブセットVisual Basic for Applications (VBA)がWindowsにおける代表的なプログラミング言語のひとつとして広く利用されている。もっともVisual Basicは、GUIに特化したRAD環境として大幅に拡張が施され、元のBASIC言語とは、かけ離れてしまっている。
BASICは依然として初心者向けの言語ではあるが、パソコンに添付されることはなくなった。プログラムの入門でもBASICを使わず、最初からC言語などで教える教育機関も多い。無料で使えるJavaなどの、洗練された後発言語の普及により、開発環境としては選択肢の一つでしかなくなった。
また、コンパイラで開発した場合、実行ファイルとは別に、巨大なランタイムライブラリが必要となる処理系が多い。このため配布に必要なファイルのサイズが大きくなり、敬遠されることがある。それでもBASICは、依然として使われているのも事実である。
現在、BASICもオブジェクト指向化が見受けられる。その代表例がVisual Basic.NETやREALbasicやActiveBasic等で、三者とも既に完全なオブジェクト指向言語になっていると言える。
PageRank5以上の相互リンク
・相互リンクスクエア
(PageRank 5)
・相互リンク インプロス
(PageRank 5)
→便利!NINJA TOOLS
→FC2検索
用語
Wikipedia
YouTube
powered by Yahoo!
DACKPOND=即決あり SKAGEN スカーゲン BASIC Titanium 342XLTMD