* セキュリティキャンプ2018 言語自作ゼミの紹介 -(by [[K]], 2018.03.28) ** (1) -[基本事項] --まずEssenの開発理念に共感できるかどうか確認してください → [[page0004]] --EssenRev4はインタプリタ型のプログラミング言語です。また動作を高速にするために、JITコンパイラを内蔵します。 ---JITコンパイラ=インタプリタを高速化する手法で、実行時にコンパイルする方式。 ---単純なコンパイラ方式ではなく、JITコンパイル方式にする理由は、evalなどの構文を許容するためです。つまりEssenのプログラム内で、Essenのプログラム文字列を生成すれば、それをそのまま実行できるのです。 --EssenRev4は当面はWindows用のアプリケーションとして開発され、C言語のみで書かれる予定です。 -[要求スキル] --基本的には、受講者に合わせて課題を設定するので、高いスキルは要求しません。 --このサイトに書いてあることのうち、約50%しか理解できなかった、くらいでも&color(blue){''問題ありません''};。 --とりあえずどんな言語でもいいので、一つくらいプログラミング言語をマスターして、何か作ったことがあれば十分です。それくらいのスキルがあれば、作りかけのEssenを試用して何かプログラムを作り、これは使いやすい、これは使いにくいと感想を言うくらいならできるはずですし、それだけでも非常に助かります。 --もしさらに実力があれば、EssenRev4をLinux向けに移植してもいいでしょうし、この機能が必要だから作ってみた、気に入ったら本家にマージしてくれ、ということも可能です。こうなるともはや共同開発者です。 --さらに上を目指すなら、EssenRev4は生ぬるいので、オレサマがもっといいものを作ってやるぜ!と競争を持ち掛けてもいいです。お互いにいいところをパクり合いながら、最強の言語を目指したいです。 -[選考に関して] --このゼミでは「年齢に対するスキル」を重視します。つまりスキルが高くても大学生だったりすると、それはまあ当然かなと割り引いて評価されます。もちろん大学生だとしてもこれはすごいと思える学生はいますし、そういう人は通ると思います。でも若いことはそれだけで有利なので、こんなスキルじゃまだ足りないかもなんて思わないで、是非応募してみてください。足りないかどうかはあなたが決めることではなくて、私が決めることなのですから。どんな人でも応募しなければ可能性はゼロです。応募すれば可能性はあります! --例年、締め切り間際になって応募が殺到するのですが、それは事務局側が大変なので、締め切り&color(blue){''1週間前''};までに応募してくれた人は少し年齢を低く見て&color(blue){''有利''};に評価しようと思っています。・・・セキュリティキャンプでは応募用紙の再提出が何度でも許されていますが、最初の提出が1週間前に間に合えばいいです。一度出したら、あとは締め切りまで何度でも見直して、気が済むまで何度でも再提出してください。また締め切り&color(blue){''2週間前''};までに応募してくれた人は&color(blue){''さらに有利''};に評価するつもりです。 --基本的に私は加点方式で評価しますので、余計なことを書いたせいで減点するということはありません。遠慮なく何でも書いてください! ** (2) 進め方のイメージ -合格したら、できるだけ早くオンラインで連絡を取りたいと思っています。どんなふうに進めたらいいのかを一日も早く考えたいので。そしてそこから事前学習が始まります。 -最初はその時点での最新版のEssenRev4が手元の環境で動くかどうかのテストをしてもらいます。もし無事に動いたら、Essenではどんな命令が使えて、どんなことができるのかの簡単なドキュメントを作りますので、それを試してみてもらいたいです。 -それで「ここがわかりにくい」「これができたらもっといいのに」みたいな意見をもらいつつ、Essenはどんどんバージョンアップしていきますので、Essenで動くアプリを作ってください。・・・これを繰り返しているだけで、プログラミングスキルが徐々に上がっていくように工夫します。 -それをしている過程で、Essenのソースを読んで改造したくなったら、改造してみてください(したくならなくてもいいです)。改造にあたって、わからないことがあれば、それはいくらでも教えます。 -仮にEssenのアプリを作るだけで終わったとしても、それで何か面白いアプリができればそれは大いなる成果です(ここまではできるように積極的にサポートいたします!)。Essenはこんなことができる、こんなところを言語が助けてくれた、みたいなことを発表できるので、全く問題ありません(それにアプリづくりをしているうちにEssenに対して不満も出るはずで、それが受け入れられてEssenの改良につながったりするので、それもあなたの成果です)。 -Essenの共同開発者やEssenの競合ソフトウェアを作った場合も、もちろん文句なく大いなる成果です。 -そんなイメージで考えています。・・・とにかく難易度は受講者のレベルに合わせますので、事前学習のための時間さえ確保してくれれば、何も心配はいりませんよ!(平均して、週に5時間くらいはほしいかな・・・試験とかがあるときはお休みでいいですよ、もちろん)。 ** Q&A -[Q] 上の[選考に関して]でとりあえずいったん早く提出してほしいって書いてありますが、それは最初の氏名や学年を入力するのを早くやればいいってことですよね? --[A] いいえ違います。その先の、ゼミごとの設問に答えるやつも早くやってほしいのです(再提出するつもりなら、ひとまず回答は少し雑でもかまわないので)。そこまでやってもらわないと結局こちらまでは連絡が来ないので、有利な評価をしてあげたくてもこちらでは判断できなくなってしまうのです。 -[Q] 代表作なんかないです・・・ --[A] ここでいう代表作っていうのは、世間に公開したものがあったらそれを書いてね、という意味では「ない」のでご安心ください。自分がこの言語で作ったものの中で、一番よくできたのは○○です、ちなみにかくかくしかじかの内容です、って書いてくれたら十分です!・・・誤解しやすい書き方でごめんなさい。 -[Q] Essenにかかわるとどんないいことがありますか? --[A] Essenは現在、開発を開始したばかりのフェーズにあります。この段階から関われば、初期開発メンバーに名を連ねることが可能です。川合は今までいくつかの開発をやってきたことがあり、それらは大成功ではないにせよ、小さな成功は収めています。その実績からいえば、Essenが大成功して従来のプログラミング言語を蹴散らすようなことは起きないと思いますが、でも何の成果も上がらないという可能性は低いように思います。いや、もしかしたらこれが川合の人生の最大の代表作になる可能性はあります(可能性だけですけどね)。・・・まあ一番ありそうなのは、Essenがまた小さく成功して、その成果が他の言語に取り込まれる、くらいでしょうか。そしてその取り込まれる際には、Essenを詳しく知る初期開発メンバーがとても注目されるでしょう。・・・私は、自分がやったことと他人に手伝ってもらったことを厳密に区別しますので、あなたを貢献をうばうようなことはしません。また就職の際に自分の貢献を明らかにするような推薦状を書いてくれと言われれば、もちろん事実に反しない範囲でですが、喜んで協力します。それが私にできる、貢献に対するせめてもの恩返しだと思うからです。 -(つづく) * こめんと欄 #comment