Casio Python - Casio Python とは?

Casioグラフ関数電卓の Python を使ってみる
- Casio Python とは?:MicroPython と CPython
<目次>
初版:2020/06/18
追記:2020/11/03
▲ 前の記事 - 1 電卓で作る初めてのスクリプト | ▼ 次の記事 - 3. Casio Python の入出力追記:2020/11/03
2. Casio Python とは?: MicroPython と CPython
2.1 Casio Python の素性
Casio Python は MicroPython 1.9.4 のサブセット版、そして MicroPyhton 1.9.4 は CPython 3.5.4 のサブセット版です。
2.1.1 MicroPython 1.9.4
Casio Python は、MicroPython 1.9.4 をベースにカシオがカスタマイズしたものです。では、MicroPytnon 1.9.4 は何かと調べると、MicroPython のホームページ には、次のように書かれています。
"MicroPythonは、Python 3 プログラム言語を無駄なく効率的に実装したものであり、Python標準ライブラリの小さなサブセットを含み、マイクロコントローラや制約のある環境で動作するように最適化されています。
MicroPython pyboardは、MicroPythonを実行するコンパクトな電子回路基板であり、本格的なOSがインストールされていないシステムに実装されており、あらゆる種類の電子工学的テーマを制御可能な低レベルのPythonオペレーティングシステムを提供します。
MicroPythonには、対話形式のプロンプト、任意の精度の整数、クロージャ、リスト内包、ジェネレータ、例外処理などの高度な機能が満載されています。それにもかかわらず、256kのコードスペースと16kのRAMで動作するほどコンパクトです。
MicroPythonは、デスクトップからマイクロコントローラや組み込みシステムにコードを簡単に転送できるように、通常のPythonと可能な限り互換性を持たせることを目指しています。" (翻訳 by 管理人)
MicroPython pyboardは、MicroPythonを実行するコンパクトな電子回路基板であり、本格的なOSがインストールされていないシステムに実装されており、あらゆる種類の電子工学的テーマを制御可能な低レベルのPythonオペレーティングシステムを提供します。
MicroPythonには、対話形式のプロンプト、任意の精度の整数、クロージャ、リスト内包、ジェネレータ、例外処理などの高度な機能が満載されています。それにもかかわらず、256kのコードスペースと16kのRAMで動作するほどコンパクトです。
MicroPythonは、デスクトップからマイクロコントローラや組み込みシステムにコードを簡単に転送できるように、通常のPythonと可能な限り互換性を持たせることを目指しています。" (翻訳 by 管理人)
ここで Python 3 とは、C言語で書かれた Python 処理系の ver. 3.xx のことで CPython 3 とも言うようです。
さて、Casio Python の言語仕様は、MicroPython 1.9.4 の言語仕様のページ / 日本語のページ の内容がベースになっていると思われます(まだ全部調べていません)。ここには、MicroPython 1.9.4 は、CPython 3.4 と それ以降から選んだものが実装されていると書かれてます。
CPythonについては、様々なレベルの情報がネットで簡単に検索できるので、MicroPython が CPython とどこが違うのか、つまり Casio Python との違いは結構重要になってくると思います。そこで、MicroPython と CPython の違い が役立ちます。ここにあるいくつかの項目を実際に試すと、確かに Casio Python が MicroPython と同じ動作で CPython は異なることを確認しています。
ところで、MicroPython と CPython の違いに書かれていないのですが、Casio Python が CPython 3 と動作が異なることも見つかっています(Casio Pythonリファレンスで紹介しています)。その違いは、文書化されていない MicroPython の仕様なのか、Casio Python 独自のものなのかは、今の所不明です。
Note: Casio Pythonへのライセンス
MicroPython 1.9.4 の MicroPython license infomration の内容は、fx-CG50 (バージョン3.40) ソフトウェアマニュアルの γ - 1 ページの内容と同じものです。つまり、Casio Python は間違いなく MicroPython 1.9.4 のライセンス製品だと証明されます。
2.1.2 CPython 3.5.4
CPython については、Python 公式ドキュメント Python.org に遡って調べれば、確実に正しい情報に当たれます(但し、Python 開発者向けなので、読み解くのは容易ではありません)。ありがたいことに、この公式ドキュメントには CPython 3.5.4 日本語ドキュメント があります。これはバイブルとして使えそうです。
先ずは、2. 組み込み関数 にある関数リストが役立ちそうです。
2.2 Casio Python に組み込まれているオブジェク名の一覧
シェル画面、あるいはスクリプト編集画面から、[SHIFT] [4] (CATALOG) を押して現れるカタログ機能は、オブジェクトの一覧(+α)になっていて、関数名、メソッド名、演算子名、識別子名など、スクリプトで使えるブジェクトが分かります。
ところが、この一覧にはないけれど、実際に使える隠し関数やメソッドなどのオブジェクトが有ります。
隠しオブジェクトも含んで、全てのオブジェクト名の一覧を知る方法を、読者の方から紹介して頂きました。オブジェクト名を知る関数 dir() も隠し機能の中に隠れているのですが、これを使った以下のスクリプトを実行すると、Casio Python に内蔵されている全てのオブジェクト名が分かります。
Note: CGモデルとFXモデルでの出力の違い [2020/11/03 追記]
以下のスクリプトは、print() により 100 行以上出力します。
CGモデル (fx-CG50) の Pythonモードでは、print() のスタックは最大200行なので、全てを出力できます。
CGモデル (fx-CG50) の Pythonモードでは、print() のスタックは最大200行なので、全てを出力できます。
一方、FXモデル (fx-9750GIII, fx-9860GIII) の Pythonモードでは、print() のスタックは最大100行なので、全てを出力できないという制限があります。出力が100行以内になるようにコメントアウトして活用してください。
ObjName.py ← クリックしてダウンロード
import builtins
print(repr(builtins))
for i in dir(builtins):
print(i)
print(repr(list))
for i in dir(list):
print(i)
print(repr(dict))
for i in dir(dict):
print(i)
print(repr(set))
for i in dir(set):
print(i)
import casioplot
print(repr(casioplot))
for i in dir(casioplot):
print(i)
import math
print(repr(math))
for i in dir(math):
print(i)
import random
print(repr(random))
for i in dir(random):
print(i)
2.3 Casio Pyhton の学習方法
Casio Pythonを使いこなすには、CPython の知識と経験があればなんとかなりそうです。そして、CPython については、インターネットで簡単に調べられ、Casio Python のコーディングで悩めば、多くの場合はネットで解決できます。
そこで、管理人がお勧めの学習サイトを紹介します。
⇒ Python 入門 - @IT
⇒ 京都大学プログラミング演習 Python レポジトリ
Python の基礎的な使い方については、本連載ではざっくりと触れるだけにして、Casio Python を使った電卓でのプログラミングに特化した内容、Casio Python 特有の言語仕様について、調べて分かったこと、気がついたことをピックアップしてゆこうと思います。メインテーマとして、Pythonのスキルが低くいとしても (=管理人)、とりあえずプログラムを作って楽しめることを紹介してゆきたいと思います。
▶ 目 次
▲ 前の記事 - 1. 電卓で作る初めてのスクリプト
▼ 次の記事 - 3. Casio Python の入出力
応援クリックをお願いします。励みになるので...
▶ 目 次
▲ 前の記事 - 1. 電卓で作る初めてのスクリプト
▼ 次の記事 - 3. Casio Python の入出力
応援クリックをお願いします。励みになるので...
- 関連記事
-
-
Casio Python - テキスト出力関数の追加 2020/11/03
-
Casio Python - 関数の作成と活用 2020/11/03
-
Casio Python - Casio Python とは? 2020/11/03
-
Casio Python - get_pixel() 2020/10/31
-
Casio Python - set_pixel() 2020/10/29
-