6

現在、私は Java とそのオブジェクト指向設計の側面に取り組んでいます (PHP/MySQL もよく使用します)。Web には実装していません。一般的な目的のプログラムを設計するために使用します。しかし、今は C を学ぶ必要があり、C++ に興味があります。私はCプログラミング言語を手に入れました、この主題に関する最高の本だと言う人もいます。プログラミング設計の考え方やプログラムの作成方法において、文字列の処理を除いて、何が最大の課題になるのか誰か教えてもらえますか? クラスを持てないことは理解していますが、具体的にどのような影響がありますか (つまり、メソッドを再設計し、常に編集が難しいという考えですべてを設計する必要があります)? また、それらの言語から C++ への移行は難しいですか? とても難しい言語だと誰もが言いますが、以前の経験は役に立ちますか? そして、その経験があれば、Accelerated C++を最初から始めるのは難しい本でしょうか?

どうもありがとう。

4

7 に答える 7

10

OOP に慣れている場合、非 OO 言語への移行で最も困難な部分は、既存のメカニズムを使用して「オブジェクトをシミュレートする」というロジスティクスに順応することです。C では、これには通常、構造体があり、その構造体をパラメーターとして受け取る一連の関数が含まれます。C++ では、これを回避できます。

ただし、C または C++ への移行における最大の課題は、ポインターとメモリ割り当てに慣れることです。間違いなく、最初は参照と逆参照で間違いを犯し、C++ 参照を使用するときに混乱するでしょう。また、間違いなくメモリ リークやエラーが発生します。また、「ネットワーク上」で作業しているため、クラッシュはきれいではありません。これらの痛みを克服する方法があるかどうかはわかりませんが、練習してください。

于 2009-06-08T02:37:30.000 に答える
5

少し心配しないでください。私は Java でプログラミングを始め、次に C++ に移行しました。その後、x86 アセンブリを学び、今では C に夢中になり、オブジェクトのような C++ のいくつかの機能を使用するようになりました。少し前に Java プロジェクトを行ったこともあります。順序は重要ではありません。これらの言語の学習に力を入れている限り、成功するでしょう。

さて、あなたはデザインについて尋ねました。これはあなたが最も気に入ってくれる部分だと思います。OOP では、データベースに単純なラッパーを作成する場合は、オブジェクトを作成してから、ポリモーフィック関数などを使用して継承システムをセットアップできます。

C では、sqlite_wrapper.c という名前のファイルを作成し、#sqlite3.h をインクルードして、コードを書き始めます。いくつかの関数を作成し、送信するパラメーター (構造体と値) を決定すれば完了です。

C にはクラスはありませんが、ファイルがあります。異なるファイルが既にあると、ロジックが分離されます。Javaでは、ロジックを分離するためにファイルとその中にクラスがあり、それも非常に優れています。

頑張ってください、楽しんでください。

于 2009-06-08T03:56:54.503 に答える
4

C を基礎とするよりも、Java を基礎とする C++ を学ぶ方が簡単だと言いたいです。

Accelerated C++ は難しくなく、初心者レベルの本です。他にも良い本はたくさんあります。C++ で考えることは良い出発点になる可能性がありますが、最初は慣れ親しんだ多くのことで退屈するかもしれません。ですから、それを一通り見てからEffective Seriesを手に入れることをお勧めします。それなら、並外れてモダンな C++ が良いでしょう。

C++ はそれほど難しくありません。唯一のことは、自分でいくつかのことを行う必要があることです。Uri が投稿で述べたように、最も注意が必要な部分はメモリ管理です。実際、その広大で完全につかむのは難しく、それが難しい理由かもしれません.

この SO スレッドは、C++ の優れた重要な読み取りリストを提供します。

于 2009-06-08T04:52:33.570 に答える
3

C と C++ には大きな違いがあります。主なものは、C++ でのオブジェクト指向設計の使用です。何よりも「慣れる」タイプの取引である小さな違いもあります。ここでは、全体像を描くためにそれらのいくつかを示します。

  1. 動的メモリ割り当ての違い。
  2. C での関数のオーバーロードなし
  3. C に関数プロトタイプがない
  4. さまざまなキャスト スタイル
  5. C++ のより広範なライブラリ。

あなたは Java から移行しているので、OO プログラミングは習慣の一部である必要があり、C++ に移行する方が簡単です。どうしても C から始めなければならない場合でも、大したことではありません。両方の言語で使用されている同じ一般的な概念を理解することができます。

于 2009-06-08T06:39:35.277 に答える
2

私は、Java の Uni レベルのプログラマー (C 以外の言語での経験が豊富) であった 2 年目から、友人から約 2 時間の個別指導を受けて C++ の初心者になりました。「これがクラスを宣言する方法であり、ここがHello Worldなどです」という行に沿って。

そこから C への移行は、Java の機能のほとんどが C++ に含まれているため (ガベージ コレクションが欠けている最大のもの)、はるかに苦痛です。Boost (C++ ライブラリ)、特にスマート ポインターを調べることをお勧めします。また、C++ 標準テンプレート ライブラリの習得に費やした時間は、十分に費やされた時間です。

于 2009-06-08T04:37:31.470 に答える
1

とにかく、Cはそれほど難しくはなく、プログラミングの武器に追加するのに最適です。

C Javaと比較した場合:

  • ポインタがあります。これにより、低レベルのアクセスが可能になり、興味深いバグが発生します。
  • 言語は無駄がありません-機能ははるかに少ないです。
  • エラーと行番号を説明する素晴らしいスローであなたを保護するJVMはありません。OSのサポートはいくつかありますが、かなり制限されているため、ツールを使用する必要があります。
  • ガベージコレクションはありません。ガベージコレクションを使用しない限り、自分でメモリを管理する必要があります。

要約すると、主な問題はデバッグです。メモリとポインタの使用に関しては、いくつかの新しいバグが発生します。JVMがないため、ツールを使用するか、解決するのが難しいと考える必要があります。

于 2009-06-08T07:30:24.050 に答える
1

他の多くの人が言ったように。違いがわかれば可能です。いくつかの時点で、言語ではなく言語にプログラムしようとすることができるいくつかの時点で、他の方法を使用する必要があります。たとえば、最初の引数として構造体と構造体へのポインターを使用してオブジェクトを「シミュレート」します。経験があり、それを扱うことを余儀なくされている場合は、それを学びます。

おすすめしたいのは次の2点です。

  1. 言語から基本を学んだ後は、ポインタとメモリ処理、*、&、を使用する場所を深く理解してください。、->、重要な違いがあり、プログラムが機能するようになるまで試してみました。これは非常に悪い考えです。

  2. できる限りデバッガを使用してプログラムを実際にテストし、プログラムが実行または失敗する理由と何が起こっているのかを理解するための良い方法を考えてください。決して現れないエラーを犯すことはできますが、それが重要で時間がない場合、それらはあなたを食い尽くします

于 2009-06-08T04:33:22.563 に答える