An educational programming language for the generative AI era
Project description
ななこ (Nanako) - 教育用プログラミング言語
ななこは生成AI時代の教育用プログラミング言語です。限られた機能でチューリング完全性を学び、プログラミングの本質を理解することを目的としています。
特徴
- 限定された演算: インクリメント、デクリメント、絶対値、符号反転のみ
- 0との比較のみ: 条件文は0との比較のみ可能
- 定回数ループ: N回繰り返しまたは配列の長さ分繰り返し
- 関数定義: 再帰も可能な関数定義
- チューリング完全: これらの機能だけで理論上あらゆる計算が可能
インストール
git clone <このリポジトリ>
cd nanako
使い方
ファイル実行
python run_nanako.py examples/basic.nanako
インタラクティブモード
python run_nanako.py --interactive
テスト実行
python simple_test.py
python sample_programs.py
python japanese_samples.py
言語仕様
基本構文
変数代入
x = 42
xを10とする
インクリメント・デクリメント
xを増やす
xを減らす
条件分岐
もし、xが0以上ならば、{
yを10とする
}
そうでなければ {
yを20とする
}
比較演算子:
以上: >= 0以下: <= 0より大きい: > 0より小さい: < 0以外: != 0未満: < 0- 空文字: == 0
ループ
5回、くり返す{
xを増やす
}
配列の長さ分ループ:
[1, 2, 3]回、くり返す{
counterを増やす
}
関数定義と呼び出し
入力 x, y に対し {
y回、くり返す{
xを増やす
}
xが答え
}
配列操作
arr = [1, 2, 3]
arr[0] = 99 # 要素の更新
x = arr[1] # 要素の参照
arr[?] = 4 # 末尾に要素を追加(新機能!)
文字列リテラル(新機能!)
message = "Hello" # 文字コードの配列 [72, 101, 108, 108, 111]
greeting = "こんにちは" # 日本語も対応
text = "Line1\nLine2" # エスケープシーケンス対応
特殊演算
x = |y| # 絶対値または配列の長さ
x = -y # 符号反転
x = ? # null値
サンプルプログラム
足し算関数
たし算 = 入力 X, Y に対し {
Y回、くり返す{
Xを増やす
}
Xが答え
}
引き算関数
ひき算 = 入力 X, Y に対し {
Y回、くり返す{
Xを減らす
}
Xが答え
}
絶対値関数
絶対値 = 入力 X に対し {
もし Xが0より小さいならば {
ひき算(0, X)が答え
}
そうでなければ {
Xが答え
}
}
ファイル構成
nanako.py: メインのインタープリター実装run_nanako.py: 実行可能ファイルtest_nanako.py: 完全なテストスイートsimple_test.py: 基本機能のテストsample_programs.py: サンプルプログラムとデモjapanese_samples.py: 日本語構文のサンプルexamples/: サンプルファイルmemo.txt: 言語仕様とサンプルコード
教育的価値
- 計算の本質: 複雑な演算を基本操作の組み合わせで実現
- アルゴリズム思考: 制約の中で問題解決する思考力
- チューリング完全性: 最小限の機能で万能性を理解
- プログラミング概念: 変数、関数、制御構造の基礎
実装について
このインタープリターはPythonで実装されており、以下の機能を含みます:
- 抽象構文木(AST)による構文表現
- 再帰下降パーサーによる構文解析
- 環境(環境辞書)による変数管理
- 例外による制御フローの実装
ライセンス
MIT License
貢献
プルリクエストや改善提案を歓迎します。教育目的に適した機能追加や、より良い日本語構文の提案などお待ちしています。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nanako-0.2.0.tar.gz
(28.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
nanako-0.2.0-py3-none-any.whl
(29.8 kB
view details)
File details
Details for the file nanako-0.2.0.tar.gz.
File metadata
- Download URL: nanako-0.2.0.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3f52079b318341a896c2a21f86deac96e6b055d1e809a49c226cefe95ed1aee
|
|
| MD5 |
8293023f6c3773443325a6e8f84e27c1
|
|
| BLAKE2b-256 |
dd9f564bd4e0f733eb5bd439b79f87cde771c3eaaef2bc4fa41826ce221ed2e4
|
File details
Details for the file nanako-0.2.0-py3-none-any.whl.
File metadata
- Download URL: nanako-0.2.0-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9affc3107ac7d7187f09393852dc905009aa0657668d38fce15598d81cc23c65
|
|
| MD5 |
2b58ae1468a4ae8597a7904c8239ff1b
|
|
| BLAKE2b-256 |
de22f52636586c6519b13f9e58c04f6bacbf2eebcdb11b40999d172c80f38c89
|