プログラミング言語人気TOP10の簡易解説の簡易解説2
さて、まさかの連載ものになってしまった、"プログラミング言語人気TOP10の簡易解説"の簡易解説です。
プログラミング言語人気TOP10の簡易解説
プログラミング言語人気TOP10の簡易解説の簡易解説1 - 涼の成長記録
2. C言語とは
実行速度
有名な高級(?)言語の中では最速の実行速度を誇る。なのでスクリプト言語を利用している時に速度が出なくて困ったら、その部分をちょろっとCで書き直すと平気で100倍速になったりすることもある。
元サイトでも紹介されておりますが、言語のベンチマークは以下のサイトが分かりやすいです。
Computer Language Benchmarks Game
よく分からない方は(俺とか)、以下をサイトに上記サイトで行った、特定の言語のベンチマーク結果を確認できます。
Geekなぺーじ:プログラミング言語の速度比較
メモリ管理を忘れた世代
ガベージコレクションがないのでメモリ管理を忘れた世代には使いづらい言語。コード量も軽量な言語と比べるとかなり多くなる。
前回、ガベージコレクションについて軽く触れましたが、C言語はこれを備えておりません。ヒープ領域に確保したオブジェクトは、明示的に解放してやらなければメモリリークを起こします。mallocしたらfreeしなければなりません。
C++を使えるのならC言語は使えない?
自分で何かソフトを作ることになったとして、ピュアなCでガリガリ書くというシチュエーションはあまり思い浮かばない。C++を使うような気がする。
個人的に組み込み系をよくやるので、上記に対して「組み込み系なら、速度が~、リソースが~」とか、何かしら書こうと思ったのですが、保身に走って「そう思っている人結構いるよね?」と思いつつ、「組み込み C++」でググったら以下の資料にボコボコにぶちのめされました。
参考図書
書店でドキドキしながらはじめてのCを買うがいいさ。
前の記事にも書きましたが、私は"苦しんで覚えるC言語"を推します。マジリスペクトっす。何故、ここまでリスペクトするかというと、本から「理解させる」という情熱が伝わってくるのです。いきなり"#include
逆に、さらっと概要が知って感覚的に学びたい方は、有名な絵本シリーズをどうぞ。
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; // 自動的に解放 }
ちなみに、明示的に解放したり、インスタンスの所有権を持ち回したりすることもできます。