今日、一人の先生と自分のプログラミング学習経験について話し合った。この機会に記録し、興味があるが困難を恐れている学生と共有したい。
全ては興味から始まる(大学 1 年生 - 大学 3 年生)#
いつプログラミングに興味を持ち始めたかは覚えていないが、私の学習は間違いなく興味に基づいている。
自分で誰の携帯電話やコンピュータでも動作するソフトウェアを作り、XXX の機能を実現することが最初の夢だった。
しかし、夢は遠すぎて、どこから始めればいいのかわからなかったので、授業から始めよう!
この夢を実現するためにどの授業を受ける必要があるかわからなかったので、何を学ぶかを知っていることから始めました。mooc、bilibili、そしてさまざまな方法(例えば、Liao Xuefeng のウェブサイト)を通じて Java、C++、Python、HTML、CSS、Linux、Git などを学びました。いくつかの授業は終わりましたが、いくつかの授業は退屈で終わりませんでした。
そして、どうなりましたか?
一人で学んでいました😂、まるで原地踏みです。自分でソフトウェアを作るまでにはまだまだ遠い道のりがありましたので、途中で一時的に学びをやめたり、一時的に学びをやめたりしました。
その時点で、学習はまだ高校生の習慣を保っていました。先生が授業をしている間、私は下でメモを取っていました。例えば、私が今まで保持している数少ない学習ノート - Linux オペレーティングシステム
![[files/Pasted image 20231010085854.png]]
![[Pasted image 20231010085939.png]]
このように学習を進めると、たくさんのノートを作成することができますが、Linux システムを開くと、目がくらむだけで何もわかりません。
![[Pasted image 20231010090502.png]]
(サーバーの Linux を開くと、デスクトップすらありません⬆️)
過去には学習が終わると試験があり、成績を目的として学習しました。少なくとも 80〜90 点を取ることができれば、学んだ価値があると感じました。今は自分でソフトウェアを書くことを目的としているので、学んでも学ばなくても同じです。だから、大学 3 年生までずっと行ったり来たりしていました。
ああ、プログラミングは面白い、学ぼう
ああ、学ぶのはつまらない、やめよう
学ぼう
やめよう
。。。。。。
大学 3 年生まで引っ張りましたが、基本的に何もできませんでした。
あなたはジムで一生懸命トレーニングしても、役に立たない
—— マ・バオグオ
進歩は実践から生まれる(大学 3 年生 - 大学 4 年生)#
大学 3 年生の時にオープンソースソフトウェアに触れ、多くのソフトウェアにはチュートリアルがあり、チュートリアルに従って自分のコンピュータで新しいものを実行できるようになりました。
![[Pasted image 20231010091847.png]]
(このようなチュートリアル⬆️)
その時点ではツール至上主義に陥っていて、何か新しいものに出会ったら、有用かどうかに関係なく、まず試してみることができれば、世界中の誰にも敵わないと思っていました(今見ると、この考えはとても幼稚です)。
このプロセスでは、最初に自分のコンピュータに大量のオープンソースソフトウェアをインストールし、後で Linux をいじり始め、さまざまなサービスをサーバーにデプロイしました。いつでもインターネットで操作できるサーバーがあるのは本当に便利です。
![[Pasted image 20231010092325.png]]
このプロセスで、Linux の授業で学んだこと(つまり、上記のノート)を少しずつ活用し始めました。最初はファイルのコピーと貼り付けすらうまくいかず、後にはさまざまな操作が得意になりました。最初は多くの問題にノートを参照して解決しましたが、後は検索エンジン、GitHub、オープンソースソフトウェアのフォーラムなどを利用してより多くの問題を解決しました。
コロナ禍の寒假にはキャンパスに戻ることができず、実体のある教科書を見ることができなかったため、電子版を探し回るしかありませんでした。そのため、私は情報共有の活動を組織しましたが、WeChat、QQ グループ、クラウドストレージなどは便利ではありませんでした。いくつかの手続きの後、ほとんどの要求を満たすことができるファイル管理のオープンソースプロジェクト dzzoffice を見つけ、デプロイと実行を開始しました。その後、フォーラム(最初は discuzQ を使用し、後に discourse を使用)もデプロイしました。これらの活動とプロジェクトにより、私は一定の名声を得ることができ、キャンパス内で有名人になりました。
これらのツールのデプロイとプログラミングはほとんど関係ありませんが、いくつかの Linux 操作に関わることがあります。ただし、このプロセスで次第に快感を感じるようになりました - 本来は XX の機能を実現するために多額のお金を支払う必要がありましたが、今は自分でデプロイするだけで済む!
そして、「自分でやってみると、自分で食べる」という達成感も感じました。
このように循環する(大学 5 年生 - 修士 1 年生)#
上記のプロセスで自信をつけ、最初の夢についてより明確な理解を持つようになりました - これは非常に困難なことであり、それを実現するには多くの基礎が必要です。真剣にプログラマーとしての教育を受けた人々、フルスタック開発ができる人々は非常に優れた存在ですが、私にはそれをするための時間がありません。だから、諦めましょう
何かを手に入れるためには何かを捨てなければならない
何も学ぶことを諦めた後、私は徐々に人工知能の実践にエネルギーを注ぎ始めました(具体的な問題を解決するために人工知能を使用する)。理由はやはり興味です。この時点での夢は比較的広範であり、「人々を人工知能によって解放する」というものです。
その後も最初の学習と同じようにしました。
まず授業を受けて、左耳から右耳に抜ける
次に実践し、問題があれば解決策を検索します。この時点で具体的なコードが関わってくるので、自分の能力に頼ってプログラムに新しい機能を実装することが本当に始まりました。その間、他のこともやりました。例えば、ウェブスクレイピングやポッドキャストの後処理ツールを作りました。まだ多くの機能が実装されていないものもありますが、オープンソースコミュニティに少し貢献できたと思います。
今日、その先生と話し終えた後、具体的な人工知能プロジェクトに参加し始めました。それはおそらく大学 3 年生と 4 年生の時に自分が初めて Linux プロジェクトをデプロイしたのと同じくらい意味があると思います。
感想#
時間とエネルギーの投入に伴い、私たちの物事への理解は螺旋状に上昇します。何も知らない状態から少しずつ理解し、大まかに理解し、心の中で理解し、最終的には笑ってしまうまで、このプロセスを飛ばすことはできません。プログラミングもそうですし、中医学もそうですし、あらゆる業界もそうです。私の中医学の理解は、大学 5 年生の卒業休暇から開始され、その前の 5 年間の積み重ねもこのようなプロセスを経験しました。最初は何もわからず、少し理解し、突然理解し、最終的には笑ってしまいました。
プログラミングに興味を持つ学生の皆さんには、学び続けるか、休息を取るか、方向がない場合は他の人と話をするか、とにかく学び続けることをお勧めします。努力は必ず報われますし、少なくとも努力の過程で充実感を味わうことができます。一日中何もせずに遊ぶよりもずっといいです。