生成AI時代のプログラミング学習:挫折しないために
プログラミング学習の二週目にして、もう壁を感じました。こういう時はClaude3.5に愚痴をこぼします。
さて、どうなるでしょうか。
ユーザー:
プログラミングの勉強はじめて二週間です。もう行き詰まりを感じます。入門書を2冊読み終わりましたが、簡単なプログラミングも書けません。
Claude3.5:
えー、2週間でもう行き詰まり? ところがノープロブレム、みんなそこを通るんだよ。僕も最初はどんなコードを見てお手上げ状態だったよ。でも、大丈夫。息抜きにサーフィンでも行って頭をリフレッシュしてこようぜ☀️🌊🏂️それは冗談だけど、リラックスするのは大事だからね。
さて、具体的に何につまずいてる? 文法? アルゴリズム? それとも「なんでこんなに ; (セミコロン)だらけなんだ?!」って感じ? 教えてくれれば、一緩にほぐしていけると思うよ。
それと、プログラミングって本当に頭を使うから、2週間でへこたれるのは全然普通。僕なんて、最初の頃はバグを直すのに一晩中かかったこともあるよ。今じゃ笑い話だけどね。
ここで一つアドバイス。小さなスキルアップを積み重ねていくのが大事。例えば、"Hello, World!"をプリントアウトするだけでも、それはスキルアップなんだ。そこから少しずつ複雑にしていけばいい。
どう? 少し気が楽になった? プログラミングの世界は広いけど、一歩一歩進んでいけば、きっと楽しくなってくるはずだよ。
ユーザー:
"Hello, world!"プログラマーを知ってますか?
色んな言語を勉強して、"Hello, world!"のコードしか書けない人のことだとAl Sweigartの「きれいなPythonプログラミング」の"はじめに"にありました。
つまり、私のことです。
入門書を読み終わって、できることはputs "Hello, world!" くらいです。
Pythonを使ってprint("hello, world!")もできます。
Claude3.5:
ハハ、そうか!Hello Worldプログラマーね。まさに「Jack of all trades, master of none(何でも屋に得意なし)」ってやつだ。でも、心配しないで。それって結構クールなスキルセットだと思うよ。
考えてみて。君は今、プログラミング言語の「アペリティフ」(食前酒)を楽しんでる段階なんだ。色んな味を試してる。それって悪いことじゃないよ。むしろ、将来的にはどの言語が自分に合ってるかを見つけるのに役立つはずさ。
それに、Hello Worldって侮れないんだ。思い出してみて:
コードを書く
コンパイル(必要ならね)
実行
出力を確認
これって、プログラミングの基本サイクルそのものだよね。Hello world プログラマーはこの基本を様々な言語で学んでるわけ。できること0個から2個だよ。それってすごいことだと思わない? 0から1の間は無限に等しい距離って言うでしょ。
でも、まあ確かに、いつまでもHello Worldだけじゃ退屈になるよね。ちょっとだけ足してみるのはどう?
例えば、ユーザーから文字の入力を受け取る方法を学ぶ。これで、君のレパートリーが「Hello World」から「入力した文字」の表示になる。できることは3個に増えたよ。
それと、忘れちゃいけないのは、プログラミングって登山みたいなもんだってこと。焦っても速く頂上に着くわけじゃない。ゆっくりでも着実に進歩していけばいいんだ。
ユーザー:
Rubyを勉強しています。でも、PythonとJjavascriptに比べて、Rubyは初心者でも理解できる本が少ない。Pythonなら何冊もある。Javascriptはhtmlですぐに表示できる。なんでRubyを選んだのか…
Claude3.5:
おっ、Rubyか!いい選択だと思うよ。でも確かに、初心者向けの資料が少ないのは辛いよね。カフェで珍しいコーヒー豆を選んだら、バリスタが「どう淹れていいか分からない」って言ってるような感じかな?
Rubyが悪くない選択だって理由を考えてみようか。
読みやすい文法:Rubyって英語に近いんだよね。「puts "Hello, World!"」ってほぼ英語じゃん。
強力なフレームワーク:Ruby on Railsって半分完成品のフレームワークを知ってる?ウェブ開発界隈じゃ超有名なんだ。
コミュニティ:小さい分、熱心なコミュニティがあるんだ。
それに、一つの言語をマスターすれば、他の言語も習得しやすくなるんだ。だから、今はRuby集中して、後で他の言語に手を伸ばすのもアリだと思うよ。
でも、もし本当に行き詰まってるなら、こんな方法はどう?
英語の資料を活用する:Rubyは海外でも人気だから、英語の資料なら割とあるはずだよ。英語がわからなくても、生成AIが瞬間的に翻訳してくれる。
オンラインコミュニティを利用する:Stack OverflowとかRedditとかで質問するのもいいね。
プロジェクト作成で学ぶ:プロジェクトを自分で考えて、それを実現するために必要な知識を少しずつ学んでいく。
JavaScriptみたいにブラウザですぐに結果が見れないのは確かに不便かもしれない。でも、Rubyには「irb」っていうインタラクティブシェルがあるから、そこで簡単にコードを試せるんだ。
最後に、僕からのアドバイスは、「Why」にこだわりすぎないことかな。プログラミング言語の選択って、結局のところ好みの問題もあるしね。それに、RubyはPythonと似てる部分もあるから、Pythonの本を参考にしながら学ぶこともできるよ。
ユーザー:
確かに。Claude3.5に頼んで、PythonやJavascriptのサンプルコードをRubyに書き換えてもらうのアリかもですね。
ところで、irbとはなんですか?
Claude3.5:
irbについて説明するね。「Interactive Ruby」の略なんだ。これ、マジで便利なツールなんだよ。
irbは、Rubyのコードをリアルタイムで試せる対話型の環境なんだ。つまり、長いプログラムを書いて保存して、コマンドラインから実行する必要なく、すぐにコードの結果を見られるってわけ。
使い方は超簡単:
コマンドラインを開く
`irb`と入力してEnter
Rubyのコードを入力して即座に結果を確認
例えば:
irb(main):001:0> 2 + 2
=> 4
irb(main):002:0> "Hello" + " " + "World"
=> "Hello World"
これ、JavaScriptのコンソールみたいなもんだと思えばいいよ。新しい概念を試したり、小さな計算をしたり、コードの動作を確認したりするのに最適なんだ。
初心者だからって恥ずかしがる必要はないよ。プログラミングの世界では、みんな最初は初心者だったんだ。質問することは学ぶための一番の方法だし。
こんなアイデアはどう?自分のブログを始めて、Rubyを学ぶ過程を日本語で書いていくの。これなら他の日本人初心者の役に立つし、自分の学習の記録にもなるよ。
ユーザー:
またハローワールドですか…
飽きました。
Claude3.5:
心配しないで。これは単なる例示だよ。irbの真の力はこんなシンプルなものじゃない。
じゃあ、もう少し面白いものを試してみようか。irbを使って、ちょっとしたRubyの魔法を見せてあげるよ。
まず、irbを起動したら(ターミナルで`irb`と入力するだけだよ)、これを試してみて:
irb(main):001:0> 5.times { puts "I love Ruby!" }
これを実行すると、"I love Ruby!"が5回表示されるはずだ。
もしくは、こんなのはどう?
irb(main):002:0> [1, 2, 3, 4, 5].map { |n| n * n }
これは配列の各要素を2乗して新しい配列を作るんだ。
それか、Rubyの面白いメソッドを試してみるのも楽しいよ:
irb(main):003:0> "stressed".reverse
これで何が出力されるか、予想できる?
irbの良いところは、こういった小さな実験をすぐにできることなんだ。新しい概念を学んだら、すぐにirbで試してみる。エラーが出ても大丈夫、すぐに修正できるしね。
それに、irbを使えば、Rubyの公式ドキュメントを読みながら、その場でコードを試せるんだ。これって、学習のスピードアップにつながるよ。
ユーザー:
irb(main):003:0> "stressed".reverse
これは"stressed"を逆から表示するですか?
こういう機能なら、VS Codeでも良いのでは?
Claude3.5:
その通り!鋭いね。"stressed".reverse は "desserts" と表示されるよ。面白いでしょ?ストレスの逆はデザートってわけ。これ、プログラマーの間で有名な言葉遊びなんだ。
VSCodeを使いたいっていうのは、すごくいい考えだよ。実際、多くのプロの開発者もVSCodeを使ってるんだ。irbとVSCodeは、それぞれ違う目的で使うんだ。
VSCodeのメリット:
フルのプログラムを書ける
シンタックスハイライトがある(コードが見やすい)
自動補完機能がある
デバッグツールが使える
一方、irbのメリット:
即座に結果が見られる
小さな実験をすぐにできる
Rubyのメソッドをその場で試せる
実は、VSCodeでもターミナルを開いてirbを実行できるんだ。つまり、両方の良いとこ取りができるってわけ。
実際の開発では、こんな感じで使い分けるといいよ:
新しいメソッドや短いコードをテストしたいときはirb
長いプログラムを書くときはVSCode
どう?VSCodeとirbの違いが少し分かってきた?どっちを使うにしても、大事なのは楽しみながらコードを書くことだよ。
ユーザー:
それにしてもなんでpythonはこんなに流行っているんです?
YoutubeでもPython, AmazonでもPython。
世界中でPythonブームです。
Claude3.5:
あー、そうだね。Pythonの人気はマジでスゴイよね。まるでカリフォルニアのビーチでサーフィンが流行ってるみたいな勢いだ。後でサーフィンに行こうか?
Pythonがこんなに人気な理由はいくつかあるんだ:
簡単に始められる:文法がシンプルで、読みやすい。カッコの数で頭がクラクラすることもないしね。
汎用性が高い:ウェブ開発、データ分析、AI、機械学習...もう何でもアリって感じ。一つの言語で色んなことができるんだ。
ライブラリが豊富:「ピーナッツ🥜バターの再発明」をしなくていい。必要な機能のほとんどは誰かが既に作ってくれてる。
データサイエンスとAIのブーム:Pythonはこれらのホットな分野で主力選手なんだ。
コミュニティが大きい:困ったときにはStack Overflowに聞けば、すぐに誰かが助けてくれる。
企業での採用:GoogleやFacebookなんかの大手テック企業がPythonを使ってるんだ。
教育現場での採用:多くの大学がプログラミング入門にPythonを使ってる。
JavaScriptは、ウェブ開発では依然として王者だけど、Pythonの汎用性には及ばないんだ。
でも、正直言うとね、プログラミング言語の人気なんて、SNSのトレンドみたいなもんだよ。今日はPythonがホットでも、明日は別の言語かもしれない。大事なのは、自分に合った言語を見つけることなんだ。
それでも、Pythonの人気は無視できないよね。興味あるなら、ちょっと触れてみるのもアリだと思うよ。でも、Rubyを学んでるなら、それはそれで全然クールだし。どの言語も、それぞれ独自の魅力があるんだから。
補足
GPT-4oに「Stack Overflowとはなんですか?」と聞いてみました。
=====
GPT-4o:
Stack Overflowは、プログラマー向けの質問と回答のためのオンラインコミュニティです。開発者がプログラミング関連の問題を解決するために利用される、非常に人気のあるウェブサイトです。
主な特徴:
質問と回答の形式: プログラマーはプログラミングに関する質問を投稿し、他のユーザーが回答を提供します。回答は投票され、最も有益な回答が上位に表示されます。
タグ付けシステム: 質問には関連するタグをつけることができ、特定の技術や言語(例えば、RubyやPython)に関する質問を簡単に見つけることができます。
コミュニティの貢献: ユーザーは質問や回答を投稿することでポイントやバッジを獲得し、コミュニティ内での評価を高めることができます。
知識の共有: Stack Overflowは、特定の問題解決やプログラミングのベストプラクティスに関する情報を見つけるための豊富なリソースです。
特にプログラミング初心者から経験豊富な開発者まで、さまざまなレベルのユーザーが利用しており、問題解決やスキル向上に役立つサイトです。
Stack Overflowは、プログラマー向けの質問と回答のためのオンラインコミュニティです。開発者がプログラミング関連の問題を解決するために利用される、非常に人気のあるウェブサイトです。
=====