DT日記

家を離れた自宅警備員の日記

セキュリティ&プログラミングキャンプ2011 プログラミング言語組に

応募資格がありませんでした。僕はもう去年度で既に22歳になってましたし。てへぺろ

今年のキャンプは行きたいんですけどね。なんと言っても今年は竹内先生の講演があります。

もう参加者としてチャレンジする権利がないので、去年セプキャンに挑戦したときの応募用紙を晒してみる。

当時の僕が何をコンセプトに応募用紙を書いたかとかのメモがあればおもしろいのだけれど、そんなものはありませんでした。

まあ、要求された事項に対して過不足なく回答した。つもり。

いま見ると、こりゃ語弊があるんじゃねえの、って表現も。いまも青いけど、当時はもっと青かった。

以下はメイルの本文全文をそのままコピペ。掛け値なしの無修正版。

プログラミングコース プログラミング言語組(言語組)に応募します。

  • -
「セキュリティ&プログラミングキャンプ2010」プログラミングコース プログラミング言語組(言語組) 応募用紙 氏 名(ふりがな) 宇佐美健太(うさみけんた) 性別 □男 生年月日および現在の年齢    西暦 1989年 1月 16日生まれ 現在 21才 所 属(学校,学科,学年)   北海道工業大学工学部情報ネットワーク工学科3年 住 所 〒063-0051 北海道札幌市西区宮の沢1条5丁目23番48号 M$むらかみ305 電話番号(昼間に連絡できる電話番号)    07056013604 E-mailアドレス(必ず書いてください)    fafnir127@gmail.com ホームページまたはブログのURL(ある場合のみ) ◎ セキュリティ&プログラミングキャンプ2010の開催を、何で知りましたか? □その他(OSC2010HokkaidoのLT) ☆ 前提質問(どちらかに○をつけてください) [A]言語処理系を作ってみたい、作りながら理解したいと思いますか? [はい] [B]CやRubyによるプログラミングに抵抗を感じますか?        [感じない] [C]キャンプの公式Webページの講義科目に記載された当組の……   [できた] ※以下の設問について、記述するスペースが足りない場合には別紙(書式自由)に書いて下さい。 1. この組を希望した理由を教えて下さい。また、とくに何を学びたいか教えて下さい。 プログラミング言語や処理系の実装にとても興味があります。 初めてプログラミング言語に触れてからしばらくの間は、コードを函数やサブルーチンに分ける程度で 構造的なコードが書けた、オブジェクト指向が流行ってるらしいけど良くわからない、などと満足していましたが、 大学生になって「ホームページ」的なJavaScriptから脱却して再び学び直すにつけ、 言語が本義ではない解説書では説明されないオブジェクトの意味、 無名函数などのJavaScriptのとてもおいしい要素を発見して魅了されました。 さらにRubyを触り始めて、その自由な言語仕様に見せられ、言語について深く知りたいと思うようになりました。 言語の実装に興味がありますが、特に性能のチューニングに非常に興味があります。 2. プログラミング歴を教えて下さい。また、今までに作ったプログラムや今作っているプログラムがあれば、差し障りのない範囲で教えてください。 初めて処理系に触れたのは中学生のときで、ゲーム制作に使用したSRCといふツールがVB(≦6)ふうの言語仕様でした。 プログラミングではありませんが、そのとき同時に初めてHTMLとCSSにも触れ、高校時代はStrictなHTMLばかり書いていました。 高校に入学してDDIポケットAH-K3001Vを入手し、JavaScriptに触れ、組込みのOperaで動作するbookmarkletやゲームの習作(未公開)を書きました。 AH-K3001Vや後継のWX310Kbookmarkletやprompt/textarea,evalを利用してどこでもJavaScriptが実行できたので、学習に役立ちました。 また、この時代にひまわりとバッチにも触れ、ファイル操作など作業用のスクリプトとして活用しました。 フリーの掲示スクリプトを設置するためにPerlも多少触れましたが、パラメータや条件判断を多少変更した程度でした。 無償版のDelphiでアプリケーション開発に挑戦したこともありましたが、基本まで学んだところで時間が確保できず挫折しています。 大学で電子計算機研究部に入部して部活動の講座で基礎からCを学びました。 この講座中に先輩との個人的な雑談で、Cのsizeofが函数ではなく演算子だと知ったことが言語仕様に興味を持った契機だったように感じます。 部活動では一年めの夏にアクションゲーム(C++/DirectX)のプロジェクトに参加し、敵キャラクターの動作を実装しました。 この後アルバイトとの兼ね合いで一時部活から離れましたが、ほどなく復帰して部活のWebサイトの管理担当に回りました。 二年めの春からは新入生にCを教える側になり、再び言語仕様に関する興味を持ちました。 また、WindowsMobileで利用していたMZ3.iというアプリケーションがLuaでの拡張に対応したことでLuaに興味を持ちました。 この頃からLuaJavaScriptの比較によって、オブジェクト指向的なものを意識し始めたのだと思います。 また、大学から供給されている正規ライセンスのVisualStudioがあるのでC#を少しずつ学んでいますが、まだアプリケーション作成には利用していません。 Rubyは興味を持ってたまにリファレンスを読みながらirbで遊んでいましたが、今年の春にゼミ配属され、その際に研究テーマとして遺伝的アルゴリズムを選択し、自分の判断でRubyを開発言語に決定しました。 いままでに自分が作成したプログラムで、作品と呼べるものは ・中学生の頃にHSPで作成したアプリケーションランチャー (ソースコード、バイナリ紛失) ・中学生の頃にSRCで制作したゲーム(シミュレーションRPG、制作中止) ・高校生の頃に制作したAirH"Phone向けポータルサイト(公開終了) ・大学の部活動で制作したアクションゲーム(C++/DirectX) ・PHPで開発したソーシャルブックマーク(オリジナル、現在停止) ・Rubyで開発中の遺伝的アルゴリズムクラスライブラリ です。 3. 今自分が使っているプログラミング言語の不満点を教えてください。また、それを改善するアイデアがあれば教えて下さい。 C/C++では函数内で函数を定義できないことが不満でした。 個人的にはRubyC#でコードを書くので最近は大学の課題以外でCを書く機会はほぼありませんが、 C++0xでラムダ函数/ラムダ式が採用されたことは大変喜ばしく思います。 しかし私はC++はほぼ全く知らず、専らPure Cでコードを書くので、 CにもJavaScriptと同様に簡潔に利用できる無名函数/函数リテラルが欲しいところです。 4. プログラミング言語組では、みなさんがプログラミング経験者であり、RubyC言語についての最低限の知識を持っていることを参加条件としています。この条件を満たしていることを、具体例を挙げてアピールしてください。 いままでにRubyで書いたコード量はそう多くありませんが、仕様を調べながらクラスライブラリを設計・開発しました。 その際に、コードを書きながら特徴的だと感じた要素を列挙します。 ・全ての値はオブジェクトである。 ・メソッド呼び出しに括弧が必須ではない。 ・そのために、あたかも演算子のようにメソッドを呼び出せる。 ・そのために、異なるクラスのオブジェクトとの演算も、呼び出し元のクラスにメソッドとして定義できる。 ・メソッドには引数リストとは別にブロックが渡せる。 ・制御構文、イテレータメソッド、修飾子で反復を記述でき、当意即妙にコードを表現できる。 ・全てのメソッドはオブジェクトに付随し、函数は存在しない。(defで作成した位置のselfに付随する) Cについてはあまり経験がないので初級者の域を出ませんが、上記のRubyと対比すると ・Cでは全ての値の操作はメモリ上の値の操作である ・函数の呼び出しは引数のない場合でも括弧が必須である。 ・C++ではクラスの演算子オーバーロードすることで独自の演算子を実装できる ・そのため、異なるクラスのオブジェクトとの演算も、呼び出し元のクラスにメソッドとして定義できる。 ・反復は基本的に制御構文で行うが、STLイテレータが用意されている ・オブジェクトに付随するメンバ函数は存在するが、函数はオブジェクトに付随しないことができる。 実際のCの開発能力としては ・C入門書程度、ただし  ・*allock函数などのメモリ操作は知識がありません  ・構造体、共用体などの知識は乏しいです 5. そのほかアピールしたいこと、書き足りないことがあれば自由に書いてください Rubyに興味を持ったのは二年ほど前ではあるものの、 実際にコードを書き始めたのが半年ほどと最近なので非常に出遅れたと感じております。 いままで独習で専門家から直接指導を受ける機会はなかったので、今回を機会に専門知識を深めたいと思っています。

伏字しようと思ったけど、もう住んでない住所だし良いや。誕生日プレゼントください。

ちなみに、この応募用紙中にある「Rubyで開発中の遺伝的アルゴリズムクラスライブラリ」は、計画が頓挫した揚句にむしゃくしゃしたので全コード破毀しました><