softya(ソフト屋) さんが書きました:GRAMさんがC言語を知らなくて困ることは何でしょうか?
結構C言語で書かれたサンプルなどがサイトになどに転がっていたり、オープンソースなどはC言語だったりしますけど。
龍神録などもC言語ですね。
そうですね。なかなか答えにくい質問ではありますが。
まずサンプルについては問題ないです。
たとえばCに限らずC#だろうがJavaだろうがActionScriptだろうが文法が近い言語は
その言語を知らなくても「だいたいの意味を理解することができます」
これはおよそ伝わるかと思います。
サンプルコードなるものはコメントや関数名、変数名などで少なくとも読み手に理解されるように書かれているはずですのでね。
これを脳内で「自分ならC++でこう書くな」と変換してやれば読むのに困りません。
関数等はインプットとアウトプットが分かればいいことも多いですし。
一方書くとなると話は別です。大体の感じでコードはかけませんのでね。
ただ率直な感想としてCのサンプル(によらずコード全般)は読みにくいです。
何がしたいのか自分にとっては不明瞭です。それがCでの書き方だとわかっていても読んでると
「こことかC++ならもっとスマートなのになぁ」とか思っちゃいます。
Cで書かれたライブラリですがこれはものによります。
以前多倍長整数ライブラリを使いましたが、これは使えたものじゃありませんでした。
速攻でC++のコードでラップしてやりましたけど、苦労したといえば苦労しました。
OpenCVや、DXLibraryのようなC++との相性もそこまで悪くないライブラリーは何の苦労もありません。
世の中にはもちろんBoostやIntelTBBのようなC++で書かれたライブラリーもたくさんありますので、代替品やラッパーライブラリがある場合はそっちを使います。
たとえばLuaはLuabindというC++のライブラリーに頼っているので、Cのライブラリーですが苦労なく使えます。
もっとも自分が嫌いなのは
Win32APIとDirectXです。
前者はほぼCの機能のみですし、後者は中途半端にC++ですがやはりCライクなので困ったものです。
使わないわけにもいかないので、ラッパーでラップして極力考える時間を少なくします。
いずれにしてもライブラリーは物によります。自分もC言語に対して無知ほどではないので試行錯誤さえ行えば使えないこともありません。
C++の枠組みでどう使うかを考えることはできますが、しかしどちらにしてもC言語ならどういうコンベンションに従って書くか等はわかりません。
・・・また本心を言えばCのライブラリーはあまり使いたくありません。(物によっては#define等が大量にあって最高にイライラするのでw)
しかしかといって苦労したかと聞かれるとそこまで苦労もしなかったと答えます。