Как учить маленьких детей программированию?

Один мой давний друг не так давно (около года назад) стал отцом. И с тех пор был озадачен тем, как начать учить ребенка программированию до того, как он (ребенок) сможет ходить. Мне все-таки кажется, что до 4-5 лет беспокоиться об этом не стоит, но вот после 5-ти лет – уже пора что-то придумывать!

Удивительно, но индустрия “программирования для детей” развита очень незначительно. Мой коллега писал про то, как учить детей объектному мышлению. Мы тоже думаем в этом направлении. Однако технический вопрос о среде программирования тоже остаётся открытым, и C# для вундеркиндов, равно как и Small Basic, как-то  не дают ответов.

Недавно смотрел среду NetLogo (искал среду многоагентного моделирования для использования в курсе по многоагентным системам), и вспомнил про классический Logo. Был удивлён тем, что практически не существует хороших классических реализаций Logo на русском языке! Удалось найти лишь ЛогоМиры, которые наверное хорошо, но уж больно непонятны и чрезмерно усложнены. Однако некоторые попытки продемонстрировать основы программирования ребенку 5.5 лет я сделал, и вот что получилось (с ребенком мы разбирали только построение звёздочки, сначала по шагам в интерпретаторе, потом добавив цикл, а затем вынеся в процедуру с параметром - остальное про ёлку я писал сам как демонстрицию):

image

Если кому интересно - вот исходный код:

ЭТО ЗВЕЗДОЧКА :N
ПР 90
ПОВТОРИ 5
[ ВП :N ПР 144 ]
ЛВ 90
КОНЕЦ

ЭТО ВЕТКА :N
ПР 30
ВП :N НАЗАД :N
ЛВ 60
ВП :N НАЗАД :N
ПР 30
КОНЕЦ

ЭТО ЕЛКА :M :N
ПР 180
ПОВТОРИ :M
[ ВЕТКА :N ВП 10 ]
ВП 30 ПР 180
КОНЕЦ

К слову - недавно коллеги из восточной европы предложили другой подход к обучение программированию (правда, школьников): использовать функциональные языки (F#) и двигаться "от математики": "вот формула, введём её в компьютер, она вычисляется", дальше добавляем рекурсию и т.д.

Внимание, вопрос: как вы думаете, стоит ли учить детей программированию? С какого возраста? В какой парадигме? На каких инструментальных средствах?