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.3.2.tar.gz
(64.9 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.3.2-py3-none-any.whl
(32.2 kB
view details)
File details
Details for the file nanako-0.3.2.tar.gz.
File metadata
- Download URL: nanako-0.3.2.tar.gz
- Upload date:
- Size: 64.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b79cc38e19c2a4ffc8470787fa9eb89aab687bdc60aa25d97fa4cec1bf876dbb
|
|
| MD5 |
b4dfb982175a2e8c9247d81c4b77f91b
|
|
| BLAKE2b-256 |
dc4216fc93ddfbd3a48ba7e750cc3ed2e0a7c5d284c201ef268e179c0e6a6e2a
|
File details
Details for the file nanako-0.3.2-py3-none-any.whl.
File metadata
- Download URL: nanako-0.3.2-py3-none-any.whl
- Upload date:
- Size: 32.2 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 |
f4b5a4b68ceb0db06d5b903f0736fd6156537dd873a73bb1dd84de542512ff14
|
|
| MD5 |
8e82db3416e4185878a5bed487a1f95d
|
|
| BLAKE2b-256 |
353c5a62a86f5aba8610f7176a48580b71958c6f90bf9a82d52ff330f7a85961
|