これからプログラミングを学ぶという人には、こちらの本がオススメです。
改訂3版 これからはじめるプログラミング 基礎の基礎
Amazon.co.jp/gp/aw/d/4297101181/">https://www.Amazon.co.jp/gp/aw/d/4297101181/
(レビュー等は旧版の方も参考に
https://www.Amazon.co.jp/dp/4774137103/ )
こちらはプログラミングの「考え方」を学ぶための本です。
プログラミングを学ぶというとついついプログラミング言語の勉強を始めてしまいがちですが、
実は、その2つは似て非なるものなのです。
プログラミングの考え方を学ばなければ、プログラミング言語をいくら勉強しても、
いざプログラムを作ろうとすると何も出来ないという、大きな落とし穴にハマります。
普通の語学を学ぶ時のことをイメージしてみて下さい。
例えば、英語を学ぶ時には、英語の文法や単語といった、まさに「言語」の勉強をします。
その為、プログラミングも同じだと思ってしまうのですが、
英語を学ぶ時には、必ず母国語である日本語との対比からそれを理解してゆきます。
そして、日本で英語を学ぶ人は日本語で文章を考え、その組み立てができる人です。
つまり、英語という「言語」の前に、既に日本語という別の「言語」と「言語を使った思考」という基礎が既に備わっているのです。
なので、追加の言語である英語を学ぶ時には、「言語」だけを学べばそれで良いのです。
ところが、プログラミングを初めて学ぶ人は、この基盤となる何かの「言語」も、
何かを言語で表現する為の「考え方」すら、まだ手に入れていない状態です。
オオカミに育てられて吠える事しか知らないに等しい状態です。
なので、一番最初に手に入れるべきは、プログラミングの「考え方」です。
それらをわかりやすく書いたのがこの本になります。
その上で、何らかの「言語」を学んだ人は、上で言う、日本語が使える人になりますので、
追加の言語は、文法や単語といった「言語」を少し学ぶだけで、大抵使えるようになります。
人間が作ったプログラミング言語は、自然言語よりもバリエーションが少ないので、2つ目、3つ目の習得はとても簡単です。
(慣れれば、別に習得しなくても使えちゃうくらいに)
なので、最初の言語をどれにするかも大してこだわる必要はありません。
しいて言えば、上記の考え方を学べる手助けになる、簡単な言語として、
Scratchという言語があります。
これは、子供の学習用に作られた言語で、文字では無くブロックを使ってプログラムを組み立てますが、
文字を使った普通のプログラミング言語と遜色ない機能を備えています。
もう少し、ガッツリやりたい場合は、C# というWindowsの標準の言語があります。
これを使ってWindowsソフトを作るための、Visual Studioというソフトは
プロも開発に使う本格的なものですが、個人が使う場合に限り、無償で提供されています。
Visual Studio 2022 Community
とかで検索してみて下さい。
これを使うと初めから目に見えて動くソフトが作れる為、モチベーションが保ちやすいです。
(大抵の環境は文字以外の画面を扱えるようになるまでが長い)
イメージはこちらの連載を眺めてみてください。
(Visual Studioのインストール方法もありますが、1つ前の2019の時の記述なので多少違うかもしれません)
https://www.greenowl5.com/gprogram/vcs2019/vcs19_010.html
C言語やC++、Javaをやるのも良いのですが、その代わり、それらの言語では初心者のうちは、延々と黒い画面に文字を出すだけのプログラムしか作れません。
ウィンドウを開いたり画面に絵を出したり等は中級以降になります。
これがつまらなくて、今やってる事と実際のアプリとの繋がりが見えなくて、挫折してしまう人が結構多い気がします。
(私みたいな文字を出すこと自体に喜びを感じた変態は例外として)
なので、初めはすぐに成果を出せる上で書いた環境が良いかと思います。
あと、もう一つ大事なポイントとして、
プログラミングは実践が重要なので、ある程度学んだら、完全に理解していなくとも、
どんどんやってみることも大事です。
その中で、うまく行かない度にその理由を調べて、自分で解決してゆくことによって、
理論の理解も深まってゆきます。
理論を完璧に理解してから始めよう。なんて考えてしまうと、いつまで立っても始められないので。
以上はあくまでも一般的なプログラミングの話です。
ゲームプログラミングに関して言うと、最近では、イチからプログラミングをするのでは無く、ゲームエンジンというものを使って作る事が多いです。
ゲームエンジンはゲームに必要な様々な機能が予めプログラミングされている為、それらを組み合わせるだけで高度なゲームが作りやすい環境になっています。
個人でも使えるものとしては、Unityと、Unreal Engine(UE)の2つが有名です。
C#やC++が良いという意見の多くはこの2つのゲームエンジンが対応している言語が、それぞれC#とC++だから、というのが大きいです。
(同じC#でも、上で紹介したWindows用の物とUnityの物とでは、文法は同じだけど、呼び出す機能の名前(単語)が違う感じです)
なので、ゲームを目指すならはじめからUnity等で始めるのも1つの手ですし、
(それはそれでゲームエンジンの機能が高度すぎて、プログラミングとは別の要素で躓きやすい場合もありますが)
逆に、ゲームエンジンを使わずに自分で、イチからゲームを組み立てる事で、純粋にプログラミング能力と、ゲームの内部の仕組みを理解するのも、1つの手です。
特に2DのSTGであれば、ゲームエンジンを使わなくても何とか作れる範囲ですし。
(3Dになると個人でイチから作るのはかなり難しい)