OSC2016 Hiroshimaの記録

2016年11月29日 0 投稿者: khws4v1

11/25 サロンカーあかつき

803
サロンカーあかつき

翌日LTやるというのに、深夜の広島駅で撮り鉄しました。
なぜLTの準備をやらなかったのかコレガワカラナイ。
3時間くらい場所取りして寒い中待機してたので体力がかなり削れました。
サロンカーあかつきの前には広電の撮影にも逝ってたので完全にヤバイ。
この日は最終電車で帰宅し、26日の午前2時に寝ました。

11/26 前日イベント・学生LT大会

トワイライトエクスプレス瑞風 試運転
工8380レ EF65 1133

イベントは午後なので午前は暇なのですが、午前中に「トワイライトエクスプレス 瑞風の試運転」と「工8380レ」を撮りに行ってしまったので、LTの準備はできませんでした(仕方ない)。

こんなことやってるから会場には若干遅れて到着してしまいましたが、自分の発表は後だったのでまだよかったですね。
当日は香川大学工学部の学生がかなり多かったですね。
SLPというサークルの活動として広島まで来ているようで、僕としては

サークル活動の悦びを知りあがって!お前ら許さんぞ!
サークル活動の悦びを知りあがって自分たちばっかし、俺にもさせろよ!グギィィィ!

って感じでした。

自分の発表ですが、ぶっつけ本番でしたので、トラブルだらけで死にました。
こういうこともあろうかとPC2台持ち込み余裕でした。
頭のCPU使用率100%なので、細かなことに気を配れず、「次は頑張ろう」という感じです。

それにも関わらず、ネタ自体は捨て身覚悟の自虐ネタなので、なかなか皆様の印象に残ってしまっていたようです!
大学の先生にバレたらヤバイ。
でもせっかくなので、発表ネタの詳細をじっくり解説していきます。

発表ネタの解説

フィルムの日付

写真用フィルムは使用期限があり、それの日付です。

拡張子「.cpp」

C言語のソースファイルを「.cpp」にするのは即刻中止せよ!というネタです。
実際に僕が通っている大学では「.c」の代わりに「.cpp」で保存・コンパイルを行っています。100%実話です。

ここでは「.c」を「.cpp」にするとどのような実害が発生するのか解説していきます。

数学関数のオーバーロード

これはおそらく古いVisual C++限定で発生する問題です。
<cmath>ではなく<math.h>をインクルードしたのに、引数にdoubleを取る関数にintなど、doublefloatに暗黙的にキャストされる型の変数を入れるとエラーになるというものです。
ちなみに新しいVisual C++では発生しません。

これはC言語の標準ライブラリのヘッダをincludeでしているのに、C++の標準ライブラリのヘッダをincludeしてしまっているので発生します。
実際に<math.h>を見ると、関数がオーバーロードされています。
intfloatでもdoubleでもlong doubleでも暗黙的なキャストができうるのでエラーになります。

このエラーは1番出現率が高いです。
C言語にはない「オーバーロード」という単語がエラーメッセージに現れるので混乱してしまい、授業が遅延してしまいます。
出現率・実害共に申し分ありません。

解決方法は

  • 古いVisual C++を使わない
  • 明示的にキャストする
  • 正しい拡張子(.c)に修正する

のどれかです。

型チェック

C言語はvoid*から各種ポインタに暗黙的にキャストできますが、C++ではエラーになります。
malloc関数を使うと100%このエラーが問題になりますが、授業では一切触れないのでスルーされています。

解決方法は

  • 明示的にキャストする
  • 正しい拡張子(.c)に修正する

のどれかです。

戻り値の型

C89(ANSI C)では戻り値の型を省略すると、暗黙的に戻り値の型がintになります。
C++では戻り値の型は省略できないのでエラーになります。
ちなみに、C99やC11でもエラーになるので、どちらかというと省略してしまう方が悪いです。

大学では古い授業の資料が使いまわされており、その資料で出現します。
コードをそのまま写すとエラーになり、学生を混乱に陥れます。

書いた本人ですら分からないマジックナンバー

例えばじゃんけんで

  • グーを1
  • チョキを2
  • パーを3

として表現してプログラムを書いた時に、1がグーなのかチョキなのかパーなのか分からなくなってしまうことです。

1という数字を見てグーだということが分かるわけないし、プログラムが複雑になったり、種類が増えると頭で覚えることが困難になります。
可読性も下がってしまい、授業の資料みたいに何年も使いまわすとなると大変です。

こんなことになるなら、enumを使うべきだし、それができなくても#defineで定数を宣言することは授業でやったので、それを駆使するようにすればマシになっていたはずです。

strcat関数

こんな感じでstrcat関数でちまちま文字列を連結するコードです。
ちなみにsprintf関数なら1行で文字列を連結できます。
sprintf関数は出てきていますが、あくまで「整数を文字列に変換する関数」として出てきています。
なお教わった学生が真似してしまっている模様

C99が使えるならsnprintfのほうがいいです。

乱数生成

1秒間に何回もシード値として現在時刻を入れていたので、プログラムの起動時に1回だけにしました。
乱数生成エンジンもstd::mt19937にしたし、std::uniform_int_distributionも使ったので、元のプログラムより乱数の質がずっと上がりました。
rand() % nとか論外ですからね。

11/26 前日祭

無限に🍺と🍣を補給しました。
しかも同じ世代の学生と技術系の会話をして通じるとか最高かよ。
その上に学生無料とかここは天国か?

11/27 OSC 広島

回9341M 岡オカD-03編成

岡オカD-03編成の幡生入場回送があったので撮影してから参戦。

osc16hi_panorama

ちまちま撮影する体力が無かったのでパノラマ撮影してみました。
部屋の明るさにムラがあるので結構キツイ。

こういう勉強会の発表って、大学での公演と違って、レポート書きながら聞くことを強制されないのがいいんですよね。
面白い発表だと聞き入って、聞きながら書けないし、書いてると話を聞けないし・・・。
入出力が同時にできない僕みたいな人にとっては最高ですね。

集中力持たない人でも、おしゃべりに時間を費やすことが許されるのもポイント。
3時間連続で話聞かなくてもいいんです。

11/27 懇親会

無限に🍺を補給しました。
うまいもの食いながら会話ができるとか最高か?

11/27 二次会

無限に焼酎を補給しました。
ちなみに終電逃してしまいそうになりました。結構アルコールを摂取したつもりだったんですが、普通に全力ダッシュできるもんなんですね。

11/28 サロンカーあかつき

深夜に撮影。
寝たのは午前3時を過ぎてから。
睡眠時間は3時間半です。
死にました。

まとめ

  • 撮り鉄をやめろ
  • LTの準備はちゃんとやれ
  • バックアップは重要
  • サークル活動に嫉妬した
  • 技術系の話が通じる喜び
  • 無限に飲食した
  • フィルムカメラは学生には通じないけど、大人には通じる

普段は水しか飲まないので飲酒に関して知識が皆無なのがちょっと辛い。
同情するなら金をくれ。