• ベストアンサー

C言語の必要性について

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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

その他の回答 (6)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.7

コンピュータがどんなに進化しても、CPUとメモリからできているのは変わりません。(将来的にはわかりませんが、もうしばらくは続くでしょう) Cはこの「CPUとメモリ」の概念を学ぶのにちょうどいいように思います。 どんな言語を使おうと、どんなシステムと使おうと、「CPUとメモリ」からは逃れられないわけで、そういった意味ではCを学ぶ意味はまだまだあると思います。

回答No.6

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

回答No.5

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

  • nitho_t
  • ベストアンサー率49% (44/89)
回答No.4

>C言語を取得しなければならない目的および必要性について具体例 目的:これは逆でしょう。目的があってその手段として言語があるはずです。むろん業務上何らかの目的があれば別ですが、それは言語そのものとは何も関係ありません。 必要性:操作するターゲットのコンパイラがCしか対応しているものがなければ当然必要です。(ちょっと前までそういうものが大部分でした。)原理的にはマシン語などもあり得ますが実際には不適当と思われます。 具体例:最近はC++(制限付き)でもできるのがあるからなんとも。cコンパイラしかない環境であればそれがそうです。 歴史的背景で言えば、CはOSを作成するために開発された高級言語です。(ここで言う高級とはアセンブラ等と比較して)従って、ハードウエアのコントロールとかもかなり自由にできます。またメモリの使用量などもユーザが注意すればかなり節約できます。ポインタがあるのでアドレスを直接たたけますからパフォーマンスも割といいはずです。そのため組み込み系で今でも重宝しているわけです。 業務で聞かれたのか学問で聞かれたのか判然としませんでしたので少しぼやけた回答になりましたがご容赦を。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

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

回答No.2

C言語又はアセンブラでしかコードできないものがあるからです。  1.OS自体  2.デバイスドライバ  3.幾つかの言語処理系(コンパイラ等)  4.高速にデータを処理しなければならないアプリのほぼ全て 基本的にはあなたの前にあるコンピュータの中身の ほとんどがC/C++言語で作成されています。 C言語を学ぶ必要は全くありませんが、上記のような難易度の 高いシステムへのチャレンジ機会も、同時に失われることにな るのを覚悟しなければなりません。

関連するQ&A

  • VBとC言語

    VBとC言語の開発目的の使い分け。という題で課題があるのですけど検索してもいまいちわからないので誰か説明教えていただけませんか?

  • C言語を勉強したいのですが^-^

    大学のとき少しだけC言語やったときはつまらんと思って 単位取得しなかったのですが、パソコン関係の仕事をするようになって C言語の興味が増しました。 まったくの初心者ですが、あまりお金をかけないでC言語を学習したいです。お勧めの書籍等々教えてくだされば幸いです^^

  • C言語初心者ですが・・・

    大学のとき少しだけC言語やったときはつまらんと思って 単位取得しなかったのですが、パソコン関係の仕事をするようになって C言語の興味が増しました。 まったくの初心者ですが、あまりお金をかけないでC言語を学習したいです。お勧めの書籍等々教えてくだされば幸いです^^

  • C言語学習の始め方

    本当に初歩的な質問で申し訳ないのですが、どうか教えてください。 これから独習でプログラミングを始めようとしている、まったくの初心者です。 それで、C言語から入りたいのですが、「始め方」が良く分かりません。リファレンス本なども何種類か見てみたのですが、どの本も、「main{}・・・から初めて・・」のように、いきなりプログラミングの説明から始まっています。 具体的な質問としましては、 1.window2000を使用しているのですが、C言語を学習するためにはC言語ベースのosを新たにインストールしなくてはいけないのか。あるいは、その方が学習しやすいのか。 2.学習する環境をつくるためには、どのようなモノ(ソフト)が必要なのか。 ・・・などです。 どうぞよろしくお願いします。

  • C++言語を学びたい

    C++言語を学びたいと思っています。プログラミングはいままで一度もしたことなく全くの初心者です。C++言語のテキストは購入したのですが、実際に行うにあたり、何かソフトなどが必要なのでしょうか?具体的に教えて頂ければ幸いです。

  • どのプログラミング言語を学習しようか迷っています

    こんにちは、プログラミング言語のことで質問させて頂きます。 私は情報学部の一年生です、この夏休みに堕落した生活を送るのも無駄なので、学校ではやらないプログラミング言語を少しでも学習し、何かを作って遊んでみようと考えています。 目的もどのような会社に就職したいかの希望も今のところは無く、何かを学習したいから、とりあえずどれかを学んでみようかという考えです。 ですがどの言語を学ぶべきかがわかりません、大学ではC言語を「明解C言語」の関数の範囲まで完了し、後期で残りをやる予定となっています。 また、二年次にJavaをやる予定です。 なのでJavaとC以外のどれかの言語を学ぼうと思っているのですが、C++やC#やCOBOLなど、種類も多く、どれも使い方が違い、どれを学ぶべきかで迷っています。 どの言語を学ぶにしても、C言語と混ざってC言語が使えなくなる、といったこともあるでしょうし・・・・どの言語を学ぶのがいいのでしょうか。

  • 将来において言語を学ぶ必要性はありますか?ふと疑問

    将来において言語を学ぶ必要性はありますか?ふと疑問に思ったのですが、外国人との会話で、機械が今後正確に翻訳するようになり、その機械が今の携帯電話やインターネットのような普及率を持った場合であっても言語を学ぶ必要はあるのでしょうか?みなさんはどうお考えでしょうか?

  • C言語入門の手引きを教えてください。

    現在の職場で、システム設計とのやり取りの中で、プログラムの学習が必須になりました。 しかし、過去数学的な勉強を避け続けてきたせいもあり、論理的な思考等、プログラミングの学習に必要な最低限の知識すらない状態で、困っています。 今回の質問は、私の様な、プログラミングの基礎の基礎すらも知らない人間がプログラムを学習する際にどの様なステップで学習を行っていけば良いのかアドバイスをいただきたいと思っています。 当社、複数の言語を使用しているため、大雑把にC言語でプログラミングの基礎、考え方等を学習できる様にという話を聞いているのですが、C言語をベースにすると、どの様なところから学習していけば分りやすいのでしょうか? キーワードだけでも結構ですので、アドバイスをよろしく御願いいたします。

  • C言語による実務での開発

    C言語による実務での開発について質問します。 学校でC言語の学習はしたことがあるのですが、実際に 実務についたことが無く、C言語を使った実務というのが どのようなものなのかイメージがつかめません。C言語で なくても、もっと他に便利な言語やソフトがあると思うのですが。 販売管理や給与計算なども実際にC言語で作られていつのでしょうか。 それとも、制御系といわれる分野で使われるものなのでしょうか。 C言語でこんなものを開発した、などと言うのをお聞かせいただきたいです。 自分の興味のことなので、本当にひまなときにでもお答えいただければと 思います。 学校で学んでいたので、ソフトウェア開発技術者試験やテクニカル エンジニア(ネットワーク)試験などを在学中に取得しているので、 多少の知識はあるのですが、実務となると・・・ 今はoffice2000ぐらいしか使っていません。

  • C言語で取得した文字列を、C++の文字列として取り扱いたいです。

    C言語で取得した文字列を、C++の文字列として取り扱いたいです。 皆さんこんにちは。 C言語で取得したchar型で定義された文字列を、 C++の「std::string」に渡したいと思っております。 どうすればかなうでしょうか? 具体的には次のような内容です。 ■C言語側 ---- char key1 = "deperture"; ---- ■C++側で「key1 = key2」としたいです。 ---- std::string key2 = key1; ---- C言語側で記述されている「key1」の値(deperture)を、 C++ソース内の「key2」に渡したいと思っています。 こうゆう場合、どんな方法をとれば適切でしょうか。 C言語側でのchar型の文字列の値を、 C++側の「std::string」型として C++のソースへ渡す方法が分からないです。 アドバイスいただけるとありがたいです。 簡単な例を頂けると更に大変ありがたいです。 以上どうぞ宜しくお願い致します。

専門家に質問してみよう