入門に適したプログラミング言語についてChatGPTと対談してみた

技術,プログラミング言語

TL;DR

ますますChatGPTが話題になる中、自分もビッグウェーブに乗る…ことはどうでもいいが、そろそろ試してみるかと思ったので、ここ最近考えがまとまらないプログラミング入門に適したプログラミング言語についてChatGPT先生と対談してみました。実はリモワのお供に良いかも。オチは多分ありません。

プログラミングの入門は難しいよね

以前にもちらちらと書いたことがありますが、今時プログラミングの入門って難しいですよね。自分が「マイコン」に触れた当時はBASIC一択だったし、そもそもプログラミング言語が高価で、今みたいに無料で選び放題ではなかったので、次の一手も自ずから限られてました。ある意味悩みにすらならなかったわけです。

でも、今は色々な選択肢がある反面、過去の問題点をなくすべく高度化したプログラミング言語をいきなり学ぶことになったりして、それはそれで大変そう。まあ、実際これから学ぶ人の気持ちはもはや自分にはわからないので、意外に大したことないと思うのかもしれませんが。

それはともかく、OpenAIにアカウント登録してChatGPTを使えるようにしたので、色々聞いてみました。

おすすめのプログラミング言語は?

まずはおすすめを聞いてみました。Python、Java、JavaScrript、Swiftとまあまあそれっぽい回答。Swiftって初心者にも扱いやすい文法かなぁ?

さらにおすすめを聞いてみました。

一連のチャットなので、先程の続きの体で回答してくれます。追加でC++、Ruby、Go、Rustをあげてくれました。あれ、自分の趣味を見透かされてる?ニュースサイトで要約を3点に絞ってあげてくれるところがありますが、彼らの仕事がなくなりそうなそれっぽい回答が出てきますね。

とは言え、もうちょっと入門に特化した視点で考えてもらいましょう。

プログラミング経験がない人へのおすすめは?

ん〜、やはりPythonかScratchって話になるのか。それらがそうなのかはともかく、「扱いやすい文法」、「(学習のための)リソースが多い言語」がよいというのは同意。Scratchは触ったことないけど。

ただ、日本語が少し変ですね。「Pythonのようには少し複雑です」は「Pythonよりは少し複雑です」と言いたかったのかな。

ChatGPTはこのように日本語でやりとりできます。この時、一連のやりとりが記録されてますが、そちらのタイトルは英文になってます。と言うことは、一旦英語に翻訳してから回答を作成し、それを日本語に戻しているのでしょうか?そのあたりで日本語が不自然になることもあるのかも。いくつかやりとりしてみましたが、たまにおかしな日本語があります。ただ、10回に1、2回程度かもっと少ないかもしれません。翻訳という意味でもすごいですね。

他の選択肢としてJavaScriptとSwiftをあげてきました。うーん、これらはどうなんだろう。ちょっとつっこんだやり取りをしてみます。

JavaScriptって(初心者向けとして)どうよ?

JavaScriptは過去の経緯と下位互換性確保のためにごちゃごちゃしている印象があります。なので、それをChatGPTさんにぶつけてみました。「ごちゃごちゃ」も意味を理解して回答している感じ。

ちょっと難しいかもしれないが、続けていれば理解が深まるよと言ってます。まあ、間違っちゃいませんね。さらに、つっこんでみました。

コーチングについても学んでいるの?ってくらい、こちらの主張を否定せず、流れに沿うような回答をしてきますね。下手な上司、先輩よりいいんじゃない?笑

まあ、ここまでの回答を見ている限りあからさまな間違いはないようですが、油断はできません。Twitterで見かけたのは「日本橋のおすすめの焼き鳥居酒屋を聞いたら、3店中2店は架空の店だった」というもの。ま、昔はあったが無くなってしまったのかもしれないし、大阪の日本橋と勘違いしたのかもしれませんけど。

ついでにRustについて聞いてみた

先日、Rustはオブジェクト指向プログラミング言語か?という話を見かけたので、ChatGPTさんの見解を伺ってみました。彼?曰く、違うそうです。まあ、Cはマルチパラダイム言語ではないと思いますが(ある意味、マルチパラダイムなのか?)。

訊かれたこと以外もフォローするような文章も盛り込んでくるあたり、お前はRustの広報かとツッコミを入れたくなるような。趣味のことになると饒舌になるオタクみたいで、嫌う人もいるかも。

メモリ安全性が高いとのことなので、それって何?と訊いてみます。

ちょっと微妙なことを言ってきますね。人間なら人によっては「顔に出る」人も「顔に出ない」人もいますが、ChatGPTは当然顔には出ません。ある意味、確信を持って間違いを言う(嘘とは思ってない)ので始末に追えない部分もあるかと思います。

嘘をそれっぽく見せるには7割程度の本当に3割程度の嘘を混ぜるという話もあったりなかったり。全体的な話はそれっぽくまとめてますが、RustがGCを搭載していると受け取れそうなことを書いてますね。ちょっとつっこんでみましょう。

人間だったら、揚げ足を取られたことに感情的に反論することもあるでしょう。が、ChatGPTさんは、つっこみに対しても冷静にというか、そもそもつっこまれたという感覚もないのか、普通に対応してます。こいつ、詐欺師だな。

一応、擁護しておくと「ガベージコレクタなど」と言っているの間違いではないです。ま、分かりやすく添削するなら「JavaやPythonなどの言語ではガベージコレクタ、Rustでは所有権システムなどのメカニズムを使用して、…」くらいでしょうか。

学習方法を訊いてみた

話が逸れたので、最初に戻ってPythonの学び方を訊いてみましょう。ちょっと長め。

ちなみに、Rustについても同様に訊いてみました。パターンはだいたい同じで、公式→作ってみる→オンライン教材や書籍→コミュニティという流れでした。Rustでは「Rust By Example」を勧めてきました。あと、Pythonの例にはないオープンソースプロジェクトへの参加も挙がってました。

ちなみに、RustではUdemyをおすすめに挙げてましたが、この違いに何か根拠があるのかたまたまなのか、ちょっとモヤモヤ。

最後に、お礼を言ってみました。

いや、本当にソツなくこなしますね。

AIはリモワの武器になるか?

一連のやり取りでここ最近の悩みどころである「入門向きのプログラミング言語」の解が出たわけではありませんが、それなりに無難な回答は出てきました。まあ、現時点ではPythonというのは一つの現実解なのでしょう。

このやりとりも含めて、色々と質問をしてみた結果、サポートとしてのAIはやはり便利だなとは感じます。1人でモヤモヤ考えていてもまとまらない時はありますが、そんな時にChatGPTとやりとりすることで考えを整理することができるかと。思いもよらない視点での奇抜なアイデアが出てくるわけでは(多分)ないでしょうが、それっぽいものを返してはくれます。

その内容を確認しつつ自分でもまとめていけば、考えをまとめる助けになりそうです。もちろん、できる人はツールに頼らず脳内で完結できるのでしょう。が、凡人としては少ない脳内リソースを有効活用するためにも、お願いできることはお願いしてしまった方が楽ですよね。

オフィスでならちょっと近くの人に訊けることも、リモワとかだとわざわざメールやチャットでと思うと及び腰になるタイプには厳しい面も。いや、訊いてくれて良いのですけど。そんな時に、それっぽいこと返してくれる相棒として使い所はあるかな、と。

答えに要領をえない前職時代の後輩くんよりはよほどこなれたまとまった回答をしてくれるので、ニュースなどで騒ぐ気持ちもわかります。もっとも最近はマスコミもハイプ曲線の過度な期待のピークから、そろそろ幻滅期に入ったらしく「すごいけど注意も必要」的な記事を出し始めましたけど。そのうち「危険なAIに惑わされないために、人との絆が大事」とか言い出すだろうということがすぐに予想できてしまいます。

少ないやり取りで断言はできませんが、ある程度網羅的な回答をするようです。逆に言えば、これが良いみたいな唯一解みたいな答え方はしてこない感じ。なので、ベストは何かということにズバッと答えてくれるというより、こういうポイントもあるし、別のポイントもあるよと視野を広げてくれることもある感じがします。

そういう点では現代的な占いかな。大体の人はこうするというパターンを元に、何らかのロジックで結果を返す。一種の暗黙知の集合なので、それが役に立つこともあるという感じで占いに近い気もします。それを鵜呑みにして生活を全て委ねてしまうのは問題ですが、あたるも八卦の心持ちで参考にする分には使えるかな、と。

以前は調べないで訊いてくるやつに「ググレ、カス」とか言ってましたが、これからは「AIに訊け、カス」と答える時代かも。そりゃ、GoogleさんがCode Redを発動するか。ま、鵜呑みにするのは危険なんですが、それは相手がAIでも、人間でも同じことなので。人間ならしつこく訊いたら怒られるけど、AIはどこまでも付き合ってくれますしね(つまり、延々と訊かれたくない笑)。

技術ChatGPT,プログラミング言語

Posted by woinary