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アクセス機能を部品化して開発効率を上げていました。
No.7
- 回答日時:
コンピュータがどんなに進化しても、CPUとメモリからできているのは変わりません。
(将来的にはわかりませんが、もうしばらくは続くでしょう)Cはこの「CPUとメモリ」の概念を学ぶのにちょうどいいように思います。
どんな言語を使おうと、どんなシステムと使おうと、「CPUとメモリ」からは逃れられないわけで、そういった意味ではCを学ぶ意味はまだまだあると思います。
No.6
- 回答日時:
まさに普及しているからだと思います。
普及していることのメリットはとてつもなくでかいです。
・みんながコンパイラやアセンブラのデバックをしてくれている。
・みんなが使っているから質問したら直ぐ答えがわかる。
・普及したから無料のコンパイラやデバッガなどがある。
などなど。
No.5
- 回答日時:
> C言語は組込み向きで簡単に組みやすく、使いやすいとも聞いたのですがその説明にはぴんときませんでした。
関数へのポインタは、C言語かその派生言語でしか使えないと思います。
そもそも、ポインタを扱える言語は少ないのに、関数のポインタを使えるなんて、初めて使ったときは感動して手が震えたのを覚えている。
言語の仕様として・・・
Pascalを始めとする他の言語のbegin~endは大嫌いですね。
C言語の{~}の方がスッキリして綺麗。小文字主体で優しく見える。
大文字と小文字を厳格に区別するので、識別名「VALUE」、「Value」、「value」を別物として扱える。(全部大文字は#defineで使うことが多い)
それに、C言語は非常に論理的は文法を持つ言語だと思います。
関数に付く()、配列に付く[]ですら演算子として扱う。
言語仕様も必要最低限で構成され、それ以上の機能はライブラリとして提供されている。
手続き型言語でありながら、イベントドリブンなプログラムも無理なく記述できる。
非常に柔軟な言語仕様だからでしょう。
C言語を使いこなすと、とてもそれ以外の言語なんて使えません。
(例外はアセンブリ言語だけ)
No.4
- 回答日時:
>C言語を取得しなければならない目的および必要性について具体例
目的:これは逆でしょう。目的があってその手段として言語があるはずです。むろん業務上何らかの目的があれば別ですが、それは言語そのものとは何も関係ありません。
必要性:操作するターゲットのコンパイラがCしか対応しているものがなければ当然必要です。(ちょっと前までそういうものが大部分でした。)原理的にはマシン語などもあり得ますが実際には不適当と思われます。
具体例:最近はC++(制限付き)でもできるのがあるからなんとも。cコンパイラしかない環境であればそれがそうです。
歴史的背景で言えば、CはOSを作成するために開発された高級言語です。(ここで言う高級とはアセンブラ等と比較して)従って、ハードウエアのコントロールとかもかなり自由にできます。またメモリの使用量などもユーザが注意すればかなり節約できます。ポインタがあるのでアドレスを直接たたけますからパフォーマンスも割といいはずです。そのため組み込み系で今でも重宝しているわけです。
業務で聞かれたのか学問で聞かれたのか判然としませんでしたので少しぼやけた回答になりましたがご容赦を。
No.3
- 回答日時:
結局のところ、自分は何がやりたいかだと思います。
C言語を必要とする分野のソフトウェア開発をやりたければC言語が必要になりますし、そうでなければC言語に用はありません。
C言語を必要とするソフトウェアを作りたい場合でも、常にC言語を習得する必要があるかといえば、必ずしもそうではありません、多くの場合、お金を出して外注すれば済んでしまいますから。
お金を払って作る立場ではなく、お金をもらって作る立場、あるいはお金をかけずに自分で作る立場になりたければ、習得するしかないでしょう。
No.2
- 回答日時:
C言語又はアセンブラでしかコードできないものがあるからです。
1.OS自体
2.デバイスドライバ
3.幾つかの言語処理系(コンパイラ等)
4.高速にデータを処理しなければならないアプリのほぼ全て
基本的にはあなたの前にあるコンピュータの中身の
ほとんどがC/C++言語で作成されています。
C言語を学ぶ必要は全くありませんが、上記のような難易度の
高いシステムへのチャレンジ機会も、同時に失われることにな
るのを覚悟しなければなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 英語 明日英検2級の面接があるんですが、大問3番4番でスラスラ喋ることが出来なくて少し詰まったり、あーとか 1 2023/02/18 16:24
- 哲学 日本語は論理表現にふさわしくないか の問題です 4 2022/06/25 03:56
- IT・エンジニアリング c言語とjavaの需要について 3 2022/06/23 22:59
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- IT・エンジニアリング バックエンドエンジニアに転職 2 2022/04/07 00:51
- 大学受験 京都橘大学C日程なのですが残り2週間で英語2割あげるのは現実的ではありませんか? 過去問ではずっと5 2 2023/01/27 17:31
- その他(プログラミング・Web制作) WEBアプリ開発に必要な言語 5 2023/06/28 16:57
- IT・エンジニアリング FORTRAN、COBOL、C、Java、C++とか誰が作ったのですか?言語習い使いまた出て、キリが 4 2023/05/06 23:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
rpa化する言語としてら何があり...
-
Pythonって何を意識した言語な...
-
最新のプログラム言語を学ぶに...
-
Int('1234') で、strをかんたん...
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
C言語とhtmlの違いを どな...
-
C++における継続行
-
UNITY Float型の接尾辞fって
-
Delphiに詳しい方助けてくださ...
-
プログラミング言語について
-
CとC++は別物なんですか?
-
VBSでDim、Private、Publicの違い
-
F#って何??
-
チューリング完全とは何か?
-
accessという言語らしいのですが
-
引用符と二重引用符
-
初めてのプログラミング言語は...
-
今後必要とされる開発言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
UNITY Float型の接尾辞fって
-
C言語って古いですか?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
TO_CHARで小数点以下がある場合...
-
最新のプログラム言語を学ぶに...
-
C++における継続行
-
vbaとc言語の関連性について
-
VBScriptで引数を省略したい場合
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
おすすめ情報