22

私は過去に、プログラミングの方法を自分自身に教えて、いくつかの誤ったスタートを切ったことがあります。私はいくつかの本(主にCとPython)を読み終えましたが、座って実際に自分でプログラムを書くことができるかのように感じることなく、構文を学ぶだけで終わりました。CodeplexまたはSourceforgeでプロジェクトのソースツリーを調べようとすると、コードの読み取りをどこから始めればよいかわからないようです。依存関係はあらゆる方向に向かっているようです。

「路上で」行われている方法でプログラミングを学んでいないように感じるので、初心者がコーディング方法をどのように学ぶべきかを尋ねるのに別のアプローチを取ると思いました。プログラミングをもう一度学ばなければならない場合、あなたがやらないことは何ですか?何週間または何ヶ月も無駄になっていることがわかっているので、何に時間を費やしましたか?

4

22 に答える 22

49

初心者が数週間または数か月を無駄にしているのは、キーボードで入力しているところです。コンピューターは非常に応答性が高く、編集-コンパイル-実行サイクルで何時間も元気に時間を費やします。あなたが学んでいるなら、あなたは何時間も節約するでしょう

  • コンピューターに近づく前に、紙にデザインを計画します。どの設計方法を選択するか、または設計方法について聞いたことがないかどうかは関係ありません。あなたの脳が完全に関与し、コンピュータに気を取られていない間に計画を書き留めるだけです。

  • コードがコンパイルされない、または正しい答えが得られない場合、5分以内に修正できない場合は、コンピューターから離れてください。何が起こっているのか考えてみてください。 コードを印刷して、正しいと思われるまで落書きします。

これらは、コーディングする前に考える、単純だが難しい古いアドバイスの実装を支援するための単なるデバイスです。

学んでいたとき、コンピューティングセンターから自宅まで徒歩15分で数え切れないほどの問題を解決しました。悲しいことに、最近のPCでは15分もかかりません:-)とにかくそれを取ることを学ぶことができれば、あなたはより優れたプログラマーになり、より速くなります。

于 2008-12-29T02:35:23.167 に答える
23

私は確かに「本物の」ソフトウェアプロジェクトを見ることから始めません。あなたが言うように、どこから始めればよいかを知るのは難しすぎる。これは主に、大規模なプロジェクトは、個々のアルゴリズムやプログラムフローよりも、大規模な設計に重点を置いているためです。一つには、おそらくマルチスレッドなどを備えた複雑なGUIアプリケーションを見ているでしょう。コードを見て「始める」場所は実際にはありません。

プログラミングを学ぶ最良の方法は、解決したい(必要な)問題を抱えて、それを解決することです。しかし、最も重要なのは、コードを書くことです。プログラミングの本を読むときは、すべての演習を行ってください。あなたがそれらを正しくしたことを確認してください。コードを書くことに代わるものはありません。ねじ込んでから固定する以外に方法はありません。

于 2008-12-29T02:38:28.827 に答える
19

スタック オーバー F.. 待って、へー。

私にとって最大の時間の浪費は、一般的に「最良の答えを見つけること」に関するものです。解決方法を知っている問題に出くわすことがよくありますが、より良い解決策があると感じて、それを探し続けます。ほんの数時間または数日後、気がつくと Firefox のインスタンスが 7 つあり、それぞれが 46 インチのモニター スペース全体に広がった少なくとも 5 つのタブを含んでいて、ブラック ホールに捕らえられていることに気づきました。それは無限の知識の追求です。

あなたと私自身への私のアドバイスは、屈折の概念に慣れることです. 本質的にこれが意味することは (この用語に慣れていない場合)、問題の解決策を考え出し、それを実行することです。問題やプログラムを完成させたら、方法論を見直して研究し、どこを変更して改善できるかを見つけ出すことができます。

この概念は、私にとって常に従うのが難しいものでした。大学では、一度論文を書き、印刷して提出することを好みました。コードを書くことは、論文を書くことと非常によく似ていると考えることができます。ペンをパッドに置き、頭に浮かんだことを押し出すだけでうまくいくかもしれませんが、新鮮な目でそれを振り返ると、間違いなく、別のことをしたいと思う何かが見えます.

于 2008-12-29T03:51:01.253 に答える
13

他の人のプロジェクトのソースツリーを読むことについて話していることに気づきました。 他の人のコードを読むことは素晴らしいアイデアですが、より選択的に読む必要があります。多くのオープンソースコードは読みにくく、とにかくエミュレートすべきものではありません。したがって、尊敬するプログラマーによって推奨されていないコードを読むことは避けてください

ヒント:私が尊敬するすべてのプログラマーであるJon Bentley、Brian Kernighan、Rob Pike、およびPJ Plaugerは、読む価値のある多くのコードを公開しています。本の中で。

于 2008-12-29T02:38:58.013 に答える
8

プログラムの方法を学ぶ唯一の方法は、より多くのコードを書くことです。本を読むことは素晴らしいですが、コードを書く/修正することは学ぶための最良の方法です。あなたは何もしなければ何も学ぶことができません。

于 2008-12-29T02:30:28.700 に答える
3

構文の詳細よりも設計の観点については、この本「プログラムの設計方法」も参照してください。

于 2008-12-29T02:37:20.480 に答える
3

数週間または数か月を無駄にした唯一のことは、自分の設計が特定のソリューションを実装するための最良の方法であるかどうかを心配することでした。これは「時期尚早の最適化」として知られており、私たち全員がある程度苦しんでいることを今では知っています。プログラミングを学ぶ正しい方法は、問題を解決し、解決策を測定して十分に機能することを確認してから、次の問題に進むことです。しばらくすると、解決した問題が山積みになりますが、さらに重要なのは、プログラミング言語を知っていることです。

于 2008-12-29T02:41:18.820 に答える
3

他の投稿では、ここに優れたアドバイスがあります。これが私の考えです:

1)タイプすることを学び、その理由はこの記事でSteveYeggeによって説明されています。それはあなたが想像できる以上に役立つでしょう。

2)コードの読み取りは、一般的に難しい作業と見なされます。したがって、読んで理解しようとするよりも、オープンソースプロジェクトを入手してコンパイルし、変更を開始してその方法を学ぶ方がよいでしょう。

于 2008-12-29T04:10:16.033 に答える
3

私はあなたがいる状況を理解することができます。本を読んでも、多くの人があなたをプログラマーにすることはありません。あなたがする必要があるのはプログラミングを始めることです。

実際、プログラミングは私の意見では水泳によく似ています。構文が少ししかなく、コーディング手法の量がさらに少ない場合でも、とにかくコーディングを開始してください。小さなアプリケーション、家の在庫、経費カタログ、日付シート、CDカタログ作成者など、好きなものを作成します。

アイデアは、その核心に入るということです。プログラミングを開始すると、実際の問題に遭遇し、それらと戦うにつれて問題解決スキルが向上します。それがあなたが毎日より良いプログラマーになる方法です。

それで、それの厚いところに入り、そしてすぐに泳いでください...それはあなたがそれを作る方法です。

幸運を

于 2008-12-29T04:45:50.860 に答える
3

この質問は、人によって答えが大きく異なると思います。

私自身は、クリックアンドドラッグのUIビルダーを使用して、ある時点でC ++を試しました(私は約10歳で、すでにしばらくプログラミングを行っていました)。これは間違いだったと思うので、Cやポインターなどに直行する必要がありました。私はそのような人だからです。

あなたの場合、誰かに正しい道を案内され、自分で飛び込んで何かをすることに少し臆病になりたいようです。(あなたは何冊かの本を読みました、そして今あなたは何をしてはいけないかを尋ねています。)

私がどのように学んだかをお話しします。たくさんの楽しい、比較的短いプロジェクトを行うことによって、着実に困難を増しています。私はQBasic(これはまだ素晴らしい学習ツールだと思います)から始めました、そしてそれは私が私のプログラミングスキルのほとんどを開発した場所でした。もちろんそれ以来、拡張・洗練されてきましたが、当時はすでに良いデザインができていました。

あなたが引き受けることができるプロジェクトの種類はあなたの興味に依存します。数学的な傾向がある場合は、素数ジェネレーターを試すか、3Dポイントを画面に投影することをお勧めします。ゲームデザインに興味がある場合は、ポン(簡単)またはマインスイーパ(より難しい)のクローンを作成してみてください。または、ハッカーの方は、簡単なチャットプログラムやファイル暗号化ソフトウェアを作成することをお勧めします。

これらのプロジェクトに自分で取り組み、「正しい」方法で物事を行っているかどうかを心配する必要はありません。それが機能する限り、あなたは多くのことを学びました。プロジェクトを完了した後しばらくして、プロジェクトを再検討してより良い方法で実行したり、他の人がそのようなことをどのように行ったかを確認したりすることができます。

あなたが導かれたいと思われる方法を考えると、おそらくあなたは自分自身をメンターに見つけるべきです。

于 2008-12-29T04:46:45.913 に答える
2

ポインタの使用方法やメモリを手動で管理する方法を学習しないでください。あなたはCについて言及しましたが、私は* xと&xの混合によって引き起こされたバグを修正するために多くの時間を費やしました。これは悪です...

解決する問題を見つけて、問題を解決するアルゴリズムのスケッチを書くか、描いてから、それを書いてみてください。Python(初心者にとってはるかに使いやすい)を使用するか、静的に割り当てられたメモリのみでCを使用します。そして、本/チュートリアルを使用してください。彼らは解決策を備えた複数の演習を提供しているので、あなたはそれらとあなたの演習を比較し、他のアプローチを見ることができます。

実際に簡単なものを書くことができると感じたら、オブジェクト指向デザインの本/チュートリアルを参照してください。それは世界が提供しなければならない最高のものではありませんが、直感的であることがわかるかもしれません。そうでない場合は、関数型プログラミング(LISP、Scheme、Haskell言語など)または論理プログラミング(Prologなど)を確認してください。多分それらはあなたによりよく合うでしょう。

また-いくつかの仲間を見つけます。コーディング、コードの保守、設計について話すことができる人。そのような人は本以上の価値があります。

すべてのCファンへ: C言語は本当に素晴らしいです。PythonやRubyなどの高級言語では不可能な範囲でメモリ使用量を最適化できます。コンパイルされたコードも非常に高速であり、RTOSまたは最新の3Dゲームエンジンの唯一の選択肢です。しかし、これは初心者にとって良いエントリーポイントではありません。それが私が信じていることです。

ああ、そしてあなたに幸運を!そして、尋ねることを恥じないでください!聞かないと、答えを見つけるのがはるかに難しくなります。

于 2008-12-29T02:55:49.460 に答える
2

あなたがまともな数学のスキルを持っていると仮定してhttp://projecteuler.net/を試してみてくださいそれは短いプログラムを書くことによって解決できるはずのますます困難を解決するための一連の問題を提示します。これにより、オープンソースプロジェクトの詳細に迷うことなく特定の問題を解決する経験が得られるはずです。

于 2008-12-29T04:32:48.627 に答える
1

基本的な言語構文の後、デザインを学ぶ必要があります。それは難しいです。 この本が役立つかもしれません。

于 2008-12-29T02:30:38.280 に答える
1

これまで時間を無駄にしてきたと考えるのはやめた方がいいと思います。代わりに、教育が不完全であり、準備ができていない一歩を踏み出したと思います。あなたが読んだ本は役に立つようですね。言語の複雑さを学んでいますね。そのコードを一緒にパッケージ化して実行するために使用するツールに慣れていないようです。一部の本では、言語の構文、設計パターン、アルゴリズム、データ構造などのトピックに焦点を当てていますが、その情報を実際に適用するために必要なツールについてはまったく言及されていません。これらの本は素晴らしいですが、あなたが触れたことがすべてであるなら、それはあなたの状況を説明すると思います.

どの開発環境を使用していますか? Windows 向けに開発している場合は、プロジェクトの作成、コードの追加、Visual Studio での実行とデバッグに習熟している必要があります。Visual Studio Express は Microsoft から無料でダウンロードできます。

使用している開発環境の UI を実際に順を追って説明している本のようなチュートリアルを探すことをお勧めします。ドロップダウン メニューのある実際のスクリーンショットを探します。チュートリアルで説明されている内容を見て、その方法がわからない場合は、その本を購入することを検討してください。できれば、自分で書いたコードではなく、コピーして貼り付けることができるコードが含まれていることをお勧めします。

個人的には、これらの本は好きではありません。他のことを行う方法に基づいて、VS で新しいことを行う方法を予測できるからです。ただし、ツールの使用方法の観点からトレーニングが不完全な場合は、正しい方向に進む可能性があります。

Python や C の開発に関するこの種のチュートリアル ブックを見つけるのはおそらく難しいでしょう。ただし、.Net 開発には過剰な数があります。

于 2008-12-29T03:03:23.143 に答える
1

プログラマーとしての仕事を始めて 6 か月しか経っていない私は、あなたの手助けをするのに最適な人物ではないかもしれませんが、ほとんど何も知らなかったのはそれほど昔のことではないので、とても新鮮です。

私が現在の仕事を始めたとき、プログラミングは私の職務記述書の一部になるつもりはありませんでしたが、副業でプログラミングをする機会が訪れたとき、私はそれを逃すことができませんでした.

About.com の Delphi セクションで約 1 か月かけてチュートリアルを行いました。人々が about.com を否定するのと同じくらい、Zarko Gajic のチュートリアルは理解しやすく、従うのも簡単でした。言語と IDE の基本的なコツをつかむと、「Adept」というプログラムの会計データをエクスポートするプロジェクトにすぐに取り掛かりました。少し時間がかかりましたが、到着しました...

私にとって最大の助けとなったのは、個人的なプロジェクトに取り組んだことです。Soldatと呼ばれるくだらない 2D ゲーム用に Java で IRC ボットを開発しました。自分のプロジェクトを計画してコーディングすることで、多くのことを学びました。

今では、Delphi Pascal、SQL、C#、および Java にかなり慣れています。ある OOP 言語のこつをつかめば、別の言語の構文を学ぶことができ、理解するのがずっと簡単になると思います。

于 2008-12-29T03:55:27.407 に答える
1

おそらく、小さな既存のプロジェクトから始めて、その中でその動作のコア部分を処理するものを見つけます。次に、デバッガーを使用して、それをステップ実行し、そのことを実行するように要求した時点から、その実行を追跡します。 .

これは、さまざまな点で役立ちます。コードが要求を完了しようとするときに、コードが扱うさまざまな事柄のすべてをよりよく把握できるようになります。また、非常に多くの開発者が欠けていると思われる非常に貴重なデバッグ技術を学びます - 多くの場合、printf() (または同等の) 呼び出しを繰り返すことで何が問題なのかを最終的に発見できますが、デバッグできれば、問題を桁違いに解決できます。もっと早く。

概念的には、抽象的にプログラミングを理解するための優れたメンタル モデルは、データ フローのパターンであることがわかりました。ユーザーがデータを操作するとき、消化と保存のためにプログラムによってデータがどのように変更されるか? ユーザーにとって意味のある形で再提示するために、どのように変換されますか? 基本的に、コードはデータの変換に関するものであり、すべてのコードは、データを何らかの方法で変更することを目的としたさまざまなサイズの構造に分解できます。バグは、プログラマーがデータから期待していたものとの間の不一致の周りに形成されます。コーダーが使用しているライブラリがデータを処理し、データが実際にどのように到着するか。デバッガーでコードをたどると、変更が発生したときに観察することで、この変換の動作を完全に理解するのに役立ちます。

于 2008-12-29T06:52:53.523 に答える
0

標準的な答えは何かを作ることです。それを行うのに簡単な言語を選ぶことは良いことですが、必須ではありません。それはあなた自身の頭の中でうまくいくものであり、それがうまくいかないのでそれを修正することであり、それは本当にあなたに教えます。私にとって、これは私が決して終わらないが常に学ぶ永遠の夢のプロジェクト(ゲーム)を試すときに常に起こります。

于 2008-12-29T02:27:13.107 に答える
0

私が避けたいのは、実際には一緒にぶら下がっていないが、特定の言語のさまざまな側面を教えるだけの孤立したスニペットで言語を学ぶことだと思います。他の人が言っているように、本当に難しくて重要なことはデザインを学ぶことです。これを行うための最良の方法は、実際のアプリケーションを作成し、その過程で設計を教えるチュートリアルを使用することだと思います。そうすることで、特定の決定が行われる理由を学び、設計の選択を実装するために必要なことを達成する方法を学ぶことができます。

たとえば、Railsを使用したアジャイルWeb開発は、Rubyのマニュアルを読んだり、散在するWebチュートリアルを調べたりするよりも、RubyonRailsを学ぶのに非常に簡単な方法であることがわかりました。

于 2008-12-29T02:28:55.367 に答える
0

私が避けたいもう1つのことは、コードを分離して開発することです。つまり、私が進むにつれて、人々にコードを見てもらうことはありません。メンターからフィードバックを得ると、あなたが行っている選択と言語イディオムの正しい使用に関して正しい軌道に乗ることができます。

于 2008-12-29T02:48:25.310 に答える
0

あなたの人生の問題やあなたがしていることで、もっと効率的だと思うことを見つけて、それに対する小さな解決策を書いてください。それはただ一つのスクリプトかもしれませんが、あなたがあなたの仕事の有用な結果を見始めるとき、あなたはあなたの能力にはるかに自信を得るでしょう。また、ソリューションの使用に興味があるので、それを終了する意欲も高まります。シンプルで小さなものから始めて、徐々に大きなプロジェクトに移ります。

そして、小さなプロジェクトに取り組むときは、すべてを高品質で構築することに集中してください。これは、ソフトウェアに大量の機能が含まれているとソフトウェアがより印象的であると感じている一部のプログラマーにとっては失われていると思いますが、通常、それらの機能は十分に機能していないか、使用できません。実際の問題に対する高品質のソリューションの構築に集中する場合、あなたは素晴らしいプログラマーになります。

幸運を!

于 2008-12-29T02:53:54.253 に答える
0

部分的に解決する方法をすでに知っているプロジェクト/問題に取り組む

于 2008-12-29T03:01:18.437 に答える
0

Mike clark の記事 : How I Learned Rubyを読んでください。基本的に、彼は Ruby のテスト フレームワークを使用して、言語のさまざまな要素を実行しました。

私はこのテクニックを使って Python を学びましたが、とても役に立ちました。言語を学んだだけでなく、演習の最後に Python のテスト フレームワークに習熟していました。基本を理解したら、コードの読み取りを開始してから、より大きなプロジェクトの構築に取り掛かることができます。

于 2008-12-29T13:40:52.217 に答える