Zli 2021大LT冬(2021-12-11)で発表したLTのスライドです。
言語を自作する勉強会を開催してみた大LT(2021-12-11)sou7 / soukouki
View Slide
おはようございます!!!昨日の夜から快活にこもってLTスライド作って、家に帰って仮眠していたら寝坊しました2
13時4分のツイートです3
自己紹介学部1年のsou7/soukouki です。最近はプログラミング言語の構文とか型とかに興味があり、夏休みには自作言語のインタプリタとか作ってました。次はコンパイラ制作に挑戦してみます・・・!今回はみんな大好きVSCode上で発表したいと思います。4
MarpはいいぞこのスライドはMarpを利用して作成していますマークダウンから発表用のスライドを作成できてとても便利!スライドの見た目の変更にはCSSを利用でき、なんとアニメーションまで使えちゃいます!5
ちなみにこのスライドのマークダウンファイルはこんな感じです6
各種アカウントTwitter Discord GitHub@sou7_ _ _ sou7#0094 @soukouki7
勉強会の概要期間 11月の末からクリスマスまでメインターゲット ある程度自在にプログラムの書ける学部1-2年生参加者数 10人回数 4時間 x 5回講師とTA 講師1人(私) TA2人(ERASER, matumoto)実装言語 JavaScript計5回の勉強会の後、冬休みの間に自由に機能を拡張/新規してもらい、冬休み明けに発表してもらえると嬉しいな―、と計画しています8
開催した動機プログラミング言語の構文とかについて興味があるけれど、言語について詳しくやってる友達がいない・・・悲しい・・・9
いないのであれば、作ればいい!自分好みの友達を育成していくゲーム10
なんと自分で勉強会を開くと、不思議なことに勉強会で伝えた分野の知識を持った友達が量産できるんですね!!言語を自作する勉強会を開いて、言語自作仲間を増やしちゃおう!!!11
勉強会の流れすべてを一から実装!!12
・・・だと難易度が高すぎるため、こちらで機能の少ないインタプリタを用意した上で、機能追加を通して学ぶ形にしてみましたメインは演習において、たまに講義を交えつつひたすら改造していく流れです13
到達目標インタプリタの処理系の作り方を把握し、自身で新しく処理系を実装するための知識を得て、最終課題では自分で新たな構文を実装できることを目標としています参加者の人が考えてくる構文をとても楽しみにしています14
具体的な内容字句解析構文解析(再帰下降構文解析 / PEGパーサー)評価(抽象構文木上をたどって実行する仕組み)環境15
第2回までの感想直接感想を聞いている限りは、割と良い反応が多いです実際、一回一回が長時間に及ぶ勉強会の割には、脱落した方は今の所いません参加者が皆プログラム組むのが好きなだけかも知れない・・・?少人数のためにフォローアップがしやすいのもあるかも知れません講師としてはかなり手間がかかっている点はありますが、自分の好きな分野の話が無限に語れるので、けっこう楽しいです16
参加者への良い影響言語の処理系に対する知識言語についての知識だけでなく、実装を通してプログラミング全般への知識が深まっているコンピュータについての基礎的な知識(改行文字と \n の違い)開発に必要な知識(Git, ESLint, TDD)JavaScriptの構文の知識17
自分自身への良い影響インタプリタを作る機会ができた夏休みの最初に作ったインタプリタはバグが多すぎて辛かった(多分まだ見つけてないだけで大量にバグがある)友達に言語の知識を前提とした質問ができるようになった気軽に「〇〇言語の if って式?それとも文?」と聞ける!実績として使える自身のアイデンティティーの確立(言語自作の人)18
もっと広い分野への影響しんぶんぶんくん・直也先輩主催のAizuHackに続く勉強会だったので、勉強会を開くムーブメントがUBIC界隈で起きている気がしますERASERくんは早くTypeScript/React勉強会を開きましょう!jimang先輩のRust勉強会、期待してます!19
自分自身への悪い影響絶起常習犯落単(課題とテスト適当にやりすぎた)20
反省点エコシステム化などは全く考えていないので、継続して取り組むことは難しい説明をスライドではなく、対面での説明で行っているため、自習用の資料として活用することが困難参加者のレベルに合わせられるという利点もあるので、一概に悪いとは言えなさそう微積分27F21
まとめsou7先生のQ3の累積GPAにご期待ください!!!!!22