基礎知識がゼロで、自分を豊かにするために言語を学びたい場合は、シンプルで美しく、使いやすい Python が最適です。では、Python を体系的に独学するにはどうすればよいでしょうか?
Pythonをしっかり学びたいと思う一方で、些細なことで悩んでなかなか始められない人もいる一方で、学習コストが高すぎるのではないかと心配している人もいます。彼らは黙って諦めているのだろうか?
幸いなことに、Python は初心者に優しいプログラミング言語であり、完全にマスターするのにあまり多くの時間とエネルギーを費やす必要はありません。
Python の設計哲学の 1 つは、シンプルで学びやすいということであり、それは次の 2 つの側面に反映されています:
シンプルで明確な構文: Ruby や Perl と比較して、Python の構文機能はそれ以上でも以下でもありません。形而上学を演じることなく、シンプルかつ直接的です。
多くのエントリ ポイントがあります。Python を使用すると、科学技術コンピューティングやデータ分析、クローラー、Web サイト、ゲーム、コマンド ライン ユーティリティなど、さまざまなことができます。興味があり、時間を投資する意欲のあるものが常に存在します。
これ以上のナンセンスはありません。言語を学ぶための近道は 1 つだけです: 入門
1. 開始段階
どのプログラミング言語にも 2 つの部分があります: ハード知識とソフト知識。開始段階の主なタスクは、ハード知識を習得することです。知識。どのプログラミング言語にも、ハード知識とソフト知識の 2 つの部分が含まれています。初期段階の主なタスクは、ハード知識を習得することです。
1. ハード知識
「ハード知識」とは、変数や型、ループ文、分岐、関数、クラスなど、プログラミング言語、プログラミングパラダイムなどの構文、アルゴリズム、データ構造を指します。この部分の知識も普遍的なものであり、ある種の文法を習得しているように見えますが、実際にはある種の考え方が確立されています。たとえば、Java プログラマーが Python を学ぶように求められた場合、Java で学んだオブジェクト指向の知識を Python にすぐにマッピングできるため、Python のオブジェクト指向機能をすぐに習得できます。
プログラミングの学習が初めての場合は、信頼できる文法書が非常に重要です。退屈に思えるかもしれませんが、しっかりとしたプログラミングの考え方を構築するためには不可欠です。
以下は初心者に適した教材のリストです:
❖「Learn Python the Hard Way」: http://learnpythonthehardway.org/book/
この本には Python の文法コンポーネントも説明されており、多くの内容が付属しています。役立つ情報が満載で、すぐに始めるのに最適です。
❖「Python ヒッチハイク ガイド!」: Python ヒッチハイク ガイド!
このガイドは、Python の専門家でも初心者でも、Python のベスト プラクティスに焦点を当てています。
❖「Python 公式ドキュメント」: 当社のドキュメント
実際の質問のほとんどは、公式ドキュメントで解決できます。
❖ 補助ツール: Python Tutor
グラフィックを使用して Python のさまざまな概念を理解するのに役立つ Python オブジェクト視覚化プロジェクト。
Python の哲学:
1 つのことを行うには、1 つの方法、できれば 1 つの方法のみを使用します。
勉強も同様ですが、色々な教材が勧められますが、実際に勉強する時はその中から一つだけを選んで、それに固執するのが一番です。
必要に応じて、データ構造とアルゴリズムを説明した本を読む必要がある場合があります。この知識は、Python のオブジェクト モデルを理解して使用するのに非常に役立ちます。
2. ソフト知識
「ソフト知識」とは、特定の言語環境における文法スキル、クラス ライブラリの使用、IDE の選択などを指します。この部分がまったく理解できずに使えなくても、プログラミングができるようになることはありませんが、書いたプログラムは少し「バカ」に見えてしまいます。
この知識の学習は、解決しようとしている問題の分野と深さによって異なります。初心者の場合、最初の段階で迷ったり、Python のバージョンを選択するときに迷ったり、しばらく 2.7 を見てからしばらく 3.0 に切り替えたり、クラス ライブラリの海をさまよってできずに迷ったりしがちです。 Scrapy、Numpy、Django を含め、自分自身を解放してみたり、エディターのジハード、中括弧インデントの探索、オペレーティング システムのディベート コンテストなどの無意味な活動に参加したり、一日中ひざまずいて、すべてを完了する方法を常に考えたりすることもできます。 1 行のコードで実現することも、パフォーマンス、セキュリティ、多用途性、堅牢性の点で完璧なソリューションを構想することもできます。
多くの「偉い人」は、初心者にあれやこれやと回り道を避けるよう警告します。これは初心者を本当の回り道に追い込むことになります。
初心者には、学習とは回り道をしたり、バグを起こす必要があるプロセスだということを伝えた方が良いです。 できるのは地に足をつけ続けることだけです。奇跡はありません。
たとえ道が汚くて醜くてもう歩けなくなったとしても、まず方向を選んで歩き、それからより良い解決策がないか考えてください。
回り道をして初めて、その利点がわかり、ステート マシンを手書きで一致させることができるのに正規表現を発明しなければならない理由、プロセス指向のソリューションは解決できるのにオブジェクト指向で解決できる理由、そしてなぜ私が解決策を見つける必要があるのかを理解できるようになります。すべてを制御できる ルート ポインタはメモリを自動的に管理する必要がありますが、コールバックをネストできるのに、なぜ Promise を使用しなければならないのですか...
さらに重要なのは、高レベルのソリューションは、どちらかではなく、低レベルのカプセル化であることが理解できるでしょう。状況下では最も効果的かつ適切です。
テクノロジーの流入は波のようなもので、長い間封印されてきた古いテクノロジーは消え、遅かれ早かれ戻ってきます。現在のモバイル アプリケーション、モバイル ゲーム、HTML5 の人気と同じように、過去の PC の歴史を繰り返している側面もあるのではないでしょうか?
したがって、間違った道を選んで命を失うことを心配しないでください。忍耐と進歩が正しい道です。
初期段階の中心的な課題は、ハードな知識を習得し、ソフトな知識を正しく理解することです。安定した根と強い枝があって初めて、厚い葉を育て、甘い実を結ぶことができます。
2. 発展段階
基礎知識の学習を終えた後は、必ず虚無感を感じ、この文法知識が本当に役に立つのか疑問に思うでしょう。
はい、あなたの疑念は非常に正しいです。 Python がその価値を実現するには、もちろん構文レベルで終わるわけにはいきません。
開発段階の中心的なタスクは、「Python から抜け出し、世界を受け入れる」ことです。
科学計算とデータ分析、クローラー、Web サイト、ゲーム、コマンド ライン ユーティリティなど、複数の分野が目の前にあります。これらは、Python 構文を知っているだけで解決できる問題ではありません。
クローラーを例に挙げます。コンピューター ネットワーク、HTTP プロトコル、HTML、テキスト エンコーディング、JSON について何も知らない場合、この部分の作業をうまく行うことができますか?また、初期段階での基本的な知識も同様に重要です。ループや再帰の書き方についてドキュメントを確認する必要さえあるのに、BFS の実装方法さえ知らないのは、石のベンチを作る職人のようなものです。ハンマーを持ち上げるたびにハンマーの使い方を考えるのと同じで、非常に非効率的です。
この段階では、大量の学級文庫に触れ、大量の本を読むことは避けられません。
°1 クラス ライブラリ
"Awesome Python Project": vinta/awesome-python · GitHub
以下の図に示すように、さまざまな実際的な問題を解決しようとするときに Python コミュニティがすでに備えているツール ライブラリのリストを次に示します。
実際のニーズに応じて、必要なクラス ライブラリを見つけることができます。
関連するクラス ライブラリの使用方法に関して習得する必要があるスキルは、ドキュメントを読むことです。オープンソース コミュニティのほとんどのドキュメントは英語で書かれているため、英語が苦手な学生は英語を補う必要があります。
°2 書籍に関して
ここでは、より役立つと思われる書籍のみをリストします。詳細については、Douban の書評を参照してください:
科学とデータ分析:
❖「集合知プログラミング」: 集合知プログラミング
❖ " 「数学の美しさ」: 数学の美しさ
❖ 「統計的学習方法」: 統計的学習方法
❖ 「パターン認識と機械学習」: パターン認識と機械学習
❖ 「データ サイエンスの実践」: データ サイエンスの実践
❖ 「データ取得入門」 :情報取得入門
クローラー:
❖ 「HTTP 決定版ガイド」: HTTP 決定版ガイド
Web Web サイト:
❖ 「HTML & CSS の設計と構築 Web サイト」: HTML & CSS の設計と構築 Web サイト
...
リストへ ここで続ける必要はありません。
賢明な方であれば、上記の本のほとんどが Python に関するものではなく、より専門的な知識に関するものであることに間違いなく気づくでしょう。
実際、ここでのいわゆる「Python から飛び出して世界を受け入れる」とは、実際には、Python と専門知識を組み合わせることで多くの実践的な問題を解決できることを意味します。この段階でどこまでできるかは、あなた自身の専門知識に大きく依存します。
3. 詳細段階
この段階では、Python についてほぼすべてを知っているため、Python が C 言語で実装されていることを知っておく必要があります。
しかし、Python オブジェクトの「動的機能」は、自動メモリ管理さえない比較的低レベルの C 言語を使用してどのように実装されるのでしょうか?現時点では、私たちはもはや表面に留まっているわけにはいきません。Python のブラック ボックスを勇気を持って開け、言語の奥深くまで入り込み、その歴史を確認し、そのソース コードを読んで初めて、その設計思想を真に理解することができます。
お勧めの本はこちらです:
『Python Source Code Analysis』: Python Source Code Analysis
この本は Python ソースコードの核心部分を詳しく説明していますが、この本を読むには C 言語のメモリ モデルと指示事項をよく理解してください。
また、Python 自体は、C の手続き型プログラミング、Schema や Haskell などの関数型プログラミング、Java のクラスベースのオブジェクト指向プログラミングと比較して、複数のパラダイムを組み合わせた動的言語です。十分に純粋ではありません。つまり、プログラミング言語の「道教」はPythonでは限られた範囲でしか理解できないのです。特定のプログラミング パラダイムを学習する場合、このパラダイムにとってより純粋な言語から始めると、Python 言語のルーツをより深く理解できるようになります。
ここはオープンコースがおすすめです
「プログラミングパラダイム」:スタンフォード大学オープンコース:プログラミングパラダイム
講師は、さまざまなプログラミングパラダイムの代表的な言語から始めて、高いレベルの視点を持ち、核となるアイデアを提供しますそれぞれのプログラミングパラダイムの。
このコースでは、C 言語のパラダイムやメモリ管理など、C 言語について非常に詳細な説明が含まれていることを言及する価値があります。この知識は、Python ソース コードを読む際にも非常に役立ちます。
Python のベスト プラクティスの多くは、Django、Tornado などのよく知られたフレームワークやライブラリに隠されています。ソース コードから金を掘り出すことも良い選択肢です。
¶ 最後に
プログラミングを学ぶまでの道のりは人それぞれ異なります。実際、ほとんどの人は、異なる道を通って同じ目的地に到達します。ただ、道に迷っている人はいません。ただ、やり続けることができない人だけです。少し鶏スープのように聞こえますが、本当です。