涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

プログラミング言語人気TOP10の簡易解説の簡易解説2

さて、まさかの連載ものになってしまった、"プログラミング言語人気TOP10の簡易解説"の簡易解説です。
プログラミング言語人気TOP10の簡易解説

プログラミング言語人気TOP10の簡易解説の簡易解説1 - 涼の成長記録



2. C言語とは

実行速度

有名な高級(?)言語の中では最速の実行速度を誇る。なのでスクリプト言語を利用している時に速度が出なくて困ったら、その部分をちょろっとCで書き直すと平気で100倍速になったりすることもある。


元サイトでも紹介されておりますが、言語のベンチマークは以下のサイトが分かりやすいです。
Computer Language Benchmarks Game


よく分からない方は(俺とか)、以下をサイトに上記サイトで行った、特定の言語のベンチマーク結果を確認できます。
Geekなぺーじ:プログラミング言語の速度比較


メモリ管理を忘れた世代

ガベージコレクションがないのでメモリ管理を忘れた世代には使いづらい言語。コード量も軽量な言語と比べるとかなり多くなる。

前回、ガベージコレクションについて軽く触れましたが、C言語はこれを備えておりません。ヒープ領域に確保したオブジェクトは、明示的に解放してやらなければメモリリークを起こします。mallocしたらfreeしなければなりません。


C++を使えるのならC言語は使えない?

自分で何かソフトを作ることになったとして、ピュアなCでガリガリ書くというシチュエーションはあまり思い浮かばない。C++を使うような気がする。

個人的に組み込み系をよくやるので、上記に対して「組み込み系なら、速度が~、リソースが~」とか、何かしら書こうと思ったのですが、保身に走って「そう思っている人結構いるよね?」と思いつつ、「組み込み C++」でググったら以下の資料にボコボコにぶちのめされました。

組み込みでこそC++を使う10の理由


参考図書

書店でドキドキしながらはじめてのCを買うがいいさ。

前の記事にも書きましたが、私は"苦しんで覚えるC言語"を推します。マジリスペクトっす。何故、ここまでリスペクトするかというと、本から「理解させる」という情熱が伝わってくるのです。いきなり"#include "を教えたり等、なかなか激しいです。そして、説明がとてもしつこく、くどい!本気で習得するのであれば、是非これにすべき1冊です。


逆に、さらっと概要が知って感覚的に学びたい方は、有名な絵本シリーズをどうぞ。




3. C++とは

Boost

速度はCと同じく音速。その上オブジェクト指向やらスマートポインタやら様々な機能が付加され、Boostなんていう強力という言葉がよく似合うライブラリも使えるので、多彩なコードの書き方ができる。

Boostは、C++のすげー人たちが作っている強力なオープンソースライブラリです。C++0xからSTLに"std::shared_ptr"なんてものが現れました。スマートポインタってやつです。これは"boos::shared_ptr"から、ほぼ移植されています。このように、C++の標準化に対して多大な影響を与えているライブラリです。


ちなみにスマートポインタとは、通常のポインタと同じように、動的に確保した領域を記憶しておけるのですが、参照されなくなった時点で自動的に解放してくれる優れものです。賢いポインタ、すなわちスマートポインタです。これが、素晴らしく便利なのです。

int sampleMethod() {
    std::shared_ptr<TSample> smartPointer(new TSample());

    bool succeess = method1(smartPointer);
    if (!success) {
        return -1;    // 自動的に解放
    }

    method2(smartPointer);

    return 0;    // 自動的に解放
}

ちなみに、明示的に解放したり、インスタンスの所有権を持ち回したりすることもできます。


参考図書

Effective C++は本当にEffectiveな本だと思う。

間違いないです。本当にEffectiveです。C++の入門書を読み終えたら、まず読むべき1冊だと思っています。知り合いの志高きC++erが、この本を持っていないと言っていたら、迷わず貸し出す1冊です。これも読み終わったら、Effective STLが良いと思います。これで、一気に凄まじい量のノウハウが、ドカンと入ってきます。





以上、C/C++編でした。
次からは、あまり知らない言語を勉強しながら書くことになると思うので、少なめ、かつ雑になりそうです。しかし、手は抜かずに書きます。


ではでは。