タグ付けされた質問 「c」

Cは、オペレーティングシステム、ゲーム、その他の高性能作業に使用される汎用のコンピュータープログラミング言語です。

5
非常に基本的なコンパイラの書き方
gccコードをコンパイルしたような高度なコンパイラは、コードが記述された言語(C、C ++など)に従って機械可読ファイルにコンパイルします。実際、それらは対応する言語のライブラリと機能に従って各コードの意味を解釈します。私が間違っている場合は修正してください。 非常に基本的なコンパイラ(おそらくCで)を記述して静的ファイル(テキストファイルのHello Worldなど)をコンパイルすることにより、コンパイラをよりよく理解したいと思います。私はいくつかのチュートリアルと本を試しましたが、それらはすべて実用的なケースです。対応する言語に関連付けられた意味を持つ動的コードのコンパイルを扱います。 静的テキストを機械可読ファイルに変換する基本的なコンパイラーを作成するにはどうすればよいですか? 次のステップは、変数をコンパイラーに導入することです。言語の一部の機能のみをコンパイルするコンパイラを作成したいと想像してください。 実用的なチュートリアルとリソースをご紹介いただければ幸いです:-)
214 c  compiler  compilation  gcc 

7
いつフロートを使用し、いつダブルを使用しますか
多くの場合、プログラミングの経験では、実数にfloatを使用するかdoubleを使用するかを決定する必要があります。フロートに行くこともあれば、ダブルに行くこともありますが、実際にはもっと主観的に感じます。私が自分の決定を守るために直面​​するなら、おそらく正当な理由を述べないでしょう。 いつfloatを使用し、いつdoubleを使用しますか?常にメモリ制約が存在する場合にのみ、doubleを使用しますか?または、精度の要件でdoubleを使用する必要がない限り、常にfloatを使用しますか?floatとdoubleの間に基本的な数理計算の計算の複雑さに関して実質的な違いはありますか?floatまたはdoubleを使用することの長所と短所は何ですか?そして、ロングダブルを使用しましたか?
194 c++  c  floating-point  numbers 

8
すべての言語はCで書かれていますか?
時々、異なる言語(C / C ++、C#)でプログラミングしているときに、この考えが思い浮かびます。 すべての言語はCプログラミング言語で書かれていますか? C言語はすべての言語の母/父ですか? 各コンセプト(OOPなど)はすべてCで実装されていますか? 私は正しい方向にいますか?

12
C ++を介したC、およびCを介したC ++を使用する場合
私はもう1年以上コンピューターサイエンスを紹介されていますが、私の経験から、CやC ++はどちらも「超高速」言語と見なされているようですが、Pythonやその他のスクリプト言語などは通常やや遅いと思われます。 しかし、ソフトウェアプロジェクトまたは小さなプロジェクトでさえ、それらのファイルの特定の数nがCで書き込まれ、それらのファイルの特定の数mがC ++で書き込まれるファイルをインターリーブする多くのケースを見てきました。 (C ++ファイルにはほとんどの場合対応するヘッダーがありますが、Cファイルにはそれほど多くないことに気付きました)。しかし、私の主な質問のポイントは、C ++を介してCを使用するのが適切な場合、およびCを介してC ++を使用する方が適切な場合の一般的な直感を得ることにあります。(1)C ++がオブジェクト指向であるという事実以外Cはそうではなく、(2)構文は非常に似ており、C ++は多くの点でCに似ているように意図的に作成されましたが、その違いはわかりません。それらは多くのドメインで(ほぼ)完全に互換性があるように思えます。 だから誰かが状況を解決できたら幸いです!ありがとう
164 c++  c 

19
C、Perl、Pythonなどの代わりにC ++を使用する理由はありますか?[閉まっている]
Linux(サーバー側)開発者として、C ++をどこで、なぜ使用する必要があるのか​​わかりません。 パフォーマンスに行くとき、最初と最後の選択肢はCです。 「パフォーマンス」が主要な問題でない場合は、PerlやPythonなどのプログラミング言語が適切な選択です。 この分野で私が知っているほとんどすべてのオープンソースアプリケーションは、C、Perl、Python、Bashスクリプト、AWK、さらにはPHPで書かれていますが、誰もC ++を使用していません。 GUIやWebアプリケーションのような他の分野については話していません。Linux、CLI、デーモンについてだけ話しているのです。 C ++を使用する十分な理由はありますか?

7
Cプログラミング言語が登場したとき、それは低レベル言語と見なされていましたか?
現在、Cは低レベル言語と見なされていますが、70年代に低レベル言語と見なされていましたか?この用語は当時も使用されていましたか? 多くの一般的な高レベル言語は80年代半ば以降まで存在しなかったため、低レベルの性質が長年にわたって変化したかどうか、どのように変化したかを知りたいです。

6
なぜCよりも速くて「良い」言語が出てこないのですか?[閉まっている]
今日のすべての新しい「現代」言語で、Cが依然として最速で「マシンに最も近い」と言われているのはどうしてですか。私は、物事を行う正しい方法が1つしかないことを本当に信じていません。Cは非常に長い間存在していました(60年代以来!)。ほぼ50年前に書かれたものよりも優れたものを思いついていないのでしょうか? 現代の言語は高レベルであり、ガベージコレクションやメモリ割り当てなどの特定のタスクを処理し、ライブラリなどを利用していることを認識しています。私は、なぜCに真の2番目の選択肢がなかったのかを尋ねています。 Cが非常に完璧なので、他の方法でコンピューターを操作することはできません(開発者採用は別として)。 編集見て、私はCやあなたの好きな言語をノックしようとはしていません。なぜCが標準になったのか、なぜ他の選択肢が出現せず、Cが「受け入れられた」のか疑問に思っています。
147 c 

11
C / C ++という用語の使用をやめるべきですか?
CとC ++は異なる言語であることは理解していますが、C ++を学習していたとき、CはC ++のサブセットであるか、C ++はクラスを持つCであると常に言われました。そして、C ++ x0、C ++ 11(または一般的な現代のC ++ 11/14/17)が登場するまで、それは非常に真実でした。実際(特に組み込みシステムで作業している場合)、C ++で記述されたコードを見つける可能性が非常に高くなりますが、多くの部分は完全に純粋なC言語で記述されています。ここにいくつかの質問があります: C / C ++という用語の使用をやめるべきですか? #1の答えが「はい」の場合、CとC ++を組み合わせて使用​​するプログラムをどのように呼び出すのでしょうか? それらの両方が「異なる」言語であることを考えると、C ++コンパイラがC言語で書かれたコードのサポートをやがて停止する可能性があります(現代のc ++はポインタ、動的メモリ処理などの基本的なもののためにCの考え方とは異なるため) 現在、互換性を維持するためにC / C ++の標準を作成している人々の間でコラボレーションはありますか #4が「はい」の場合、このようなコラボレーションは近い将来、現代のc ++(11/14/17)の登場で終わる可能性があります 私はすでに同様の質問があることを知っていますが、多くの人々がこれらの質問を共有していると確信していますので、特に近い将来のC ++の傾向に関係する点については良い答えを得ることに非常に興味があります。
140 c++  c  terminology  c++11 

16
Cがとても危険なのに、なぜ人々はCを使うのですか?
Cの学習を検討しています。 しかし、なぜ「危険」に使用できるのにC(またはC ++)を使用するのでしょうか? 危険というのは、ポインターやその他の類似のものを意味します。 Stack Overflowの質問のように、gets関数は使用すべきでないほど危険なのはなぜですか?。プログラマーがJavaやPython、またはVisual Basicのような別のコンパイル言語を使用しないのはなぜですか?
132 c++  c 

7
ある行で変数を宣言し、次の行でそれを割り当てるのはなぜですか?
CおよびC ++コードでは、次の規則がよく見られます。 some_type val; val = something; some_type *ptr = NULL; ptr = &something_else; の代わりに some_type val = something; some_type *ptr = &something_else; 最初は、これはスコープの最上部ですべてのローカル変数を宣言しなければならなかった時代から残された習慣だと思っていました。しかし、私はベテラン開発者の習慣をすぐに却下しないことを学びました。だから、1行で宣言し、その後に割り当てる理由はありますか?
101 c++  c 

4
Java参照はCポインターとどのように異なりますか?
Cにはポインターがあり、Javaには参照と呼ばれるものがあります。彼らはすべてが何かを指しているという意味でいくつかの共通点を持っています。Cのポインターは、それらが指すアドレスを格納することを知っています。参照には住所も保存されますか?ポインターがより柔軟でエラーが発生しやすいことを除いて、それらはどのように違いますか?
97 java  c  pointers  reference 

3
プログラミング言語、特にCでは、中括弧ではなく中括弧を使用するのはなぜですか?
「Cスタイル言語」の定義は、実際には「中括弧({})を使用する」まで簡略化できます。なぜその特定の文字を使用するのですか(そして[]、少なくともUSキーボードではShiftキーを必要としないなど、より合理的な文字を使用しないのはなぜですか)。 これらの中括弧からプログラマの生産性に実際の利点はありますか、または新しい言語設計者が代替手段(つまり、Pythonの背後にいる人)を探す必要がありますか? ウィキペディアは、C が前述のブレースを使用しているが、その理由を説明していないと言っています。Cベースのプログラミング言語のリストに関するウィキペディアの記事の声明は、この構文要素がやや特別であることを示唆しています。 大まかに言って、Cファミリー言語は、Cに似たブロック構文を使用する言語です(ブロックの開始と終了のための中括弧を含む)...

14
Cプログラミング言語はまだ使用されていますか?
私はC#プログラマーであり、開発の大部分はWebサイトといくつかのWindowsアプリケーション用です。Cに関する限り、必要がないので、私は長い間使用していません。友達がC#の学習を手伝っている間に、仕事をテストするためにCを学ぶ必要があると言ったのは驚きでした。 私は、Cで開発が行われている場合にのみ、誰かがテストのためにCを学習するだろうと考えました。私の知識から、COMおよびハードウェア設計に関連するすべての開発もC ++で行われます。したがって、C ++を使用する必要がある場合、Cの学習は意味がありません。私も歴史的な重要性を信じていないので、なぜCを学ぶのに時間とお金を浪費するのですか? Cは、新しいソフトウェア開発やその他の何かでまだ使用されていますか?

15
OOPの時代にCがこれほど人気が​​あるのはなぜですか?[閉まっている]
私はCとC ++の両方で多くのコードを記述しましたが、CがJavaにやや遅れて2番目に人気のある言語になるとは思いませんでした。 TIOBEプログラミングコミュニティインデックス 私は、OOPのこの時代に、Cがまだとても人気がある理由について興味がありますか?人気のあるプログラミング言語の上位5つのうち4つは、「現代の」オブジェクト指向対応言語です。 さて、CでOOPをある程度使用できることに同意しますが、それはある種の苦痛で洗練されていません(少なくともC ++とはかなり違います)。それでは、何がCをそんなに人気にしているのでしょうか?効率ですか?低レベルである; すでに存在するライブラリの大部分または他の何か?

16
若い人はポインターの概念を学ぶ必要がありますか?
CマスターのDennis RitchieがCにポインターを導入したのはなぜですか?そして、なぜVB.NETやJavaやC#などの他のプログラミング言語がそれらを排除したのですか?Googleでいくつかのポイントを見つけました。あなたのコメントも聞きたいです。なぜ現代の言語でポインターの概念を排除するのですか? Cは基本的な言語であり、ポインターはCを強力で際立ったものにし、Cをより現代的な言語と競争させる概念であると人々は言います。それから、なぜ彼らはより近代的な言語のポインターを排除したのですか? 新しいプログラマーにとって、ポインターの知識はまだ重要だと思いますか?最近人々はVB.NETまたはJavaを使用していますが、これはCよりも高度な機能をサポートしており(ポインターの概念を使用していません)、現在見ている多くの人々(私の友人)は、高度な機能をサポートするためCを無視してこれらの言語を選択します。Cから始めるように伝えます。Cでは不可能なVB.NETまたはJavaの高度なことをしているときに、ポインターの概念を学ぶのは無駄だと言います。 どう思いますか? 更新: Googleで読んだコメントは次のとおりです。 初期のコンピューターは遅すぎて最適化されていませんでした。 ポインターを使用すると、アドレスに直接アクセスできるようになり、関数呼び出しでアドレスのコピーを作成する代わりに時間を節約できます。 ポインターを使用するとセキュリティが著しく低下するため、JavaとC#にはポインターが含まれていません。 これらと、さらに私が見つけたもの。私はまだいくつかの貴重な答えが必要です。それは大歓迎です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.