Zen Programming - Private Class

今日は鍋山真一郎君と禅プログラミング授業をやりました。彼は15歳だけど、ある程度英語ができて、前も開発の経験があって、かなり複雑な開発できました。

Today, I gave a Zen programming private lesson to Shinichiro Nabeyama, a 15-year-old Japanese high school student who knows a little bit of English and had some prior experience with programming.

方語の英語と日本語で喋って、Windows上にDockerを使って、CentOSのContainerを立ち上げて、gccで僕たちがviで書いたCコードをCompileして実行しました。

While communicating with simple English and Japanese, we used Docker on Windows to spin up CentOS containers, upon which we used vi to write C code that we compiled and ran with gcc.

しん君はCの言語にそんな経験がなかったから、多くの時間はC言語の構文を説明するために使っちゃったから、コード自体はそんな複雑ではなかったけど、少しTDDができました。

Shinichiro didn’t have much experience with C, so a lot of our time was spent on explaining the fundamentals of C, but the actual code was not so complicated and we could do some TDD.

#include "assert.h"

#include "stdio.h"

#include "string.h"

char* artist(char* song)

{

        if (0 == strcmp(song, "levels"))

                return "avicii";

        else if (0 == strcmp(song, "faded"))

                return "alan walker";

        else if (0 == strcmp(song,"lose"))

                return "shinzex";

        return "unknown";

}

int addBack_old(int x)

{

        if (x == 0)

                return 0;

        if (x == 1)

                return 1;

        if (x == 2)

                return 1 + 2;

        if (x == 3)

                return 1 + 2 + 3;

        if (x == 4)

                return 1 + 2 + 3 + 4;

        return -1;

}

//recursive

int addBack(int x)

{

        if (x == 0)

                return 0;

        return x + addBack(x-1);

}

void test()

{

        assert(addBack(0) == 0);

        assert(addBack(1) == 1);

        assert(addBack(2) == 3);

        assert(addBack(3) == 6);

        assert(addBack(4) == 10);

        printf("pass\n");

}

int main()

{

        //printf(artist("levels")); printf("\n");

        //printf(artist("faded")); printf("\n");

        //printf(artist("lose")); printf("\n");

        test();

        //for (int i = 0; i <= 4; i++)

        //{

        //      printf("%d", addBack(i));

        //      printf("\n");

        //}

}

Recursive functionの作り方も教えました。

I also taught a bit about recursive functions.

もちろん、禅プログラミングのワークショップだったから、坐禅もやりました。自分が13年前からやってるヨガも少し一緒にできました。

Of course, being a Zen programming workshop, we did Zazen. Also, I showed Shinichiro some of the Yoga I had been practicing for 13 years.

Extreme Programmingというなシリコンバレースタイルのペアプログラミングもやってて、2つのモニター、2つのキーボード、2つのマウスでした。あいにく、しん君のキーボードは日本語版だったからかなり苦労しました。

Using the “Silicon Valley style” Extreme programming, we used 2 monitors, 2 keyboards, 2 mice. Unfortunately, Shinichiro’s keyboard was Japanese so we had some difficulties there!

傘松閣の電気の付け方にも間違ってかなり時間使っちゃいました。扇風機もなくて、暑くてしん君が苦労してました。

We also had some trouble turning on the lights in the Zazen room, as well as no fan, so Shinichiro was bearing the heat!

短い3時間でしたが、いろんなことができて、成功のもとである失敗もできて、いい体験でした!

It was a short 3 hours, but we were able to do many things, and make some mistakes to help make next time even better!

Amil日本語, English