Myプログラミング遍歴
自分がどのような経緯でプログラミングに興味を持ったのか振り返ってみました。
機械いじりはやたらと好きだった記憶はある。
電子ブロック(学研「大人の科学」の付録)で電子工作に触れる。
機械に興味があったが、プログラミングには触れていなかった。
数学が好きだったために。地域の数学キャンプみたいなのに参加してみたところ、自分より遥かに頭のいい小学生がいて絶望した。
彼は今何してるんだろうか…
スーパーマリオメーカーの3DS版が出たのをきっかけにマリオメーカーにはまる。コース作成の拡張性の高さから、四六時中コースのギミックを考えていた。全然関係ない話と思われるかもしれないが意外と計算機科学に関係あったりもする。
スーパーマリオメーカーはチューリング完全 @第15回日曜数学会
詳しくは、ニコニコ動画で「マリオメーカー学会」と検索して欲しい。
「理数科」に入る。みんなそれぞれ好きなものを持っていて、数学とか物理とか化学とか何をとってもすごい人がいた。いまだにこのクラスの人たちとは仲良くさせていただいている。
課題研究
理数科では「課題研究」という活動があり、その中でプログラミングに触れた。
最初はRaspberryPi
を使って音声認識デバイスを作ろうと考えていたが、挫折する。
(その後ラズパイは自分がいじってる間に壊してしまいました。すみません)
研究テーマを「ディープラーニングを用いた硬貨の判別」に変えて、Python
とTensorFlow
を利用して硬貨の分類を行うAIの開発を目指した。今考えるとあまり出来は良くなかったが、機械学習に関してある程度の知識を身につけられたことは非常に有意義だった。
この活動を通じてプログラミングに興味を持ち、情報系を志望するようになる。
友達とカラオケにこもってひたすらデータセットの作成とコーティングをしていたのはいい思い出。
その後
特に新しい言語を始めることもなく、競プロとかKaggleとかにも手を出していなかったのでひたすらPython
に打ち込む。できることがかなり多い言語なのでネタには困らず、matplotlib
でグラフのアニメを作ったり、スクレイピングをしたりとさまざまなライブラリを試してみた。
いろいろと作っているうちに、プログラミングの本質とかアルゴリズムとかに興味を持つようになる。
受験生になってもプログラミング熱は冷めず、勉強の息抜き(現実逃避)としてプログラミングを続けていた。
休校期間
志望を名古屋大学情報学部に定める。この話はまた別の機会に。
この頃はO’Reillyのゼロから作るDeepLearningでディープラーニングの実装を勉強していた。この本は結構面白いのでおすすめ。読んでみたい方にはお貸しいたします。
その後
物理で勉強した電場と磁場のシミュレーションをやってみようと思い立つ。苦節の末生まれたのがこれ。

面接の際にこのことを話したから、この経験はかなり役に立ったんじゃないかと思う。
春休み
Pythonによるアルゴリズム入門でアルゴリズムとデータ構造の勉強を始める。推しソートはマージソート
1年生
今まで、基本的に独学だったので、プログラミングができる友達ができたのは大きなモチベーションになった。
NUOCW
「名大の授業」のバイトを始め、web系に携わるようになる。サイトを作った経験は全くなかったので、非常に勉強になる。
今までgit clone
くらいしか使ったことのなかったgit
や、プログラミングで最もめんどくさい「環境構築」を一瞬で出来るdocker
とか色々な技術を学んだ。
LaTeX
授業の課題で触れたのだが、Wordの弱いところ(数式が書けない、見た目の微調整のためにスペースを使うと違う環境で閲覧した時にレイアウトが崩れるなどなど)をうまく補えるため、始めて使った時は感動した。
環境構築がめんどくさかったり、エラーメッセージがわかりづらかったりと不満も多いが、理系ゴコロをくすぐられるかっこいいドキュメントは一度知ってしまうとやめられない。
AtCoder (C++, Python)
今まで勇気が出ずにやってこなかった競プロを始めてみる。これを機にC++
を勉強してみようと、C++入門 AtCoder Programming Guide for beginnersを進める。基本的な文法は分かったが、ポインタとかの概念はいまだにあまり掴めていない。
その後、書き慣れたPython
にもどって修行している。現在はAtCoder 版!蟻本 (初級編)の問題を少しづつ進めている。
Wolflam言語
Wolfram言語が使えるようになった!(mac編, ビッグバネイト)
上の記事を参考に、憧れのWolfram
を手に入れた。Python
もデータ分析には強いけど、Wolflam
はさらに色々なことができて感動。
今後使い道が増えそう。
Haskell
夏休みに入って新しく始めた言語。関数型言語には前から興味があったが、手をつけられていなかったため初挑戦。(Wolflam
も一応関数型だけど)今までやってきた手続き型言語とは全く異なり、文を書く順序に全く影響されないコードは新鮮だった。書き方は全然違っていても、最終的に生成されるバイナリの挙動はC
などと変わらないというのも不思議。
PythonとHaskell、実装比較
Pythonでの実装(手続き型での一般的な実装)
1 | def merge(arr1, arr2): |
Haskellでの実装
1 | merge :: (Ord a) => [a] -> [a] -> [a] |
RaspberryPi
でIoT開発- コンピュータシミュレーション・数値計算
- 微分方程式の勉強
Julia
とかR
とかを使ってみたい
- 圏論(
Haskell
関係で) - 計算機科学
- いろいろなアルゴリズムの勉強
- 最適化? (いまだにどういうことなのか分かってない)
- Kaggleでデータ分析(まだチュートリアルしかやってない)
最後に
今後もさまざまなことに興味を持って精進してまいりたいと思います。
触発されたサイト↓