Photo by Ilya Pavlov

 最近、printfの使い方というか、意味というか、そういうものをようやっと知ったので、書いておきます。

広告

printfに触れたときはC言語を学習していた

 まず、printfという類の関数に最初に触れたのは、C言語を勉強していた時です。
 基礎の基礎を習得するために、ぽちぽちやっていたんですよね。
 でも結局、「%dがintの位置になって、それで…えーと?」という感じでした。C言語ではStringの扱いが分かりづらいなど、煩雑にいろいろと考えねばならないことがあったからか、さっぱり色々わかってなかったです。

Javaではprintfを使用しなかった

 次に、Javaでは基本的に、printfを使用しませんでした。文字列結合で結合してそのまま出力関数に放り込んでいました。StringBuilderとtoString関数の合わせ技によるものです。
 どうやらPrintf系っぽい関数はあったようなのですが、なしでも済んでしまったのです。

Golangにて

 Golangは簡単ですが、原始的な関数も含まれたプログラミング言語です。
 シンプルですがGitHubなどからライブラリが拾えたりしますし、元々の機能もなかなか良いので、最近よく使うようになりました。

 ただこのGolang、暗黙の型変換がほぼないに等しいので、出力を加工するのに文字列結合ではやや苦戦するように。
 それで、fmt.Printf()という形で、Printf関数を使用するようになりました。
 で、気づいた。
 こういう関数だったのか、と。
 過去、%dとかフォーマットとか聞いてた記憶がぶわっと蘇りまして、ここに書いた次第です。

原因を考える

 色々原因はあると思うのですが、とりあえず主要な二つを挙げておこうと思います。

  • プログラミングになれておらず、理解度が低かった
  • なまじ基本的すぎる言語から始めてしまったため、覚えることが多すぎて埋もれた

…フォーマット、というのもぼんやりとしか理解していなかったように思いますので、多分、この2点でしょう。
 もしかしたら、少しだけ機能のそろった高級な言語からいろいろやってみたほうが、理解度は上がるのかもしれません。ただ、あんまり高級な言語だと低レイヤのことをやるときに理解しにくいかもですので、それを考えると、Goとか、それなりに低レイヤをいじれる言語のほうがいいのかしら。

結論: 後になって理解することが結構ある

 プログラミングの基礎としてC言語を学んだとき、一応習っていても脳にぼんやりとしか理解させられなかったものを理解することが結構あります。
 関数の戻り値についても、Javaをやりはじめてようやっと「ああ、こういうことか」となったぐらいです。C言語ではvoidとかmainってなんなんだろう、と思っていました。
 あとGolangのexeの引数取得とかも、C言語の時はややこしさ爆発だと思っていたのに、いまとなればなんとすんなり飲み込めることか。
 学習にはやっぱり時間がいるんだなあ、と思いました。…それともこれ、私の理解がやっぱり遅いのか…。

広告

関連コンテンツと広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA