僕はアセンブラと呼ばれる低級言語の出身者。人間より機械(CPU)が理解できる側の言語。大学の研究室〜社会人8年目までアセンブラですごしてきました。

そんな僕が高級言語(Javaに触れるのが普通の時代)に関わることになったとき、全く理解できなかったのが「new()」というもの。「クラスからインスタンスを作る」ということが全くイメージできませんでした。

アセンブラは手続き型言語でコードの上から下に向かってだーっと処理されていくだけ。なのに高級言語ときたらコードの途中でnew()してインスタンスにアレコレさせる。意味がわからない(笑)

 

DP1M1125

 

という時期がしばらくあって、いよいよ「高級言語なんか嫌い」が決定的になるかな〜ってとき突然インスタンスがわかりました。あくまで僕の脳内イメージなので、正しいことかはわからないけど「こういうことだ」ということが理解できました。

 

僕は社会人8年目まで某鶴のマークの空飛ぶアレのシステム屋さんしてました。

そこの開発言語はそっちの世界専用のOSとアセンブラ。業務上、全世界365日24時間フル稼働が必須の汎用機。その上でコードを書くにはその汎用機(のOS)の仕組みもある程度知っておく必要があります。

例えば「3月7日の401便の空き状況を教えて」というコマンドを入力したとき、汎用機(のOS)ではその処理に必要なメモリ空間を確保します。「空き状況を教えて」の結果が表示されるまでめちゃくちゃたくさんのプログラムを経由します。

その間、確保されたメモリ空間はあって、そのメモリ空間上でアレコレしてる。

 

「あ、これか」と思いました。

 

  • クラスからインスタンスを生成してアレコレさせる
  • 「空き状況教えて」からメモリ空間を確保してアレコレさせる

厳密には違うかもしれないけど、僕のイメージではこれがぴったりフィット。インスタンスが生成されることの理解が急激に進みました。イメージできるからプログラムの流れも理解できる。

もっというとmacOSなども根本は同じ仕組みなんだろうな、ということから、どんなOSもアプリも内部的にこう動いているんだろうなぁというイメージまでできるようになりました。

 

DP1M1122_FOV

 

おわりに

社会人8年目で転職し、低級言語から高級言語を使う会社へ。15年目でフォトグラファーへ転身。でも、プログラミングは好きだし、つくりたい。そのための勉強も始めています。

►参考:PythonでWebサービスをつくりたいからUdemyでコツコツ勉強中

 

Pythonは高級言語に位置するものでクラスやインスタンスのある言語。実際にクラスを作ることの利点は(まだつくり慣れていないから)わからないけど、これまで経験してきたことはつながっているので、なんとなくわかるし、わかっていけるし、どんどんわかりたいと思ってる。

こういうことが腑に落ちていると、過去を「結局はよかった」と解釈できるようになります。

これからもたくさんのプロセスはあるでしょう。プロセス真っ只中にいるときは苦しく感じることでも、しばらくして振り返ると「結局はよかった」って思えることもたくさんあると思う。

だから、今やりたいこと、今好きなことをどんどんやっていこう。

 

DP1M1124a

この記事を書いた人

花村貴史|Takashi Hanamura

◆Photographer|木漏れ日や水、空が魅せるきらきらが好き|写真を通じて「やさしい世界」を伝えてゆく ◆Software Engineer|Private: Go/C++/WebGL|Work: SAP/SAC

写真素材note発売中

継続課金マガジンで販売しています。ブログに載せるもOK、壁紙に設定するもOK、使い方は自由です。フリー素材も良いけれど、人と被りたくないという方に人気です。

人物写真|Photo Session

お話しながらのポートレイト撮影です。「今」そして「これから」のあなたにフォーカスして撮影します。SNSやサイト用のプロフィール写真に。

イベント写真|Photo Shooting

「友達と楽しんでいる」「セミナーで講演している」「パーティーを主催している」など、皆さんが大切な時間を過ごしている瞬間をスナップします。