プログラミングエクスペリエンスを増やすにはどうすればよいですか?[終了]


9

私は3年目のコンピュータサイエンスの学生になり、ヘッドファーストJava、ヘッドファーストCを読みました。現在、C ++を読んでいます。これは、経験のある人向けの優れた教育スタイルがあるため、私が最も好きな言語です。QTでソフトウェアを作成する方法を学ぶか、objective-C(for iPhone)を学ぶか、Effective C ++を読むことを計画しています。

プログラマーとしての経験を得るにはどうすればよいですか?オープンソースプロジェクトに参加するスキルはありますか、それともphp、mySQL、またはその他の言語を学ぶ必要がありますか。一部のクラスは非常に難しい(理論的なコンピュータサイエンス)場合もありますが、プログラミングとコンピュータサイエンスは一般的に大好きです。また、C ++の第一人者になる予定ですが、すぐには実現しません。


1
他の人が使用するプログラムを書いたことがありますか?そうでない場合は、愛する家族が必要とするものを書き、それを彼または彼女に役立つようにします(数回繰り返す場合があります)。最後の部分は、本当の教訓があるところです。

カーネギーホールへの行き方を教えてください。
jfrankcarr 2012

1
私は一瞬ろくでなしのように聞こえますが... 経験 -知識やスキルの蓄積につながるイベントや活動への積極的な参加。プログラミングに積極的に参加してください。
Steven Evers 2012

1
ところで、StackOverflowとプログラマの違いは何ですか?質問を閉じるパターンは、プログラマーを単なるStackOverflowにするためのものですか?それではポイントは何ですか-2つをマージするだけです。StackOverflowではできなかった、プログラマーへの難解な質問をすることができました。
שינתיאאבישגנת

回答:


11

ABC-常にコーディングする。とても簡単です。言語を知るための私のお気に入りの方法の1つは、言語自体の言語のサブセット用のおもちゃのインタープリターを書くことです。それがあなたの仕事ではない場合は、レイトレーサーなど、それほど重要ではない大きさの何かである可能性があります。でもそれほど大きくないので、一ヶ月くらいで完成しません。重要なのは、標準ライブラリと言語が提供するデータ抽象化機能を見ることを強制する何かに取り組むことです。時にはプロジェクトは成功することもありますが、そうでない場合もありますが、最後には言語について十分理解しているので、言語の長所と短所を知り、さらに学習を続けたいと思っています。言語が好きであることが判明した場合、興味深い論文やブログの投稿を読むたびに、その論文やブログの投稿で提示されたいくつかのアイデアを実装するプロジェクトを開始しようとします。このように、私は常に実践し、新しいアイデアを学んでいるので、それは一種の好循環になっています。

過去に私にとって非常にうまく機能したいくつかのプロジェクト:一部の言語のサブセットのインタープリター、レイトレーサー、PEGパーサージェネレーター、HTTPヘッダーパーサー、シンプルエコークライアント/サーバー、キューからツイートを自動的に投稿するTwitterボット、Amazon製品お得な情報を探すためのスクレーパー。


+1本当に興味深いプロジェクトについてお話しいただきありがとうございます。
アンソニー

8

Teach Yourself Programming in 10 Yearsでうまく説明されているように、次の手順に従う必要があります。

  • プログラミングに興味を持って、楽しいので何かをしてください。それがあなたの10年/ 10,000時間を入れても構わないと思うように、それが十分に楽しいことを続けることを確認してください。

  • プログラム。最良の学習方法は、実行することによる学習です。より技術的に言えば、「特定のドメイン内の個人のパフォーマンスの最大レベルは、拡張された経験の関数として自動的に達成されるわけではありませんが、パフォーマンスレベルは、改善への意図的な努力の結果として、経験豊富な個人によっても増加できます」(p。366)そして、「最も効果的な学習には、特定の個人に適切な難易度、有益なフィードバック、およびエラーの繰り返しと修正の機会を備えた明確に定義されたタスクが必要です。」(p。20-21)「認知の実践:日常生活におけるマインド、数学、および文化」という本は、この視点の興味深い参考資料です。

  • 他のプログラマーと話してください。他のプログラムを読んでください。これは、どの本やトレーニングコースよりも重要です。

  • 必要に応じて、大学で4年間(または大学院で)入学してください。これにより、資格を必要とする一部の仕事にアクセスでき、分野をより深く理解できますが、学校を楽しんでいない場合は、(ある程度の熱意をもって)自分でも仕事でも同様の経験を得ることができます。いずれにしても、本の学習だけでは十分ではありません。「コンピューターサイエンスの教育は、ブラシや顔料を研究することで、誰もがエキスパートプログラマーになることはできません。私が今まで雇った最高のプログラマーの一人は高校の学位しか持っていませんでした。彼はたくさんの素晴らしいソフトウェアを生み出していて、彼自身のニュースグループを持っていて、彼自身のナイトクラブを買うのに十分なストックオプションを作っています。

  • 他のプログラマーとプロジェクトに取り組みます。一部のプロジェクトで最高のプログラマーになる。他のいくつかの最悪である。あなたが最高のとき、あなたは自分の能力をテストしてプロジェクトをリードし、あなたのビジョンで他の人を刺激することができます。最悪の場合、マスターが何をするかを学び、マスターがやりたくないことを学びます(彼らがあなたのためにそれをやらせるからです)。

  • 他のプログラマーの後にプロジェクトに取り組む。他の誰かが書いたプログラムを理解する。元のプログラマが周りにいないときに、それを理解して修正するために必要なことを確認します。あなたのプログラムを設計して、あなたの後にそれを保守する人たちが簡単にできるようにする方法を考えてください。

  • 少なくとも半ダースのプログラミング言語を学びます。クラス抽象化(JavaまたはC ++など)をサポートする1​​つの言語、関数抽象化(LispまたはMLなど)をサポートする1​​つの言語、構文抽象化(Lispなど)をサポートする1​​つ、宣言仕様(PrologまたはC ++テンプレートなど)をサポートする1​​つ、コルーチン(IconやSchemeなど)をサポートし、並列処理(Sisalなど)をサポートします。

  • 「コンピュータサイエンス」には「コンピュータ」があることを忘れないでください。コンピュータが命令を実行し、メモリからワードをフェッチし(キャッシュミスあり/なし)、ディスクから連続したワードを読み取り、ディスク上の新しい場所をシークするのにかかる時間を把握します。(回答はこちら。)

  • 言語標準化の取り組みに参加してください。それはANSI C ++委員会であるか、またはローカルのコーディングスタイルに2つまたは4つのスペースインデントレベルがあるかどうかを決定している可能性があります。いずれにせよ、あなたは他の人々が言語で好きなものについて、彼らがどれほど深く感じているかについて、そしておそらく彼らがなぜそう感じているかについてさえ少し学ぶでしょう。

  • 言語の標準化の取り組みをできるだけ早く終わらせるための適切な意味を持ちます。


3

関数型プログラムを効果的に作成して、自分自身を訓練することをお勧めします。基本がわかったら、もっと大きなプロジェクトを考えましょう。ソフトウェア開発のためのqtフレームワークを学び、実践を続けてください。プログラムを学ぶ最良の方法は、実際にコードを書くことです。

私は読書も重要な役割を果たしていると思います。オープンソースプロジェクトをホストしている開発者のチームを探すことができます(githubまたは他の同様のサイトで探してください)。貴重なチーム開発経験を提供できるからです。


2

sourceforgeのような場所は、最初は少し気が遠くなることがあります。やるべきことを見つけるための本当に良い方法は、プロジェクトの課題追跡を調べて、修正の音が好きなバグ/課題を見つけることです。

一部の小規模なgithubプロジェクトでは、これははるかにアクセスしやすくなります。コードを盲目的にたどるのではなく、コードを理解しようとする方向性と目的を効果的に持っています。


1

本のサンプルや大学での課題は、プログラミングがどのように機能するかを理解し、将来のプロジェクトの可能性を示す良い出発点です。

実際のプロジェクトに取り組む

しかし、実際のプロジェクト経験がないと、学んだことを忘れがちです。

問題はあなたが何ができるかを示す機会です

さらに、要件がいかに複雑であるかを実際のプロジェクトで確認できます。これらの問題は、あなたが何ができるかを示す機会です。改善すべき弱点を見ることができます。


-1

php、mySQL、その他の言語を学ぶ必要がありますか?

はい、ワールドワイドウェブの言語を検討してください。HTML5、CSS3、JavaScript。

理由は次のとおりです。

  1. それらはすぐに習得でき、実装がますます豊富になります。

  2. 彼らはもはやウェブを書くだけでなく、OS、サーバー、そしてデータベースも書きます。

  3. 最も重要な*

    これらは現在、jQueryの作成者であるJohn ResigによってComputer Science 101再定義するために使用されています

メッセンジャーを撃つことはせず、カーンスクールアカデミーへのこのリンクをチェックしてください。

c / c ++ / c#デザインパターンはJSに転送されます。

お役に立てば幸いです。


+1-これは間違って投票された。情報は有効です。リンクは信頼できる。ソースはjQuery Genius John Resigです-JavaScriptでプログラミング101コースを開始し、それは動作します。カーンアカデミーをチェックしてください。教育を発展させる可能性に賛成する。少なくとも。どうも。
ジャックストーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.