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

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

22
C(またはC ++)の使用方法を学ぶことは、優れた(優秀な)プログラマーになるための要件ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私が最初にプログラミングの方法を学び始めたとき、本当のプログラマーは眠っている間にアセンブリを書くことができました。コンピュータサイエンスの本格的な教育には、アセンブリを使用したプログラミングのトレーニングと実践が含まれます。それはその後変わっており、アセンブリを含むコンピューターサイエンスの学位が含まれている場合、それが1つの課題と1つの章に委ねられ、4年間の学校教育の合計2週間の作業になります。 C / C ++プログラミングも同様のパスをたどっているようです。C ++で2週間以上プログラミングをしておらず、どこかの本でCしか読んでいない大学卒業生にインタビューしても、私はもう驚かない。最も深刻なCS学位には、かなりの時間の学習と一方または両方の言語の使用が含まれているようですが、傾向は明らかに学校でのC / C ++の実施が少なくなる傾向にあります。 CやC ++のコードを1行も読み書きすることなく、良い仕事をするキャリアを作ることは明らかに可能です。 これらすべてを考えると、努力する価値のある2つの言語を学習していますか?彼らは優れている必要がありますか?(「包括的な教育にはおそらく適切な言語の選択が重要である」などの明確な非言語固有のアドバイスに加えて、「プログラマーのキャリアを通じて新しい言語を試し、学習し続けることはおそらく良い考えです。灰色のセルを引き伸ばす」)

4
文字列を連結して1回呼び出すよりも、println()を頻繁に呼び出すのはどれほど悪いでしょうか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Code Review Stack Exchangeから移行されました。 5年前に移行され ました。 コンソールへの出力はコストのかかる操作であることは知っています。コードを読みやすくするために、長いテキスト文字列を引数として使用するのではなく、関数を呼び出してテキストを2回出力する方がよい場合があります。 たとえば、どれだけ効率が悪いのか System.out.println("Good morning."); System.out.println("Please enter your name"); 対 System.out.println("Good morning.\nPlease enter your name"); 例では、違いは1回の呼び出しのみprintln()ですが、それ以上の場合はどうなりますか? 関連するメモでは、印刷するテキストが長い場合、ソースコードを表示しているときにテキストの印刷に関連するステートメントが奇妙に見えることがあります。テキスト自体を短くすることができないと仮定すると、何ができますか?これは、複数のprintln()呼び出しが行われる場合ですか?誰かがコード行を80文字(IIRC)を超えてはならないと言っていたので、どうしますか System.out.println("Good morning everyone. I am here today to present you with a very, very lengthy sentence in order to prove a point about how it …
23 java  c++  performance  c  io 

6
ネストされたコメントの問題を解決する方法
1つの言語だけでなく、コメントをネストできないように見えます。この問題の良い解決策はありますか?C / C ++およびJavaでの1つの回避策は、単一行コメントのみを使用することですが、より大きなブロックをコメントアウトすることは不可能になります。私はこのようなものに直面しています: </li><!-- <li><!-- Save --> そのため、コメントを手動で確認して編集する必要があります。多くの言語でこれをどのように扱うべきかアドバイスをいただけますか?私にはわからないが、多分、Pythonにコメント'''を含めることができるかもしれない方法でこれを解決できるの#でしょうか?`
23 java  c++  python  c  comments 

5
いくつかの一般的なプログラミング言語がCの影響を受けるのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 TIOBEインデックスによると、プログラミング言語のトップ10は、Cの影響を強く受けているようです。 1. Java この言語は、その構文の多くをCおよびC ++から派生していますが、オブジェクトモデルが単純であり、低レベルの機能が少なくなっています。- wikipedia.org 2. C Cは史上最も広く使用されているプログラミング言語の1つであり、Cコンパイラが存在しないコンピューターアーキテクチャはほとんどありません。- wikipedia.org 3. C# .NET Frameworkの開発中、クラスライブラリはもともとSimple Managed C(SMC)と呼ばれるマネージコードコンパイラシステムを使用して作成されました。1999年1月、Anders Hejlsbergは、「Cのようなオブジェクト指向言語」を意味するCoolと呼ばれる新しい言語を構築するためにチームを結成しました。- wikipedia.org 4. C ++ Bjarne Stroustrupによって1979年にBell LabsでC言語の拡張として開発されました。- wikipedia.org 5. Objective-C Objective-Cは、Cプログラミング言語にSmalltalkスタイルのメッセージングを追加する、反射型のオブジェクト指向プログラミング言語です。- wikipedia.org 6. PHP 彼はこれらのスクリプトをCプログラミング言語のCommon Gateway Interface(CGI)バイナリとして書き直し、Webフォームと連携してデータベースと通信する機能を追加し、この実装を「パーソナルホームページ/フォームインタープリター」またはPHP / FIと呼びました。- wikipedia.org 8. Python Pythonは1980年代後半に考案され、1989年12月に、オランダのCWIのGuido van Rossumによって、例外処理とAmoebaオペレーティングシステムとのインターフェイスが可能なABCプログラミング言語(SETLに触発された)の後継としてその実装が開始されました。- wikipedia.org ABC(プログラミング言語)その設計者は、ABCプログラムは通常、同等のPascalまたはCプログラムの約4分の1のサイズで、より読みやすいと主張しています。- wikipedia.org 9. Perl Perlは、C、シェルスクリプト(sh)、AWK、sedなどの他のプログラミング言語から機能を借用しています。- …

9
Cがバッファオーバーフローを起こしにくくするのはなぜ難しいのですか?
私は大学でコースを行っています。ラボの1つでは、提供されたコードに対してバッファオーバーフローエクスプロイトを実行しています。これは、スタック上の関数の戻りアドレスを変更して別の関数に戻るなどの単純な悪用から、プログラムのレジスタ/メモリ状態を変更してから呼び出した関数に戻るコードまでの範囲です。あなたが呼び出した関数は、エクスプロイトを完全に忘れています。 私はこれについていくつか調査を行いましたが、この種のエクスプロイトは、Wiiでhomebrewを実行したり、iOS 4.3.1のテザーなしのジェイルブレイクを実行したりするなど、今でもどこでも使用されています。 私の質問は、なぜこの問題を修正するのがとても難しいのですか?これが何百ものものをハッキングするために使用される主要なエクスプロイトの1つであることは明らかですが、許可された長さを超えて入力を切り捨て、取得したすべての入力を単純にサニタイズするだけで修正するのは非常に簡単だと思われます。 編集:私は考慮すべき答えが欲しい別の視点-なぜCの作成者はライブラリを再実装することでこれらの問題を修正しないのですか?

3
プログラミングコンテストやコンテストでC ++が優勢なのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 C ++は非常に高速な言語であることを理解していますが、Cはそれほど高速ではないのでしょうか、それとも場合によっては高速ではありませんか? そうすれば、C ++にはOOPがあると言うかもしれませんが、ほとんどのプログラミングパズルに必要なOOPの量はそれほど大きくなく、私の意見ではCがそれを処理できるでしょう。 私がこれを求めている理由は次のとおりです。私はプログラミングのコンテストやコンテストに非常に興味があり、それらをCでコーディングすることに慣れています。ただし、大多数の人がC ++を使用していることに気付きました(たとえば、Google Code Jam 2011のファイナリスト25人中17人がC ++を使用していましたが、誰もCを使用していませんでした)。 オブジェクト指向とは別に、何がC ++をプログラミング競技に適した言語にしているのですか?大会でより良い成績を収めるために学んで使用すべき言語の特徴は何ですか? 背景については、私は自分がCにかなり習熟していると考えていますが、C ++を学び始めたばかりです。
23 c++  c 

5
Cコンパイラの歴史は何ですか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 「デニスリッチーがC言語を開発した」と言うとき、C言語で記述されたソースコードをコンパイルできるコンパイラーを(「既に」開発された他の言語を使用して)作成したということですか?はいの場合、彼が最初のCコンパイラを書くのに使用した言語は何ですか?コンパイラはプログラムであり、現在利用可能なCコンパイラを使用してC言語用の別のコンパイラを作成できることを理解しています。あれは正しいですか?
23 c  compiler 

16
CがわからなくてもC ++が得意であれば大丈夫ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 ここで最もよく答えられると思う質問があります。 私はC++言語に満足しているので、Accelerated C++ほとんどすべての演習を読んで実行したので、私はかなり上手です。 しかし、私には大きな問題があります。学ぶ必要がありますCか?C私の人生でこれまでやったことがありません。私はちょうどを始めC++、私がプログラミングを始めたとき。おそらく誰もがなぜこの言語をそれほど複雑と呼ぶのかを知りたいと思っていたからです。今、私はその質問への答えを知っていますが;) 私はC今日の世界で知らなくても生き残ることができるかどうかを知ることに特に興味があります。会社で面接をする場合、私に知らないことを伝える場合C-彼らはそれをOKと見なしますか?私が得意とする2つの言語は、PythonとC ++です。企業がインタビューでデータ構造を尋ねると聞いたことがあるので、私はこの原因を尋ねています。だから、彼らが私にそれを実装するように頼んだら、そして私がC ++でそれをするなら、それは受け入れられますか? また、「C ++のときにCを知らない」と言う人は、返信しないでください:)違反はありませんが、なぜCを学ぶことが必須なのか理解できません。
23 c++  c 

7
CおよびC ++で符号なし整数を使用する
長い間私を困惑させる非常に簡単な質問があります。私はネットワークとデータベースを扱っているので、扱うデータの多くは32ビットと64ビットのカウンター(符号なし)、32ビットと64ビットの識別IDです(また、符号の意味のあるマッピングはありません)。私は、負の数として表現される可能性のある実際の単語の問題を実際に扱うことは決してありません。 私と私の同僚は、これらの問題のためにuint32_t、通常、符号なしの型uint64_tを使用します。頻繁に発生するため、配列インデックスや他の一般的な整数の使用にも使用します。 同時に、私が読んでいるさまざまなコーディングガイド(Googleなど)は、符号なし整数型の使用を推奨しておらず、JavaとScalaのどちらにも符号なし整数型がないことを知っています。 ですから、私たちの環境で署名された値を使用するのは非常に不便であると同時に、コーディングガイドがまさにこれを行うことを主張する正しいことを理解できませんでした。
23 c  coding-style 


1
「exit(-1)」はどこから来たのですか?
「異常終了」を表すためにを使用することを推奨するexit(-1)、インターネット上の多くのレガシーソフトウェアや悪いチュートリアルに見られreturn -1ます。問題は、少なくともPOSIXでは-1、有効なステータスコードではなく、有効なステータスコードです。man 3 exitはのexit()値をstatus & 0377親に返すことを示しています。つまり、に-1なり255ます。非POSIXシステムでEXIT_FAILUREは、移植性のために推奨されます。しかし、「-1は異常終了を意味する」と「EXIT_FAILUREは1以外の可能性があります」とは表示されません。 これを永続化するStackOverflowの質問の例を次に示します。ソフトウェア「unrealircd」も、プログラムのexit(-1)終了に使用するプログラムの例です。実際には、これにより、とのインターフェースが難しくなりますsystemd。 このアンチパターンはどこから来たのですか?あるコンテキストで有効ですか?

7
Cでのプログラミングの学習(Pythonから提供)[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 これがこの質問をするのに間違った場所である場合、私に知らせてください。 私は職業別のPythonプログラマーです。私はCを学びたいと思っています。実際、私は何度も試みましたが、私はいつも落胆しています。Pythonでは、数行書くだけでプログラムは驚異的です。Cでは、役に立つことは何もできないようです。 インターネットに接続することさえ非常に複雑なようです。 Cを学ぶために私ができることについて何か提案はありますか?良いウェブサイトはありますか?クールなプロジェクトはありますか? ありがとう
22 learning  python  c 

6
sizeofスタイル:sizeof(type)またはsizeof変数?
sizeofメモリ関連の操作(in memsetやなどmalloc)に使用する2つのスタイルを見てきました。 sizeof(type)、そして sizeof variable または sizeof(variable) どちらを好むか、2つのスタイルを組み合わせて使用​​しますか。また、各スタイルをいつ使用しますか。各スタイルの長所と短所、およびそれらを使用するときは何ですか? 例として、一方のスタイルが役立ち、もう一方のスタイルが役立たない次のような状況を見ることができます。 ポインターの間接指定が間違っている場合: type *var; ... memset(var, 0, sizeof var); /* oops */ タイプが変更されたとき: new_type var; /* changed from old_type to new_type */ ... memset(&var, 0, sizeof(old_type)); /* oops */
22 c  coding-style 


2
可変幅タイプは、最新のCの固定タイプに置き換えられましたか?
本日、Code Reviewのレビューで興味深い点に出会いました。@Veedracはにrecommened この回答可変サイズの種類(たとえばことintとがlong)のような固定サイズの種類に置き換えることuint64_tとuint32_t。その答えのコメントからの引用: intおよびlongのサイズ(およびそれらが保持できる値)はプラットフォームに依存します。一方、int32_tは常に32ビット長です。intを使用するということは、コードがプラットフォームごとに異なる動作をすることを意味しますが、これは一般的には望んでいないことです。 共通の型を修正しないという標準の背後にある理由は、@ supercatによって部分的に説明されています。Cは、当時システムプログラミングに通常使用されていたアセンブリとは対照的に、アーキテクチャ間で移植できるように作成されました。 設計意図はもともと、int以外の各タイプがさまざまなサイズの数を処理できる最小のものであり、そのintが+/- 32767を処理できる最も実用的な「汎用」サイズであると思いました。 私については、私はいつも使用intしており、代替案についてはあまり心配していません。私はいつも、これが最高のパフォーマンス、ストーリーの終わりを持つ最もタイプだと思っていました。固定幅が便利だと思った唯一の場所は、ストレージ用またはネットワーク経由の転送用にデータをエンコードする場合です。他の人が書いたコードで固定幅タイプを見ることはめったにありません。 私は70年代に行き詰まっintていますか、それともC99以降の時代に使用する理論的根拠はありますか?

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