プロが教えるわが家の防犯対策術!

C言語を取得しなければならない目的および必要性について具体例と共に聞かれたのですが、はたして確かな答えがあるのでしょうか。言語は何もCだけではないし、必要に応じて使い分けをするべきだと思っています。C言語は組込み向きで簡単に組みやすく、使いやすいとも聞いたのですがその説明にはぴんときませんでした。
C言語の学習を始めた際、「何故C言語なのだろう」と、少し疑問は持ったのですが、普及されてるからで済ましてしまっていたので改めて聞かれても答えにつまりました。

纏まりの無い質問ですが、みなさんのお考えを教えて頂けたらありがたいです。

A 回答 (7件)

50歳現役SEです。


UNIXと言うOSが世の中に出始めた頃C言語も一緒に出てきました。
何故ならUNIX-OSの90パーセント以上をC言語で書いたからです。
C言語はregister integerとかの定義ができますので、CPUのレジスターを使う事もできました。
多分組込みに向いているのはレジスターの件とビット処理(unsigned)が可能でコンパイルしたらマシン語(1パスアセンブラ)に落とせたからだと思います。
一方COBOL等でアプリケーションを組む人達はUNIXが提供する通信機能やファイルアクセス機能、DBアクセス機能を部品化して開発効率を上げていました。
    • good
    • 0

コンピュータがどんなに進化しても、CPUとメモリからできているのは変わりません。

(将来的にはわかりませんが、もうしばらくは続くでしょう)

Cはこの「CPUとメモリ」の概念を学ぶのにちょうどいいように思います。
どんな言語を使おうと、どんなシステムと使おうと、「CPUとメモリ」からは逃れられないわけで、そういった意味ではCを学ぶ意味はまだまだあると思います。
    • good
    • 0

まさに普及しているからだと思います。


普及していることのメリットはとてつもなくでかいです。
・みんながコンパイラやアセンブラのデバックをしてくれている。
・みんなが使っているから質問したら直ぐ答えがわかる。
・普及したから無料のコンパイラやデバッガなどがある。
などなど。
    • good
    • 0

> C言語は組込み向きで簡単に組みやすく、使いやすいとも聞いたのですがその説明にはぴんときませんでした。



関数へのポインタは、C言語かその派生言語でしか使えないと思います。
そもそも、ポインタを扱える言語は少ないのに、関数のポインタを使えるなんて、初めて使ったときは感動して手が震えたのを覚えている。

言語の仕様として・・・
Pascalを始めとする他の言語のbegin~endは大嫌いですね。
C言語の{~}の方がスッキリして綺麗。小文字主体で優しく見える。
大文字と小文字を厳格に区別するので、識別名「VALUE」、「Value」、「value」を別物として扱える。(全部大文字は#defineで使うことが多い)
それに、C言語は非常に論理的は文法を持つ言語だと思います。
関数に付く()、配列に付く[]ですら演算子として扱う。
言語仕様も必要最低限で構成され、それ以上の機能はライブラリとして提供されている。
手続き型言語でありながら、イベントドリブンなプログラムも無理なく記述できる。
非常に柔軟な言語仕様だからでしょう。
C言語を使いこなすと、とてもそれ以外の言語なんて使えません。
(例外はアセンブリ言語だけ)
    • good
    • 0

>C言語を取得しなければならない目的および必要性について具体例


目的:これは逆でしょう。目的があってその手段として言語があるはずです。むろん業務上何らかの目的があれば別ですが、それは言語そのものとは何も関係ありません。
必要性:操作するターゲットのコンパイラがCしか対応しているものがなければ当然必要です。(ちょっと前までそういうものが大部分でした。)原理的にはマシン語などもあり得ますが実際には不適当と思われます。
具体例:最近はC++(制限付き)でもできるのがあるからなんとも。cコンパイラしかない環境であればそれがそうです。

歴史的背景で言えば、CはOSを作成するために開発された高級言語です。(ここで言う高級とはアセンブラ等と比較して)従って、ハードウエアのコントロールとかもかなり自由にできます。またメモリの使用量などもユーザが注意すればかなり節約できます。ポインタがあるのでアドレスを直接たたけますからパフォーマンスも割といいはずです。そのため組み込み系で今でも重宝しているわけです。

業務で聞かれたのか学問で聞かれたのか判然としませんでしたので少しぼやけた回答になりましたがご容赦を。
    • good
    • 0

結局のところ、自分は何がやりたいかだと思います。


C言語を必要とする分野のソフトウェア開発をやりたければC言語が必要になりますし、そうでなければC言語に用はありません。

C言語を必要とするソフトウェアを作りたい場合でも、常にC言語を習得する必要があるかといえば、必ずしもそうではありません、多くの場合、お金を出して外注すれば済んでしまいますから。
お金を払って作る立場ではなく、お金をもらって作る立場、あるいはお金をかけずに自分で作る立場になりたければ、習得するしかないでしょう。
    • good
    • 0

C言語又はアセンブラでしかコードできないものがあるからです。


 1.OS自体
 2.デバイスドライバ
 3.幾つかの言語処理系(コンパイラ等)
 4.高速にデータを処理しなければならないアプリのほぼ全て
基本的にはあなたの前にあるコンピュータの中身の
ほとんどがC/C++言語で作成されています。

C言語を学ぶ必要は全くありませんが、上記のような難易度の
高いシステムへのチャレンジ機会も、同時に失われることにな
るのを覚悟しなければなりません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!