私のお父さんは、私のプログラム学習のペースに焦りを感じています。私は何をしますか?[閉まっている]


200

だから、お父さんは約1か月前にプログラミングに関する5冊の本(C ++、Java、PHP、Javascript、Android)を購入しました。彼は建築家であり、プログラミングについて何も知らない。プログラミングが楽しいと教えて、それを学びたいと思ったので、彼は私にそれらを買った。

ご存知かもしれませんが、子供(14歳)であり、退屈な本からプログラミングを学ぶように言われるのは簡単なことではありません。私はいつも気を散らしている..以前に本を買う必要がなく、オンラインのチュートリアルを見ることができると彼に言った。しかし、彼はとても古臭い。彼は私に本を使わせているだけです。

最近、彼は私がそれで何をしたかを尋ね始めました、そして私は彼にあなたが入力したものを取り、各文字に値を割り当てるC ++プログラムを見せました(Aはアルファベットの最初の文字なので値を取得します1)..などなど。次に、すべての値を合計して通知します。したがって、「追加」という単語の値は9になります。

^^それは彼にとってあまり印象的ではなかった。彼は私に怒鳴りつけて、私がやってきたことのすべてがうんざりしていると言った。それは真実ではない。彼は非常に伝統的で頑固で、私が言わなければならないことは何も聞きません。彼に何を言えばいいですか?

PS:本のゾーニングに関するヒントがあれば、教えてください

編集:どうもありがとう、私の状況を理解している人がいることを知っていることの意味がわかりません。私はすべてを読んだので、みんなの意見を検討します。¡グラシアス!


15
コメント者:コメントは明確な説明を求めるためのものであり、詳細な議論のためではありません。解決策がある場合は、答えを残してください。ソリューションが既に投稿されている場合は、投票してください。他の人とこの質問について話し合いたい場合は、チャットを使用してください。詳細については、FAQを参照してください

7
ところで、このスレッドを彼に見せるべきです。彼があなたの進歩についてのプロのプログラマーの意見を見るならば、それは彼と共にさらに行くかもしれません。
コレクター

15
@Davidそれは伝統的なものではなく、ひどい親であり、利己的な人です。この時点で、彼はあなたが実際に成功することを望まないか、彼はあなたと一緒にピットにいるでしょう。彼は本当に成功した子供のお父さんになりたいだけです。残念ながら、それはあなたの父親であり、あなたは無礼になれないので、あなたがそれについてできることはほとんどありません。私が言うことは、しかめっ面して、それを負担することです。そして、学部を卒業するときが来たら、遠くのアイビーリーグを選びます。
リールーヴィエール

15
これが閉じられた(トピック外)ことは驚くことではありませんが、「トピック外ですが、とにかく保持する」ためのタグ/フラグがあればよいのです。:)
サイクロプス

12
お父さんに、彼が14歳のときに何をしていたのか尋ねてください
CodeART

回答:


197

入力した内容を取得し、各文字に値を割り当てるC ++プログラムを彼に見せました(Aはアルファベットの最初の文字なので1の値を取得します)。次に、すべての値を合計して通知します。したがって、「追加」という単語の値は9になります。

お父さんとどうするべきかわかりません。しかし:

ゼロから始めて、本から学んで、1か月でこれをすべて自分でやった場合、それは非常に印象的です。そして、あなたはC ++でそれをしました。これは、存在する中で最も恐ろしいプログラミング言語の1つです。

インタビューを受けて、真剣にプログラミングの仕事に就こうとして、それに苦労する人はかなりいます。このストーリーをご覧ください。

私は提案することができます:あなたが楽しむものをやり続ける。このコンテキストではお父さんを無視します。彼は何を言っているのか分からない。プログラミングの才能と学習意欲-優れたプログラマーになるための主な要素。


8
はい、私は野心的に学んでいます(その特定のプログラムは約60の頭痛を与えました)。
デビッド

8
@David:彼が建築家であることを考えると、彼が物事どのように見えるかを気にすることは理解できます。しかし、彼がプログラミングについて何も知らなければ、彼はそれを批判するべきではありません。ソフトウェアのグラフィックス、ルックアンドフィールは、氷山の一角にすぎません。
ジョナスプラッカ

12
マジ?「Fatbooth」には、習得して習得するのに数年かかる毛むくじゃらのグラフィックス操作アルゴリズムがあります。あなたの父があなたに顔認識を習得させたいなら、彼はそれについて本を買うべきでした。見た目は簡単かもしれませんが(使いやすいため)、思ったよりも達成するのが難しく、60代の頭痛が複数発生します。「Fatbooth」などのアプリケーションの実行が容易であると仮定すると、プログラマーにとって深刻な(しかし秘密の)in辱になります。
スポイケ

121
印象的な +1 。それは、特にあなたがどこから来たのかを考慮しています。お父さんに、彼が自分の技術をゼロから学び始めてから1か月後に、彼が関わったことのある建物の数を聞いたと思います。彼が関連できる用語に物事を入れてください。
CVn

13
@Joonas:言うまでもなく、グラフィックデザイン、使いやすさ、インターフェイスデザインは、すべてプログラミングとはほとんど関係のない分野です。
トビー

88

Peter Norvigによるこの投稿を見せてください。NorvigはGoogleのR&D責任者であり、スタンフォード大学で人工知能を教えています。AI に関する標準的な入門書を執筆しました。どれくらい働いていますか?特にC ++のように厄介なものについて、追加の指示なしで初心者が1か月作業した後、それ以上のものは期待できません。学ぶ価値のあるものはすべてよく学ぶ価値があります。


83
  1. お父さんは、おそらくあなたが世界で一番頭の良い子供だと思っていることを覚えておいてください。お父さんは、あなたが楽しんでいると言ったことについてあなたが学ぶのを手伝おうとしています。

  2. お父さんが間違いなく間違っている(5つの完全に異なるトピックは、子供を一度に投げるのはたくさんあります)が、彼も少し正しいことを知っています。多くの人は、ウェブで見つけた「チュートリアル」を模倣してプログラミングを始めようとします。それは必ずしも悪いことではありませんが、IMOは通常、しっかりした理解につながりません。正しい本は、最初に基礎を教えます。それは派手な何かを行うチュートリアルに従うほど楽しいものではないかもしれませんが、長期的な成功の可能性は大きくなり、stackoverflow.comで尋ねなければならない質問の数は少なくなります。

  3. 少なくとも今のところは、1冊を除いてすべてを忘れてください。すでにC ++を使用し始めているように思えますが、必要に応じてC ++を使用してください。

  4. あなたは時々落胆するでしょう。プログラミングの半分が行き詰まっていて、残りの半分が行き詰まっているように感じることがあります。スタックから抜け出すことは価値のあるスキルであり、練習すればするほど良くなります。(最初に行き詰まるのを避けることも貴重なスキルなので、それも実践してください。)

  5. 最初のコンピューター言語を学ぶことはソフトウェア開発であり、描くことを学ぶことは建物を設計することです。これは最も興味深い部分ではないかもしれませんが、必要なスキルです。

  6. 彼に聞いてもらうことができるなら、あなたの小さなプログラムを書くことを学ばなければならなかったすべてのことを分解してみてください。ツールの使用方法を習得するのに少し時間がかかり、彼はそれがどのように機能するのかを確実に理解していません。

  7. 単純なプログラムを実行するというポイントに到達し、明らかにC ++を少し学習したので、どんな面白い小さなプログラムを書くことができますか?金利、ローン額、ローン期間を受け入れ、支払いスケジュールを印刷するローン計算機はどうですか?または、「H2SO4」や「C6H12O6」などの分子式を読み取り、分子の重量を出力する計算機ですか?これは、すでに作成したプログラムよりもそれほど複雑ではありません。


47
+1 "本の1つを除いてすべてを忘れる"
PA。

9
+1、素晴らしい実用的なアイデア。学習するとき、最も難しいのは、多くの場合、プロジェクトのアイデアを思い付くと同時に、新しい情報に圧倒されることです。
モーガンハーロッカー

5
+1「お父さんのことを思い出してください...」父の視点を持っているのはいいことです。
ジョンマッキンタイア

7
お父さんを巻き込んで、小さなアーキテクチャの問題解決/計算ツールを作ってください!
ヴァイバフガルグ

3
最初のポイントに+1。親が自分の子供を世界で一番賢いと考えることはとても重要だと思います。結局、そのような態度でなければ、OPは1か月でそれほど多くはしなかっただろうと思います。ただし、OPに大きな頭痛を与えている場合はオーバーヘッドになる可能性があります。
アントンストロゴノフ

53

プログラミングが楽しい教えて、それを学びたいと思ったので、彼は私にそれらを買った。...彼に何を言えばいいですか?

「お父さん、これに対するあなたのアプローチは、プログラミングを学ぶことを全く面白くないものにしています。それをやめてください。」


4
最善のアドバイスではありません。お父さんは、そのように返事をされるのを好まない
CyprUS

1
はい、しかしOPがただそこに座ってそれを取るなら、パパは彼が正しいと感じます。結局のところ、彼の子供はあまり一生懸命働いていませんでした。子供はある時点で声を出さなければならないので、彼のお父さんは、彼がどれだけ懸命に働いているかを理解します。
ケビン

1
@CyprUS本当ですが、私は今ロボットという言葉にうんざりしています。それは一年前の私の人生の愛でした。私は、Lego Mindstorms KitにRobotCをインストールしていました。父が「本物の」ギアとモーターを手に入れて、ロボットアームのような「本物の」何かを作るように言われるまで、それが大好きでした。今、情熱を持ってロボット工学を嫌う。
チャンジー

48

建築家として、彼は確実にあなたの足を引っ張るか、無作法でなければなりません。

彼が始めた時期について彼を調べてください:彼が詳細な配管計画で超高層ビルを描き、材料にかかる力とストレスを計算し、災害リスク評価(ヘビのいる飛行機に襲われるなど)を1か月過ごした後、彼に尋ねます彼はあなたと同じくらい若かったときに本。たぶんそれは彼を落ち着かせるでしょう。

さて、あなたの親に話を戻すことは、私があなたに与えることができる最善のアドバイスではないかもしれません。お父さんがいることは、励ましの代わりに進歩にペナルティを課すことは、子供として少し負担がかかりますが、代わりに、より良くするための励ましとして受け止めます。彼は態度に問題があるかもしれませんが、それは悪意を意味するものではありません。


44
また、お父さんへのアドバイス(質問の範囲外ですが):ゴードンラムゼイの態度を捨ててください。候補者は経験豊富な大人であり、彼のレストランで料理を作り、完璧にする方法を知っていることが期待され、ゴードンは期日を迎えるので、ヘルズキッチンでのみ機能します。これを初心者の初心者や子供に行うと、練習を習得するのを恐れるだけです。ラムゼイは彼自身のビジネスではないので、彼の他のテレビシリーズの方が優れていることに注目してください。
スポイケ

30

どの本を使用しているのか知りたいです。それらのすべてが実際に良いわけではありません。また、すべての本が全員に適しているわけではありません。

あなたはあなたの年齢を指定しなかったので、私はあなたが18歳未満であると仮定します。私は8歳頃から学び始めました。

子供の頃、プログラミングを学ぶ際に多くのリソースを利用しました。TI 99 / 4Aに付属のマニュアルがありました。このマニュアルには、画像を描画してフィギュアをアニメーション化するための楽しいプログラムがたくさん含まれていました。インターネットは利用できませんでしたが、入力してすぐにフィードバックを得られるプログラムや、他の種類の課題を解決する方法に関する記事を掲載した、子供向けのコンピューターマガジンさえありました。ストーリーの一部として含まれているプログラムを入力してデバッグできるスパイ小説シリーズがとても好きでした。残念ながら、この種のリソースはまだ存在しているとは思いませんが、Pythonに関するHello Worldの本やLand of Lispのような若い人を対象としたプログラミング本がいくつかあります(大人にとっても楽しいです)。

私はあなたのことは知りませんが、あなたが今説明したものと非常に似たようなことをするプログラムを書くことからかなりのキックを得た時がありました。最終的に、私はより高度なことに進みました。私はいくつかの平凡なゲーム、キーストロークに反応してさまざまなサウンドとアニメーションを再生するデモ、および学習教材を作成しました。私が10歳か11歳の頃、繰り返しクイズをして元素の周期表を記憶するのに役立つプログラムを書きました。(当時、私の暗記スキルは現在よりも優れていたため、クイズをするのと同じくらい最初にデータを入力することはほとんどできませんでしたが、ポイントは進歩することでした)。

あなたの父親は気づかないかもしれませんが、本はあなたがプログラミングを学んでいるときのプロセスの一部にすぎません。小さな問題を見つけて、それを解決する方法を見つけようとすることは、方程式の残りの半分です。少しずつ教えてくれて、機械で何か楽しいことができる本を見つけることは、もう半分です。私の場合、グラフィックスとアニメーションを強調した本が私を勝ち取ったものでした。

子供の頃、ソートアルゴリズムと複雑なデータ構造に関する本を読んだとき、実際に気にかけている問題にそれらがどのように適用されるかを十分に学習するまで、私の目は輝いていました。あなたが読む本のすべての単語がリベットになるわけではありません。それで大丈夫です。必要なときにそれらのものにアクセスできます。解決したい問題があると、3週間、3か月、または3年前に面白くないと思われた手法を思い出し、戻って確認して理解します。

1か月はプログラミングを学ぶのにそれほど長い時間ではありません。私は子供の頃も含めて約30年間、何らかの形でコードを書いてきましたが、それでも毎日新しいことを学んでいます。私は最初の月に最初のコンピューターを手に入れたと確信しています。MunchManをプレイするのに多くの時間を費やし、参考書のサンプルプログラムの意味を理解しようとしてかなりの時間を費やしました。あなたに合ったペースで学びましょう。現在、プレッシャーはありません。それは素晴らしいことです。

「スクロウアラウンド」は、最初にプログラミングを学習するときに行うべきことです。ハッカー(Paul Graham類)は、システムがどのように機能するか、プログラミング言語がどのように機能するのか、ツールがどのように機能するのかを理解しようとして、突っついています。何かを試し、失敗し、直面している問題を通して推論し、何かが機能するまで他のことを試みます。そんなに心配しないでください。

あなたの父親が同じ本を読んでいない限り、彼はおそらくあなたがこれまでに学んだことを理解していないでしょう。1か月間、特に10代の頃に建築に関する本を読んだ後は、家や高層ビルを設計できるとは思いません。

見通しを立てるために、ここ4週間ほどにわたって、Ruby on Railsフレームワークのエンジン機能の難解なコーナーで作業を続けてきました。今日の時点で、私は最終的にユーザーの観点からそれを示すものを持っています。私はその時にたくさんのことを学び、非常にうまく機能する多くの重要な基礎コードを開発しましたが、ユーザーが何かを入力して何か他のものを取得できるようにすることは私の専門的な同等物です:一見したところそれほど印象的ではありません、しかし多くの作業がそれに費やされました。誰かが私を4週間ぐちゃぐちゃにしていたと言ったら、私はかなりがっかりしますが、物事を「単純」にするために何が起こったのかについてほんの少ししか理解していないことも知っています。


2
TI 99 / 4Aで歯を切るための+1。私にとってプログラミングとほぼ同じ話は楽しかったし、それを始めようとする方がずっとアクセスしやすかった(あるいは、そのように思われたのかもしれない)。私の娘(10)はプログラミングの学習に興味を示しており、楽しくて反復的に彼女を始める方法を考えるのに苦労しています。知識ゼロから1か月までのOPに対して、あなたが言ったことをPARで正しく行うことは正しいことです。
オミヌス

Ominus(およびDavid)、Processing、およびManningからのこの本をご覧ください
JasonTrue

4
すべての書籍が優れているわけではないため、+ 1。私の経験では、ほとんどの本はすでにプログラミングを理解している人を対象としています。そこの新規参入に向け、多くはそうではありませんが、私は推薦この1および/またはこのいずれかを
デビッド

@David、リンクをありがとう。今朝娘のために本を注文しました。
オミナス

@ジェイソン:彼は14歳の子供だと
言った

19

このような状況では、あなたのお父さんはあなたがしていることを積極的に強化し、サポートしてくれる人ではないようです。簡単な解決策:彼をそのために使用しないでください。

彼(または他の誰か)があなたにそれらをしてほしいからではなく、彼らが楽しいので、あなた自身のプロジェクトをしてください。楽しいものを選んでください。本から言語/テクノロジー全体を学ぶ必要はありません。代わりに、物事をいじくり始めます。物事が簡単になると、最終的に新しい概念/課題を探します。そして、あなたは今日あなたが退屈だと思う本(または少なくとも特定のセクション)を読みたいと思うでしょう。

行き詰まって何かコーディングの支援が必要になった場合、stackexchangeは既に知っているように素晴らしいリソースです。


16

あなたのお父さんは非現実的な期待を好む、またはあなたは物事を始めたが後を追わない、あるいはその両方の歴史があると私には聞こえます。実現に重要なことは、そのどれもが本当に重要ない重要なことのすべては、あなたが何をやっている楽しみ、それをやってで良くなるということで、ここに。

私を楽しまない本で非常に困難な時間を過ごしています、私はいつも持っています。私は、他の人が何かをするのを見て、何かの目的がわからないときに質問し、それがわかるまで苦労するのが一番です。苦労することで私たちは強くなり、最終的な成果の所有権が与えられます。それがおそらく子宮から出るのがとても難しい理由です。

そうは言っても、ツールボックスの最も鋭いツールの1つは、オープンなままで、批判の中で生産的に機能し、ソースに基づいたアドバイスを排除しない能力です。優れたプログラミングの本はあなたをつかまえ、刺激を与え、壁にぶつかったときに戻ってくることを期待する傾向があります。それらがなければ、何をしているのかを正確に最初に理解することなく、多くの驚くべきことをすることになります。プログラミングは非常に慎重な芸術なので、消化しやすい方法で書かれた本を探すことをお勧めします。

私はかなり長い間プロとしてプログラミングをしてきましたが、私の満足は本当に自分のものであると言えます。上司は、私が書いたものがこんなにすごいのはなぜかをよく理解していません。妻が私の一日を彼女に話すと眠りに落ち、友人は私の仕事を聞かないように邪魔をします。私は自分の勝利と、それを同僚と共有する機会を楽しんでいます。この場合、あなたのお父さんはあなたの仲間ではありません。

継続し、改善し続けます。プログラマーでない人は、感銘を受ける前に視覚的に印象的なものを見る必要があるという事実に慣れてください。マンデルブロ/ジュリア集合ジェネレーターのようなものを書いて、あなたの運を試してみませんか?それは彼に彼が探しているような進歩を示し、しばらくの間彼をあなたのケースから引き離すかもしれない。10年後には、非常に似たようなことをして技術者ではないマネージャーを背中から引き離し、実際の作業を完了できるようにします。

覚えている、それを楽しんでいるので、あなたがそれをやっている。


1
この男に耳を傾け、彼は彼が何を話しているのか知っている;)
drxzcl

2
へー、私は「プログラマーでない人は感動する前に視覚的に印象的な何かを見なければならないという事実」が好きです。フラクタルジェネレーターの作成は、コンピューターサイエンススクールでの私の最初のプロジェクトの1つでした。そして、私は感心しました:)
ギヨーム

おそらく、このすべてのスレッドでの最良の答え
Venki

15

この質問が子育てフォーラムに最適か、プログラミングフォーラムに最適かを判断するのは困難です。この質問に絡み合っていると、父と息子の関係の「問題」になる可能性があると感じているため、私のアドバイスが的を射ていないと恐れています。

そうは言っても、私が焦点を当てるのは、あなたとあなたの父親が、あなたとあなたの2人が何らかの形で情熱を共有する可能性のあるテーマについて結びつける素晴らしい機会です。自分自身が父親であり、自分の父親を知っているので、私たちは子供たちが私たちに耳を傾け、指示に従い、私たちから学ぶことをどれほど必死に望んでいるかを知っています。私たちの子供たちはしばしば反対のことをするように駆り立てられます。ですから、二人がこの共通の関心を共有しているという事実は素晴らしいです。

父親は確かに頑固かもしれませんが、この練習を通してあなた自身の個性と選択を曲げる機会がまだあると思います。反抗の感覚からではなく、プログラミングの主題をよく知りたいというあなた自身の意欲と野心から生じています。個人的には、あなたの父親がプログラミングに関してあなたを深い目的に追い込んだようです。確かに、MIPS Assembly LanguageまたはLISPではないかもしれませんが、それでもC ++ですか?Java?うわぁ。私はプログラミングが大好きですが、それらを早い段階で読むことですべてが一緒になってしまうかもしれません。冗談。:)

だから私はこれを尋ねるだろう:あなたにインスピレーション与えるものはですか?どんなものを作りたいですか?それに答えてから、そのテーマに関する独自の本やチュートリアルを探してください。ここに来て質問してください。何かを構築します。次に、あなたが作ったものをお父さんに見せてください。あなたが学んだことを彼に伝えてください。彼にあなたととても関わってくれたことに感謝し、彼に感謝していることを伝えてください。結局のところ、これがすべてのことなのですから。彼はあなたを愛しているので、あなたと何かを共有したいのです。時々父親は伝統的な方法でそれを表現するのに苦労するので、同じことを言うこれらの間接的な方法を探します。時々それをするのが嫌です。しかし、これらすべてがあなたに近づきたいという願望であることを忘れないでください。


15

誰もまだこれを提案していないようです:

最近、彼は私がそれで何をしたかを尋ね始めました、そして私は彼にあなたが入力したものを取り、各文字に値を割り当てるC ++プログラムを見せました(Aはアルファベットの最初の文字なので値を取得します1)..などなど。次に、すべての値を合計して通知します。したがって、「追加」という単語の値は9になります。

^^それは彼にとってあまり印象的ではなかった。彼は私に怒鳴りつけて、私がやってきたことのすべてがうんざりしていると言った。それは真実ではない。彼は非常に伝統的で頑固で、私が言わなければならないことは何も聞きません。彼に何を言えばいいですか?

考えてみると、そのプログラムは、コンピューターを使用してプログラミングについて何も知らない人にとってはあまり印象的ではありません。

お父さんにどうやって作ったか見せてください。彼にソースコードを説明してください。彼はおそらく(間違いなく)それを理解しませんが、それはあなたがそれにどれだけの仕事をしたか、そしてあなたがどれだけ理解したかを伝え、そしておそらく彼はあなたが実際にどれだけ達成したかについてよりポジティブな印象を与えるでしょう。


3
これは、それが得たよりも多くの認識に値しました。お父さんが息子の趣味をもう少し理解できるようにする良い非対立的なソリューション。
ロンドンのファーガス

@FergusMorrow同意します。この答えは、あまりにも少なめの賛成です。
stommestack

12

やりたい放題

それはあなたの人生です。何でもできます。誰にも(お父さんさえ)人生をコントロールさせないでください。

あなたはプログラミングを多かれ少なかれ楽しんでいて、成功したスペシャリストになりたいと思っています(そして、お父さんが望んでいて、誰もが望んでいます)。しかし、問題なのは、自分が何をしているか、そして好きでない限り決して成功しないということです

あらゆる分野をマスターするのは難しいです。誰かの影響下でのみこれを行うことはできません。そして、あなたがあなたより良いことを誰も知らない。あなたは今日休み、一日中ゲームをプレイしたい気分ですか?それはあなたの決定であり、あなたはそれに対して責任があります。自分の決断と人生に責任を持つことを学ぶべきです。成功するすべてのスペシャリストには、決定に責任を持つことが必須です。

それで、あなたはその状況で何をしますか?自分の立場に立って、誰にも耳を傾けないで、やりがいのあることは何でもしてください。


3
OPは法律上の未成年者(14、明らかに)です。彼の両親は彼の人生をコントロールすることを期待されており、今後4年間、盲目的に反撃することは、おそらく誰もが悲惨なことになるでしょう。
-jwodder

1
@jwodder:それらの親が、自分の自由時間に少年が学んだことをコントロールする必要があると感じたら、それは彼ができるだけ早く反撃し始めるかもしれません。私にも子供がいます。デビッドと同じくらい年上です。私の子供が私が自分だと思ったときに間違っていると私に言うことができなかったら、私は彼女の将来を恐れるでしょう。14歳は7歳ではなく、世界について1つか2つのことを知っており、両親が知らないこともいくつか知っています。そして、彼が彼らが望むものではないことが判明した場合、彼らは何年も前に失敗しており、少なくとも14年間彼らがしたことを続けることによって、もはや追いつく機会がありません。
sbi

10

本をリクエストしました。正直なところ、本を読むよりも問題を解決する方が上手です。あなたが夢中になっているパズルや問題を見つけてください。Project Eulerは素晴らしい情報源であり、CodeGolfは時折興味深い質問を提供できます。私の最初のプログラミングプロジェクトは、素数を見つけたC ++アプリでした。当時使用していた教科書は、次のような簡単な実装を提供していました。

bool isPrime(int x){
    int c = 1;
    while(c < x){
        if(x%c == 0){
            return False;
        }
        c=c+1
        /*c+=1 if compiler is set to '98 or more recent*/
    }
    return True;
}

これは非常に非効率的です。遅いことに嫌悪感をあきらめる前に、その関数で最初の500個の素数を見つけました。お父さんと私は上記の最適化を試してみましたが、出力をファイルに書き込むことさえしなかったシンプルなアプリでしたが、楽しく、結果の製品はクールでした。

本を読んで学べますか?ええ、しかし、プログラミング言語をいじって、試行錯誤で学習することの価値を強調することはできません。

お父さんのためにプログラミング学んでいるなら、やめて、自分の理由を見つけてください。私はまだ、彼に大量の自動取引システムを構築するように頼んでいます。私はあなたが何かを見つける必要があると言うとき、私は致命的な深刻だあなたは、あなたがいない雑用趣味やスポーツとして、それを見に来るので、それ以外の場合は、おそらく完全にプログラミングを放棄しますので、上の仕事をしたいと。

Linus Torvaldsの本「Just For Fun」を読んでみてください。この本では、Linuxオペレーティングシステムの起源について詳しく説明しています。タイトルはそれをすべて言います。

真剣に。何らかの問題をハックしてください。立ち往生したら、老人を巻き込む。

お父さんがあなたの仕事に感謝していなければ、それは彼が失望しているからではありません。彼は建築家であり、いくつかのものがどれほど複雑かは知りません。ロジックだけを調べて、彼にあなたのコードを見てもらい、あなたがそれを書いて学んだそのロジックについて何であるかを彼に理解させてください。


TL; DR


  1. 何かを台無しにするだけです。問題を解決する。解決できない場合は、他の人の解決策を見つけて、理解してください。
  2. #1をお楽しみください
  3. 何かを学んだり前進したりするときはいつでも、必ず老人に話してください。
  4. 自分のペース。誰もが独自の方法で、独自の速度で学習します。そのままにしておけば、最終的には自分のやりたいことができるようになります。

1
実際、彼は本を要求しなかったと明確に述べています。これの残りは同意します
ポール

6

特に初心者向けのプログラミングの入門書である本を見つけてみてください。たぶん、Hello World!ウォーレンサンデによる子供およびその他の初心者向けのコンピュータプログラミング

ライブラリの内容も確認してください。ほとんどの図書館には、数冊の初心者向けの本が必要です。


5

私の考えでは、2つの問題があります。

  1. プログラミングを学び、楽しませたい(楽しさが不可欠​​で、すべてが簡単になります)
  2. プログラミングについては本当に理解していないけれど、彼が何を望んでいるかを知っている顧客がいます。(あなたの場合はあなたのお父さん)

私見では:

  1. 最初の問題については、このようなサイトに行き、あなたがしたように質問をするだけです。これらのhttps://softwareengineering.stackexchange.com/questions/62224/how-to-become-a-professional-programmer/62263#62263のようなリソースを見つけてください。作成したいもの(ゲーム、To Doリスト、映画コレクション管理システム、次善のソーシャルプラットフォーム)を考えて、コーディングを開始してください。または、パズルの解き方から始めましょうプログラミングのパズルと課題はどこで見つけることができますか?

  2. あなたの2番目の問題はより困難です、あなたはお父さんを教育する必要があります(彼はあまり喜んではないようですが)あなたが学ぶ間、あなたはプログラミングの難しいことを彼に説明することで良くなります。あなたは彼女が「良いプログラミングメタファーとは何か」を説明したようなメタファーを使ってみることができますか?。もう1つのヒントは、一般にプログラマーではない人が優れたアルゴリズムの複雑さを理解するのではなく、見栄えの良いインターフェイスに簡単に悩まされることです。選択したプラットフォームに応じて、見栄えの良いインターフェースを簡単に生成して、パパを感動させることができます。たとえば、次を使用します。

お役に立てれば。


+1私はあなたの投稿が好きですが、この子供が父親の期待を理解するように提案した人はいないと思います。父親が何であるかを知らずに父親の期待を除外するのは少し早すぎるようです。
user179700

5

私は自分の人生のある時点で非常に似た立場にあったことを付け加えたいと思います。父はポジティブな強化の意味を本当に理解していませんでした。しかし、私は彼の時々厳しい厳しい不承認に対して粘り強くて弾力的だったので、それを維持することができました。約20年後、父との関係は大きく変わり、改善しましたが、当時の微妙なニュアンスはまだ残っています。

これはあなたの人生で困難な時期であり、ここで重要なことは、何よりもこれを楽しんでいるということです。


5

プログラミング言語については、1つだけに焦点を合わせる必要があることに同意します。

実際、まだ持っていないものをお勧めします:Python。Pythonは非常に簡単に学習できる言語ですが、非常に強力でもあります。C ++、Java、PHP、およびJavascriptはすべてはるかに複雑です。

Pythonを使用したプログラミングを教えるマニングの書籍がいくつかあります。「Hello、World!」は、少し若い人口層を対象にしている場合でも、強く検討します。

C ++を続けたい場合は、この本をお勧めします。

それは「参照」に近いものであり、「チュートリアル」に近いものではありませんが。私は良いC ++チュートリアルを知りません-「C ++を速く教える」種類の本がたくさんありますが、私はそれらが非常に役に立つとは思いません。(C ++は最初に学ぶのがかなり難しい言語です;ほとんどのC ++プログラマーは簡単な言語から始めました)。


同意して、Pythonは第一言語としてより良い選択です。C ++は優れていますが、非常に強力で使いにくいです。たとえば、歩くことを学ぶ前に飛行機を飛ばすことを学ぶようなものです。Pythonを使用すると、すぐにライブラリを使用して、楽しいことができます。string_add関数は、読み取り可能な5行のコードです。たとえば、def string_add(a_string): \n\t sum = 0 \n\t for letter in a_string:\n\t\t sum += ord(letter) - ord('a')+1 \n\t return sum(\ n-改行\ t -tab)またはより高度な関数型プログラミングを使用する1つのライナー。 string_add = lambda a_string: sum(map(lambda ch: ord(ch)-ord('a')+1, a_string))
ジンボブ博士11

+1 C ++を学ぶのに約1年かかりましたが、Pythonを学ぶのにたった10分しかかかりませんでした。
右折

+1 Pythonを使用するHead First Programmingもお勧めします。
デビッド

4

C ++、Java、PHP、JavaScript、Androidについて(これらを選択できるように、一度にすべてをマスターしようとすると失敗する可能性が高いため):

  • C ++:非常に強力な言語です。しかし、あまりにも強力で、容赦がなく、最初は不可解すぎます。あなたは多くのことを理解する必要があります。これはあまりにもプログラムを開始するための言語の選択が不十分だと思います。
  • Java:初心者に人気のある選択肢。ある意味では、C ++とは正反対です。C++は、想像できる方法で足を踏み入れる方法を提供しますが、Javaは、制御できないものを許可しようとはしませんが、実際には非常に麻痺します。多くのプログラミングを表示するには、あまりにも単純すぎて、些細すぎて、制限が多すぎます。そして、多くの標準APIといくつかのフレームワークを知らない限り、Javaで多くを成し遂げることはできません。テクノロジーとしてのJavaには多くの利点がありますが、言語としての欠点があります。
  • PHP:非常に人気のある言語で、主に入り口の障壁が低いためです。言語としてのPHPは成熟しており、現在の言語に期待される機能が豊富になっています。ただし、PHPは歴史的な理由から多くの荷物を持ち運びます。したがって、実際には優れたプログラムを作成できますが、実行できる人はほとんどいないため、実行方法に関する情報はあまりありません。そして、標準ライブラリは混乱しています。PHPを記述することにした場合、一般的な問題に対する堅牢なソリューションを促進するため、フレームワークを最初から使用することをお勧めします。個人的には、symfonyflow3およびCakePHPをお勧めします。しかし、私のアドバイスは:それから始めないでください。
  • JavaScript:一度知ってしまえば、驚くほど強力な言語です。それには「いくつかの」癖がありますが、実際にはそれで生きることができるはずです。最初はHTMLページにインタラクティブ機能を追加するために使用されていましたが、JavaScriptは多くのフィールドで使用できるようになりました。従来の使用とは別に、AppceleratorPhoneGapおよびAIRなどのプラットフォームを使用したデスクトップおよびモバイルアプリの開発、およびnode.jsを使用したサーバーの作成に使用できます。
    多くのJavaScriptライブラリとフレームワークがあります。ノックアウトjQuery、およびqooxdooext.jsをチェックアウトすることをお勧めします本格的なものを探しているなら。また、サーバーサイド開発の場合は、express.jsをチェックアウトする必要があります。
    また、CoffeeScriptを指摘したいと思います。CoffeeScriptはJavaScriptにコンパイルされますが、非常に便利な追加機能がいくつかあります。
  • Android:他の4つとは異なり、これはプラットフォームです。プラットフォームは、実行する内容に応じて選択する必要があります。Androidデバイス向けのモバイルアプリ開発の場合は、それを選択してください。そもそもそれが最良のものかどうかはわかりませんが、最終的にはクールだと思うものを作成する必要があります。

いずれにせよ、本当に重要なことは、あなたがこれを楽しいと感じることです。物を作るということは、クールだと思います。それはあなたのニーズのいくつかを解決するか、一緒に遊ぶのが楽しいです。プログラミングはそれを楽しむ人のためのものです。数行のコードでアプリを構築できるツールセットが必要です。JavaScript / CoffeeScriptは良い出発点かもしれません。
個人的には、Rubyを紹介したいと思います。プログラミングについて多くのことを教えてくれたので、プログラミングを始めたときにそれを知らなかったことが残念です。基本的に、2つの恐るべき本があります(両方とも無料で利用できます):

  • Why's Poignant Guide-個人的には、私にとってはその本では少し気を散らすもの(ジョーク、漫画など)でしたが、あなたはそれを楽しむかもしれません。
  • Pragmatic Ruby-私にとって完璧に機能しました。少し乾いていますが、必要なものだけを扱っています。

それに加えて、をチェックすることをお勧めします。リファレンス、チュートリアル、デモなど、素晴らしい統合ヘルプを備えた優れたツールです。数日のうちに最初のものを実行できます。

そして、おそらく後で、haXe紹介したいと思います。私はそれが素晴らしい言語だと思います(私の選択した言語)、そして最近発行された新しい初心者向けガイドがあります。ただし、haXeには使用可能なツールがなく、JavaScriptやRubyと同様にアプリケーションを簡単に作成できます。したがって、開始するのは退屈でイライラすることもありますが、それは全体の目的に反します。


私は彼にC / C ++で歯を切ることを絶対に勧めます。私は同じことをして、ほとんどすべての現代の言語がC / C ++から何かを派生しているため、驚くほど簡単に任意の言語を学ぶことがわかりました。
CyprUS

@CyprUS:私は同意しますが、両方とも学ぶ価値がありますが、どちらもプログラムの学習を始めるのに良い選択だとは思いません。また、LISPまたはSmalltalkファミリがどちらからも不可欠なものをどのように導き出すかわかりません。
back2dos

私たちは少年に彼が何をしたいかを決めさせなければならないと思います。とはいえ、LISP / SmallTalkは難解すぎて一般的な有用性を
持た

@CyprUS:アドバイスのみを提供しました。最終的に彼は選択しなければなりません。LISPやSmallTalkではなく、彼らが作成した(部分的に)重複するクラスの現代言語、特にRuby、Squeak、Objective-C、Lua、Scala、Erlang、Clojure、JavaScript、F#、Nemerle、Schemeです。これらはすべて実際に使用されており、一部の言語は最も人気のある言語にさえ含まれています。
back2dos

3

それは一ヶ月で期待しようとするのはかなりです。むしろ、一度に1つの言語またはパラダイムを学習することに集中する必要があります。そうしないと、圧倒される可能性があります。一度に押しすぎてしまうことも、オフにする良い方法です。興味のある特定のプログラムに取り組むことで、より良く学ぶことができます。Androidフォンがあなたの興味のあるところなら、C ++よりもJavaを使うほうが良いでしょう。彼は、典型的な顧客としてのUIの素晴らしさを期待していたので、彼の失望に落胆しないでください:)

Head Firstの本の中には、本にこだわる場合に学習を少し乾燥させるのに役立つものがあります。


3

今はもっと正式なものを片付けて、Scratch- http://scratch.mit.edu/をご覧ください -物事を学習しながら、ほとんどのプログラミング構造を簡単に扱うことができますループなどが必要です

また、手作業で行うのが最も難しい部分であり、今日の世界で興味深い結果を得るために必要な、完璧なマルチスレッド化を可能にします。

色とレゴブリックのようなアプローチをプログラミングに使用しているため、過小評価しないでください。技術的な詳細に迷うことなく、多くのことができます。


+1-スクラッチは学ぶための素晴らしい楽しい方法です。実際には年齢層を念頭に置いて設計されていますが、チューリング完全です。また、オブジェクト指向のスクラッチ拡張機能については、BYOB(Build Your Own Blocks)を確認してください。
モーガンハーロッカー

3

お父さんに、あなたの年齢で高層ビルを設計できるかどうか尋ねてください。それがプログラミングです。学ぶべきことがたくさんあるので、学ぶには時間がかかります。まるで自転車に乗っているようなもので、ペダル、ギア、ハンドル、ノブは1,000個しかなく、いつでもどれを使用するかを選択することはできません。練習が必要です。

疑う余地はありません。プログラマーになるという目標の早い段階でC ++に手を出したことがあります。それは私にとって印象的です

プログラマーとしてキャリアを積んで頑張ってください!


3

私はすでに多くの答えがあることを知っています。しかし、私はこのアドバイスを見ていません。あなたの父親に助けてもらうようにしてください。C ++ブックで毛深い何かを選んでみてください。あなたが理解して助けを求めることができます。
彼に本を渡し、C ++でクロールさせます。これにより、コーディングがいかに難しいかを彼に実感させるでしょう。


3

あなた自身のためにこの状況を変えてみてください。今まで達成したことだけでは十分ではないことを受け入れ、上手くやろうとします...上司を乗り越えて改善し始めなければ、上司のために働くとき、あなたはこれらのような困難な時間を過ごすでしょう。

私があなたの年齢だったとき、私が2倍懸命に働いたなら...


3

あなたの父親の意見はあなたの学習プロセスを助長しません。はい、他の人が述べたように、プログラミングを学習する方法はたくさんあります。ただし、私の意見では、C ++の驚異的な進歩を示しています。あなたの追加プログラムは、Javaプログラミングの最初の学期の後、私がかろうじて扱えるものだったでしょう。

続行したい場合に取り組む必要がある2つのことがあります。

1)あなたの父親を扱う。

見て、すべてのお父さんは子供のための贅沢な夢を持っています。しかし、彼らの期待は非常に高くなる可能性があり、最終的には一部の童話では不可能なことにもつながります。あなたの進歩をより良く評価し、あなたの父親を世の中に連れて行くために、状況に外部の誰かを連れて行くことをお勧めします。プログラミングの経験がある家族や友人と話をすることもできますし、このコミュニティの人々でさえ、私たち自身の経験と知識に代わって彼にメールを送ることができます。これは、最も重要なステップです。なぜなら、お父さんが冷えないと、一緒に興味を失うからです。

2)フォーカスを見つけます。

一度にすべてを学ぶことは助長されません。言語を選択し、それに固執します。特定の言語の本を読むとき。本の例に従うことは、逐語的に正確に進む方法ではありません。逆流は一部の人にとっては学習プロセスですが、すべてではありません(特に私自身)。できる限り多くの角度から攻撃することが重要です。同じ言語で異なる著者による異なる使用法の本をプログラミングすると、言語と洞察をどのように使用したいかについての好奇心が高まります。プログラミングからのあなた自身の欲求(ゲームを作る?アプリケーションを設計する?テスト?ect、ect)。また、個人的な冒険でプログラムを作成することもできます。現時点で何を知っているかに関係なく、やりたいことを把握し、プログラムを作成しながら調査します。時間が経つにつれて、あなたは 最終的には、関連するかどうかに関係なく他のプログラミング言語を試してみたいと思うでしょう。また、プログラミングをすべて一緒にやりたくないことにも気付くかもしれません。

何よりも重要なのは、最終結果ではなく、旅であるということを忘れないでください。楽しむことを忘れないでください!


3

あなたはあなたの状況のプログラミングの側面についていくつかの良いフィードバックとアドバイスを与えられました。しかし、私は別の視点から何かを追加したい...

お父さんについてネガティブな考えを経験しているという印象があります-彼はあなたに圧力をかけ、あなたにいくつかの悲しみと心配を引き起こしたコメントをしました-そしてそれはプログラミングの楽しさを取り去りました。それは残念なことで、ここのほとんどの人はプログラミングが楽しいことに同意するだろうと思います。

しかし、あなたのお父さんは本当にあなたの側にいると思います。彼は自分が正しいと思ったことをやり、助けようとして、良いスタートを切るためにあなたに本を買った。しかし、彼はそれを間違えました(そして、私はお父さんとして話します、私たちは時々物事を間違えます!)。彼にとって、本はおそらく彼が建築のキャリアで始めた場所です(インターネットとwwwが一般的に入手可能になる前に、これが始まったと思います)。彼の考えでは、本はあなたの出発点です。

だから、あなたのお父さんがあなたの側にいると仮定すると(そして私は彼がいると確信しています)、問題はあなたが最初にプログラミングを開始するときそれがどれほど難しいか理解していないということです-だから彼に彼のすべての答えを見せてここに投稿された-あなたのお父さんは良い男だと確信していると彼は理解し、彼はあなたをサポートします。

そして、あなたのプログラミングの幸運-あなたは素晴らしいスタートを切っているように見えます。


多分「天才」を追加することはあまりないでしょうか?そのようなプログラムを作成することは、私の友人の多くにとって難しいでしょう、私はあなたを保証することができます
CyprUS

@CyprUS-私は彼の特定の能力についてコメントしていませんでした(彼らは大丈夫だと確信していますが)。それは本当に彼のお父さんと関係がありました。
サイモンナイツ

3

他の回答で言及されていないこと:

ご存知かもしれませんが、子供(14歳)であり、退屈な本からプログラミングを学ぶように言われるのは簡単なことではありません。私はいつも気を散らしている..以前に本を買う必要がなく、オンラインのチュートリアルを見ることができると彼に言った。しかし、彼はとても古臭い。彼は私に本を使わせているだけです。

あなたは確かにその部分に取り組む必要があります。インターネットはすべてのプログラマーの重要なツールであり、あなたはそれを使用しなければなりません。

まず、プログラミングは問題解決に関するものです。言語XYZでXを実行する方法がわからない場合は、グーグルで検索して解決策を探します。* キーボードを使用するのと同じくらいプログラマーにとって重要なソリューションをすばやく見つけることができます。

第二に、もう1つの重要なスキルはドキュメントの使用です。書籍は通常、チュートリアルのようなものであり、ガイダンスを提供しますが、完全な知識を提供するわけではありません。これは、ドキュメントが役立つ場所です。たとえば、C ++でプログラミングしている場合、1か月の経験があります。遅かれ早かれ(私はすぐに言う)標準ライブラリを使用する必要があります...または既に使用している可能性がありますか?もしそうなら、それは良い兆候です、あなたの本はおそらくその場合悪いものではありません。とにかく、C ++標準ライブラリにすでに存在するものとそうでないものを知ることは有用です。そのため、プログラミング中は常にhttp://cplusplus.com/などの参照を開いたままにしておくと便利です。


インターネットはコーディングにとって非常に重要であり、コーディングの学習にとってさらに重要です。お父さんがそれを理解せず、書籍のみを使用しプログラミングを学習することを期待している場合、彼のアプローチは非生産的であり、進行が遅くなります(そしておそらく悪い習慣を得る可能性があります)。


2

彼はプログラムに傾倒するプロセスについては全く知りません。これらの本はすべて読むことができますが、それでもまともなものを書くことはできません。なぜなら、最も時間がかかるのは、あなたができることとそれに取り組む方法についての真の理解だからです。

あなたはお父さんにプログラミングを楽しんでいると言った-彼があなたのためにそれを台無しにしないでください。そして、少なくとも今は、5つのプログラミング言語を学ぼうとしないでください。Javaのような比較的シンプルなものに固執してください。それをマスターしたら、他のJavaに転送できます。

ちなみに、本に関しては、言語を正しい方法で学習するため、正しい方法です。チュートリアルに従うことは、しばしば悪い習慣などを拾うことにつながります。

幸運を祈ります。そして、彼があなたがそれをきちんとやっているということを知らせてください、進歩は遅いですが、あなたはそれをしている間にそんなに多くを学んでいます。


2

25〜35歳以上のプログラマーの多くは、ニンテンドーとセガをプレイして育ったと思います。それらの大部分/私たちは、あなたがあなた自身のものを作ることができるときにゲームをする理由の精神的な移行をしました。それはあなたがより良いプログラマーになるための非常に利己的な動機です。始まりです。人生の後半では、ビデオゲームの作成(仮想問題)から、より高いステークのゲーム(現実世界の問題)に移行する可能性があります。この患者の処方箋は、他の処方薬と悪影響を及ぼさないように、これらのトラックは汚染を減らすために最小限のガスで最大限の配送を行うことができますか、またはこの在庫の購入をどのように保証することができますか他の1000人が同時にそれを購入するときに私が望む価格で。


1

建築は、生まれてから学んできた物理的な世界に根ざしています。建築大学生にとって、レゴで遊ぶのは時間の無駄です。お父さんは、あなたは数学を知っているので、あなたは基礎に精通しており、物を作り始めることができるはずだと思っています。それは真実ではありません。彼は、プログラミングの最初のことを知りません。なぜなら、彼はそれが数学の分野ではないことに気付かないからです。

プログラミングは新しい世界です。それを熟知するための最良の方法は、あなたが物理的な世界を学んだのと同じようにそれを学ぶことです:自分自身を浸し、実験してください。一言で言えば、プレイ。レゴタイムです。

比較のために、宇宙飛行士を検討してください。彼らにも全く準備のできていない新しい世界があります。彼らは部屋を移動する方法のような基本から始めなければなりません。

次のステップとして、コンピューターが乱数を選択するゲームを作成することをお勧めします。それを推測しようとすると、推測が高すぎるか低すぎるかがわかります。

たくさんの異なる言語も試してみてください!一度にすべてではありませんが、一度に1週間かかることもあります。

ある程度の経験を積んだ後、本格的なビデオゲームを作成することは、旅人プログラマーとして取り組むことができる最大の課題の1つです。ビデオゲームは、私たちの専門分野のほぼすべての隅に触れます。また、より高いレベルのスキルで実験し、学習するのに最適な場所です。


0

プログラミング言語の学習に自分の時間をかけて、プログラミングを練習すればするほど、今度は初心者にとって非常にかわいい非常にシンプルなプログラムを作成しましたが、進行するにつれて必ず作成してくださいお父さんが実際に使用できる良いプログラムです。これを聞けば、お父さんの仕事を手伝ってくれました。

お父さんと一言だけ言って、彼に物事を説明すると、彼は本当に理解し、いつかあなたが優秀な開発者になると確信しています。


0

私はソフトウェアエンジニアとして勉強しており、私の教育でのプログラミング学習の進歩は、本を読むだけではありません。

C言語は簡単な言語であり、他の多くの言語(C ++、objective-cなど)はC上に構築されているため、まずCを学ぶことをお勧めします。私たちの場合は、STK 500キットを備えたAtmel Mega16です。これは、LEDとボタンを備えた単なるボードです)、それを試してみました。それは、hello worldプログラムIMOを読み書きするだけではありません。

Cが公園を散歩するようになったら、C ++とオブジェクト指向プログラミング(OOP)に進みます。OOPは多くの言語で重要な概念であり、プログラミングを考える方法であるため、プログラミングに真剣に取り組む場合には必須です。OOPに飛び込む前に、OOPの背後にある理論を必ず理解してください。

最後に大事なことを言い忘れましたが、スタック、キュー、ヒープなどのさまざまなデータ型を学習することをお勧めします。これらのデータ型は、プログラミングや新しい言語について読むときに理解するのに非常に役立ちます。

幸運であれ友よ!


OOPの学習には、C ++以外のものをお勧めします。Pythonは良いものです。C ++は非常に複雑な言語であるため、C ++でオブジェクト指向の概念を学習しようとするのは非常に苦痛です。実際にそれらを学んだら、それ以外の不透明な外観の機能の多くで何をすべきかを知ることができます。
-nmichaels
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.