C言語はどんなものを作りたい時に向いている言語なんでしょうか?
例えば、OSやコンパイラはC言語に頼る必要があります。
ですが、パッチやプラグインなどは普通C言語で作ったりするんでしょうか?
基本的にC言語で出来ないことはないと認識しているのですが、簡単なプログラムをちょちょいと作りたい時には面倒ですよね?
**かなりマニアックな人が使用する言語なのかな??**と思っています。
OSやコンパイラ、ゲーム(DirectX)以外に「こういうものを作りたい時は、C言語!!」
逆に「こんなプログラムにはC言語は向いていない!」というものを教えてください。
実践の世界でC言語をどのように活用しているのかが知りたいです!!
「追記」
このようなものを見つけました。
C言語で作れるモノとその事例まとめ【ソフトウェア/ロボット/OS】
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答6件
0
将棋ソフトの内部エンジンの多数はCです。
機械学習済みの評価関数にどれだけ値を突っ込むかの勝負ですからね。
ロジックがシンプルかつ、計算速度がモノを言うジャンルは文句なしCでしょう。
こういうものを作りたい時は、C言語!!
企業が低レイヤーのプロジェクトを作った場合(消極的な理由)
Rust、D言語、Go等の低レイヤを触れる言語が次々と伸びてきており、
ちょっとしたプロジェクトではかなりの分野を食われています。
更にチューニング済みのCを吐き出すNimが1系になればCを使わなければならない分野はほぼ全滅するでしょう。
しかし、なんだかんだでCを読める人は多いです。
対するNimはそもそも知ってる日本人3桁人数居ますかね?程度の知名度です。
既存の企業が低レイヤーで動く言語のプロジェクトを作って開発者を集めても、
CかGOかくらいでしか技術者を集められないでしょう。
こんなプログラムにはC言語は向いていない!
開発速度が重視される箇所全てです。
Cのポインターのやりくりや、メモリー領域のやりくりではユーザーが抱える問題は解決されません。
ユーザーが抱える問題やニーズを解決するのがプログラマという職業なので、直接作用するプログラムを宛がう言語の方が一手間少ないですね。
多くのスクリプト言語は、その場でコンパイルしてすぐ使えるので、ソースコードだけ用意すればすぐ実行して結果を確認できます。
PHPやRubyは高速にWebサーバを開発出来る言語として定着しましたし、
RやPythonは統計や機械学習に目をつけた人たちが集まってライブラリを開発しましたので、ちょっとやそっとの言語では覆せない程のアドバンテージになっています。
JavaなんかはOS間の移植性を考えて、JVMという中間コードを生成してそれをもってOS間の差分を埋めていますね。
現場では対応OS分だけ書くのを覚悟しろという本末転倒な嘆きが聞こえるそうですが…
投稿2017/10/30 03:47
総合スコア21412
0
できること、できないことをチューリング完全かどうかで判断するなら、現在広く使われているプログラミング言語はほぼ全てのことについて同じことが実現できると言ってよいでしょう。
他の言語の方が生産性がよいと感じられているとしても、例えばPHPのインタプリタはC言語で実装されていますし、CRubyやCPythonも同様です。
ですので他の言語を使用していたとしても、無縁というわけではないでしょう。
C言語で実装するうえでのの利点は移植性にあると考えます。
難点はメモリ管理を自分たちで行わなければならないことです。
C言語の難点を克服しようとする言語として、GoやRust等が開発されています。
これらにより、より安全に実行できるプログラムが作成されていくものと考えています。
その時にはC言語を使用しない環境も現れてくるものと思います。
追記:
少し追記します。
組込みシステム開発においてC/C++が使用されることが多いというのは、その通りだと思います。
C言語は比較的ハードウェア等を直接扱いやすいという点、前述した移植性の点から採用されることは多いです。
C++をbetter Cと考えるように、Cをbetter アセンブリ言語と考えることもできるのではないかと思います。
最近では、mrubyのように組込みシステム開発においてもC言語以外の選択肢が登場し始めているように思います。
投稿2017/10/29 14:36
編集2017/10/30 02:24
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/10/29 15:14

0
組み込み分野といった低レベルレイヤーのプログラムではC/C++がメインで使われていますよ。
リアルタイムOS向けの開発環境でそれ以外の言語がサポートされているのはあまり見たことがありません。
(自動車メーカーなどでは内製の秘伝の言語みたいなのがあるのかもしれませんが・・・。)
- 使用可能なメモリなどリソース上の制約が大きい。
- 様々なプロセッサやアーキテクチャが無数にあるのでC#やJavaなどの仮想マシンやランタイムをサポートしきれない。
- リアルタイムOSが一般的に使われてない。
などの理由があると思います。
C/C++言語が使われる理由としては
- I/O制御がポインタで簡単にでき、ハードウェアの制御に適している。
- 余計なことをしないので使うリソースの量を読みやすい(バグがなければ)
- 枯れた技術なのでみんなが知っている。
が、ぱっと思いつきました。
逆に、linuxやwindows上で動作するユーザーアプリケーションをC/C++で作るメリットは生産性の観点からみると、余りないと思います。
C/C++だと自分で実装しなければならかったのが、Pythonだとライブラリをimportするだけで使えたりしますからね。
学習が目的の場合だったらこの限りではありません。
投稿2017/10/29 16:10
総合スコア1461
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
組み込みの世界ではC言語がまだ多く使われていると思います。
Cは昔、低レベル(良いとか悪いという意味ではなくよりハードウェア寄りという意味)高級言語と言われてました。(今も言うかな?)
組み込みというのは、携帯端末とかではなく、何かの機器の制御に特化したような基板です。例えば車載用のマイコンなどです。
以前は、割り込み処理などはC言語ではなくアセンブラも使用していましたが、最近はこれらもC言語で書くようになっています。(CPUが速くなったおかげもあります)
私はまだ使ってませんが、C++も組み込みの世界で使われるようになっている様です。(生産性はC++の方が高いですからね)
投稿2017/10/30 08:14
総合スコア3579
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
C言語は良くも悪くもシンプルで余計なことをしない言語です。
逆に言えば、きちんとコンピュータの動作原理を理解していないと、危険なことであっても平然とやれてしまうのです。
※データ破壊どころかプログラムそのものを(自ら)破壊することだってできる
それを理解した上で、その隙間を突くような芸術的技巧もまたあるのですが(w
投稿2017/10/29 14:47
総合スコア13707
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/30 04:14