はじめに
今話題の「プログラマー脳」を読んでいたところ、著者のFelienne Hermansさんが「Hedy」というプログラミング言語を開発しているという記述がありました。
プログラミング教育用の言語とのことなので、さっそく入門してみましょう。
オンライン実行環境
学習用のwebサイトがあります。
(みたところCLI等は提供されておらず、このWeb UIのみが実行環境のようです)
構文の説明を読んで、コード入力欄で試す形式です(Go言語でいう Tour of Go のイメージ)。
構文
「Python学習のための漸進的プログラミング言語」を目指しているとのことで、Pythonに似た構文になっています。
# 代入は is or =
msg is hello world!
print msg # hello world!
sum = 0
for n in range 1 to 10
sum = sum + n
print sum # 55
animals is ['cat', 'dog', 'parrot']
add mouse to animals
for animal in animals
if animal == parrot
print 'animal is bird'
else
print 'animal is mammal'
また、実行環境で使える予約語はその章までに習ったものに限られます (例:for
は11章で講義に登場するまで構文エラー)。
構文も一定ではなく、章が進むにつれ徐々にPythonに近づいていきます。
# 3章
animals is dog, cat, kangaroo
print animals at random
# 16章
# (2章の構文で書くとエラーになる)
animals = ['dog', 'cat', 'kangaroo']
print animals[random]
プログラミング言語学習に打ちのめされてしまうこともあります。なぜなら、学習者は概念(if-elseやforループ)と構文(クオーテーションマークや丸カッコ)を同時に学ぶ必要があるからです。Hedyでは、概念は最初に少ない構文だけで導入され、後から改良されます。これは科学的に証明された学習方法です!
Learning a programming language can be overwhelming, since learners have to learn concepts (for example if-else or loops) and syntax (like quotation marks or round brackets) at the same time. In Hedy, concepts are first introduced with little syntax and then refined. A scientifically proven way to learn!
https://hedy.org/
(とはいえ前習った構文が使えなくなっていくので、まじめに復習する人ほど過去の記憶とごちゃごちゃになってしまうような気もします...先生の手腕が問われそうです )
予約語の多言語対応
「漸進的」ということで、英語が使えなくてもプログラミングができるようになっています。
日本語も対応しており、予約語がひらがななので未就学児でも安心です。
# 日本語でプログラミング!
# ※一部予約語は未対応
repeat 10 かい
かけ 'Hi!'
やすめ 1
なんと予約語は40言語以上に翻訳されています1!
母語でプログラミングを学ぶことができます。
# English
print hello world!
# 日本語
かけ こんにちは!
# Deutsch
drucke Hallo!
# Français
affiche Bonjour !
# 中文 (简体)
打印 你好!
予約語は、今選択している言語+英語のみが使えます。
「意図せず別言語の予約語として認識されてしまった!」というトラブルが回避できるのが良いですね。
# 日本語モードの場合
print hello world!
かけ こんにちは!
drucke Hallo! # 予約語として認識されずエラー
英語だけは混ぜて使えるので、「母語でプログラミングを学ぶ」→「英語の予約語も覚える」→「Pythonに入門する」と段階を踏んで学習できそうです。
多言語対応の仕組み
予約語のトークン一覧が言語ごとに定義されていて、lexerが言語の差異を吸収していました。
ここに日本語と英語が併記されているので、両者の予約語を混ぜられるという仕組みです。
おわりに
以上、Hedyの紹介でした。プログラミング言語自体を習熟度に合わせて進化させていくというのが斬新でした。
ログインすれば教師用機能等も使えるようなので、まだまだ奥が深そうです。
-
翻訳中のため未対応のものもありました。 ↩