STEP QI SCHOOL BLOG SML#による最先端プログラミング言語コンパイラ開発研修

| STEP QI SCHOOL BLOG
どうも今晩は。コンピュータサイエンスコース3年生のStep-QIスクール受講生です。
僕はアドバンスド創造工学研修で大堀研にお邪魔し、smlsharpという言語の補助ツールの開発をしています。

smlsharpはStandard MLという古くから存在している言語を実用上重要な機能を拡張した次世代の関数型言語です。
特に重要な機能としてC言語とのシームレスな連携、というものがあります。
現在smlsharpは言語の機能として、C言語で書かれたライブラリから関数をインポートできます。
これは強力な機能でなにせC言語は歴史のある言語です。有用なライブラリが多数利用できます。

ですが、今のところこれらを利用するためにインポートの宣言を手打ちする必要があります。それをC言語のヘッダーファイルから自動生成しよう、という試みです。

自動生成すると、色々と良いことがあります。
まず人間の作業の手間を減らす、ということが当たり前にあるのですが自動生成によって信頼性を向上させる、というのも重要な側面です。
人間の手で書いたプログラムなんてどこに打ち間違えやら勘違いがあるかわかったものではありません。
ハンドメイドのものを喜ぶ文化なんてありません。自動生成にするよって、システムの信頼性を上げるという目的もあります。

というわけでスタートしたプロジェクトだったのですが、MLを用いた開発で規模の大きい(ソースファイルを分割する必要のある規模で)開発を行うのは初めてだったのでツールの使い方から開発方法まで苦労しました。
まずEmacsエディタのセットアップ、Linux-FamilyのOSのインストールから始まり端末の使い方まで。

Emacsはカスタマイズ性の高いテキストエディタで、独特の強力なショートカットコマンドが多数実装されており、主にUNIXユーザーの間で使われるツールです。
慣れると非常に便利なのですが、殆どの作業をショートカットコマンドで行うので慣れないと全然使いものにならないクセのあるエディタでした。
ツールの設定もLISPで行わないといけないところもあるし。

今ではEmacsのキーバインドにWindowsのメモ帳でC-aを押すと全選択になるのに一々イラッとする程度にまで慣れたのですが、スタート時は大変でした
なんで一般的なツールは全選択になっているのでしょうか、そんなに使うんでしょうか。
(Emacsでは文頭に現在位置を移動 というコマンドになっているのです)

Standard MLをコードの整形などサポートしてくれるツールがあるから、という理由でEmacsが選ばれているのですが、
今では殆どの時間をエディタと向かい合うことになる我々としては強力なエディタに慣れておくのは実用上重要で良い経験をした、と思っております。

研修自体は週一回集まって、受講生がその週で出来た成果を大堀研のスタッフの方々に見てもらう、という形式で行っています。
週一で何か必ず見せられるところまで作業しておこなければいけない、というのは大変で週に実験の授業が2回みたいです。3回くらい血を吐きそうになりました。
(知り合いの参加者が全員同じ事言っているので僕達だけじゃないと思われますが)
毎度指摘される部分が多々あり、そのたびにもっと頑張らねばなぁと思う次第です。

僕たちはサイエンス・インカレには参加しませんが、PPL2013にポスター発表で申し込み予定です。もうちょっと頑張ろうと常々思っております。

東北大学 工学部 電気情報物理工学科
〒980-8579 仙台市青葉区荒巻字青葉 6-6-05 青葉山キャンパス

© 2014 Department of Information and Intelligent Systems, Tohoku University All Rights Reserved.
「Step-QIスクール」は、東北大学工学部 電気情報物理工学科が運営しています。