日記 2018年11月18日
17、18と研修に行ってきて、今帰ってきました。なんで、ポインタのまとめはまた後日に…
研修の内容ですが、かんたんに言うと留学生と一緒に電力会社の見学をしてきました。最近、愛媛にある伊方原発ではまた裁判が始まったり、色々問題視されている原発も見てきました。第一印象としては、しっかり福島の反省はできているという印象でした。
それで、こっちが本題です。留学生との交流ですが…
これがものすごい楽しかった! それと同時に…
あれですよ。やっぱり若いうちから国外に行ってまで勉強しようとしている人たちですよ。もう…比べたら、本当に自分が惨めになってきますよ。情けない。
英語でコミュニーケーションができないとかじゃなくて(できたとは言っていない)、考え方の規模というかなんというか。
たかだか国内の長期インターンに参加するかどうか迷っている自分とはエライ違いでした。
そうだよなぁ。迷ってる時間はもったいないよなぁ。
ということで、今3社ほど申し込みました。大学が地方だから休学しなくちゃ。あとは親の説得だな。
YouTubeを課金なしでバックグラウンド再生!
YouTubeを課金なしでバックグラウンド再生!
どうしてポインタを使用するのか
c言語を勉強する人にとって、ポインタというものは万人共通の壁であることはまず間違いないでしょう。
私の通っている大学でもポインタだけテストの点が10点近く下がるという事態になりました。
そんな難しいとされているポインタですが、これを学習しながら少ない人がこう思ったでしょう。
・・・どうしてポインタを使う必要があるのか・・・
(まぁ、私がそうだったので...)
と、言うことでポインタを使うメリットをまとめてみます。
1.効率的!
実は、小規模のプログラムであればポインタを使わずにもコードを書くことはできます。
ですがそれは現実的ではなく、またひどく複雑で無駄の多いコードになります。
(テトリスですら作りたくないですね)
そこでポインタを使用することによって出来るだけ無駄を省いたコードを書くことができるようになります。
(なぜポインタが効率的なのかは主ではコードで例を示さなければ不可能です...sorry.)
2.速い!
普通に考えてプログラムの処理は速いほうがいいでしょう。スマホの起動が遅かったり、Webブラウザの読み込みが遅かったらイライラするでしょう。
ポインタによる表現は低レベル(ハードウェアに近い)なので、コンパイラが容易に機械語に変換することができます。
それでいて負荷はポインタを使う場合と、使わない場合で変わらないという事実もあります。
3.メモリの無駄遣いを防ぐ!
プログラムは計算のためにメモリを使用します。しかしメモリの容量は無限にあるわけではありません。
もしたくさんメモリを使用してメモリの容量が無くなった場合、新しくメモリを使用することはできません。
ポインタを使用することで適切にメモリを管理することができるようになります。
補足
高校時代に言われたことなのですが...
「どうして今になってCなんか勉強してるの?python(メモリ管理を自動でやってくれるプログラミング言語)できるんだからそっち使えばいいじゃん。」
少なからずこのようにC言語を勉強する意味を考えた方もいらっしゃると思います。
他にもJavaなどメモリ管理を自動でやってくれる言語はたくさんあります。(主流の言語のうちC/C++を除けばほとんどそうでしょう。)
ですが、プログラミング言語には向き、不向きというものが有ります。
例えば、自分が興味のあるゲームプログラミングやOSでは出来るだけハードウェアの性能を高めることのできるコードが要求されています。
そのためにはC言語のポインタを使用して強力なチューニングを行う必要が有ります。
ならば、上のような用途でなければC言語を使う意味は無いのかというとそうではありません。
他の言語であれば、
Java: どんなOSでも動く。
など様々な特徴が存在しますが、Javaメインのコードだろうが、Pythonメインだろうがプログラムの基盤部分はC言語で書かれていることがよくあるので、C言語ができる必要があります。
なので、ぜひC言語を勉強している方は諦めずに一緒に頑張っていきましょう。
//ここで述べたポインタのメリットはあくまで一部に過ぎません。
初記事
自己紹介
大学1回生駆け出しプログラマ
とりあえず、python、c++、c、lispでテトリスなどなら作れる。
現在1番できるのはlisp。集中的に勉強しているのはc++。
どうしてブログを書こうと思ったのか
1つ目は自分はエンジニアとして優秀でありたい。そのために、何が今の段階からできるかということについて調べたところ「アウトプットが重要」という記事をよく見かけました。
- アウトプットを前提にするとインプットの効率が高まる
- 知識、技術の復習になる
- 文章力の向上
- 他人の目に触れることで内容の間違いに気づく
アウトプットには以下のようなこうかがあるらしく、これはやるべきだな、と思いました。
実際に、成功している人は本であれ、雑誌であれ何かしらアウトプットをしていました。
2つ目の理由は、自分は今大学1回生ですが、大学の講義が全く面白くなく、さっさと社会に出たいと思っています。そのため自分という存在の価値を証明するための媒体を探していました。
どんなに優秀な人であろうと、それは発掘されなけれは全く意味がありません。
つまり、噛み砕いていうと「ここに自分の価値を示しておくので、企業の方々よろしくお願いいたします。」ということです。
今後書くことと興味のあること
今書こうと思っていることは、ポインタについてです。最近ポインタに関する記事や本を数冊読み終えたのでこれは書かざるをえない!
興味のあることとしては、elisp、Unreal Engine、arch linux、などなど多岐にわたる。
いずれは自分専用のウェブサイトを立ち上げて、そこで書けるようにしたり、なにかしらサービスを立ち上げたいとも考えている。
これからよろしくおねがいします!