質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

6回答

1823閲覧

C言語(C++)の使い道

strike1217

総合スコア651

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2017/10/29 14:07

編集2017/11/02 03:30

C言語はどんなものを作りたい時に向いている言語なんでしょうか?

例えば、OSやコンパイラはC言語に頼る必要があります。
ですが、パッチやプラグインなどは普通C言語で作ったりするんでしょうか?

基本的にC言語で出来ないことはないと認識しているのですが、簡単なプログラムをちょちょいと作りたい時には面倒ですよね?

**かなりマニアックな人が使用する言語なのかな??**と思っています。

OSやコンパイラ、ゲーム(DirectX)以外に「こういうものを作りたい時は、C言語!!
逆に「こんなプログラムにはC言語は向いていない!」というものを教えてください。

実践の世界でC言語をどのように活用しているのかが知りたいです!!

「追記」
このようなものを見つけました。
C言語で作れるモノとその事例まとめ【ソフトウェア/ロボット/OS】

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/10/30 04:14

C/C++が最速というのはよく聞きますね。 Cだけできれば良いのかな・・・という気がしています。 イマイチ、他の言語を学ぶ理由が見当たらないんですよね~ C言語は他の言語に比べてコード量が多くなるから面倒という理由だけで別の言語を勉強するのも面倒くさいんですよね~~ 次に勉強するものとして、今はpythonを考えていますね。
guest

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/10/29 14:57

「現在広く使われているプログラミング言語はほぼ全てのことについて同じことが実現できると言ってよいでしょう。 」 ほぉ~~なるほど! そうなんですか!!
strike1217

2017/10/29 15:02

現在ではかなり多くの言語が開発されています。 どのプログラミング言語をやれば良いのか困惑しますね! ほぼすべてについて同じことが実現できるとすると「C言語での実装が難しい」からという理由だけでこれだけの言語が生み出されているんですかね??
退会済みユーザー

退会済みユーザー

2017/10/29 15:14

なんでもできる、ということが常に利点であるわけではありません。特定の機能に特化することで分かりやすさや生産性を上げるといったことも行われています。 そのような言語はDSLなどと呼ばれます。
strike1217

2017/10/29 15:17

ああ~。 なるほど! 特化型ですね!
guest

0

AIを用いた画像処理の分野で、活用されています。
AIと聞くと、Pythonを思い浮かべるかもしれませんが、処理速度の観点から考えると、Cの方が優れていると言えます。

投稿2020/12/25 17:12

BASEBALL-Y

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

組み込み分野といった低レベルレイヤーのプログラムではC/C++がメインで使われていますよ。
リアルタイムOS向けの開発環境でそれ以外の言語がサポートされているのはあまり見たことがありません。
(自動車メーカーなどでは内製の秘伝の言語みたいなのがあるのかもしれませんが・・・。)

  • 使用可能なメモリなどリソース上の制約が大きい。
  • 様々なプロセッサやアーキテクチャが無数にあるのでC#やJavaなどの仮想マシンやランタイムをサポートしきれない。
  • リアルタイムOSが一般的に使われてない。

などの理由があると思います。
C/C++言語が使われる理由としては

  • I/O制御がポインタで簡単にでき、ハードウェアの制御に適している。
  • 余計なことをしないので使うリソースの量を読みやすい(バグがなければ)
  • 枯れた技術なのでみんなが知っている。

が、ぱっと思いつきました。

逆に、linuxやwindows上で動作するユーザーアプリケーションをC/C++で作るメリットは生産性の観点からみると、余りないと思います。
C/C++だと自分で実装しなければならかったのが、Pythonだとライブラリをimportするだけで使えたりしますからね。
学習が目的の場合だったらこの限りではありません。

投稿2017/10/29 16:10

TaroToyotomi

総合スコア1430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/10/30 02:46

やはり、C言語は低レイヤー向けなのですね!! 高レイヤー向けにpythonを勉強し始めた方がよさそうですね!!
strike1217

2017/10/30 02:48

あ!C++はどうですか?? あれは低レイヤーでも高レイヤーでも通用する言語なのではないでしょうか??
TaroToyotomi

2017/10/30 14:00

C++でもできなくは無いですが、それだけというのはおそらくデメリットのほうが大きいと思います。 しなくてもよい苦労ばっかりでメンテナンスするのも嫌になる可能性大ですね。 他の方も述べているとおり、採用する言語は適材適所で考えるべきだと思います。 (個人的な考えですが、言語や開発環境の選定もソフトウェア設計における重要な作業だと考えています。) 自分だったらまず、pythonやC#で作ってみてから、高速化が必要な部分だけC/C++で書き直すといった具合ですかね。
guest

0

組み込みの世界ではC言語がまだ多く使われていると思います。
Cは昔、低レベル(良いとか悪いという意味ではなくよりハードウェア寄りという意味)高級言語と言われてました。(今も言うかな?)

組み込みというのは、携帯端末とかではなく、何かの機器の制御に特化したような基板です。例えば車載用のマイコンなどです。
以前は、割り込み処理などはC言語ではなくアセンブラも使用していましたが、最近はこれらもC言語で書くようになっています。(CPUが速くなったおかげもあります)

私はまだ使ってませんが、C++も組み込みの世界で使われるようになっている様です。(生産性はC++の方が高いですからね)

投稿2017/10/30 08:14

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/10/30 08:15

なるほど!OS開発もやがてはC++に乗っ取られそうですね。
strike1217

2017/10/30 08:16

C++でアプリケーションを開発したりしている人って少ないんですかね??
PineMatsu

2017/10/30 08:46

組み込みの場合、全くの新規でCPUの能力やメモリーも多く使える場合は、C++で作ってみるかなという気にならないことはないですが、組み込みの世界というのは前のバージョンとの互換性を重視するのと、開発期間の短縮のために、以前のコードを結構流用して作ります。なので、今までC言語で作っていたら、そのままの流れでC言語を使い続ける場合が多いと思います。 C++だとどうしてもメモリーを多く使うのと、プログラムをFLASH(動画ではない)化することが多いので、PCの様に全てをRAM上で動かすという作りにはなりません。なので、動的にメモリを確保するという考えのもとに作られていることが少なく、そのあたりで苦労するのなら今までの流れを継承して作るということになるのだと思います。 クラスを使ってオブジェクト指向でその恩恵に与りたい気もしますが、なかなか踏み出せないですね。
strike1217

2017/10/30 08:48

なるほど!C言語からC++に移行するのがやはり面倒というのは確かにありますね。
guest

0

C言語は良くも悪くもシンプルで余計なことをしない言語です。
逆に言えば、きちんとコンピュータの動作原理を理解していないと、危険なことであっても平然とやれてしまうのです。
※データ破壊どころかプログラムそのものを(自ら)破壊することだってできる

それを理解した上で、その隙間を突くような芸術的技巧もまたあるのですが(w

投稿2017/10/29 14:47

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/10/29 14:59

C言語は奥が深いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問