質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

8回答

23138閲覧

プログラミングをやる上で、あったら必要な数学知識

reotantan

総合スコア295

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

2グッド

6クリップ

投稿2015/08/26 14:09

もちろん数学の理解があれば、プログラミングに活かせるのは分かるのですが、
この数学の知識があればさらに高度なプログラミングを組めるという分野はありますか?
配列やベクトル、線形代数を今勉強しようとしているのですが、ゲームを作りたいと思っているので
数学の知識がプログラミングの幅を広げる助けになったらいいなと考えています。
みなさまの考えを教えてください。

tendo, lv_sane👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答8

0

ぶっちゃけ、数学よりも、フローチャートを書く能力と人と話せるコミュニケーション能力の方が必要です。あと、地味に体力勝負な所がありますので、体力も必要です。
病気がちでは仕事になりませんし、徹夜できなければ納期に間に合わない!という事も多くあります。

プログラマというのは、正直な話、「勉強のプロ」であって「記憶のプロ」である必要はないと個人的に思っています。必要な知識は必要な時に調べて理解できればそれで良いと思います。

ですので、例えばもし物理演算が必要な時に、それを理解して活用できる能力があればよいと思います。どんな難しい分野にもエキスパートはいます。難しい時にはそういう人たちをうまく利用して、知識を必要な時にわけて頂けばよいのです。

もしゲームプログラマとして活躍したいのであれば、まずゲームをもっと理解すべきです。
ゲームは総合格闘技のような物で、凄まじい量の知識が必要です。
自分の力だけで、まずゲームを作りましょう。いろんなジャンルを作りましょう。

RPG、アクション、パズルゲーム、シューティングゲーム、FPSでは全然必要な事が違います。
2D、3Dでももちろん違います。
スプライト?3次元モデル?ボーンの処理は?
キーボード、マウス、ゲームパッド、入力処理はどうする?
セーブデータの管理は?チート防止にはどうしたらいい?
音声や音楽、ムービーの挿入は?

ゲームのプログラミングというのは本当に多岐にわたりますが、これらを全て理解して、記憶する必要はないんです。ここで活きてくるのは「調べる能力」と「調べた内容を使える能力」です。
いろんな事にチャレンジして苦労する事が、後に繋がりますよ。

ちなみに今一番オススメなのはUNITYというクロスプラットフォーム環境です。
マリオからFPSまで、何でも作れます。一度調べてみることをオススメします。

投稿2015/08/26 18:42

Jake

総合スコア289

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/27 01:06

まだまだ道を険しそうですね;; 分かりやすい解説ありがとうございました。
guest

0

ベストアンサー

プログラミングにとって数学が何かといえば、
(食)生活における自炊能力にたとえられるかもしれません。

今の時代は自炊できなくても、外食や弁当を食べれば飢えません。
同様に数学ができなくても、ライブラリを使えばアプリは作れます。

ただ外食ばかりだと、高く付いたり栄養が偏ることはあります。
同様に数学ができないと「ライブラリがないからできない」
となって、作れるジャンルが偏りがちになります。

数学やアルゴリズムの知識があると、
ライブラリを使うだけでなく自作できます。
つまりライブラリの自炊(自作)能力が付きます。


ご質問にもある線形代数は、数学の中でも
とくにプログラミングと深い関係にあるジャンルです。

計算機数学、離散数学、グラフ理論、組み合わせ問題などと
呼ばれている分野と密接な関係にあります。

もちろん、統計をやるなら統計・確率、物理シミュレーションなら物理と微積分など、
必要な数学の分野は変わってきますが、線形代数は応用範囲が広いのでおすすめです。

線形代数のようにベクトル(もしくはグラフ)を行列で表現するのは、
アルゴリズムのひとつの定石になっています。実際よく出てきます。

具体的には画像処理でも出てきますし、機械学習でも出てきます。
これは初歩的な例ですが、アフィン変換とか、最短経路問題とか。
その延長線上でゲームにも、画像とかAIとか部分的ですが関係してきます。

しかしなぜ、それらが線形代数(ベクトルや行列)なのか?
話を分かりやすくするため、数学的な厳密な話ではなくイメージで説明します。


コンピュータ自体は1と0の機械語しか分かりません。

それを高水準化したプログラミング言語、たとえばC言語とかも、
せいぜいfor文やif文と変数を使ってガチャガチャ計算するだけです。

すると、人間のようにパッと見(無変換)で図形や手順を扱えないので、
コンピュータで処理させるには、何らかの翻訳が必要になります。

この翻訳がベクトルやグラフと行列を変換することに相当します。
行列にすると数字の列になり、プログラミング言語で扱いやすいのです。

図形 → ベクトル → 行列 → 変数(配列) → コンピュータ
みたいな感じでコンピュータに分かるよう翻訳(変換)します。

この変換の約束事を線形代数で学ぶ、というわけなのです。

投稿2015/08/26 16:52

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/27 01:05

なるほど、線形代数の勉強にさっそくとりかかります。 とても参考になりました、ありがとうございます
guest

0

... ゲームを作りたい ...

高校数学の区分でいうなら、
●集合と論理
●個数の処理
●確率
●平面上のベクトル
●空間のベクトル
の理解をしていると、プログラミングの助けになると思います。

ゲームのシナリオや難しさなどを考えるときに 集合、組み合わせ、確率 といった知識は不可欠です。
画面をつくっていくときに 2D, 3D のベクトルを理解していることは大きな助けになります。
(描画ライブラリーをつかうときでも、これを理解していないと ライブラリー自体を適切に使えない場合もあるかもしれません)

投稿2015/08/26 22:15

編集2015/08/27 15:32
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/27 01:07

数学大切ですね、これから勉強がんばります。 ありがとうございました。
guest

0

テンソル数学と線形代数がものすごい武器になります。

投稿2020/12/11 09:11

sunnormal

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ゲームのプログラミングということだと、ゲームのジャンルにもよりますね。
ですが、数学は大切だと思いますがどちらかというと物理について知っていると良いかと思います。
数学知識だと確率統計は様々なところで役に立ちますね。

投稿2015/08/27 00:53

redpanda

総合スコア123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/27 01:07

物理ですか、これから取り組んでいきます。 ありがとうございました
guest

0

一口にゲームと言っても色々なタイプのものがありますね。そして、同じゲームでも、開発のアプローチの仕方によって必要な道具は変わって来ます。

数学とは、量、構造、空間、そして変化を研究する学問で、式や記号、グラフは、それらを理解し記録し他人へ伝える為の一種の 言語 です。いわゆる道具です。

ですから、ゲームに限らず、自分の作ったアルゴリズムの正当性を検証したり、他人のアイデアから学んだりする場合には、どんな分野であれ数学の知識やセンスがあれば多少なりとも役立ちます。

しかし、ゲームの場合には、シナリオの構成力やキャラクターのデザイン力など、全く異なる分野の能力も非常に重要です。

つまり一番重要なのは、今本当に必要な道具・能力を、焦らず着実に、
バランス良く身に着けて行くことだと思います。

ですから、先ず実際のゲーム作りの中で時々立ち止まり、気になった事や分からない事をちょっと深堀りしてみる。そして、勉強の材料がある程度溜まったところで体系的に学び直してみる。というやり方が現実的かなと思います。

投稿2015/08/27 00:04

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ゲームを作るのであるならば必ずしも数学は必要ではありません。
ゲームエンジンが現在ブロレベルの物が実質無償で提供されています。
UnrealEngine4

線形代数を活かせる分野であれば機械学習がオススメです。
数学を避けてきた社会人プログラマが機械学習の勉強を始める際の最短経路

投稿2015/08/26 14:40

m0a

総合スコア708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/27 01:03

なるほど、いいサイトを教えてもらってありがたいです。
guest

0

プログラミングはあくまで手作業をコンピュータに代わりにやらせるものなので、
「代わりにやらせる内容」の分野の知識が必要になります。
数学はどちらかと言うと、プログラミングよりも
「代わりにやらせる内容」の分野の知識になります。

「高度なプログラミング」が何を思い描いているのかわかりませんが、
「「代わりにやらせる内容」がより専門的である」ということなら
その分野の知識を深めるのがいいと思います。

(処理効率やカッコイイ実装方法などを求めるなら
プログラミング言語自体やアルゴリズムや実装パターンの勉強をするのがいいと思います)

行列やらベクトルやら線形代数やらは画像処理などで生きます。
統計処理をしたいなら統計学ぶ必要がありますし、
物理シミュレーションしたいなら該当する分野の物理(と数学)を学ぶ必要があるでしょう。

漠然とゲームと言われればジャンルによります。
ことアクションゲームであれば力学を学んでおくといいと思います。

あとC言語でゲームを作るのは無理とは言いませんが、面倒くさいので、
いずれもっと形になるものを作りたいならC#などに移ることになると思います。

投稿2015/08/26 14:36

編集2015/08/26 14:38
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/27 01:02

c言語をある程度勉強し終わったら、c++に行こうと思っていました。 解答者様が考えるなかではc#とc++ならどちらを先に勉強した方がいいですか?
ozwk

2015/08/27 02:17

Unityで使えるC#ですかね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問