私の弟はプログラミングを始めようとしています。彼は14歳で、技術的な傾向がありますが、プログラミングの経験はありません。彼は私にガイダンスを求めており、私は自分の経験が十分だとは思わないので、ここで聞いてみようと思いました。
彼はWebプログラミングにもっと興味がありますが、デスクトップ/モバイル/サーバーアプリケーションにも興味があります。
彼がとるべき良い学習経路は何でしょうか?私は彼にクリスマスを始めるために彼にたくさんの本を買うつもりです。問題は、彼が何を学び、どの順序で学ぶべきかということです。
私の見方では、彼は理論とコードを学ぶ必要があります。 PythonまたはRubyまたはPHPで始めます。彼がWebにアクセスしたい場合は、HTMLを学ぶ必要があります。 、CSS、Javascriptなど.
これら3つのドメイン(言語、理論、マークアップなど)のうち、どの順序で学習すると思いますか?また、何か不足していますか?
ありがとう!
そして、彼にブラウズ違う質問するときの習慣を身につけさせる退屈だ。ホットな/最も人気のある質問から始めます。
また
彼が考え出すのを手伝ってください目標彼が望んでいるもの作成するそれは彼の手の届かない範囲、シンプルなゲーム、ツイートを送信できるアプリですか?それは何かである必要がありますそれはエキサイティングです。これは、彼が自身に公開するトピックを導き、-彼に動機を与えるが彼が作成した具体的なアウトプットを通じて導くのに役立ちます。
そして
可能であれば物理的な形式で本を購入しないデジタルプリントでうまく機能する場合、あなたの1人がAndroidまたはiphoneまたはblackberryまたはiPod touch?ibooksまたはKindleアプリを入手してデジタル版を購入。
物理的な本を扱わなければならないことは、知識獲得のプロセスを遅くします。組み込みのツールデジタルリーダーは、テクニカルリーディングに多くの利点を提供します。
注:コメントに記載されているように、デジタルブックと印刷されたブックには欠点があるため、この点を細かく調整してください
私reallyは、私がプログラミングを始めた方法と同じです。変化を想像できるのは、本へのアクセスだけです。私の家族は私が食い尽くすことができるすべての本のためのお金を持っていませんでした、そして私たちの小さな田舎の図書館は技術マニュアルを正確にストックしていませんでした。物事の壮大な計画では、これは小さなひっくり返しです。
14歳で理論を学ぶことができないと言う人たちに心から反対します。私は The Art of Computer Programming を14で読みましたが、すでにしばらくコーディングしていました。
兄のためにあなたができる最善のことは、彼の興味を追求するためのツールを彼に与え、彼を可能な限りハッカー/コーダーコミュニティに含めることです、そうすれば彼はマインドセット素晴らしいコーダーの。
可能な限り、彼を専有ツールから遠ざけてください。オープンソースの世界では、彼が利用できるものがもっとたくさんあります。オープンソースコミュニティの経験豊富な人々から受けたガイダンスのおかげで、私は元気になりました。
余裕がある場合は、 Safari アカウントを取得するか、必要に応じて本の購入を手伝ってください。すでに所有しているものを貸与することでも役立ちます。
彼がまともなデスクトップまたはラップトップおよびにアクセスできることを確認し、サーバーまたはVPSで実験します。モバイルアプリが彼の仕事である場合、彼が作業するための電話またはデモデバイスを持っていることを確認してください。
IRCチャネル、メーリングリストなど、彼が/で作業することに興味があるものを見つける方法を彼に示してください。
彼が 賢い質問をする方法 を知っていることを確認し、逆に サポートリーチ の詳細を知って、彼がしてはいけないことを知っていることを確認してください。
彼の最初のプログラミング言語は最も重要な要素ではありません。彼が学ぶプログラミング言語の全体性は非常に重要です。 1言語コーダーは、特定の(比較的低い)レベルのcoding-fooを渡すことはありません。
私は携帯電話の分野の学習に行くのですが、それはそこの主要な不動産です。 IDE電話エミュレーターを備えていること、および彼にアプリをプッシュできる電話を彼に手に入れることを使用して彼にセットアップする==。
彼をガイドするためにあなたの本からいくつかの理論を補足して、彼を実際の使用法とハッキングのために設定します。彼らが良いサンプルを持っていることを確認してください。
大学時代なら学校に行きます。高校時代なら高校に通っています。
私には使命があり、それに応じて14時にカリキュラムを調整します。
多くの人が私にこれを勧めますが、Visual Basic .NETの方が簡単だと言う人もいます。初心者ではない多くの人にとって、それはそのように見えます。
ウェブ/デスクトップ/モバイル/サーバープログラミング?私には思える、彼はすべてに興味を持っています。しかし問題は、彼は何かから始めなければならないことです。
もちろん、これに対する「正しい」答えはないので、多くの人は反対しますが、私は彼に本を購入しますPython(Learning Pythonは濃厚で徹底的です彼を長い間忙しくさせるのに十分です)、そしてそれは間違いなく彼が私が学んだもの対アイキャンディー(すなわちそれで何が達成できるか)の良い比率を彼に与える言語です。それはまた良い出発点でもあります上記の多く。
その後、彼が上記の中で最も好んでいることを確認し、その方向のアドバイスをさらに彼に指示します。
Web devから始めるのはいい考えです。真の初心者であっても結果を得ることができ、めちゃくちゃになってもそれほど問題になりません。
Html/CSS + Phpと言います。ジェフがコメントで述べたように、彼のサイトをホストすることは重要であり、Phpホスティング業者は高価ではなく、多くの場合無料です。
理論に関しては、私は今のところそれを単に忘れてしまいます。私が理解しているように、彼は主に楽しみたいので、それに直面しましょう。理論はあまり楽しくありません。その上、彼がプログラミングが好きなら、彼は学校でそれをたくさん持っているでしょう。
明らかに私たちは皆、Niceコードを気にしていますが、彼がただ遊んでみようとしているのであれば、彼のコードが乱雑であるとしたらどうでしょうか。
彼の高校はコンピュータサイエンスのクラスを提供していますか?たとえば、米国では、アドバンスドプレースメントプログラムに、コンピューターサイエンスの基本的な概念(制御のフロー、オブジェクト指向の基本的な開発手法、ループなど)のかなりの部分を通過するコンピューターサイエンスクラスがあります。
私は、基本的に4年間(入門コースから基本的なLIPS、MIPS、Open GLまで)コンピュータサイエンスコースを提供する高校に通うことができました。私は大学で基礎をテストしてから、上位レベルのコースで他の言語やトピックの多くを再学習することになりました。 14歳から17歳の脳は、18歳から22歳の脳よりも、理論の折り返しがはるかに困難だったと言えます。再帰、ポインタ演算、低レベルプログラミング、ネットワークトポロジー、関数型プログラミングなどのトピックは、私が高校に入るのに長い時間がかかりましたが、大学で2回目に、そろそろ簡単でした。それらに取り組んだだけでなく、おそらく発達科学者が若い脳について証明したもののために-より高い数学とCSの概念に必要な抽象的な思考のいくつかはまだ開発中です。
大変でしたが、14からCSを通して考えることは非常に役に立ちます。教師なしでそれを行うことは複雑だったように思えます。 Webページを開発するために時間を費やしていたのは、それが当時(そして今も)大好きだったからですが、ポインタ、再帰、およびLISPを楽しく学ぶことはできませんでした。
私は個人的にハードコア理論から始めるつもりはありません。理論のいくつかの要素が混在する実用的なプログラミングから始めます。それはもう一つのモチベーションを保ち、彼を怖がらせないかもしれません。
たとえば、音楽学校の場合です。理論に飽きてしまい、結局興味を失うため、学生の大部分は辞めました。
その上、理論は練習であなたの手を汚す前にそれが学ばれるとき、それはそれほどよくありません。それをいつどのように適用するかはわかりません。
しかし、理論的な知識があればたくさん練習し、その後、ITの真面目なコースで別のレベルに進みます。さもなければ、大学で過ごした年はろう者の年に浪費されるだけです。
その順序で:
ハードウェア、コンピュータアーキテクチャ、およびそのハードウェアのプログラミングに関するいくつかの基本的な理論。基本的なだけです。
次に、実用的なものを開発します。興味を維持するための基本的なアプリケーション。最初はローカル、次にグラフィック付きのもの。サーバー側のプログラミングをデモンストレーションする必要があるため、Webページはまだ使用されていません。データベースがないと役に立たないことがよくあります。
彼にいくつかのデータベース知識作物をドロップします
ローカルアプリケーションとデータベースとのインターフェースをとります。次に、Web開発を試してください。
あなたが行くようにコースを調整します。
私は彼をCベースの言語から始めます。彼らのためにもっと役立つリソースがあることがわかりました。また、コードを設計およびフォーマットする方法についての本を入手して、彼が優れたコーディング原則の使用を開始するようにすることもできます。私はそれに専念するクラスを持っていて、私が正しく覚えているなら、「クリーンコード」というタイトルの本と、「ソフトウェア開発:設計原則」というタイトルの別の本を使いました。また、このサイトをもっと早く紹介してもらえたら嬉しいです。
でも一番助かったのは、大学時代の早い時期にインターンシップを得たことです。新入生としてキャリアフェアに出かけて、2年生のインターンシップを受けました。また、常に取り組んでいるプロジェクトを作ろうとしています。これまでにないことをしたいので、学び続けることができます。現在、ラズベリーパイを使用して、ホームオートメーションシステムにAppleのSiri=を実装しています。
ただし、基本的には、楽しさを保つために必要なことは何でもしてください。イライラしないでください。休憩を取る。本に夢中になりすぎないでください。学習するための最良の方法は、それを試して試行錯誤することです。
ああ...そしてGoogleの使い方を学ぶ:)
PythonまたはRubyまたはPHPで始めます。彼がWebにアクセスしたい場合は、HTMLを学ぶ必要があります。 、CSS、Javascriptなど.
これは妥当なようです。いくつかの基本的なスキルを与え、彼が興味を持ち続ける挑戦的なプロジェクトのアイデアを具体化するのを助けます。
彼の最初の経験は完璧である必要はありません。実際、彼がたくさんの間違いを早期に犯すと助けになります。あなたは彼が彼の知識を拡大することに興味を持ち続けていることを確認したいだけです。彼が限界に達したとき、彼は援助を懇願するでしょう、そして彼がまだ参考資料に分岐していないなら、あなたは彼を正しい方向に向けることができます。
彼にテスト駆動開発に関する本を入手してください。それは彼にしっかりした単体テストを第二の性質にするでしょう。私のプログラミングの中核として、最初からテストがあることを知ってほしいと思います。
私が今知っていることに基づく私の論理的な好み:
物事が今どのように機能するかを理解する-あなたは彼が技術的に傾いていると述べていますが、彼はこの時点でコンピュータがどのように機能するかをどの程度理解していますか?たとえば、マークアップとスクリプトの違いを理解していますか?これを行うための小さなスクリプトを書くのはどうですか?私たちの周りにあるものを分かりやすく説明することは、かなり自由に探索できるすべてのものを考えると、良い出発点であるため、これは出発点としての私の提案です。
言語、IDE、およびソース管理を選択します。これは、誰かに向けるのにはかなり思えるかもしれませんが、これらはかなり基本的なツールであり、少し練習すれば、より大きなものに進むことができます。 「Hello World!」の作り方を考え出すメッセージがJavaScriptに埋め込まれているWebページは、ここでもう少し具体的なものを必要とする場合、悪い出発点ではありません。
次に、難しいものをいくつか追加します。ループまたは条件を行う方法は?これはまだそれほど豪華ではありませんが、ここではまだビルディングブロックの段階を理解しています。最後に、クラスの概念と、この概念の背後にあるいくつかの概念を紹介します。
誰かが私のスキルセットのいくつかの基本を取得したい場合、それらは私が始めるところです。
私はこれを言うとは思ってもみなかったが、彼を手に入れる Alice 3. 。
千の太陽の燃えるような怒りでアリスは嫌いですが、まともなチュートリアルと組み合わせると、プログラミングの基本(ループ、ステートメント、関数など)を教えるのに間違いなく役立ちます。
基本をしっかり理解したら、より実用的なテキストベースの言語に移ります。