seccamp2017
のバックアップ(No.4)
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
バックアップ一覧
差分
を表示
現在との差分
を表示
ソース
を表示
seccamp2017
へ行く。
1 (2017-03-28 (火) 14:53:10)
2 (2017-03-28 (火) 16:33:13)
3 (2017-03-29 (水) 20:11:00)
4 (2017-03-30 (木) 06:45:33)
5 (2017-03-30 (木) 21:50:50)
6 (2017-03-31 (金) 00:47:07)
7 (2017-03-31 (金) 21:22:53)
8 (2017-04-01 (土) 22:01:24)
9 (2017-04-06 (木) 16:58:11)
10 (2017-04-08 (土) 07:50:55)
11 (2017-04-08 (土) 07:50:55)
12 (2017-05-01 (月) 18:24:22)
13 (2017-05-08 (月) 14:56:24)
14 (2017-05-11 (木) 23:39:22)
15 (2017-05-17 (水) 23:45:14)
16 (2017-05-30 (火) 22:02:45)
17 (2017-05-30 (火) 22:02:45)
セキュリティキャンプ2017用の特設ページ
(by
K
, 2017.03.28)
↑
基本情報
タイトル: 自作言語ゼミ
タグ:
時間帯: 3日間連続
概要:
必要機材: PCのみ
事前学習:
↑
(1)背景情報
現在、講師である川合はプログラミング言語を作っています。川合はC言語を入門者に教えた経験があり、その際に「こんな仕様だったらもっと教えやすいのに」と感じたことが多かったので、開発当初は初心者向けの言語を想定していました。
しかし作っているうちに、初心者だけではなく上級者にとっても十分に役立つ言語にしたいと思うようになり、欲張りな仕様になっています。
ちなみに作っている言語は「Essen」(えっせん)という名前です。
どんな言語にしたいのか?
全体としてはC言語みたいな言語
(でもコンパイラではなくインタプリタ)
変数の
宣言をしなくても代入できる
でも
宣言をすることもできて
、その場合は、その型に適合しないものを代入しようとするとエラーになる(実行時エラー)
これは関数の引数とかで引数ミスを検出したいときなどに有用
セミコロンを付けなくてもOK
な言語(ちなみにつけてもいい)
a = 1 b = 2 // こんな感じで書いてOK
実行速度は速くない
しかしインラインC言語とか、インラインRubyなどを使うことができて、だから速度が必要なときは、他の言語に逃げればいい。ほとんどの既存の言語に対してインライン記述が使用できる。
でも実はインラインRubyとかがうまくいくかどうかちょっと自信がない。
もちろんRubyなどを私が実装するわけではなく、インライン部分を切り出したファイルをその都度自動生成して、system関数などでRubyを実行し、その結果をファイル経由で受け取って、実行を続行するという方法。
C言語は関数を自由に作ることができる、C++なら型(クラス)だって自由に作れる。これに対し、この言語では
演算子や制御構文も自由に作れる
。
変数については
永続変数をサポート
しているので、ファイルやデータベースの知識がなくても、データを保存することができる。
永続変数というのは、プログラムを終了しても消えない変数のこと。PCの電源を切っても、また電源を入れて言語を起動すれば、変数の内容は戻る。
↑
(2)キャンプでは何をするのか
キャンプで学生がやることは以下のことを想定しています。当日でも事前学習でもほぼ同じことをやります。
[ユーザコース]
川合が上記の言語を作るので、その言語を使ってみて、使いやすいところ使いにくいところをどんどん指摘してください。
また「ここはこうできたらいいのに」と思うところがあればそれも是非教えてください。実現可能でいいアイデアだったら採用します。
バグやセキュリティホールを見つけたら教えてください。がんばって直します。
このコースの場合、この言語を使って何かプログラムを作って、それを感想と共に発表するのがゴールです。
[開発者コース]
川合が作る言語処理系を直接改造して開発を手伝います。これをやりたいのならC言語の知識が必要です。
このコースの場合、どれだけたくさんの改良提案ができたかがゴールになります。
[ライバルコース]
学生は川合のライバルとなり、オリジナルの言語を開発します(もしくは既存言語を改造します)。
このコースの場合、自分のオリジナル言語をある程度完成させて、川合の言語よりもここがすごいんだぜ!と自慢できるようになるのがゴールになります。
これらのコースは固定ではなく、学生は自分のスキルや関心に応じて、自由にコースをまたいで学習していきます。
↑
(3)セキュリティは?
この講義ではセキュリティは主たる要素ではありません。まずはプログラミングです。
そして言語にはバグやセキュリティホールがきっと出てくると思います。そうしたらそれを題材にして、これはどうしたらいいのかを考えてもらいます。
一般にセキュリティホールをつぶすと、不便さが増します。それはいいことなんでしょうか。セキュリティと便利さを両立させる方法はないでしょうか。開発者であれば、是非その視点を持ってほしいです。
↑
(4)どんな学生に受講してほしいのか
プログラミングが大好きな学生
そうでなければ始まりません! ちなみにセキュリティに関する知識は応募時点では一切不問です。
得意な言語はなんであっても構いません。
プログラミングが大好きで、前からこの言語はここが不便だと感じていたんだよなー、みたいになんとなく思っていたら、きっとこの講義は心底楽しめるでしょう。
事前学習に時間が取れる学生
試験期間(の前後)や修学旅行などの時期は事前学習を完全にお休みしていただいて構いませんが、それ以外は1週間あたり5時間くらいは事前学習に費やしてほしいです。ですからたくさんの塾を掛け持ちしていて忙しくてたまらない、アルバイトが大変すぎる、部活動が大変すぎて時間がない、という人は、申し訳ありませんが他の講義を選択してください。
自宅もしくは学校にPCがないと事前学習ができないと思います。持っていなかったらごめんなさい!
優秀な学生じゃないとだめですか?
もちろん優秀な学生は大歓迎ですが、しかしそれほどには技術力がない学生にも来てほしいと思っています。だってこの言語は初心者向けでもあるんです。上級者ばかり集まってしまったら、意見や感想が偏ってしまうかもしれません。でも「どうせ自分はできないから~」みたいにあきらめてしまう人は楽しくないので、熱意とやる気にあふれる人がいいです。是非どんどん学んで、追い抜いてください。