プログラム可能な電卓とは、保存されたプログラム の制御下で一連の演算を自動的に実行できる電卓のことです。そのほとんどはチューリング完全であり、理論的には汎用コンピュータと言えます。しかし、そのユーザーインターフェースとプログラミング環境は、汎用的な用途ではなく、小規模な数値計算を容易に行えるように特化して設計されています。
IBM CPCのような初期のプログラム電卓は、 プログラムの保存にパンチカードなどの媒体を使用していた。携帯型電子計算機は、磁気テープ、取り外し可能な読み取り専用メモリカートリッジ、フラッシュメモリ、またはバッテリーバックアップ付きの読み書き可能なメモリにプログラムを保存する。
1990年代初頭以降、こうした柔軟な携帯型電卓のほとんどはグラフ電卓に分類されるようになった。しかし、安価なドットマトリクス液晶ディスプレイが大量生産される以前は、プログラム電卓は通常、1行の数字または英数字表示を備えていた。プログラム電卓の主要メーカーは、カシオ、ヒューレット・パッカード、シャープ、テキサス・インスツルメンツの4社である。上記4社はいずれも過去にポケットコンピュータも製造しており、特にカシオとシャープはそうした実績がある。
この種の電卓の多くはモノクロ液晶ディスプレイ(LCD)ですが、一部は4色(赤またはオレンジ、緑、青、黒)ディスプレイ、あるいは2022年1月時点の最上位機種では、16ビットまたは32ビットのグラフィックを表示するモニターと同様のカラーディスプレイを備えています。グラフ機能に使用されるため、これらの電卓の画面はピクセル単位でアドレス指定可能です。タッチスクリーン、ブザーなどの音発生装置、内蔵時計、モデムやIrDAトランシーバーなどの接続機器、プリンターなどの周辺機器用の各種ポート、そして様々な種類のメモリーカード用のポートを備えている機種もあります。
ノートパソコン、スマートフォン、タブレットなどのパーソナルコンピュータが広く普及し、低価格になったことで、プログラム電卓はほとんどの用途で徐々に時代遅れになっていった。多くの数学ソフトウェアパッケージは、携帯型プログラム電卓と同様の方法で、スクリプト言語やプラグインを介して自動化およびカスタマイズできる。しかし、プログラム電卓は中等教育および高等教育では依然として人気がある。多くの数学コースでは、特定の電卓モデルの使用が求められることが多い。教育における継続的な使用は、厳密に制御可能な機能によって正当化されることが多い。例えば、電卓は通常、インターネットに直接アクセスできないため、試験での不正な補助には使用できない。残っているプログラム電卓メーカーは、高校の数学でこれらの電卓が引き続き使用されるよう、多大な努力を払っている。[ 1 ]
プログラム可能な電卓では、ユーザーがプログラムを作成して電卓に保存することで、難しい問題を解決したり、複雑な手順を自動化したりすることができる。
プログラミング機能は、グラフ電卓に最もよく搭載されています(ただし、グラフ電卓に限ったことではありません)。これは、画面が大きいため、ソースコードの複数行を同時に表示できるためです(つまり、次の行や前の行にスクロールする必要がありません)。当初、電卓のプログラミングは電卓独自のコマンド言語で行う必要がありましたが、電卓ハッカーが電卓のメインインターフェースを迂回してアセンブリ言語プログラムを作成する方法を発見すると、電卓メーカー(特にテキサス・インスツルメンツ)は、自社の電卓ハードウェア上でネイティブモードプログラミングをサポートするようになりました。最初は、そのようなコードを実行できるようにするフックを公開し、その後、ユーザーインターフェースから直接そのようなプログラムを処理するための機能を明示的に組み込みました。
電卓用のプログラムはインターネット上に多数存在します。ユーザーはこれらのプログラムをパソコンにダウンロードし、専用の接続ケーブル、赤外線無線接続、またはメモリーカードを使って電卓にアップロードすることができます。場合によっては、パソコン上のエミュレーターを通してこれらのプログラムを実行することも可能です。
これらのマシンのプログラミングは、マシン上で、PC 側でソース コードとしてアップロードするか、Flash や一部の C/C++ 実装のように PC 側でコンパイルしてアップロードすることができます。 tigcc、hpgcc などのコンピュータ側の言語パッケージに加えて、TI、HP、Casio、Sharp の電卓で使用できる PC リンク ソフトウェアにはプログラム エディタが含まれています。また、コンピュータ側で使用する SDK、エミュレータ、その他のツール、TI++ エディタなどの他のメーカーおよびサードパーティのツールもあります。[ 2 ] プログラム、データなどは、PC 接続に使用される電卓の同じポートを介して、同様のマシン間で交換することもできます。ネイティブ言語実装以外のオンボード プログラミング ツールには、fx シリーズの Casio 電卓用のオンボード C コンパイラと TI-83 BBC Basic ポートがあります。
上記から考えられる可能性の一つは、マシンをプログラミングするための追加言語のインタプリタ、コンパイラ、およびトランスレータプログラムを作成することです。BBC Basicは既にTI-83および-84シリーズに移植されており、その他多くの人が議論しているオンボード言語やプログラミングツールには、Fortran、awk、Pascal、Rexx、Perl、Common Lisp、Python、tcl、および様々なUnixシェルなどがあります。
電卓で一般的に利用できるプログラムには、数学や科学関連の問題解決ツールからビデオゲーム、いわゆるデモまで、あらゆるものが含まれています。これらのコードの多くはユーザーが作成したフリーウェアまたはオープンソースですが、特に教育および科学/工学市場向けの商用ソフトウェアも利用可能です。プログラム可能な電卓には、情報、ドキュメント、メッセージボード、ダウンロードツール、その他この目的に役立つものを掲載した主要なウェブサイトがあります。各メーカーの電卓の主要サイトは、企業自身との協力の度合いが異なるサードパーティによって運営されています。具体的には、HPCalc.org、TICalc.org、CasioCalc.org (qqv) があり、SharpCalc.org ドメインは最近、他の 3 つのサイトと同様のサイトを作成し、シャープのポケットコンピュータに関する情報も提供する意向を示した組織によって買収されました。企業自身も、TIEducation.com などのサイトを運営しており、マシンに関する情報やツールを提供しています。[ 3 ]
初期の頃、ほとんどのプログラム可能な電卓は非常に簡略化されたプログラミング言語を使用しており、多くの場合、実際のキーストロークを記録するか、キーストロークが結合されている場合はバイトコードに基づいていました。このようなプログラミングをサポートする電卓は、条件文とメモリの間接アドレス指定の両方をサポートしていれば、チューリング完全でした。チューリング完全な電卓の代表的な例としては、カシオFX-602Pシリーズ、HP-41、TI-59などがあります。キーストロークプログラミングは、 HP 35sやHP-12Cなどの中級クラスの電卓で今でも使用されています。
BASIC は、デスクトップ コンピュータやポケット コンピュータによく採用されている、広く普及しているプログラミング言語です。現在、ハイエンドの電卓で最も一般的に使用されている 言語は、カシオ( Casio BASICまたは BasicLike)やTI ( TI-BASIC )が使用している独自のBASICスタイルの方言です。これらの BASIC 方言は、BASIC とキー ストローク プログラミングの利点を組み合わせた電卓での使用に最適化されています。これらは主流の BASIC とはほとんど共通点がありません。[ 4 ] [ 5 ] [ 6 ] Ti-89 以降のバージョンは、標準 Basic の文字列および文字操作関数とステートメントの完全なセットを含め、より完全な機能を備えています。
TI-83シリーズの電卓向けに、 BBC Basicの完全移植版が利用可能になりました。インストールは、ケーブルまたはIrDA接続を介してコンピュータと接続して行います。
RPLは、ヒューレット・パッカードがハイエンドデバイスで使用しているForthに似た特殊なプログラミング言語です。RPL電卓を搭載した最初のデバイスは、1987年に発売されたHP-28Cでした。 [ 7 ]
TI 89および関連電卓に統合されたアセンブラが2014年に発表され、発売された。
初期の電卓モデルでは、機械語プログラミングは推奨されないことが多かった。しかし、熱心なプラットフォームハッカーたちは、一部のモデルに内蔵されているインタープリタをバイパスして、アセンブリ言語で電卓を直接プログラムする方法を発見した。この技術は、モード切り替えキーのプログラミング上の欠陥により、TI-85で初めて発見され、利用された。TI -83が登場する頃には、TIとHPは自作プログラマのサポートニーズに対応する必要性を認識し、将来の開発者向けにアセンブリ言語ライブラリとドキュメントを提供し始めた。ソフトウェア、特にゲームは、ゲームボーイのゲームとほぼ同じくらい高速でグラフィカルになり、特にTIは後に、TI-83 PlusやTI-89などの将来の電卓向けのパッケージアプリケーションのサポートとしてアセンブリプログラミングを正式に採用した。HPは、当時最高級の電卓モデルであったHP-50gに、アセンブリプログラミングのオンボードサポートを含めた。
オンボードでアセンブリ言語のようなプログラミングを可能にするプログラムやツールキット(電卓の実際のプロセッサがZilogやMotorolaチップなど全く異なるものであっても、多くの場合Intel 80x86)は、少なくとも2つの実装でベータ段階にある。ネイティブのBasicバージョンは、ユーザー定義関数やプロシージャ、コンピュータ上で開発され電卓にアップロードされたアセンブリモジュールやCモジュールによって拡張でき、Basicタイプのプログラムと同様に「擬似アセンブリ」プログラムを作成して実行できる。Rexx、awk、Perl、一部のUnixシェルなどの他の言語も、この種の多くの電卓で同様の方法で実装できる。
GCC開発スイートは、カシオ、HP、TIの複数の電卓モデルに対応しており、 C、C++、Fortran 77、インラインアセンブリ言語を使用してコンピュータ側でプログラムを開発し、それを電卓にアップロードすることができます。
サードパーティによって開発中のプロジェクトには、 Fortran、その他の Basic バリアント、awk、C、Cobol、Rexx、Perl、Python、Tcl、Pascal、Delphi用のオンボードおよび/またはコンピュータ側のコンバータ、インタプリタ、コードジェネレータ、マクロアセンブラ、コンパイラ、および DOS/Win95 バッチ、OS/2 バッチ、WinNT/2000 シェル、 Unix シェル、DCLなどのオペレーティングシステムシェルが含まれます。
TI、Casio、Sharp、HPの多くの機種には、デフォルト設定の一部として、またはオプションで追加できるLuaインタープリタが搭載されています。
一部の電卓は、Fortran 77のサブセットであるMini-Fortranを実行します。コンパイラが電卓に内蔵されているため、プログラムを電卓に書き込むためにPCに接続する必要はありません。
カシオfx-9860シリーズ用Cコンパイラ「OnCalc」が発売されました。シャープのポケットコンピュータ「PC G850V」には、アセンブラとBASICインタープリタに加え、Cコンパイラも内蔵されています。
プログラム電卓の重要な特徴の一つは、何らかの永続メモリを備えていることである。永続メモリがない場合、電源が切れるたびにプログラムを再入力する必要があり、機器の操作が煩雑になる。永続メモリは、内蔵型と別体型の2種類があり、両方の方式を採用しているプログラム電卓もある。
磁気カードリーダーは、最初に利用可能になった永続メモリオプションの1つでした。[ 8 ]入力されたプログラムは磁気ストリップに保存されます。これらは持ち運びが容易で、リーダー/ライターはコンパクトなサイズでした。しかし、リーダー/ライターと磁気ストリップは非常に高価でした。磁気ストリップを使用した最後の最も注目すべきデバイスは、HP-41CとTI-59でした。
連続メモリは、電卓の電源を切っても内容が失われません。連続メモリがあれば、例えば、入力したプログラムを失うことなく電池を交換できます。[ 9 ]
コンパクトカセットは、磁気カードに代わるシンプルで安価な選択肢を提供した。通常、カシオFA-1などのインターフェースモジュールを使用して電卓を一般的なカセットレコーダーに接続し、デジタルデータは周波数シフトキーイングオーディオ信号としてエンコードされた。[ 10 ]
シャープとヒューレット・パッカードは、電卓に直接接続できる専用のマイクロカセットレコーダーやミニカセットレコーダーも販売していた。これらのシステムは、より実用的で信頼性も高かったが、価格も高かった。
メモリ需要の増加に伴い、真の連続メモリの実現は困難になり、開発者は代替手段を模索した。半連続メモリでは、特定のバッテリー交換ルールを守った場合にのみコンテンツが保持された。最も一般的なルールは以下のとおりである。
プログラムとデータは、保存のためにパーソナルコンピュータに転送されます。転送は、RS-232、IrDA、USBの接続方法(登場順) で行われます。この方法の利点は、非常にコスト効率が良く、通常はカセットインターフェースよりも高速であることです。これらの利点は、パーソナルコンピュータが必要になることで相殺されます。PC 接続の初期の例としては、Casio FA-6インターフェースと組み合わせたCasio FX-603Pがあります。この構成では、転送はプレーンテキストで行われたため、プログラムとデータは標準のテキストエディタで保存および編集できました。
1980年代から1990年代初頭にかけて、プログラマブル電卓はポケットコンピュータと競合し、ハイエンドの電卓には多くの共通点があった。例えば、どちらのタイプのデバイスも非構造化BASICでプログラミングでき、ごく一部の例外を除いてQWERTYキーボードを備えていた。しかし、いくつかの違いもあった。
企業はしばしば両方のタイプのデバイスを製品ポートフォリオに含めていました。たとえば、カシオはBASICプログラマブル電卓を「fx-」電卓シリーズ(「FX」は大文字で印刷)の一部として販売し[ 13 ]、ポケットコンピュータは専用の「pb-」シリーズとして販売していました。一方、シャープはすべてのBASICプログラマブルデバイスをポケットコンピュータとして販売していました。
プログラマブル電卓の中には、データ、プログラム、ソフトウェアの交換のためにPCと接続する複数の方法を備えているものがあります。これらの方法には、IrDA、その他の無線接続、シリアルポート(USBやRS-232など、0.125インチなどのサイズのオーディオプラグを介した接続を含む)などがあります。
最新のプログラム電卓の中には、追加の接続手段として携帯電話モデムを搭載しているものがある。
プログラマブル計算機は、多くの場合、これらの接続を介して、データロガーなどの周辺機器や、温度計、pH計、あらゆる種類の気象計、照度計、オーディオプローブとマイクロホン、ダイナモメーター、圧力計、電圧計、電流計、抵抗計、大気電気測定装置、イオンカウンター、ガイガーカウンターとシンチロメーター、高度計、はかり、加速度計など、さまざまな計測器のインターフェースと連携して使用できます。一部の機種は、オシロスコープとその周辺機器とも連携できます。また、脈拍、血圧、酸素飽和度、皮膚電気抵抗、体温、さらには心電図(EKG)や脳波(EEG)プローブ用のデバイスをデータロガーに接続し、それを計算機に接続して、さらに後でPCに接続することで、生体フィードバックデータを収集するように構成することもできます。
HPのプログラマブル端末などはIrDAインターフェースを備えており、電卓専用に設計されたプリンター、HPの主力レーザープリンター、コンピューター、他の電卓、その他のデバイスと接続することができます。
また、多くの企業から、レジスターのテープ用紙を使用する傾向のある電卓専用の小型プリンター、電卓をコンピューターや他の電卓に接続するためのポートとケーブル、プログラムやデータを記録するためのカセットレコーダー、オーバーヘッドプロジェクターディスプレイ、補助ディスプレイデバイス用のコネクタなどが一般的に入手可能でした。初期のプログラム可能な電卓や前述のポケットコンピュータには、テレビやコンポジットモニター用のビデオインターフェース、2.5インチミニフロッピーディスクドライブ、バーコードリーダー、モデムや外付けハードドライブなどを提供する標準のRS-232接続なども備わっていました。ポケットコンピュータ用のプリンターの選択肢も少し広く、感熱式、インパクト式、ドットマトリックス式、デイジーホイール式、4色ペン式、よりシンプルな印刷電卓で使用されていたタイプのプリンターなどがありました。一部の電卓やポケットコンピュータには、外付けの3.5インチおよび5.25インチフロッピードライブ、2台のカセットレコーダーを接続するためのケーブル、プリンターやカセットレコーダーを収納し、本体を差し込むクレードルなどがありました。
一部の機械は、特定の電動タイプライターをプリンターとして使用するために接続することも可能です(タイプライターは、この目的でPCに接続することもでき、インターフェースは標準的なRS-232やDINプラグであることが多い)。また、場合によっては、タイプライターのフロッピーディスクドライブやマイクロフロッピーディスクドライブにアクセスすることもできます。