web-dev-qa-db-ja.com

Cでプログラミングを学ぶ(Pythonから)

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

私はPython職業別プログラマーです。Cを学びたいと思います。確かに、何度も試してみましたが、いつもがっかりします。Pythonでは、いくつかの行とプログラムを書きます。 Cでは、私は何か便利なことをすることができないようです。

インターネットに接続することさえ非常に複雑に思えます。

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

ありがとう

22
Honza Pokorny

落胆しないでください。

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

オンライン資料

31
J.K.

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

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

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

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

12
jmort253

インターネットに接続するのはですとても複雑です!それについて考えてください:

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

  • IPアドレスはIPv4またはIPv6にすることができ、両方を処理できる必要があります。

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

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

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

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

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

そしてリストはどんどん続きます。

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

Cを退屈だと考えるのではなく、Cを強力だと考えてください。しかし、いずれにせよ、それを使ってインターネットに接続しようとしないでください-これは、かなり難しい作業です。代わりに、より基本的なタスク(ファイルI/Oなど)のためにライブラリを使用する方法を学び、ポインタと配列が実際にどのように機能するかを学び、すべてを習得したら、次に大きなプロジェクトに取り組みましょう。 Pythonより多くの方法で感謝します。:)


編集

個人的には、自由な時間があれば、代わりにC#を最初に学ぶことをお勧めします。慣れてきたら、unsafeキーワードと、ポインタの使用方法およびC#でのマーシャリングの方法について学びます。 Pythonのように、非常に大きなライブラリを操作することはできますが、Cで実行できる多くのことを実行できます。次に遷移手動でシステムAPIを呼び出す( InternetOpen など)、それらを機能させる方法を学びます。まだ柔軟性は高いですが、下位レベルの概念についての優れた紹介が得られます。これらを行った後、そしてCの学習を開始します-その後、それは簡単なケーキであることがわかり、(C?取得しますか?)高水準言語と低水準言語の長所と短所、そしてニーズに合った言語を見つけることができます。

そうは言っても、 Cのクラッシュコース は、  C.

11
user541686

Cを学習しているときはカーネルコードを読まないでください。パフォーマンスの最後のすべてのビットをそこから引き出すトリックはたくさんあります。一部は非常に非標準です。それはあなたを狂わせます。

代わりに、いくつかの小さめで高品質なプロジェクトを見てください。

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

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

小さな一歩を踏み出すと、急な坂を上るのが簡単になります。

0
hotpaw2