個人的な状況:私は大学で過去6か月間、正式にC ++を学んでいます。これに先立ち、私は1年間JavaScriptに手を出しました。今、私は1か月の休学中にPythonを学ぶことを検討しています。
学習プロセスの早い段階で焦点を分割することにより、学習の効率が低下しますか?C ++を続けて1か月過ごす必要がありますか?または、新しい言語を学ぶのに早すぎることはありませんか?
個人的な状況:私は大学で過去6か月間、正式にC ++を学んでいます。これに先立ち、私は1年間JavaScriptに手を出しました。今、私は1か月の休学中にPythonを学ぶことを検討しています。
学習プロセスの早い段階で焦点を分割することにより、学習の効率が低下しますか?C ++を続けて1か月過ごす必要がありますか?または、新しい言語を学ぶのに早すぎることはありませんか?
回答:
Pythonでの私の経験は、hello worldよりも若干複雑なプレイコードに限られているため、これは特にPythonの詳細な答えにはなりませんが、次のように伝えることができます。
言語間の違いは詳細に構文のようにあり、特定の言語仕様は異なります(エラーの処理方法、I / O機能、コンパイラーが入力を実行可能なものに変換する方法など)が、C ++とPythonは同じ機能を提供しますパラダイムなので、問題解決は両方の言語でほぼ同じ方法で行うことができます。C ++とPythonはどちらも命令型でオブジェクト指向であるため、C ++で習得した問題解決手法を使用して新しい構文を習得した後、C ++に慣れていれば、おそらくPythonを非常に高速に習得するでしょう。必要に応じて、関数型プログラミングにもPythonを使用できますが、その部分には触れたことがないため、詳しく説明することはできません。
早すぎますか?私はあなたの話から決定的なyesまたはnoで本当に話すことができません。C ++で完全な(GUI)アプリケーションを作成するのに十分な自信がありますか?(つまり、ライブラリ、ジェネリックやテンプレートなどのより複雑な言語機能を使用します。)新しい言語パラダイムを学ぶことは、同じパラダイムファミリで新しい言語を学ぶよりもはるかに難しいと思います。新しいパラダイム領域に足を踏み入れると、そのパラダイムの問題を解決する方法についての良いアイデアを得るために、より多くの時間を費やす必要があります。OO言語間では、継承に対処する方法と、パフォーマンスに影響を与える関数にパラメーター/引数を渡すときにメモリにデータを渡す方法に違いがあります。しかし、これらを始めるには、通常、最初はささいな関心事です。
私の推測では、もしあなたがC ++を使ってハローワールド以上のことを素晴らしい方法でできると確信していれば、ローンチしても大丈夫だと思います。多くの言語を表面的に学習すると、使用する言語に関係なくコードサンプルを理解するのに役立ちますが、独自のコードを作成するには、言語がどのように機能し、どのように互いに異なるかをもう少し理解する必要があります。
PS新しい言語を表面的に使用する方法を学びたいときは、通常、次のことを試して、言語の構文と表面的な動作を感じます。
まあもちろんです。
それについて疑いの余地はありません。新しいプログラミング言語を習得するには時期尚早かもしれません。
最も単純なケースは、エルスティンコ言語が出てきて、だれかがその不適切さを指摘する前に、それを学ぶことによってあなたの脳を傷つける場合です。思い浮かぶカップルには、BASIC、FORTH、およびAPLが含まれます。
より複雑なケースについては、偉大なコンピューター科学者の1人がこの問題を非常に簡単に述べていますが、実践は永続的であり、コンピューター言語を学ぶ前に学ぶべき多くの分野があり、言語がより基本的な理解を歪めないようにします。彼の言葉で:
私たちが使用するツールは、私たちの思考習慣、ひいては私たちの思考能力に深遠で不正な影響を及ぼします。
プログラミングに飛び込んだだけの相手はエドスジャー・ダイクストラと呼ばれ、非常に傑出した経歴がありました。彼は、次の引用でACMチューリング賞を受賞しました。
高度な知的挑戦としてのプログラミングへの基本的な貢献。プログラムを正確にデバッグするだけでなく、正しく構成する必要があることを雄弁に主張し、実践的にデモンストレーションするため。プログラム設計の基礎における問題の認識を明らかにするため。
彼がプログラミング言語の時期尚早な学習を批判している論文は次のとおりです。
「コンピュータサイエンスを実際に教えることの残酷さ」 http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
また、私に火をつけないでください、私はただのメッセンジャーです。
両方できない? 私はC ++でプロジェクトを行い、Pythonのビットを学びます(それはとても素晴らしいからです)、Pythonを使用してProjectEuler.netで問題を解決できます
一般的に、私は言語を学び、それを離れて新しい言語を学び始めるのは悪い考えだと思います。早い段階でさまざまなパラダイムを柔軟に扱う必要があります。しかし、それはまさに私が思うことです。
実践的なプログラマーにとって、新しい言語を学ぶことは決して悪い考えではない、と断言できません。大学生には、どのクラスが予定されているかに応じて、少し注意を促します。その理由は、学校の試験では、間違いを簡単に指摘するコンパイル/実行環境の利点なしに、言語の詳細を暗唱する必要があることが多いからです。
特に、数か月しか経験していない場合は、心の中で詳細を混ぜることは非常に簡単です。成績に関心があり、そのような試験でクラスを受講している場合は、注意が必要です。現実の世界では、それは問題ではありません。
編集:私はもともと構文を言ったが、非構文の詳細は教授と同じくらい重要であり、それらの多くがあります。
append()
対push_back()
であっても、経験豊富なプログラマは、彼らはしばらくの間、特定の言語で特定の機能を使用していない場合は、ルックアップする必要が何かあるのリスト、ため。シンタックスをその場で思い出すことができるのは間違いありませんが、ほとんどのジョブでは必要ありません。