Cでのプログラミングの学習(Pythonから提供)[終了]


22

これがこの質問をするのに間違った場所である場合、私に知らせてください。

私は職業別のPythonプログラマーです。私はCを学びたいと思っています。実際、私は何度も試みましたが、私はいつも落胆しています。Pythonでは、数行書くだけでプログラムは驚異的です。Cでは、役に立つことは何もできないようです。

インターネットに接続することさえ非常に複雑なようです。

Cを学ぶために私ができることについて何か提案はありますか?良いウェブサイトはありますか?クールなプロジェクトはありますか?

ありがとう


4
天才の肩の上に立つことができてうれしいです。PythonインタープリターはCで作成されています。これで、デザイナーが実際に行ったことを真に理解できるようになりました。それは驚くべきことです。
ペムダス

@Pemdas Cは通常、システムプログラムの作成に使用されます。
シーロック

ファイルの内容を読み取ることから始めて、おそらく別のファイルに基本的な変換を行うことをお勧めしますか?例:CSVを取得し、タブ区切りファイルに解析します。または、JPEG画像ファイルのBMPからヘッダー情報を読み取る方法を学習できます。
ジョシュアバーンズ

私は答えを追加するのが遅れていますが、このオンラインC for Pythonプログラムブックレットがあります。また、「ハードな方法でプログラミングを学ぶ」のメーカーは、「Learn C the Hard Way」と呼ばれる本を作成しています。
naught101 14

回答:


31

がっかりしないでください。

Pythonは高度なプログラミング言語です。Cと比較すると、わずかなコードで驚異を生み出すことができます。Pythonの結果をCで模倣しようとすることから始めないでください-すぐに失望します。Cでのプログラミングでは、より親密なレベルでコンピューターと対話するため、異なるスタイルの思考と理解が必要です。Cを学ぶための良い出発点は次のとおりです。

オンライン資料


1
プログラミング演習を提案できますか?できれば有用なもの。ありがとう。
ホンザポコルニー

12

Cを学びたいなら、インターネットへの接続から始めないでください。それは他の言語でもできます。それはCで最も重要なことではありません。

代わりに、このCチュートリアルのポインター、配列、参照、構造体を見てください。これは、メモリ管理と「マシンに近づける」機能の多くを理解するのに役立ちます。

この資料を学習して理解できる場合は、可能なプロジェクトへの展開を検討してください。これらの概念は、実際のプロフェッショナルCプログラミングの基本です。

このポインターチュートリアルも参考になります。


C_Tutorialリンクが...壊れている
user3768495

11

されて非常にインターネットに接続するためには複雑!それについて考えてください:

  • お使いのコンピューターには、WLAN、Bluetooth、イーサネットなど、複数の接続方法があります。それぞれに独自の設定があり、設定する必要があります。幸運なことに、これらの標準とドライバーが既に存在します。これらを使用することは、現在よりもはるかに困難です。

  • IPアドレスはIPv4でもIPv6でもかまいませんが、両方を処理できる必要があります。

  • システム用に構成されたプロキシがある場合とない場合があります。

  • FTP、HTTP、またはその他のプロトコルをサポートする必要があります。

  • ダイヤルアップを使用する必要がある場合があるため、まだ接続していない場合は、パスワードと電話番号を含む電話帳を指定する必要があります。WLANユーザー名/パスワードを使用した同上。

  • Cookieを使用する必要がある場合があります。

  • システムは一部のデータをキャッシュする可能性があるので、キャッシュを使用しますか?

そしてリストは延々と続く。

したがって、Pythonを使用してこれらを簡単に実行できるということは、必然的にこれらの多くがあなたから隠される(または設定するのが難しい)ことを意味します。Cライブラリには反対である:それはあなたが必要とするすべての電力を(あなたは簡単にシステムコールを実行することができます)が、いずれのデフォルト(または、実際には、持っていない任意のインターネットに接続するための機能を)。

Cを退屈だと考えるのではなく、強力だと考えてください。しかし、いずれにせよ、それでインターネットに接続しようとしないでください-それは非常に難しいことです。代わりに、より基本的なタスク(例えば、ファイルI / O)用のライブラリを使用する方法を学び始める、どのように実際のポインタと配列は、仕事について学び、あなたはすべてのそれらを学ぶとき、その後、大規模なプロジェクトに取り組んでみてください。あなたもPythonにもっと感謝します。:)


編集

個人的には、暇な場合は、代わりにC#を最初に学習することをお勧めします。unsafe使い始めたらすぐに、キーワードとポインターの使用方法について学習を開始し、C#でマーシャリングを行います。Pythonのように、本当に大きなライブラリを使用できますが、Cでできることの多くを行うことができます。次に、システムAPIの手動呼び出し(InternetOpenなど)に移行し、学習します。それらを機能させる方法。あなたはまだ多くの柔軟性を持っていますが、低レベルの概念の素晴らしい入門書を得るでしょう。これらを実行したら Cの学習を開始すると、簡単に理解できるようになり、高レベル言語と低レベル言語の長所と短所がわかるようになります(C?ニーズに合ったものを見つけるために。

とはいえ、Cのクラッシュコースは C に飛び込む出発点として役立つと思います。


8

Cを学習しているときはカーネルコードを読み取らないでください。パフォーマンスの最後のビットをすべて圧縮するのは、コツです。その一部は非常に非標準です。それはあなたを夢中にさせます。

代わりに、小規模でコード品質の高いプロジェクトをいくつか見てください。

  • Lua-プログラミング言語に興味がない場合は、この言語をスキップできます。そうでなければ、それは本当に美しいコードであり、それらがほんの少しでどれだけ達成されるかを見るのは驚くべきことです(あなたがPythonから来ているので、あなたはイライラしているように見えます)。
  • ZeroMQ-このプロジェクトが大好きです。軽量で超高速のメッセージキューです。繰り返しますが、高品質のものです。
  • DarkHttpd -Cの2700行のWebサーバー。ソケットプログラミング、解析、プロトコルの操作など、いくつかの楽しいトピックを扱っています。

0

高水準言語の1つの目的は、複雑なものを隠すことです。「下位」レベルの言語を学びたいが、本当に複雑なもの(以前はほとんど隠されていた)から始めたくない場合。いくつかの簡単な学習プロジェクトから始めて、数字の配列をソートしたり、文字列を逆にしたりしてみてください...

小さなステップを踏むと、急な坂を上るのが簡単になります。



-3

最初にCの文法を学習し、次にそれを使用してデータ構造とアルゴリズムを記述します。もちろん、C言語の専門家としてLinuxカーネルを読むことができます。

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